From f6bb7eaa39a6bfea8ade56b2969c33c904768c71 Mon Sep 17 00:00:00 2001
From: stronk7
Date: Tue, 10 Aug 2004 09:37:02 +0000
Subject: [PATCH] Paging discussions is in CVS just now :-)
---
mod/forum/lib.php | 41 +++++++++++++++++++++++++++++++++++++++--
mod/forum/view.php | 7 ++++---
2 files changed, 43 insertions(+), 5 deletions(-)
diff --git a/mod/forum/lib.php b/mod/forum/lib.php
index 7f3c550db5..b1ba8b399e 100644
--- a/mod/forum/lib.php
+++ b/mod/forum/lib.php
@@ -2321,7 +2321,7 @@ function forum_user_can_post($forum, $user=NULL) {
function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5,
$forum_style="plain", $forum_sort="",
- $currentgroup=0, $groupmode=-1) {
+ $currentgroup=0, $groupmode=-1, $page=-1) {
global $CFG, $USER;
if ($forum_id) {
@@ -2398,6 +2398,27 @@ function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5,
return;
}
+ //If forum_numdiscussions <= 0 don't paging (to avoid some divided by 0 errors)
+ if ($forum_numdiscussions <= 0) {
+ $page = -1;
+ $forum_numdiscussions = 0;
+ }
+
+ //If we want paging
+ if ($page != -1) {
+ ///Get the number of discussions found
+ $numdiscussions = count($discussions);
+
+ ///Show the paging bar
+ echo "";
+ print_paging_bar($numdiscussions, $page, $forum_numdiscussions, "view.php?f=$forum->id&");
+ echo "";
+
+ //Calculate the page "window"
+ $pagestart = ($page * $forum_numdiscussions) + 1;
+ $pageend = $pagestart + $forum_numdiscussions - 1;
+ }
+
$replies = forum_count_discussion_replies($forum->id);
$canreply = forum_user_can_post($forum);
@@ -2426,7 +2447,15 @@ function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5,
foreach ($discussions as $discussion) {
$discussioncount++;
- if ($forum_numdiscussions && ($discussioncount > $forum_numdiscussions)) {
+ //If we want paging
+ if ($page != -1) {
+ //And we aren't inside the page "window"
+ if ($discussioncount < $pagestart || $discussioncount > $pageend) {
+ //Skip this discussion
+ continue;
+ }
+ //Without paging, old approach
+ } else if ($forum_numdiscussions && ($discussioncount > $forum_numdiscussions)) {
$olddiscussionlink = true;
break;
}
@@ -2486,6 +2515,14 @@ function forum_print_latest_discussions($forum_id=0, $forum_numdiscussions=5,
echo "wwwroot/mod/forum/view.php?f=$forum->id&showall=1\">";
echo get_string("olderdiscussions", "forum")." ...
";
}
+
+ //If we want paging
+ if ($page != -1) {
+ ///Show the paging bar
+ echo "";
+ print_paging_bar($numdiscussions, $page, $forum_numdiscussions, "view.php?f=$forum->id&");
+ echo "";
+ }
}
function forum_print_discussion($course, $forum, $discussion, $post, $mode, $canreply=NULL) {
diff --git a/mod/forum/view.php b/mod/forum/view.php
index 51a7792c15..2835afa33c 100644
--- a/mod/forum/view.php
+++ b/mod/forum/view.php
@@ -10,6 +10,7 @@
optional_variable($search, ""); // search string
optional_variable($showall, ""); // show all discussions on one page
optional_variable($group, -1); // choose the current group
+ optional_variable($page, "0"); // which page to show
if ($id) {
if (! $cm = get_record("course_modules", "id", $id)) {
@@ -212,7 +213,7 @@
if (!empty($showall)) {
forum_print_latest_discussions($forum->id, 0, 'header', '', $currentgroup, $groupmode);
} else {
- forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode);
+ forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page);
}
break;
@@ -220,7 +221,7 @@
if (!empty($showall)) {
forum_print_latest_discussions($forum->id, 0, 'header', '', $currentgroup, $groupmode);
} else {
- forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode);
+ forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page);
}
break;
@@ -232,7 +233,7 @@
if (!empty($showall)) {
forum_print_latest_discussions($forum->id, 0, 'header', '', $currentgroup, $groupmode);
} else {
- forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode);
+ forum_print_latest_discussions($forum->id, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page);
}
break;
}
--
2.39.5