Class: ContentRestoredVersionEventJob

Inherits:
EventJob
  • Object
show all
Defined in:
app/jobs/content_restored_version_event_job.rb

Instance Attribute Summary collapse

Attributes inherited from EventJob

#depositor_id, #generic_file_id

Instance Method Summary collapse

Methods inherited from EventJob

#queue_name

Methods included from Sufia::SufiaHelperBehavior

#current_search_parameters, #display_user_name, #has_collection_search_parameters?, #iconify_auto_link, #link_back_to_dashboard, #link_to_dashboard_query, #link_to_facet, #link_to_facet_list, #link_to_field, #link_to_profile, #link_to_telephone, #linkify_chat_id, #number_of_deposits, #render_visibility_label, #render_visibility_link, #search_form_action, #sufia_thumbnail_tag

Methods included from Sufia::BlacklightOverride

#render_bookmarks_control?, #render_constraints_query, #url_for_document

Constructor Details

#initialize(generic_file_id, depositor_id, revision_id) ⇒ ContentRestoredVersionEventJob

Returns a new instance of ContentRestoredVersionEventJob.



4
5
6
7
8
# File 'app/jobs/content_restored_version_event_job.rb', line 4

def initialize(generic_file_id, depositor_id, revision_id)
  self.generic_file_id = generic_file_id
  self.depositor_id = depositor_id
  self.revision_id = revision_id
end

Instance Attribute Details

#revision_idObject

Returns the value of attribute revision_id.



2
3
4
# File 'app/jobs/content_restored_version_event_job.rb', line 2

def revision_id
  @revision_id
end

Instance Method Details

#runObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/jobs/content_restored_version_event_job.rb', line 10

def run
  gf = GenericFile.find(generic_file_id)
  action = "User #{link_to_profile depositor_id} has restored a version '#{revision_id}' of #{link_to gf.title.first, Sufia::Engine.routes.url_helpers.generic_file_path(gf.noid)}"
  timestamp = Time.now.to_i
  depositor = User.find_by_user_key(depositor_id)
  # Create the event
  event = depositor.create_event(action, timestamp)
  # Log the event to the depositor's profile stream
  depositor.log_profile_event(event)
  # Log the event to the GF's stream
  gf.log_event(event)
  # Fan out the event to all followers who have access
  depositor.followers.select { |user| user.can? :read, gf }.each do |follower|
    follower.log_event(event)
  end
end