mirror of
https://github.com/discourse/discourse.git
synced 2025-02-16 18:24:52 -06:00
REFACTOR: Allow delete_removed_posts_after
SiteSetting to be bypassed.
This commit is contained in:
parent
d82dbd565b
commit
a6450f7377
@ -44,10 +44,12 @@ class PostDestroyer
|
|||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
if @user.staff? || SiteSetting.delete_removed_posts_after < 1
|
delete_removed_posts_after = @opts[:delete_removed_posts_after] || SiteSetting.delete_removed_posts_after
|
||||||
|
|
||||||
|
if @user.staff? || delete_removed_posts_after < 1
|
||||||
perform_delete
|
perform_delete
|
||||||
elsif @user.id == @post.user_id
|
elsif @user.id == @post.user_id
|
||||||
mark_for_deletion
|
mark_for_deletion(delete_removed_posts_after)
|
||||||
end
|
end
|
||||||
DiscourseEvent.trigger(:post_destroyed, @post, @opts, @user)
|
DiscourseEvent.trigger(:post_destroyed, @post, @opts, @user)
|
||||||
|
|
||||||
@ -115,11 +117,14 @@ class PostDestroyer
|
|||||||
end
|
end
|
||||||
|
|
||||||
# When a user 'deletes' their own post. We just change the text.
|
# When a user 'deletes' their own post. We just change the text.
|
||||||
def mark_for_deletion
|
def mark_for_deletion(delete_removed_posts_after = SiteSetting.delete_removed_posts_after)
|
||||||
I18n.with_locale(SiteSetting.default_locale) do
|
I18n.with_locale(SiteSetting.default_locale) do
|
||||||
|
|
||||||
# don't call revise from within transaction, high risk of deadlock
|
# don't call revise from within transaction, high risk of deadlock
|
||||||
@post.revise(@user, { raw: I18n.t('js.post.deleted_by_author', count: SiteSetting.delete_removed_posts_after) }, force_new_version: true)
|
@post.revise(@user,
|
||||||
|
{ raw: I18n.t('js.post.deleted_by_author', count: delete_removed_posts_after) },
|
||||||
|
force_new_version: true
|
||||||
|
)
|
||||||
|
|
||||||
Post.transaction do
|
Post.transaction do
|
||||||
@post.update_column(:user_deleted, true)
|
@post.update_column(:user_deleted, true)
|
||||||
|
@ -239,6 +239,19 @@ describe PostDestroyer do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "accepts a delete_removed_posts_after option" do
|
||||||
|
SiteSetting.delete_removed_posts_after = 0
|
||||||
|
|
||||||
|
PostDestroyer.new(post.user, post, delete_removed_posts_after: 1).destroy
|
||||||
|
|
||||||
|
post.reload
|
||||||
|
|
||||||
|
expect(post.deleted_at).to eq(nil)
|
||||||
|
expect(post.user_deleted).to eq(true)
|
||||||
|
|
||||||
|
expect(post.raw).to eq(I18n.t('js.post.deleted_by_author', count: 1))
|
||||||
|
end
|
||||||
|
|
||||||
context "as a moderator" do
|
context "as a moderator" do
|
||||||
it "deletes the post" do
|
it "deletes the post" do
|
||||||
author = post.user
|
author = post.user
|
||||||
|
Loading…
Reference in New Issue
Block a user