From d32cc66db562f3c2a043085c987fb71afb72b688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 4 Mar 2024 16:40:48 -0500 Subject: [PATCH 1/3] create sort in sorted.js --- src/topics/sorted.js | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/topics/sorted.js b/src/topics/sorted.js index 43fa58fc70..d244eefe61 100644 --- a/src/topics/sorted.js +++ b/src/topics/sorted.js @@ -59,15 +59,31 @@ module.exports = function (Topics) { tids = await getCidTids(params); } else if (params.tags.length) { tids = await getTagTids(params); - } else if (params.sort === 'old') { - tids = await db.getSortedSetRange(`topics:recent`, 0, meta.config.recentMaxTopics - 1); } else { - tids = await db.getSortedSetRevRange(`topics:${params.sort}`, 0, meta.config.recentMaxTopics - 1); + const method = params.sort === 'old' ? + 'getSortedSetRange' : + 'getSortedSetRevRange'; + tids = await db[method](sortToSet(params.sort), 0, meta.config.recentMaxTopics - 1); } return tids; } + function sortToSet(sort) { + const map = { + recent: 'topics:recent', + old: 'topics:recent', + create: 'topics:tid', + posts: 'topics:posts', + votes: 'topics:votes', + views: 'topics:views', + }; + if (map.hasOwnProperty(sort)) { + return map[sort]; + } + return 'topics:recent'; + } + async function getTidsWithMostPostsInTerm(term) { const pids = await db.getSortedSetRevRangeByScore('posts:pid', 0, -1, '+inf', Date.now() - Topics.getSinceFromTerm(term)); const postObjs = await db.getObjectsFields(pids.map(pid => `post:${pid}`), ['tid']); @@ -93,9 +109,7 @@ module.exports = function (Topics) { async function getTagTids(params) { const sets = [ - params.sort === 'old' ? - 'topics:recent' : - `topics:${params.sort}`, + sortToSet(params.sort), ...params.tags.map(tag => `tag:${tag}:topics`), ]; const method = params.sort === 'old' ? @@ -146,11 +160,12 @@ module.exports = function (Topics) { } const topicData = await Topics.getTopicsFields(tids, [ - 'tid', 'lastposttime', 'upvotes', 'downvotes', 'postcount', 'pinned', + 'tid', 'timestamp', 'lastposttime', 'upvotes', 'downvotes', 'postcount', 'pinned', ]); const sortMap = { recent: sortRecent, old: sortOld, + create: sortCreate, posts: sortPopular, votes: sortVotes, views: sortViews, @@ -178,6 +193,10 @@ module.exports = function (Topics) { return a.lastposttime - b.lastposttime; } + function sortCreate(a, b) { + return b.timestamp - a.timestamp; + } + function sortVotes(a, b) { if (a.votes !== b.votes) { return b.votes - a.votes; From 22c225c51b069637c36b0d240016c9882d66e216 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Tue, 5 Mar 2024 09:19:26 +0000 Subject: [PATCH 2/3] Latest translations and fallbacks --- public/language/bg/admin/settings/post.json | 6 +++--- public/language/bg/topic.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/public/language/bg/admin/settings/post.json b/public/language/bg/admin/settings/post.json index bda0c46dba..f39ea34f3c 100644 --- a/public/language/bg/admin/settings/post.json +++ b/public/language/bg/admin/settings/post.json @@ -4,11 +4,11 @@ "sorting.post-default": "Подредба по подразбиране на публикациите", "sorting.oldest-to-newest": "Първо най-старите", "sorting.newest-to-oldest": "Първо най-новите", - "sorting.recently-replied": "Recently Replied", - "sorting.recently-created": "Recently Created", + "sorting.recently-replied": "Първо тези с най-скорошни отговори", + "sorting.recently-created": "Първо най-скоро създадените", "sorting.most-votes": "Първо тези с най-много гласове", "sorting.most-posts": "Първо тези с най-много публикации", - "sorting.most-views": "Most Views", + "sorting.most-views": "Първо тези с най-много преглеждания", "sorting.topic-default": "Подредба по подразбиране на темите", "length": "Дължина на публикациите", "post-queue": "Опашка за публикации", diff --git a/public/language/bg/topic.json b/public/language/bg/topic.json index a9f3ef907d..357d3c6783 100644 --- a/public/language/bg/topic.json +++ b/public/language/bg/topic.json @@ -182,8 +182,8 @@ "sort-by": "Подреждане по", "oldest-to-newest": "Първо най-старите", "newest-to-oldest": "Първо най-новите", - "recently-replied": "Recently Replied", - "recently-created": "Recently Created", + "recently-replied": "Първо тези с най-скорошни отговори", + "recently-created": "Първо най-скоро създадените", "most-votes": "Първо тези с най-много гласове", "most-posts": "Първо тези с най-много публикации", "most-views": "Първо тези с най-много преглеждания", From 87a79059f0b0e05d4754abaf3b0be6bbfb25bf32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 5 Mar 2024 12:37:25 -0500 Subject: [PATCH 3/3] fix: #12389, update privilege group check --- src/groups/index.js | 2 +- src/plugins/hooks.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/groups/index.js b/src/groups/index.js index 7faf8d692a..8aef1a7b51 100644 --- a/src/groups/index.js +++ b/src/groups/index.js @@ -56,7 +56,7 @@ Groups.removeEphemeralGroups = function (groups) { return groups; }; -const isPrivilegeGroupRegex = /^cid:(?:\d+|admin):privileges:[\w\-:]+$/; +const isPrivilegeGroupRegex = /^cid:(?:-?\d+|admin):privileges:[\w\-:]+$/; Groups.isPrivilegeGroup = function (groupName) { return isPrivilegeGroupRegex.test(groupName); }; diff --git a/src/plugins/hooks.js b/src/plugins/hooks.js index f10cb6ca81..aa471af6a8 100644 --- a/src/plugins/hooks.js +++ b/src/plugins/hooks.js @@ -233,7 +233,7 @@ function hookHandlerPromise(hook, hookObj, params) { if (hook.startsWith('filter:') && returned !== undefined) { _resolve(returned); } else if (hook.startsWith('static:') && hookObj.method.length <= 1) { - // make sure it is resolved if static hook doesn't return anything and doesn't use callback + // make sure it is resolved if static hook doesn't use callback _resolve(); } });