FEATURE: Add a plugin callback when editing a post
FIX: Wrap PostRevisor database work in a transaction
This commit is contained in:
parent
b7e8bcda07
commit
24ba7ccfbb
|
@ -69,6 +69,7 @@ class PostCreator
|
||||||
setup_topic
|
setup_topic
|
||||||
setup_post
|
setup_post
|
||||||
rollback_if_host_spam_detected
|
rollback_if_host_spam_detected
|
||||||
|
plugin_callbacks
|
||||||
save_post
|
save_post
|
||||||
extract_links
|
extract_links
|
||||||
store_unique_post_key
|
store_unique_post_key
|
||||||
|
@ -113,7 +114,6 @@ class PostCreator
|
||||||
|
|
||||||
post.cooked ||= post.cook(post.raw, cooking_options)
|
post.cooked ||= post.cook(post.raw, cooking_options)
|
||||||
post.sort_order = post.post_number
|
post.sort_order = post.post_number
|
||||||
DiscourseEvent.trigger(:before_create_post, post)
|
|
||||||
post.last_version_at ||= Time.now
|
post.last_version_at ||= Time.now
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -157,6 +157,11 @@ class PostCreator
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def plugin_callbacks
|
||||||
|
DiscourseEvent.trigger :before_create_post, @post
|
||||||
|
DiscourseEvent.trigger :validate_post, @post
|
||||||
|
end
|
||||||
|
|
||||||
def track_latest_on_category
|
def track_latest_on_category
|
||||||
return unless @post && @post.errors.count == 0 && @topic && @topic.category_id
|
return unless @post && @post.errors.count == 0 && @topic && @topic.category_id
|
||||||
|
|
||||||
|
|
|
@ -22,13 +22,18 @@ class PostRevisor
|
||||||
@new_raw = TextCleaner.normalize_whitespaces(new_raw).strip
|
@new_raw = TextCleaner.normalize_whitespaces(new_raw).strip
|
||||||
|
|
||||||
return false unless should_revise?
|
return false unless should_revise?
|
||||||
@post.acting_user = @editor
|
|
||||||
revise_post
|
Post.transaction do
|
||||||
update_category_description
|
@post.acting_user = @editor
|
||||||
update_topic_excerpt
|
revise_post
|
||||||
post_process_post
|
plugin_callbacks
|
||||||
update_topic_word_counts
|
update_category_description
|
||||||
@post.advance_draft_sequence
|
update_topic_excerpt
|
||||||
|
post_process_post
|
||||||
|
update_topic_word_counts
|
||||||
|
@post.advance_draft_sequence
|
||||||
|
end
|
||||||
|
|
||||||
PostAlerter.new.after_save_post(@post)
|
PostAlerter.new.after_save_post(@post)
|
||||||
publish_revision
|
publish_revision
|
||||||
BadgeGranter.queue_badge_grant(Badge::Trigger::PostRevision, post: @post)
|
BadgeGranter.queue_badge_grant(Badge::Trigger::PostRevision, post: @post)
|
||||||
|
@ -61,6 +66,11 @@ class PostRevisor
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def plugin_callbacks
|
||||||
|
DiscourseEvent.trigger :before_edit_post, @post
|
||||||
|
DiscourseEvent.trigger :validate_post, @post
|
||||||
|
end
|
||||||
|
|
||||||
def get_revised_at
|
def get_revised_at
|
||||||
@opts[:revised_at] || Time.now
|
@opts[:revised_at] || Time.now
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue