class RxcmsCompliancePlugin::ComplianceOperations
Public Class Methods
create()
click to toggle source
# File lib/rxcms-compliance_plugin/classes/compliance_operations.rb, line 55 def self.create # Do nothing end
destroy(siteid, affectedCategory, metadata)
click to toggle source
# File lib/rxcms-compliance_plugin/classes/compliance_operations.rb, line 138 def self.destroy(siteid, affectedCategory, metadata) versioningStatus = getFeatureStatus(siteid, 'versioning') if (!versioningStatus.nil?) if (versioningStatus == "yes") if (affectedCategory.include?(metadata.cat)) metadata.archived = true metadata.save else Metadata.paper_trail_on metadata.destroy end else Metadata.paper_trail_off metadata.destroy end else Metadata.paper_trail_off metadata.destroy end end
destroy_permanently(id)
click to toggle source
# File lib/rxcms-compliance_plugin/classes/compliance_operations.rb, line 161 def self.destroy_permanently(id) begin # Destroy item in metadata metadata = Metadata.first({ :conditions => ['id = ?', id] }) if (!metadata.nil?) Metadata.paper_trail_off metadata.destroy end release = Release.first({ :conditions => ['metadata_id = ?', id]}) if (!release.nil?) release.destroy end # And, destroy item in versions Version.destroy_all(:item_id => id) rescue Exception => ex raise ex.message end end
process_content(siteid, obj)
click to toggle source
Used for enforcing compliance of metadata
# File lib/rxcms-compliance_plugin/classes/compliance_operations.rb, line 6 def self.process_content(siteid, obj) if (getFeatureStatus(siteid, 'compliance') == "yes") if (!obj.nil?) if (obj.archived?) raise end release = Release.find_by_metadata_id(obj.id) if (release.nil?) raise else # check versions and return the right content if (release.date_time.nil?) else obj = obj.version_at(release.date_time) end end end end return obj end
process_content_with_flag(siteid, obj)
click to toggle source
# File lib/rxcms-compliance_plugin/classes/compliance_operations.rb, line 29 def self.process_content_with_flag(siteid, obj) cFlag = true if (getFeatureStatus(siteid, 'compliance') == "yes") if (!obj.nil?) if (obj.archived?) cFlag = false else release = Release.find_by_metadata_id(obj.id) if (release.nil?) cFlag = false else # check versions and return the right content if (release.date_time.nil?) else obj = obj.version_at(release.date_time) end end end else end end return { :data => obj, :flag => cFlag } end
restore(id)
click to toggle source
# File lib/rxcms-compliance_plugin/classes/compliance_operations.rb, line 183 def self.restore(id) begin item = Metadata.find(id) item.archived = false item.save rescue Exception => ex raise ex.message end end
update(id, dataObj, current_user_id, affectedCategory, siteid, time)
click to toggle source
# File lib/rxcms-compliance_plugin/classes/compliance_operations.rb, line 59 def self.update(id, dataObj, current_user_id, affectedCategory, siteid, time) status = getFeatureStatus(siteid, 'compliance') versioningStatus = getFeatureStatus(siteid, 'versioning') if (!status.nil? && !versioningStatus.nil?) if (versioningStatus == "yes") #--- Metadata.paper_trail_on if (status == "yes") if (affectedCategory.include?(Metadata.find(id.to_i).cat)) Metadata.update(id, dataObj) if (time != "current") # Allow update changes but doesn't allow publishing modifier = Version.select("whodunnit").where("created_at >= ? and created_at <= ?", DateTime.parse(time) - 1.second, DateTime.parse(time) + 1.second).first() if (modifier[:whodunnit].to_i != current_user_id) release = Release.first({:conditions => ['metadata_id = ?', id]}) if (!release.nil?) release.destroy end Release.create({ :metadata_id => id, :date_time => DateTime.parse(time), :users_id => current_user_id }) else raise "own-change" end else # raise "the content is current" release = Release.first({:conditions => ['metadata_id = ?', id]}) if (!release.nil?) if (release.users_id != current_user_id) release.destroy Release.create({ :metadata_id => id, :date_time => DateTime.now, :users_id => current_user_id }) else raise "own-change" end else Release.create({ :metadata_id => id, :date_time => DateTime.now, :users_id => current_user_id }) end end return "saved_published" else # if not in affected category, should not be tracking Metadata.update(id, dataObj) end else raise "fallback" end #--- else # raise "versioning feature status is not found" Metadata.paper_trail_off Metadata.update(id, dataObj) return "saved" end else # raise "compliance feature bundle status is not found" Metadata.paper_trail_off Metadata.update(id, dataObj) return "saved" end end
Private Class Methods
getFeatureStatus(siteid, type)
click to toggle source
# File lib/rxcms-compliance_plugin/classes/compliance_operations.rb, line 193 def self.getFeatureStatus(siteid, type) app_config = HashWithIndifferentAccess.new(YAML.load(File.read(File.expand_path('../../../../config/compliance/compliance_config.yml', __FILE__)))) if (type == 'compliance') status = Metadata.first({:conditions => ['sites_id = ? and key = ?', siteid, app_config[:COMPLIANCE_ACTIVATION_CONFIG]]}) if (!status.nil?) return status.value else return nil end elsif (type == 'versioning') status = Metadata.first({:conditions => ['sites_id = ? and key = ?', siteid, app_config[:COMPLIANCE_VERSIONING_ACTIVATION_CONFIG]]}) if (!status.nil?) return status.value else return nil end else return nil end end