Class: EasySetting
- Defined in:
- app/models/easy_setting.rb
Class Method Summary collapse
- .beginning_of_fiscal_year(date = nil) ⇒ Object
- .boolean_keys ⇒ Object
- .copy_all_project_settings(source_project, target_project) ⇒ Object
- .copy_project_settings(setting_name, source_project_id, target_project_id) ⇒ Object
- .delete_key(key, project_or_project_id) ⇒ Object
- .end_of_fiscal_year(date = nil) ⇒ Object
- .get_beginning_of_fiscal_for_year(year = nil) ⇒ Object
- .plugin_defaults ⇒ Object
- .value(key, project_or_project_id = nil, use_fallback = true) ⇒ Object
Class Method Details
.beginning_of_fiscal_year(date = nil) ⇒ Object
106 107 108 109 110 111 112 113 114 115 |
# File 'app/models/easy_setting.rb', line 106 def self.beginning_of_fiscal_year(date = nil) today = date || Date.today fy = get_beginning_of_fiscal_for_year(today.year) if fy <= today fy else fy - 1.year end end |
.boolean_keys ⇒ Object
13 14 15 |
# File 'app/models/easy_setting.rb', line 13 def self.boolean_keys [] end |
.copy_all_project_settings(source_project, target_project) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'app/models/easy_setting.rb', line 17 def self.copy_all_project_settings(source_project, target_project) source_project = source_project.id if source_project.is_a?(Project) target_project = target_project.id if target_project.is_a?(Project) = {:scope => EasySetting.where(project_id: source_project)} Redmine::Hook.call_hook(:copy_all_project_settings_exceceptions, :options => ) source_project_names = [:scope].pluck(:name) source_project_names.each do |name| copy_project_settings(name, source_project, target_project) end end |
.copy_project_settings(setting_name, source_project_id, target_project_id) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/models/easy_setting.rb', line 30 def self.copy_project_settings(setting_name, source_project_id, target_project_id) source = EasySetting.where(:name => setting_name, :project_id => source_project_id).first target = EasySetting.where(:name => setting_name, :project_id => target_project_id).first if source.nil? && !target.nil? target.destroy elsif !source.nil? && target.nil? EasySetting.create(:name => setting_name, :project_id => target_project_id, :value => source.value) elsif !source.nil? && !target.nil? && target.value != source.value target.value = source.value target.save end end |
.delete_key(key, project_or_project_id) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 |
# File 'app/models/easy_setting.rb', line 82 def self.delete_key(key, project_or_project_id) if project_or_project_id.is_a?(Project) project_id = project_or_project_id.id elsif !project_or_project_id.nil? project_id = project_or_project_id.to_i else project_id = nil end return if project_id.nil? EasySetting.where(:name => key, :project_id => project_id).destroy_all end |
.end_of_fiscal_year(date = nil) ⇒ Object
117 118 119 |
# File 'app/models/easy_setting.rb', line 117 def self.end_of_fiscal_year(date = nil) beginning_of_fiscal_year(date) + 1.year - 1.day end |
.get_beginning_of_fiscal_for_year(year = nil) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 |
# File 'app/models/easy_setting.rb', line 94 def self.get_beginning_of_fiscal_for_year(year = nil) f_y = year || Date.today.year f_m = (EasySetting.value('fiscal_month') || 1).to_i f_d = (EasySetting.value('fiscal_day') || 1).to_i begin Date.civil(f_y, f_m, f_d) rescue Date.civil(f_y, 1, 1) end end |
.plugin_defaults ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'app/models/easy_setting.rb', line 44 def self.plugin_defaults @plugin_defaults ||= Redmine::Plugin.all.inject({}) do |res, p| if p.settings && p.settings[:easy_settings].is_a?(Hash) p.settings[:easy_settings].each do |key, value| res["#{p.id}_#{key}"] = value end end res end end |
.value(key, project_or_project_id = nil, use_fallback = true) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'app/models/easy_setting.rb', line 55 def self.value(key, project_or_project_id = nil, use_fallback = true) if project_or_project_id.is_a?(Project) project_id = project_or_project_id.id elsif !project_or_project_id.nil? project_id = project_or_project_id.to_i else project_id = nil end cache_key = "EasySetting/#{key}/#{project_id}" fallback_cache_key = "EasySetting/#{key}/" cached_value = Rails.cache.fetch cache_key do EasySetting.where(name: key, project_id: project_id).pluck(:value).first end result = if use_fallback && (cached_value.nil? || cached_value == '') Rails.cache.fetch fallback_cache_key do EasySetting.where(name: key, project_id: nil).pluck(:value).first end else cached_value end result = plugin_defaults[key.to_s] if result.nil? result end |