$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);
}
}
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);
$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)) {
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;
}
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+ if (empty($sort)) {
+ $sort = "d.timemodified DESC";
+ }
+
$olddiscussionlink = false;
// Sort out some defaults
///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);
}
if ($forumtracked) {
- $unreads = forum_get_discussions_unread($cm, $sort);
+ $unreads = forum_get_discussions_unread($cm);
} else {
$unreads = array();
}