2013-10-14 14:27:41 +02:00
|
|
|
module Jobs
|
|
|
|
|
|
|
|
class CleanUpUploads < Jobs::Scheduled
|
2014-02-06 10:14:41 +11:00
|
|
|
every 1.hour
|
2013-10-14 14:27:41 +02:00
|
|
|
|
|
|
|
def execute(args)
|
2013-10-16 10:55:42 +02:00
|
|
|
return unless SiteSetting.clean_up_uploads?
|
2013-10-14 14:27:41 +02:00
|
|
|
|
2014-02-28 21:12:51 +01:00
|
|
|
uploads_used_as_profile_backgrounds = User.uniq.where("profile_background IS NOT NULL AND profile_background != ''").pluck(:profile_background)
|
2014-05-26 19:46:43 +10:00
|
|
|
|
2013-11-27 22:01:41 +01:00
|
|
|
grace_period = [SiteSetting.clean_orphan_uploads_grace_period_hours, 1].max
|
2013-10-14 14:27:41 +02:00
|
|
|
|
|
|
|
Upload.where("created_at < ?", grace_period.hour.ago)
|
2014-05-26 19:46:43 +10:00
|
|
|
.where("id NOT IN (SELECT upload_id from post_uploads)")
|
|
|
|
.where("id NOT IN (SELECT system_upload_id from post_uploads)")
|
|
|
|
.where("id NOT IN (SELECT custom_upload_id from post_uploads)")
|
|
|
|
.where("id NOT IN (SELECT gravatar_upload_id from post_uploads)")
|
2014-02-28 21:12:51 +01:00
|
|
|
.where("url NOT IN (?)", uploads_used_as_profile_backgrounds)
|
2013-10-14 14:27:41 +02:00
|
|
|
.find_each do |upload|
|
2013-10-16 10:55:42 +02:00
|
|
|
upload.destroy
|
2013-10-14 14:27:41 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|