FIX: Properly localize badge notification on batch grant

This commit is contained in:
Rafael dos Santos Silva 2016-09-29 18:55:41 -03:00
parent 9859bfb072
commit 9a502c73c9

View File

@ -274,7 +274,7 @@ class BadgeGranter
/*where*/ /*where*/
RETURNING id, user_id, granted_at RETURNING id, user_id, granted_at
) )
select w.*, username FROM w select w.*, username, locale FROM w
JOIN users u on u.id = w.user_id JOIN users u on u.id = w.user_id
" "
@ -305,15 +305,24 @@ class BadgeGranter
# old bronze badges do not matter # old bronze badges do not matter
next if badge.badge_type_id == BadgeType::Bronze and row.granted_at < 2.days.ago next if badge.badge_type_id == BadgeType::Bronze and row.granted_at < 2.days.ago
notification = Notification.create!( # Try to use user locale in the badge notification if possible without too much resources
user_id: row.user_id, notification_locale = if SiteSetting.allow_user_locale && row.locale.present?
notification_type: Notification.types[:granted_badge], row.locale
data: { else
badge_id: badge.id, SiteSetting.default_locale
badge_name: badge.name, end
badge_slug: badge.slug,
username: row.username I18n.with_locale(notification_locale) do
}.to_json ) notification = Notification.create!(
user_id: row.user_id,
notification_type: Notification.types[:granted_badge],
data: {
badge_id: badge.id,
badge_name: badge.display_name,
badge_slug: badge.slug,
username: row.username
}.to_json )
end
Badge.exec_sql("UPDATE user_badges SET notification_id = :notification_id WHERE id = :id", Badge.exec_sql("UPDATE user_badges SET notification_id = :notification_id WHERE id = :id",
notification_id: notification.id, notification_id: notification.id,