Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-22 09:20:29 +01:00
54 Zeilen
1,4 KiB
Ruby
54 Zeilen
1,4 KiB
Ruby
# frozen_string_literal: true
|
|
UserHistory.actions[:custom_wizard_step] = 1000
|
|
|
|
class CustomWizard::UserHistory
|
|
def self.where(actor_id: nil, action: nil, context: nil, subject: nil)
|
|
::UserHistory.where(where_opts(actor_id, action, context, subject))
|
|
end
|
|
|
|
def self.create(actor_id: nil, action: nil, context: nil, subject: nil)
|
|
::UserHistory.create(create_opts(actor_id, action, context, subject))
|
|
end
|
|
|
|
def self.create!(actor_id: nil, action: nil, context: nil, subject: nil)
|
|
::UserHistory.create!(create_opts(actor_id, action, context, subject))
|
|
end
|
|
|
|
def self.actions
|
|
@actions ||=
|
|
Enum.new(
|
|
step: UserHistory.actions[:custom_wizard_step]
|
|
)
|
|
end
|
|
|
|
def self.where_opts(actor_id, action, context, subject)
|
|
opts = {
|
|
context: context
|
|
}
|
|
opts[:action] = action if action
|
|
opts[:subject] = subject if subject
|
|
add_actor(opts, actor_id)
|
|
end
|
|
|
|
def self.create_opts(actor_id, action, context, subject)
|
|
opts = {
|
|
action: action,
|
|
context: context
|
|
}
|
|
opts[:subject] = subject if subject
|
|
add_actor(opts, actor_id)
|
|
end
|
|
|
|
def self.add_actor(opts, actor_id)
|
|
acting_user_id = actor_id
|
|
|
|
if actor_id.is_a?(String) && actor_id.include?(CustomWizard::Wizard::GUEST_ID_PREFIX)
|
|
opts[:acting_user_id] = Discourse.system_user.id
|
|
opts[:details] = actor_id
|
|
else
|
|
opts[:acting_user_id] = actor_id
|
|
end
|
|
|
|
opts
|
|
end
|
|
end
|