diff --git a/app/models/badge.rb b/app/models/badge.rb index 912f92073..e8a72c40b 100644 --- a/app/models/badge.rb +++ b/app/models/badge.rb @@ -26,6 +26,7 @@ class Badge < ActiveRecord::Base PopularLink = 28 HotLink = 29 FamousLink = 30 + Admired = 31 # other consts AutobiographerMinBioLength = 10 @@ -195,6 +196,17 @@ SQL HAVING COUNT(p.id) > 0 SQL + Admired = <<-SQL + SELECT us.user_id, current_timestamp AS granted_at + FROM user_stats AS us + INNER JOIN posts AS p ON us.user_id = p.user_id + WHERE us.post_count > 5 + AND p.like_count > 0 + AND (:backfill OR us.user_id IN (:user_ids)) + GROUP BY us.user_id, us.post_count + HAVING count(*)::float / us.post_count > 0.75 +SQL + def self.invite_badge(count,trust_level) " SELECT u.id user_id, current_timestamp granted_at diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 5d7b3fa96..05c4313bf 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -2964,6 +2964,9 @@ en: famous_link: name: Famous Link description: Posted an external link with at least 1000 clicks + admired: + name: Admired + description: Has a high ratio of liked posts google_search: | <h3>Search with Google</h3> diff --git a/db/fixtures/006_badges.rb b/db/fixtures/006_badges.rb index c96c0572e..3fa022d1b 100644 --- a/db/fixtures/006_badges.rb +++ b/db/fixtures/006_badges.rb @@ -292,6 +292,18 @@ end end end +Badge.seed do |b| + b.id = Badge::Admired + b.default_name = "Admired" + b.default_icon = "fa-heart" + b.badge_type_id = BadgeType::Gold + b.query = Badge::Queries::Admired + b.default_badge_grouping_id = BadgeGrouping::Community + b.trigger = Badge::Trigger::None + b.auto_revoke = true + b.system = true +end + Badge.where("NOT system AND id < 100").each do |badge| new_id = [Badge.maximum(:id) + 1, 100].max old_id = badge.id