comparison app/models/setting.rb @ 909:cbb26bc654de redmine-1.3

Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author Chris Cannam
date Fri, 24 Feb 2012 19:09:32 +0000
parents cbce1fd3b1b7
children 433d4f72a19b
comparison
equal deleted inserted replaced
908:c6c2cbd0afee 909:cbb26bc654de
73 Big5 73 Big5
74 Big5-HKSCS 74 Big5-HKSCS
75 TIS-620) 75 TIS-620)
76 76
77 cattr_accessor :available_settings 77 cattr_accessor :available_settings
78 @@available_settings = YAML::load(File.open("#{RAILS_ROOT}/config/settings.yml")) 78 @@available_settings = YAML::load(File.open("#{Rails.root}/config/settings.yml"))
79 Redmine::Plugin.all.each do |plugin| 79 Redmine::Plugin.all.each do |plugin|
80 next unless plugin.settings 80 next unless plugin.settings
81 @@available_settings["plugin_#{plugin.id}"] = {'default' => plugin.settings[:default], 'serialized' => true} 81 @@available_settings["plugin_#{plugin.id}"] = {'default' => plugin.settings[:default], 'serialized' => true}
82 end 82 end
83 83
149 # and clears the cache hash if it's the case 149 # and clears the cache hash if it's the case
150 # Called once per request 150 # Called once per request
151 def self.check_cache 151 def self.check_cache
152 settings_updated_on = Setting.maximum(:updated_on) 152 settings_updated_on = Setting.maximum(:updated_on)
153 if settings_updated_on && @cached_cleared_on <= settings_updated_on 153 if settings_updated_on && @cached_cleared_on <= settings_updated_on
154 @cached_settings.clear 154 clear_cache
155 @cached_cleared_on = Time.now
156 logger.info "Settings cache cleared." if logger
157 end 155 end
156 end
157
158 # Clears the settings cache
159 def self.clear_cache
160 @cached_settings.clear
161 @cached_cleared_on = Time.now
162 logger.info "Settings cache cleared." if logger
158 end 163 end
159 164
160 private 165 private
161 # Returns the Setting instance for the setting named name 166 # Returns the Setting instance for the setting named name
162 # (record found in database or new record with default value) 167 # (record found in database or new record with default value)
163 def self.find_or_default(name) 168 def self.find_or_default(name)
164 name = name.to_s 169 name = name.to_s
165 raise "There's no setting named #{name}" unless @@available_settings.has_key?(name) 170 raise "There's no setting named #{name}" unless @@available_settings.has_key?(name)
166 setting = find_by_name(name) 171 setting = find_by_name(name)
167 setting ||= new(:name => name, :value => @@available_settings[name]['default']) if @@available_settings.has_key? name 172 unless setting
173 setting = new(:name => name)
174 setting.value = @@available_settings[name]['default']
175 end
176 setting
168 end 177 end
169 end 178 end