mirror of
https://github.com/discourse/discourse.git
synced 2025-06-02 16:29:32 +08:00
FEATURE: Allow plugins to register a callback to ignore DraftSequence.
This commit is contained in:
@ -5,7 +5,7 @@ class DraftSequence < ActiveRecord::Base
|
||||
user_id = user
|
||||
user_id = user.id unless user.is_a?(Integer)
|
||||
|
||||
return 0 if user_id < 0
|
||||
return 0 if invalid_user_id?(user_id)
|
||||
|
||||
h = { user_id: user_id, draft_key: key }
|
||||
c = DraftSequence.find_by(h)
|
||||
@ -23,12 +23,22 @@ class DraftSequence < ActiveRecord::Base
|
||||
user_id = user
|
||||
user_id = user.id unless user.is_a?(Integer)
|
||||
|
||||
return nil if user_id < 0
|
||||
return nil if invalid_user_id?(user_id)
|
||||
|
||||
# perf critical path
|
||||
r, _ = DB.query_single('select sequence from draft_sequences where user_id = ? and draft_key = ?', user_id, key)
|
||||
r.to_i
|
||||
end
|
||||
|
||||
cattr_accessor :plugin_ignore_draft_sequence_callbacks
|
||||
self.plugin_ignore_draft_sequence_callbacks = {}
|
||||
|
||||
def self.invalid_user_id?(user_id)
|
||||
user_id < 0 || self.plugin_ignore_draft_sequence_callbacks.any? do |plugin, callback|
|
||||
plugin.enabled? ? callback.call(user_id) : false
|
||||
end
|
||||
end
|
||||
private_class_method :invalid_user_id?
|
||||
end
|
||||
|
||||
# == Schema Information
|
||||
|
Reference in New Issue
Block a user