2013-02-05 14:16:51 -05:00
require 'site_setting_extension'
2013-11-06 15:47:26 -05:00
require_dependency 'site_settings/yaml_loader'
2013-02-05 14:16:51 -05:00
class SiteSetting < ActiveRecord :: Base
extend SiteSettingExtension
validates_presence_of :name
validates_presence_of :data_type
2014-12-11 17:08:47 +01:00
after_save do | site_setting |
DiscourseEvent . trigger ( :site_setting_saved , site_setting )
true
end
2013-11-19 11:43:01 -08:00
def self . load_settings ( file )
SiteSettings :: YamlLoader . new ( file ) . load do | category , name , default , opts |
if opts . delete ( :client )
client_setting ( name , default , opts . merge ( category : category ) )
else
setting ( name , default , opts . merge ( category : category ) )
end
2013-11-06 15:47:26 -05:00
end
end
2013-10-24 10:05:51 +11:00
2013-11-19 11:43:01 -08:00
load_settings ( File . join ( Rails . root , 'config' , 'site_settings.yml' ) )
2016-06-27 17:26:43 +08:00
setup_deprecated_methods
2013-11-19 11:43:01 -08:00
2014-12-11 17:08:47 +01:00
unless Rails . env . test? && ENV [ 'LOAD_PLUGINS' ] != " 1 "
Dir [ File . join ( Rails . root , " plugins " , " * " , " config " , " settings.yml " ) ] . each do | file |
load_settings ( file )
end
2013-11-19 11:43:01 -08:00
end
2014-03-28 16:36:17 +11:00
client_settings << :available_locales
2014-02-07 22:24:10 -05:00
def self . available_locales
LocaleSiteSetting . values . map { | e | e [ :value ] } . join ( '|' )
end
2013-11-19 11:43:01 -08:00
2013-02-26 19:27:59 +03:00
def self . topic_title_length
min_topic_title_length .. max_topic_title_length
end
2013-06-04 17:58:25 -04:00
def self . private_message_title_length
min_private_message_title_length .. max_topic_title_length
end
2013-02-28 21:54:12 +03:00
def self . post_length
min_post_length .. max_post_length
end
2013-03-28 14:01:13 +01:00
2015-03-19 19:47:55 +05:30
def self . first_post_length
min_first_post_length .. max_post_length
end
2013-06-13 18:18:17 +10:00
def self . private_message_post_length
min_private_message_post_length .. max_post_length
end
2013-06-21 13:31:40 -07:00
def self . top_menu_items
top_menu . split ( '|' ) . map { | menu_item | TopMenuItem . new ( menu_item ) }
end
2013-03-28 14:01:13 +01:00
def self . homepage
2013-06-21 13:31:40 -07:00
top_menu_items [ 0 ] . name
2013-03-28 14:01:13 +01:00
end
2013-07-16 01:59:23 +02:00
def self . anonymous_menu_items
2013-12-24 00:50:36 +01:00
@anonymous_menu_items || = Set . new Discourse . anonymous_filters . map ( & :to_s )
2013-07-16 01:59:23 +02:00
end
2013-03-28 14:01:13 +01:00
def self . anonymous_homepage
2013-07-16 01:59:23 +02:00
top_menu_items . map { | item | item . name }
. select { | item | anonymous_menu_items . include? ( item ) }
. first
end
2014-04-21 13:59:53 -07:00
def self . should_download_images? ( src )
setting = disabled_image_download_domains
return true unless setting . present?
2014-05-07 19:49:16 +02:00
host = URI . parse ( src ) . host
2014-04-21 13:59:53 -07:00
return ! ( setting . split ( '|' ) . include? ( host ) )
rescue URI :: InvalidURIError
return true
end
2013-12-16 11:44:59 +01:00
def self . scheme
2016-06-27 17:26:43 +08:00
force_https? ? " https " : " http "
2013-12-16 11:44:59 +01:00
end
2015-08-21 20:39:21 +02:00
def self . default_categories_selected
[
SiteSetting . default_categories_watching . split ( " | " ) ,
SiteSetting . default_categories_tracking . split ( " | " ) ,
SiteSetting . default_categories_muted . split ( " | " ) ,
] . flatten . to_set
end
2015-09-21 20:28:20 +02:00
def self . min_redirected_to_top_period
TopTopic . sorted_periods . each do | p |
period = p [ 0 ]
return period if TopTopic . topics_per_period ( period ) > = SiteSetting . topics_per_period_in_top_page
end
# not enough topics
nil
end
2016-03-16 22:28:01 +01:00
def self . email_polling_enabled?
SiteSetting . manual_polling_enabled? || SiteSetting . pop3_polling_enabled?
end
2013-02-05 14:16:51 -05:00
end
2013-05-24 12:48:32 +10:00
# == Schema Information
#
# Table name: site_settings
#
# id :integer not null, primary key
2016-02-23 10:33:53 +11:00
# name :string not null
2013-05-24 12:48:32 +10:00
# data_type :integer not null
# value :text
2014-08-27 15:30:17 +10:00
# created_at :datetime not null
# updated_at :datetime not null
2013-05-24 12:48:32 +10:00
#