From 3aae92341cf33d4a56bdcc144df3a7c05ba9872a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 2 Apr 2024 11:32:41 -0400 Subject: [PATCH 01/15] fix: change digest to use posts sorting first to use the new popular ranking algo. also fixes empty digests if there are no new topics created in the past 24 hours but there are topics with posts --- src/user/digest.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/user/digest.js b/src/user/digest.js index b07f54d1c3..61f4b2f12f 100644 --- a/src/user/digest.js +++ b/src/user/digest.js @@ -183,20 +183,23 @@ async function getTermTopics(term, uid) { start: 0, stop: 199, term: term, - sort: 'votes', + sort: 'posts', teaserPost: 'first', }); data.topics = data.topics.filter(topic => topic && !topic.deleted); - const top = data.topics.filter(t => t.votes > 0).slice(0, 10); - const topTids = top.map(t => t.tid); - const popular = data.topics - .filter(t => t.postcount > 1 && !topTids.includes(t.tid)) + .filter(t => t.postcount > 1) .sort((a, b) => b.postcount - a.postcount) .slice(0, 10); const popularTids = popular.map(t => t.tid); + const top = data.topics + .filter(t => t.votes > 0 && !popularTids.includes(t.tid)) + .sort((a, b) => b.votes - a.votes) + .slice(0, 10); + const topTids = top.map(t => t.tid); + const recent = data.topics .filter(t => !topTids.includes(t.tid) && !popularTids.includes(t.tid)) .sort((a, b) => b.lastposttime - a.lastposttime) From ab95b606970e6f2b05b183b2969d345a870af59f Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 3 Apr 2024 13:59:29 +0000 Subject: [PATCH 02/15] chore: incrementing version number - v3.7.3 --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index ff40e5decb..eedae6903e 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "3.7.2", + "version": "3.7.3", "homepage": "https://www.nodebb.org", "repository": { "type": "git", From 8d450eea6ab8d1e248d90de09d52f6d2727133b4 Mon Sep 17 00:00:00 2001 From: Misty Release Bot Date: Wed, 3 Apr 2024 13:59:29 +0000 Subject: [PATCH 03/15] chore: update changelog for v3.7.3 --- CHANGELOG.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e41c2eec9e..9dde4f436a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,57 @@ +#### v3.7.3 (2024-04-03) + +##### Chores + +* up ntfy (0058ca68) +* incrementing version number - v3.7.2 (cc257e7e) +* update changelog for v3.7.2 (277e1787) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change digest to use posts sorting first (3aae9234) +* #12452, fix admin/mod image change (c206ccdd) + #### v3.7.2 (2024-03-27) ##### Chores From 5d8a557199de6a607b4b9fbee27441657a69cbb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 3 Apr 2024 14:11:38 -0400 Subject: [PATCH 04/15] chore: up themes --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index eedae6903e..28e20ebb0a 100644 --- a/install/package.json +++ b/install/package.json @@ -103,10 +103,10 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.44", + "nodebb-theme-harmony": "1.2.45", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", - "nodebb-theme-persona": "13.3.11", + "nodebb-theme-persona": "13.3.12", "nodebb-widget-essentials": "7.0.15", "nodemailer": "6.9.11", "nprogress": "0.2.0", From 0b1f2546c84da19596981897f4b29348686bdf67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sun, 7 Apr 2024 11:10:15 -0400 Subject: [PATCH 05/15] fix: #12471, remove readable strings they are not localized properly --- public/openapi/components/schemas/UserObject.yaml | 4 +--- public/openapi/read/user/userslug/info.yaml | 2 -- src/user/info.js | 4 +--- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/public/openapi/components/schemas/UserObject.yaml b/public/openapi/components/schemas/UserObject.yaml index bdd52bc2d1..9b217cee8b 100644 --- a/public/openapi/components/schemas/UserObject.yaml +++ b/public/openapi/components/schemas/UserObject.yaml @@ -743,9 +743,7 @@ BanMuteArray: example: "#f44336" until: type: number - untilReadable: - type: string - timestampReadable: + untilISO: type: string timestampISO: type: string diff --git a/public/openapi/read/user/userslug/info.yaml b/public/openapi/read/user/userslug/info.yaml index afec9bc2bd..110e252be5 100644 --- a/public/openapi/read/user/userslug/info.yaml +++ b/public/openapi/read/user/userslug/info.yaml @@ -35,8 +35,6 @@ get: timestampISO: type: string description: An ISO 8601 formatted date string (complementing `timestamp`) - timestampReadable: - type: string additionalProperties: description: Contextual data is added to this object (such as topic data, etc.) bans: diff --git a/src/user/info.js b/src/user/info.js index 3abd580d02..d4667bd83f 100644 --- a/src/user/info.js +++ b/src/user/info.js @@ -86,7 +86,6 @@ module.exports = function (User) { flagObj.pid = flagObj.value; flagObj.timestamp = flagObj.score; flagObj.timestampISO = new Date(flagObj.score).toISOString(); - flagObj.timestampReadable = new Date(flagObj.score).toString(); delete flagObj.value; delete flagObj.score; @@ -105,8 +104,7 @@ module.exports = function (User) { return data.map((banObj, index) => { banObj.user = usersData[index]; banObj.until = parseInt(banObj.expire, 10); - banObj.untilReadable = new Date(banObj.until).toString(); - banObj.timestampReadable = new Date(parseInt(banObj.timestamp, 10)).toString(); + banObj.untilISO = utils.toISOString(banObj.until); banObj.timestampISO = utils.toISOString(banObj.timestamp); banObj.reason = validator.escape(String(banObj.reason || '')) || noReasonLangKey; return banObj; From ba86740a6a40d6f7cc884222f70c6812b94e3304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sun, 7 Apr 2024 11:12:10 -0400 Subject: [PATCH 06/15] chore: up themes --- install/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/package.json b/install/package.json index 28e20ebb0a..b5ad0febe5 100644 --- a/install/package.json +++ b/install/package.json @@ -103,10 +103,10 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.45", + "nodebb-theme-harmony": "1.2.46", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", - "nodebb-theme-persona": "13.3.12", + "nodebb-theme-persona": "13.3.13", "nodebb-widget-essentials": "7.0.15", "nodemailer": "6.9.11", "nprogress": "0.2.0", From d72567964818274a1f511332b8fde32dcf661b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 9 Apr 2024 10:54:45 -0400 Subject: [PATCH 07/15] fix: #12485, resolve flags on a topics posts on topic delete --- src/posts/delete.js | 2 +- src/topics/delete.js | 33 +++++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/posts/delete.js b/src/posts/delete.js index 66c8269334..94f73cf494 100644 --- a/src/posts/delete.js +++ b/src/posts/delete.js @@ -236,7 +236,7 @@ module.exports = function (Posts) { } async function resolveFlags(postData, uid) { - const flaggedPosts = postData.filter(p => parseInt(p.flagId, 10)); + const flaggedPosts = postData.filter(p => p && parseInt(p.flagId, 10)); await Promise.all(flaggedPosts.map(p => flags.update(p.flagId, uid, { state: 'resolved' }))); } }; diff --git a/src/topics/delete.js b/src/topics/delete.js index 5190afd1ff..4e7f5d1400 100644 --- a/src/topics/delete.js +++ b/src/topics/delete.js @@ -5,25 +5,38 @@ const db = require('../database'); const user = require('../user'); const posts = require('../posts'); const categories = require('../categories'); +const flags = require('../flags'); const plugins = require('../plugins'); const batch = require('../batch'); module.exports = function (Topics) { Topics.delete = async function (tid, uid) { - const cid = await Topics.getTopicField(tid, 'cid'); - await removeTopicPidsFromCid(tid, cid); - await Topics.setTopicFields(tid, { - deleted: 1, - deleterUid: uid, - deletedTimestamp: Date.now(), - }); + const [cid, pids] = await Promise.all([ + Topics.getTopicField(tid, 'cid'), + Topics.getPids(tid), + ]); + await Promise.all([ + db.sortedSetRemove(`cid:${cid}:pids`, pids), + resolveTopicPostFlags(pids, uid), + Topics.setTopicFields(tid, { + deleted: 1, + deleterUid: uid, + deletedTimestamp: Date.now(), + }), + ]); + await categories.updateRecentTidForCid(cid); }; - async function removeTopicPidsFromCid(tid, cid) { - const pids = await Topics.getPids(tid); - await db.sortedSetRemove(`cid:${cid}:pids`, pids); + async function resolveTopicPostFlags(pids, uid) { + await batch.processArray(pids, async (pids) => { + const postData = await posts.getPostsFields(pids, ['pid', 'flagId']); + const flaggedPosts = postData.filter(p => p && parseInt(p.flagId, 10)); + await Promise.all(flaggedPosts.map(p => flags.update(p.flagId, uid, { state: 'resolved' }))); + }, { + batch: 500, + }); } async function addTopicPidsToCid(tid, cid) { From c2465a16921d86e3c338990d437baca0f8afefaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 9 Apr 2024 11:19:20 -0400 Subject: [PATCH 08/15] chore: up harmony --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index b5ad0febe5..efce2d924e 100644 --- a/install/package.json +++ b/install/package.json @@ -103,7 +103,7 @@ "nodebb-plugin-ntfy": "1.7.4", "nodebb-plugin-spam-be-gone": "2.2.1", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.2.46", + "nodebb-theme-harmony": "1.2.47", "nodebb-theme-lavender": "7.1.8", "nodebb-theme-peace": "2.2.4", "nodebb-theme-persona": "13.3.13", From cfd29db061baf6ada7a98338bbf2a38b34164a4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 10 Apr 2024 09:38:01 -0400 Subject: [PATCH 09/15] refactor: better label for show to groups --- public/language/en-GB/admin/settings/navigation.json | 2 +- src/views/admin/settings/navigation.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/language/en-GB/admin/settings/navigation.json b/public/language/en-GB/admin/settings/navigation.json index 931ac5f4ba..3a71061ecf 100644 --- a/public/language/en-GB/admin/settings/navigation.json +++ b/public/language/en-GB/admin/settings/navigation.json @@ -10,7 +10,7 @@ "id": "ID: optional", "properties": "Properties:", - "groups": "Groups:", + "show-to-groups": "Show to Groups:", "open-new-window": "Open in a new window", "dropdown": "Dropdown", "dropdown-placeholder": "Place your dropdown menu items below, ie:
<li><a class="dropdown-item" href="https://myforum.com">Link 1</a></li>", diff --git a/src/views/admin/settings/navigation.tpl b/src/views/admin/settings/navigation.tpl index 431b052361..6af7e60511 100644 --- a/src/views/admin/settings/navigation.tpl +++ b/src/views/admin/settings/navigation.tpl @@ -75,7 +75,7 @@
- +