allow end user to recover a post they delete

automatically delete stubs after 1 day
This commit is contained in:
Sam
2013-07-22 17:48:24 +10:00
parent d68f30c09d
commit 1f3c5cb656
13 changed files with 131 additions and 23 deletions

View File

@@ -4,6 +4,13 @@
#
class PostDestroyer
def self.destroy_stubs
Post.where(deleted_at: nil, user_deleted: true)
.where('updated_at < ? AND post_number > 1', 1.day.ago).each do |post|
PostDestroyer.new(Discourse.system_user, post).destroy
end
end
def initialize(user, post)
@user, @post = user, post
end
@@ -16,6 +23,19 @@ class PostDestroyer
end
end
def recover
if @user.staff? && @post.deleted_at
staff_recovered
elsif @user.staff? || @user.id == @post.user_id
user_recovered
end
@post.topic.update_statistics
end
def staff_recovered
@post.recover!
end
# When a post is properly deleted. Well, it's still soft deleted, but it will no longer
# show up in the topic
def staff_destroyed
@@ -75,4 +95,12 @@ class PostDestroyer
end
end
def user_recovered
Post.transaction do
@post.update_column(:user_deleted, false)
@post.revise(@user, @post.versions.last.modifications["raw"][0], force_new_version: true)
@post.update_flagged_posts_count
end
end
end