From 44b59ab18d536fa70e2a1e273afcdeb1ab8fb68f Mon Sep 17 00:00:00 2001 From: r888888888 Date: Tue, 22 Jul 2014 15:43:20 -0700 Subject: [PATCH] fixes #2203 --- app/logical/daily_maintenance.rb | 1 + app/logical/user_upload_clamper.rb | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 app/logical/user_upload_clamper.rb diff --git a/app/logical/daily_maintenance.rb b/app/logical/daily_maintenance.rb index c648a944a..a62c8d921 100644 --- a/app/logical/daily_maintenance.rb +++ b/app/logical/daily_maintenance.rb @@ -8,6 +8,7 @@ class DailyMaintenance Delayed::Job.delete_all(['created_at < ?', 7.days.ago]) PostVote.delete_all(['created_at < ?', 1.month.ago]) CommentVote.delete_all(['created_at < ?', 1.month.ago]) + UserUploadClamper.new.clamp_all! TagSubscription.process_all ApiCacheGenerator.new.generate_tag_cache end diff --git a/app/logical/user_upload_clamper.rb b/app/logical/user_upload_clamper.rb new file mode 100644 index 000000000..f23023617 --- /dev/null +++ b/app/logical/user_upload_clamper.rb @@ -0,0 +1,22 @@ +class UserUploadClamper + def clamp_all! + users.each do |user| + if clamp_user?(user) + clamp_user!(user) + end + end + end + + def users + User.where("post_upload_count >= 200 and (base_upload_limit > 10 or base_upload_limit is null) and level < ?", User::Levels::CONTRIBUTOR).limit(50) + end + + def clamp_user?(user) + Reports::UserPromotions.deletion_confidence_interval_for(user) >= 25 + end + + def clamp_user!(user) + user.update_attribute(:base_upload_limit, -1) + ModAction.create(:description => "user ##{user.id} (#{user.name}) clamped") + end +end