Class: Decidim::ModerationTools
- Inherits:
-
Object
- Object
- Decidim::ModerationTools
- Defined in:
- lib/decidim/moderation_tools.rb
Instance Attribute Summary collapse
-
#current_user ⇒ Object
readonly
Returns the value of attribute current_user.
-
#reportable ⇒ Object
readonly
Returns the value of attribute reportable.
Instance Method Summary collapse
-
#create_report!(options) ⇒ Object
Public: creates a new report for the given resource, having a basic set of options moderation.create_report!(reason: “spam”, details: “This is a spam”).
-
#hide! ⇒ Object
Public: hides the resource.
-
#initialize(reportable, current_user) ⇒ ModerationTools
constructor
A new instance of ModerationTools.
-
#moderation ⇒ Object
Public: returns the moderation object for the given resource.
-
#participatory_space ⇒ Object
Public: fetches the participatory space of the resource’s component or from the resource itself.
-
#send_notification_to_author ⇒ Object
Public: Broadcasts a notification to the author of the resource that has been hidden.
-
#update_report_count! ⇒ Object
Public: increments the report count for the moderation object associated with resource.
-
#update_reported_content! ⇒ Object
Public: updates the reported content for the moderation object associated with resource.
Constructor Details
#initialize(reportable, current_user) ⇒ ModerationTools
Returns a new instance of ModerationTools.
19 20 21 22 |
# File 'lib/decidim/moderation_tools.rb', line 19 def initialize(reportable, current_user) @reportable = reportable @current_user = current_user end |
Instance Attribute Details
#current_user ⇒ Object (readonly)
Returns the value of attribute current_user.
17 18 19 |
# File 'lib/decidim/moderation_tools.rb', line 17 def current_user @current_user end |
#reportable ⇒ Object (readonly)
Returns the value of attribute reportable.
17 18 19 |
# File 'lib/decidim/moderation_tools.rb', line 17 def reportable @reportable end |
Instance Method Details
#create_report!(options) ⇒ Object
Public: creates a new report for the given resource, having a basic set of options moderation.create_report!(reason: “spam”, details: “This is a spam”)
41 42 43 44 45 46 47 48 |
# File 'lib/decidim/moderation_tools.rb', line 41 def create_report!() .reverse_merge!( moderation:, user: @current_user, locale: I18n.locale ) Report.create!() end |
#hide! ⇒ Object
Public: hides the resource
71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/decidim/moderation_tools.rb', line 71 def hide! Decidim.traceability.perform_action!( "hide", moderation, @current_user, extra: { reportable_type: @reportable.class.name } ) do @reportable.moderation.update!(hidden_at: Time.current) @reportable.try(:touch) end end |
#moderation ⇒ Object
Public: returns the moderation object for the given resource
51 52 53 |
# File 'lib/decidim/moderation_tools.rb', line 51 def moderation @moderation ||= Moderation.find_or_create_by!(reportable: @reportable, participatory_space:) end |
#participatory_space ⇒ Object
Public: fetches the participatory space of the resource’s component or from the resource itself
30 31 32 |
# File 'lib/decidim/moderation_tools.rb', line 30 def participatory_space @participatory_space ||= @reportable.component&.participatory_space || @reportable.try(:participatory_space) end |
#send_notification_to_author ⇒ Object
Public: Broadcasts a notification to the author of the resource that has been hidden
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/decidim/moderation_tools.rb', line 56 def data = { event: "decidim.events.reports.resource_hidden", event_class: Decidim::ResourceHiddenEvent, resource: @reportable, extra: { report_reasons: }, affected_users: @reportable.try(:authors) || [@reportable.try(:normalized_author)] } Decidim::EventsManager.publish(**data) end |
#update_report_count! ⇒ Object
Public: increments the report count for the moderation object associated with resource
25 26 27 |
# File 'lib/decidim/moderation_tools.rb', line 25 def update_report_count! moderation.update!(report_count: moderation.report_count + 1) end |
#update_reported_content! ⇒ Object
Public: updates the reported content for the moderation object associated with resource
35 36 37 |
# File 'lib/decidim/moderation_tools.rb', line 35 def update_reported_content! moderation.update!(reported_content: @reportable.reported_searchable_content_text) end |