mirror of
https://github.com/discourse/discourse.git
synced 2024-12-05 05:53:39 +08:00
31 lines
896 B
Ruby
31 lines
896 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Action
|
||
|
class SuspendSilencePostAction
|
||
|
def self.call(guardian:, context:)
|
||
|
return if context.post_id.blank? || context.post_action.blank?
|
||
|
|
||
|
if post = Post.where(id: context.post_id).first
|
||
|
case context.post_action
|
||
|
when "delete"
|
||
|
PostDestroyer.new(guardian.user, post).destroy if guardian.can_delete_post_or_topic?(post)
|
||
|
when "delete_replies"
|
||
|
if guardian.can_delete_post_or_topic?(post)
|
||
|
PostDestroyer.delete_with_replies(guardian.user, post)
|
||
|
end
|
||
|
when "edit"
|
||
|
revisor = PostRevisor.new(post)
|
||
|
|
||
|
# Take what the moderator edited in as gospel
|
||
|
revisor.revise!(
|
||
|
guardian.user,
|
||
|
{ raw: context.post_edit },
|
||
|
skip_validations: true,
|
||
|
skip_revision: true,
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|