diff --git a/src/categories/delete.js b/src/categories/delete.js index 42b2bacdce..3e76b22069 100644 --- a/src/categories/delete.js +++ b/src/categories/delete.js @@ -21,12 +21,17 @@ module.exports = function (Categories) { await async.eachLimit(pinnedTids, 10, async function (tid) { await topics.purgePostsAndTopic(tid, uid); }); - await purgeCategory(cid); - plugins.hooks.fire('action:category.delete', { cid: cid, uid: uid }); + const categoryData = await Categories.getCategoryData(cid); + await purgeCategory(categoryData); + plugins.hooks.fire('action:category.delete', { cid: cid, uid: uid, category: categoryData }); }; - async function purgeCategory(cid) { - await db.sortedSetRemove('categories:cid', cid); + async function purgeCategory(categoryData) { + const cid = categoryData.cid; + await db.sortedSetRemoveBulk([ + ['categories:cid', cid], + ['categories:name', categoryData.name.substr(0, 200).toLowerCase() + ':' + cid], + ]); await removeFromParent(cid); await deleteTags(cid); await db.deleteAll([ diff --git a/src/categories/update.js b/src/categories/update.js index 51ca422380..b44bb63f72 100644 --- a/src/categories/update.js +++ b/src/categories/update.js @@ -48,7 +48,10 @@ module.exports = function (Categories) { return await updateParent(cid, value); } else if (key === 'tagWhitelist') { return await updateTagWhitelist(cid, value); + } else if (key === 'name') { + return await updateName(cid, value); } + await db.setObjectField('category:' + cid, key, value); if (key === 'order') { await updateOrder(cid, value); @@ -95,4 +98,11 @@ module.exports = function (Categories) { const parsedDescription = await plugins.hooks.fire('filter:parse.raw', description); await Categories.setCategoryField(cid, 'descriptionParsed', parsedDescription); }; + + async function updateName(cid, newName) { + const oldName = await Categories.getCategoryField(cid, 'name'); + await db.sortedSetRemove('categories:name', oldName.substr(0, 200).toLowerCase() + ':' + cid); + await db.sortedSetAdd('categories:name', 0, newName.substr(0, 200).toLowerCase() + ':' + cid); + await db.setObjectField('category:' + cid, 'name', newName); + } };