From: skodak Date: Mon, 14 Apr 2008 11:33:10 +0000 (+0000) Subject: MDL-14113 fixed replies regression; merged from MOODLE_19_STABLE X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=bfeb10b75ba995a3288653b33273d928f987c62d;p=moodle.git MDL-14113 fixed replies regression; merged from MOODLE_19_STABLE --- diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 339840f7df..6e6aa97ce1 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -2025,16 +2025,21 @@ function forum_count_discussion_replies($forumid, $forumsort="", $limit=-1, $pag $groupby = str_replace('asc', '', $groupby); } - $sql = "SELECT p.discussion, COUNT(p.id) AS replies, MAX(p.id) AS lastpostid - FROM {$CFG->prefix}forum_posts p - JOIN {$CFG->prefix}forum_discussions d ON p.discussion = d.id - WHERE p.parent > 0 AND d.forum = $forumid - GROUP BY p.discussion $groupby - $orderby"; - - if ($limitfrom == 0 and $limitnum == 0) { + if (($limitfrom == 0 and $limitnum == 0) or $forumsort == "") { + $sql = "SELECT p.discussion, COUNT(p.id) AS replies, MAX(p.id) AS lastpostid + FROM {$CFG->prefix}forum_posts p + JOIN {$CFG->prefix}forum_discussions d ON p.discussion = d.id + WHERE p.parent > 0 AND d.forum = $forumid + GROUP BY p.discussion"; return get_records_sql($sql); + } else { + $sql = "SELECT p.discussion, (COUNT(p.id) - 1) AS replies, MAX(p.id) AS lastpostid + FROM {$CFG->prefix}forum_posts p + JOIN {$CFG->prefix}forum_discussions d ON p.discussion = d.id + WHERE d.forum = $forumid + GROUP BY p.discussion $groupby + $orderby"; return get_records_sql("SELECT * FROM ($sql) sq", $limitfrom, $limitnum); } } @@ -2243,7 +2248,7 @@ function forum_get_discussions($cm, $forumsort="d.timemodified DESC", $fullpost= return get_records_sql($sql, $limitfrom, $limitnum); } -function forum_get_discussions_unread($cm, $forumsort="d.timemodified DESC") { +function forum_get_discussions_unread($cm) { global $CFG, $USER; $now = round(time(), -2); @@ -2273,13 +2278,6 @@ function forum_get_discussions_unread($cm, $forumsort="d.timemodified DESC") { $groupselect = ""; } - if (empty($forumsort)) { - $forumsort = "d.timemodified DESC"; - } - $groupby = strtolower($forumsort); - $groupby = str_replace('desc', '', $groupby); - $groupby = str_replace('asc', '', $groupby); - $cutoffdate = $now - ($CFG->forum_oldpostdays*24*60*60); if (!empty($CFG->forum_enabletimedposts)) { @@ -2296,8 +2294,7 @@ function forum_get_discussions_unread($cm, $forumsort="d.timemodified DESC") { AND p.modified >= $cutoffdate AND r.id is NULL $timedsql $groupselect - GROUP BY d.id, $groupby - ORDER BY $forumsort"; + GROUP BY d.id"; if ($unreads = get_records_sql($sql)) { foreach ($unreads as $unread) { $unreads[$unread->id] = $unread->unread; @@ -4464,6 +4461,10 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=-1, $di } $context = get_context_instance(CONTEXT_MODULE, $cm->id); + if (empty($sort)) { + $sort = "d.timemodified DESC"; + } + $olddiscussionlink = false; // Sort out some defaults @@ -4549,7 +4550,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=-1, $di ///Show the paging bar print_paging_bar($numdiscussions, $page, $perpage, "view.php?f=$forum->id&"); if ($numdiscussions > 1000) { - // saves some memory on sites with very forums + // saves some memory on sites with very large forums $replies = forum_count_discussion_replies($forum->id, $sort, $maxdiscussions, $page, $perpage); } else { $replies = forum_count_discussion_replies($forum->id); @@ -4576,7 +4577,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=-1, $di } if ($forumtracked) { - $unreads = forum_get_discussions_unread($cm, $sort); + $unreads = forum_get_discussions_unread($cm); } else { $unreads = array(); }