Class: Hydra::AccessControls::Embargo

Inherits:
ActiveFedora::Base
  • Object
show all
Defined in:
app/models/hydra/access_controls/embargo.rb

Instance Method Summary collapse

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'app/models/hydra/access_controls/embargo.rb', line 13

def active?
  (embargo_release_date.present? && Date.today < embargo_release_date)
end

#deactivate!Object

Deactivates the embargo and logs a message to the embargo_history property



18
19
20
21
22
23
24
25
26
# File 'app/models/hydra/access_controls/embargo.rb', line 18

def deactivate!
  return unless embargo_release_date
  embargo_state = active? ? "active" : "expired"
  embargo_record = embargo_history_message(embargo_state, Date.today, embargo_release_date, visibility_during_embargo, visibility_after_embargo)
  self.embargo_release_date = nil
  self.visibility_during_embargo = nil
  self.visibility_after_embargo = nil
  self.embargo_history += [embargo_record]
end

#embargo_release_date=(date) ⇒ Object



8
9
10
11
# File 'app/models/hydra/access_controls/embargo.rb', line 8

def embargo_release_date=(date)
  date = DateTime.parse(date) if date.kind_of?(String)
  super(date)
end

#to_hashObject



28
29
30
31
32
33
34
35
36
# File 'app/models/hydra/access_controls/embargo.rb', line 28

def to_hash
  {}.tap do |doc|
    date_field_name = Hydra.config.permissions.embargo.release_date.sub(/_dtsi/, '')
    ActiveFedora::Indexing::Inserter.insert_field(doc, date_field_name, embargo_release_date, :stored_sortable)
    doc[ActiveFedora.index_field_mapper.solr_name("visibility_during_embargo", :symbol)] = visibility_during_embargo unless visibility_during_embargo.nil?
    doc[ActiveFedora.index_field_mapper.solr_name("visibility_after_embargo", :symbol)] = visibility_after_embargo unless visibility_after_embargo.nil?
    doc[ActiveFedora.index_field_mapper.solr_name("embargo_history", :symbol)] = embargo_history unless embargo_history.nil?
  end
end