X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/be11f2075e8bbde0a1e0640fd254c64ee0c94f25..1c66d7f50fe4d8ef22771f99d8690bc5136f30b7:/app/models/user.rb diff --git a/app/models/user.rb b/app/models/user.rb index ec3883bc6..a63846e42 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -3,7 +3,7 @@ # Table name: users # # email :string not null -# id :bigint(8) not null, primary key +# id :bigint not null, primary key # pass_crypt :string not null # creation_time :datetime not null # display_name :string default(""), not null @@ -28,7 +28,7 @@ # diary_entries_count :integer default(0), not null # image_use_gravatar :boolean default(FALSE), not null # auth_provider :string -# home_tile :bigint(8) +# home_tile :bigint # tou_agreed :datetime # diary_comments_count :integer default(0) # note_comments_count :integer default(0) @@ -282,8 +282,8 @@ class User < ApplicationRecord OSM::GreatCircle.new(home_lat, home_lon).distance(nearby_user.home_lat, nearby_user.home_lon) end - def friends_with?(new_friend) - follows.exists?(:following => new_friend) + def follows?(user) + follows.exists?(:following => user) end ## @@ -359,11 +359,13 @@ class User < ApplicationRecord trace_score = traces.size * 50 diary_entry_score = diary_entries.visible.inject(0) { |acc, elem| acc + elem.body.spam_score } diary_comment_score = diary_comments.visible.inject(0) { |acc, elem| acc + elem.body.spam_score } + report_score = Report.where(:category => "spam", :issue => issues.with_status("open")).distinct.count(:user_id) * 20 score = description.spam_score / 4.0 score += diary_entries.visible.where("created_at > ?", 1.day.ago).count * 10 score += diary_entry_score / diary_entries.visible.length unless diary_entries.visible.empty? score += diary_comment_score / diary_comments.visible.length unless diary_comments.visible.empty? + score += report_score score -= changeset_score score -= trace_score @@ -411,12 +413,12 @@ class User < ApplicationRecord max_messages.clamp(0, Settings.max_messages_per_hour) end - def max_friends_per_hour + def max_follows_per_hour account_age_in_seconds = Time.now.utc - created_at account_age_in_hours = account_age_in_seconds / 3600 - recent_friends = Follow.where(:following => self).where(:created_at => Time.now.utc - 3600..).count - max_friends = account_age_in_hours.ceil + recent_friends - (active_reports * 10) - max_friends.clamp(0, Settings.max_friends_per_hour) + recent_follows = Follow.where(:following => self).where(:created_at => Time.now.utc - 3600..).count + max_follows = account_age_in_hours.ceil + recent_follows - (active_reports * 10) + max_follows.clamp(0, Settings.max_follows_per_hour) end def max_changeset_comments_per_hour