discourse/lib/discourse.rb
Robin Ward d554a59102 Support for a new site setting: newuser_spam_host_threshold. If a new user posts a link
to the same host enough tiles, they will not be able to post the same link again.

Additionally, the site will flag all their previous posts with links as spam and they will
be instantly hidden via the auto hide workflow.
2013-05-16 12:19:50 -04:00

89 lines
2.1 KiB
Ruby

require 'cache'
module Discourse
# When they try to do something they should be logged in for
class NotLoggedIn < Exception; end
# When the input is somehow bad
class InvalidParameters < Exception; end
# When they don't have permission to do something
class InvalidAccess < Exception; end
# When something they want is not found
class NotFound < Exception; end
def self.cache
@cache ||= Cache.new
end
# Get the current base URL for the current site
def self.current_hostname
RailsMultisite::ConnectionManagement.current_hostname
end
def self.base_uri default_value=""
if !ActionController::Base.config.relative_url_root.blank?
return ActionController::Base.config.relative_url_root
else
return default_value
end
end
def self.base_url_no_prefix
protocol = "http"
protocol = "https" if SiteSetting.use_ssl?
if SiteSetting.force_hostname.present?
result = "#{protocol}://#{SiteSetting.force_hostname}"
else
result = "#{protocol}://#{current_hostname}"
end
result << ":#{SiteSetting.port}" if SiteSetting.port.present? && SiteSetting.port.to_i > 0
result
end
def self.base_url
return base_url_no_prefix + base_uri
end
def self.enable_maintenance_mode
$redis.set maintenance_mode_key, 1
true
end
def self.disable_maintenance_mode
$redis.del maintenance_mode_key
true
end
def self.maintenance_mode?
!!$redis.get( maintenance_mode_key )
end
def self.git_version
return $git_version if $git_version
f = Rails.root.to_s + "/config/version"
require f if File.exists?("#{f}.rb")
begin
$git_version ||= `git rev-parse HEAD`.strip
rescue
$git_version = "unknown"
end
end
# Either returns the system_username user or the first admin.
def self.system_user
user = User.where(username_lower: SiteSetting.system_username).first if SiteSetting.system_username.present?
user = User.admins.order(:id).first if user.blank?
user
end
private
def self.maintenance_mode_key
'maintenance_mode'
end
end