diff --git a/app/models/badge.rb b/app/models/badge.rb index d6b69ea4db4..30449f4215b 100644 --- a/app/models/badge.rb +++ b/app/models/badge.rb @@ -20,20 +20,27 @@ class Badge < ActiveRecord::Base GoodShare = 22 GreatShare = 23 OneYearAnniversary = 24 + Promoter = 25 Campaigner = 26 Champion = 27 + PopularLink = 28 HotLink = 29 FamousLink = 30 + Appreciated = 36 Respected = 37 Admired = 31 - GivesBack = 32 + OutOfLove = 33 MyCupRunnethOver = 34 CrazyInLove = 35 + ThankYou = 38 + GivesBack = 32 + Empathetic = 39 + # other consts AutobiographerMinBioLength = 10 @@ -202,17 +209,6 @@ SQL HAVING COUNT(p.id) > 0 SQL - GivesBack = <<-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 p.like_count > 0 - AND us.post_count > 50000 - AND (:backfill OR us.user_id IN (:user_ids)) - GROUP BY us.user_id - HAVING us.likes_given::float / count(*) > 5.0 -SQL - def self.invite_badge(count,trust_level) " SELECT u.id user_id, current_timestamp granted_at @@ -299,6 +295,18 @@ SQL SQL end + def self.liked_back(min_posts, ratio) + <<-SQL + SELECT p.user_id, current_timestamp AS granted_at + FROM posts AS p + INNER JOIN user_stats AS us ON us.user_id = p.user_id + WHERE p.like_count > 0 + AND (:backfill OR p.user_id IN (:user_ids)) + GROUP BY p.user_id, us.likes_given + HAVING count(*) > #{min_posts} + AND (us.likes_given / count(*)::float) > #{ratio} + SQL + end end belongs_to :badge_type diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index a7b658c4002..86963fe8819 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -2973,9 +2973,6 @@ en: admired: name: Admired description: Has received at least 5 likes on 300 posts - gives_back: - name: Gives Back - description: Has a high ratio of likes given to likes received out_of_love: name: Out of Love description: Used the maximum amount of likes in a day @@ -2985,6 +2982,15 @@ en: crazy_in_love: name: Crazy in Love description: Used the maximum amount of likes in a day 20 times + thank_you: + name: Thank You + description: Has at least 6 liked posts and a high like ratio + gives_back: + name: Gives Back + description: Has at least 100 liked posts and a very high like ratio + empathetic: + name: Empathetic + description: Has at least 500 liked posts and a superlative like ratio google_search: |