has_many :client_applications
has_many :oauth_tokens, -> { order(:authorized_at => :desc).preload(:client_application) }, :class_name => "OauthToken"
+ has_many :oauth2_applications, :class_name => Doorkeeper.config.application_model.name, :foreign_key => :owner_id
+ has_many :access_grants, :class_name => Doorkeeper.config.access_grant_model.name, :foreign_key => :resource_owner_id
+ has_many :access_tokens, :class_name => Doorkeeper.config.access_token_model.name, :foreign_key => :resource_owner_id
+
has_many :blocks, :class_name => "UserBlock"
has_many :blocks_created, :class_name => "UserBlock", :foreign_key => :creator_id
has_many :blocks_revoked, :class_name => "UserBlock", :foreign_key => :revoker_id
validates :preferred_editor, :inclusion => Editors::ALL_EDITORS, :allow_nil => true
validates :auth_uid, :unless => proc { |u| u.auth_provider.nil? },
:uniqueness => { :scope => :auth_provider }
+ validates :avatar, :if => proc { |u| u.attachment_changes["avatar"] },
+ :image => true
validates_email_format_of :email, :if => proc { |u| u.email_changed? }
validates_email_format_of :new_email, :allow_blank => true, :if => proc { |u| u.new_email_changed? }
digest.hexdigest
end
+ def max_messages_per_hour
+ account_age_in_seconds = Time.now.utc - creation_time
+ account_age_in_hours = account_age_in_seconds / 3600
+ recent_messages = messages.where("sent_on >= ?", Time.now.utc - 3600).count
+ active_reports = issues.with_status(:open).sum(:reports_count)
+ max_messages = account_age_in_hours.ceil + recent_messages - active_reports * 10
+ max_messages.clamp(0, Settings.max_messages_per_hour)
+ end
+
+ def max_friends_per_hour
+ account_age_in_seconds = Time.now.utc - creation_time
+ account_age_in_hours = account_age_in_seconds / 3600
+ recent_friends = Friendship.where(:befriendee => self).where("created_at >= ?", Time.now.utc - 3600).count
+ active_reports = issues.with_status(:open).sum(:reports_count)
+ max_friends = account_age_in_hours.ceil + recent_friends - active_reports * 10
+ max_friends.clamp(0, Settings.max_friends_per_hour)
+ end
+
private
def set_defaults