public const SORTORDER_NEWEST_FIRST = 1;
/** Sort by oldest first */
public const SORTORDER_OLDEST_FIRST = 2;
+ /** Sort by created desc */
+ public const SORTORDER_CREATED_DESC = 3;
/**
* Get the table alias.
$alias = $this->get_table_alias();
- // TODO consider user favourites...
- $keyfield = "{$alias}.timemodified";
- $direction = "DESC";
+ if ($sortmethod == self::SORTORDER_CREATED_DESC) {
+ $keyfield = "fp.created";
+ $direction = "DESC";
+ } else {
+ // TODO consider user favourites...
+ $keyfield = "{$alias}.timemodified";
+ $direction = "DESC";
- if ($sortmethod == self::SORTORDER_OLDEST_FIRST) {
- $direction = "ASC";
- }
+ if ($sortmethod == self::SORTORDER_OLDEST_FIRST) {
+ $direction = "ASC";
+ }
- if (!empty($CFG->forum_enabletimedposts)) {
- $keyfield = "CASE WHEN {$keyfield} < {$alias}.timestart THEN {$alias}.timestart ELSE {$keyfield} END";
+ if (!empty($CFG->forum_enabletimedposts)) {
+ $keyfield = "CASE WHEN {$keyfield} < {$alias}.timestart THEN {$alias}.timestart ELSE {$keyfield} END";
+ }
}
- return "{$alias}.pinned DESC, {$keyfield} {$direction}";
+ return "{$alias}.pinned DESC, {$keyfield} {$direction}, {$alias}.id DESC";
}
/**
break;
case 'blog':
$discussionsrenderer = $rendererfactory->get_blog_discussion_list_renderer($forum);
- echo $discussionsrenderer->render($USER, $cm, $groupid, $sortorder, $pageno, $pagesize);
+ $discussionlistvault = $vaultfactory->get_discussions_in_forum_vault();
+ // Blog forums always show discussions newest first.
+ echo $discussionsrenderer->render($USER, $cm, $groupid, $discussionlistvault::SORTORDER_CREATED_DESC, $pageno, $pagesize);
break;
default:
$discussionsrenderer = $rendererfactory->get_discussion_list_renderer($forum);