feat: Add filter:topic.delete and filter:topic.restore (#7946) (#7989)

* Add filter:topic.delete

* Don't return undefined data

* add topic.restore and pass canRestore to filter

* fix some bugs created by conflict resolution and new changes

* more readable hook

* fix styling for TravisCI

* literally just two newlines so that TravisCI builds again
v1.18.x
Opliko 5 years ago committed by Barış Soner Uşaklı
parent 4b8897d9bc
commit 989107d9b5

@ -27,35 +27,36 @@ module.exports = function (Topics) {
throw new Error('[[error:no-topic]]');
}
const canDelete = await privileges.topics.canDelete(tid, uid);
if (!canDelete) {
const data = await plugins.fireHook(isDelete ? 'filter:topic.delete' : 'filter:topic.restore', { topicData: topicData, uid: uid, isDelete: isDelete, canDelete: canDelete, canRestore: canDelete });
if ((!data.canDelete && data.isDelete) || (!data.canRestore && !data.isDelete)) {
throw new Error('[[error:no-privileges]]');
}
if (topicData.deleted && isDelete) {
if (data.topicData.deleted && data.isDelete) {
throw new Error('[[error:topic-already-deleted]]');
} else if (!topicData.deleted && !isDelete) {
} else if (!data.topicData.deleted && !data.isDelete) {
throw new Error('[[error:topic-already-restored]]');
}
if (isDelete) {
await Topics.delete(tid, uid);
if (data.isDelete) {
await Topics.delete(data.topicData.tid, data.uid);
} else {
await Topics.restore(tid);
await Topics.restore(data.topicData.tid);
}
topicData.deleted = isDelete ? 1 : 0;
data.topicData.deleted = data.isDelete ? 1 : 0;
if (isDelete) {
plugins.fireHook('action:topic.delete', { topic: topicData, uid: uid });
if (data.isDelete) {
plugins.fireHook('action:topic.delete', { topic: data.topicData, uid: data.uid });
} else {
plugins.fireHook('action:topic.restore', { topic: topicData, uid: uid });
plugins.fireHook('action:topic.restore', { topic: data.topicData, uid: data.uid });
}
const userData = await user.getUserFields(uid, ['username', 'userslug']);
const userData = await user.getUserFields(data.uid, ['username', 'userslug']);
return {
tid: tid,
cid: topicData.cid,
isDelete: isDelete,
uid: uid,
tid: data.topicData.tid,
cid: data.topicData.cid,
isDelete: data.isDelete,
uid: data.uid,
user: userData,
};
}

Loading…
Cancel
Save