mirror of
https://github.com/discourse/discourse.git
synced 2025-03-21 00:58:53 +08:00
Add one off job to grant the emoji badge retroactively
This commit is contained in:
parent
5059ee04b9
commit
526573074c
@ -262,5 +262,6 @@ module Jobs
|
||||
end
|
||||
end
|
||||
|
||||
Dir["#{Rails.root}/app/jobs/onceoff/*.rb"].each {|file| require_dependency file }
|
||||
Dir["#{Rails.root}/app/jobs/regular/*.rb"].each {|file| require_dependency file }
|
||||
Dir["#{Rails.root}/app/jobs/scheduled/*.rb"].each {|file| require_dependency file }
|
||||
|
27
app/jobs/onceoff/grant_emoji.rb
Normal file
27
app/jobs/onceoff/grant_emoji.rb
Normal file
@ -0,0 +1,27 @@
|
||||
module Jobs
|
||||
|
||||
class GrantEmoji < Jobs::Base
|
||||
sidekiq_options retry: false
|
||||
|
||||
def execute(args)
|
||||
|
||||
to_award = {}
|
||||
|
||||
Post.secured(Guardian.new).visible.public_posts.find_in_batches(batch_size: 5000) do |group|
|
||||
group.each do |p|
|
||||
doc = Nokogiri::HTML::fragment(p.cooked)
|
||||
if (doc.css("img.emoji") - doc.css(".quote img")).size > 0
|
||||
to_award[p.user_id] ||= { post_id: p.id, created_at: p.created_at }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
badge = Badge.find(Badge::FirstEmoji)
|
||||
to_award.each do |user_id, opts|
|
||||
BadgeGranter.grant(badge, User.find(user_id), opts)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
@ -32,7 +32,7 @@ class BadgeGranter
|
||||
user_badge = UserBadge.create!(badge: @badge,
|
||||
user: @user,
|
||||
granted_by: @granted_by,
|
||||
granted_at: Time.now,
|
||||
granted_at: @opts[:created_at] || Time.now,
|
||||
post_id: @post_id,
|
||||
seq: seq)
|
||||
|
||||
|
5
db/migrate/20160407174541_schedule_emoji_grant.rb
Normal file
5
db/migrate/20160407174541_schedule_emoji_grant.rb
Normal file
@ -0,0 +1,5 @@
|
||||
class ScheduleEmojiGrant < ActiveRecord::Migration
|
||||
def up
|
||||
Jobs.enqueue(:grant_emoji)
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user