mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 09:26:54 -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
|
||||
|
||||
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
|
||||
elsif @user.id == @post.user_id
|
||||
mark_for_deletion
|
||||
mark_for_deletion(delete_removed_posts_after)
|
||||
end
|
||||
DiscourseEvent.trigger(:post_destroyed, @post, @opts, @user)
|
||||
|
||||
@ -115,11 +117,14 @@ class PostDestroyer
|
||||
end
|
||||
|
||||
# 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
|
||||
|
||||
# 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.update_column(:user_deleted, true)
|
||||
|
@ -239,6 +239,19 @@ describe PostDestroyer do
|
||||
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
|
||||
it "deletes the post" do
|
||||
author = post.user
|
||||
|
Loading…
Reference in New Issue
Block a user