Files
danbooru/app/logical/janitor_pruner.rb
2015-06-18 12:31:57 -07:00

33 lines
1.2 KiB
Ruby

class JanitorPruner
def inactive_janitors
User.where("level = ?", User::Levels::JANITOR).select do |user|
approval_count = Post.where("created_at >= ? and approver_id = ?", 2.months.ago, user.id).count
approval_count == 0
end
end
def prune!
admin = User.admins.first
inactive_janitors.each do |user|
CurrentUser.scoped(admin, "127.0.0.1") do
janitor_trial = JanitorTrial.where(user_id: user.id).first
if janitor_trial && user.level <= User::Levels::JANITOR
janitor_trial.demote!
unknown_level = nil
else
user.promote_to!(User::Levels::PLATINUM, :skip_dmail => true)
unknown_level = "\n\nYour previous user level was unknown so your user level has defaulted to Platinum. If you feel this to be in error please reply to this message with your original level."
end
Dmail.create_split(
:to_id => user.id,
:title => "Janitor inactivity",
:body => "You haven't approved a post in the past two months. In order to make sure the list of active janitors is up-to-date, you have lost your janitor privileges. Please reply to this message if you want to be reinstated.#{unknown_level}"
)
end
end
end
end