:tids:create',
+ timestamp: Date.UTC(2024, 2, 4),
+ method: async function () {
+ const { progress } = this;
+ const batch = require('../../batch');
+ await batch.processSortedSet('topics:tid', async (tids) => {
+ let topicData = await db.getObjectsFields(
+ tids.map(tid => `topic:${tid}`),
+ ['tid', 'cid', 'timestamp']
+ );
+ topicData = topicData.filter(Boolean);
+ topicData.forEach((t) => {
+ t.timestamp = t.timestamp || Date.now();
+ });
+
+ await db.sortedSetAddBulk(
+ topicData.map(t => ([`cid:${t.cid}:tids:create`, t.timestamp, t.tid]))
+ );
+
+ progress.incr(tids.length);
+ }, {
+ progress: this.progress,
+ });
+ },
+};
diff --git a/src/upgrades/3.7.0/change-category-sort-settings.js b/src/upgrades/3.7.0/change-category-sort-settings.js
new file mode 100644
index 0000000000..a5095dc775
--- /dev/null
+++ b/src/upgrades/3.7.0/change-category-sort-settings.js
@@ -0,0 +1,37 @@
+'use strict';
+
+
+const db = require('../../database');
+const batch = require('../../batch');
+
+module.exports = {
+ name: 'Change category sort settings',
+ timestamp: Date.UTC(2024, 2, 4),
+ method: async function () {
+ const { progress } = this;
+
+ const currentSort = await db.getObjectField('config', 'categoryTopicSort');
+ if (currentSort === 'oldest_to_newest' || currentSort === 'newest_to_oldest') {
+ await db.setObjectField('config', 'categoryTopicSort', 'recently_replied');
+ }
+
+ await batch.processSortedSet('users:joindate', async (uids) => {
+ progress.incr(uids.length);
+ const usersSettings = await db.getObjects(uids.map(uid => `user:${uid}:settings`));
+ const bulkSet = [];
+ usersSettings.forEach((userSetting, i) => {
+ if (userSetting && (
+ userSetting.categoryTopicSort === 'newest_to_oldest' ||
+ userSetting.categoryTopicSort === 'oldest_to_newest')) {
+ bulkSet.push([
+ `user:${uids[i]}:settings`, { categoryTopicSort: 'recently_replied' },
+ ]);
+ }
+ });
+ await db.setObjectBulk(bulkSet);
+ }, {
+ batch: 500,
+ progress: progress,
+ });
+ },
+};
diff --git a/src/user/settings.js b/src/user/settings.js
index 27d999b7cf..5390f37580 100644
--- a/src/user/settings.js
+++ b/src/user/settings.js
@@ -72,7 +72,7 @@ module.exports = function (User) {
settings.userLang = settings.userLang || meta.config.defaultLang || 'en-GB';
settings.acpLang = settings.acpLang || settings.userLang;
settings.topicPostSort = getSetting(settings, 'topicPostSort', 'oldest_to_newest');
- settings.categoryTopicSort = getSetting(settings, 'categoryTopicSort', 'newest_to_oldest');
+ settings.categoryTopicSort = getSetting(settings, 'categoryTopicSort', 'recently_replied');
settings.followTopicsOnCreate = parseInt(getSetting(settings, 'followTopicsOnCreate', 1), 10) === 1;
settings.followTopicsOnReply = parseInt(getSetting(settings, 'followTopicsOnReply', 0), 10) === 1;
settings.upvoteNotifFreq = getSetting(settings, 'upvoteNotifFreq', 'all');
diff --git a/src/views/admin/settings/post.tpl b/src/views/admin/settings/post.tpl
index bd99f75a4a..d361597946 100644
--- a/src/views/admin/settings/post.tpl
+++ b/src/views/admin/settings/post.tpl
@@ -18,9 +18,11 @@