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