33 lines
1.2 KiB
Ruby
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
|