Additional limits apply to new accounts and accounts with
unresolved issues reported against them.
Fixes #3135
@message.sender = current_user
@message.sent_on = Time.now.getutc
- if current_user.sent_messages.where("sent_on >= ?", Time.now.getutc - 1.hour).count >= Settings.max_messages_per_hour
+ if current_user.sent_messages.where("sent_on >= ?", Time.now.getutc - 1.hour).count >= current_user.max_messages_per_hour
flash.now[:error] = t ".limit_exceeded"
render :action => "new"
elsif @message.save
before_validation :set_reported_user
- scope :with_status, ->(issue_status) { where(:status => statuses[issue_status]) }
+ scope :with_status, ->(issue_status) { where(:status => issue_status) }
scope :visible_to, ->(user) { where(:assigned_role => user.roles.map(&:role)) }
def read_reports
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
+
private
def set_defaults