diff --git a/lib/post_creator.rb b/lib/post_creator.rb index 456edcbf32b..9a7052af136 100644 --- a/lib/post_creator.rb +++ b/lib/post_creator.rb @@ -69,6 +69,7 @@ class PostCreator setup_topic setup_post rollback_if_host_spam_detected + plugin_callbacks save_post extract_links store_unique_post_key @@ -113,7 +114,6 @@ class PostCreator post.cooked ||= post.cook(post.raw, cooking_options) post.sort_order = post.post_number - DiscourseEvent.trigger(:before_create_post, post) post.last_version_at ||= Time.now end @@ -157,6 +157,11 @@ class PostCreator end end + def plugin_callbacks + DiscourseEvent.trigger :before_create_post, @post + DiscourseEvent.trigger :validate_post, @post + end + def track_latest_on_category return unless @post && @post.errors.count == 0 && @topic && @topic.category_id diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb index c9c8c6e9da6..c1411ab8ab3 100644 --- a/lib/post_revisor.rb +++ b/lib/post_revisor.rb @@ -23,13 +23,18 @@ class PostRevisor # TODO this is not in a transaction - dangerous! return false unless should_revise? - @post.acting_user = @editor - revise_post - update_category_description - update_topic_excerpt - post_process_post - update_topic_word_counts - @post.advance_draft_sequence + + Post.transaction do + @post.acting_user = @editor + revise_post + plugin_callbacks + update_category_description + update_topic_excerpt + post_process_post + update_topic_word_counts + @post.advance_draft_sequence + end + PostAlerter.new.after_save_post(@post) @post.publish_change_to_clients! :revised BadgeGranter.queue_badge_grant(Badge::Trigger::PostRevision, post: @post) @@ -51,6 +56,11 @@ class PostRevisor end end + def plugin_callbacks + DiscourseEvent.trigger :before_edit_post, @post + DiscourseEvent.trigger :validate_post, @post + end + def get_revised_at @opts[:revised_at] || Time.now end