mirror of
https://github.com/codeninjasllc/discourse.git
synced 2025-02-17 04:01:29 -05:00
FEATURE: 1 year anniversary badge
This commit is contained in:
parent
2a4b30346c
commit
0fca0e9758
2 changed files with 30 additions and 0 deletions
|
@ -19,6 +19,7 @@ class Badge < ActiveRecord::Base
|
|||
NiceShare = 21
|
||||
GoodShare = 22
|
||||
GreatShare = 23
|
||||
OneYearAnniversary = 24
|
||||
|
||||
# other consts
|
||||
AutobiographerMinBioLength = 10
|
||||
|
@ -171,6 +172,23 @@ SQL
|
|||
(:backfill OR u.id IN (:user_ids) )
|
||||
SQL
|
||||
|
||||
# member for a year + has posted at least once during that year
|
||||
OneYearAnniversary = <<-SQL
|
||||
SELECT u.id AS user_id, MIN(u.created_at + interval '1 year') AS granted_at
|
||||
FROM users u
|
||||
JOIN posts p ON p.user_id = u.id
|
||||
WHERE u.id > 0
|
||||
AND u.active
|
||||
AND NOT u.blocked
|
||||
AND u.created_at + interval '1 year' < now()
|
||||
AND p.deleted_at IS NULL
|
||||
AND NOT p.hidden
|
||||
AND p.created_at + interval '1 year' > now()
|
||||
AND (:backfill OR u.id IN (:user_ids))
|
||||
GROUP BY u.id
|
||||
HAVING COUNT(p.id) > 0
|
||||
SQL
|
||||
|
||||
def self.like_badge(count, is_topic)
|
||||
# we can do better with dates, but its hard work
|
||||
"
|
||||
|
|
|
@ -238,6 +238,18 @@ like_badges.each do |spec|
|
|||
end
|
||||
end
|
||||
|
||||
Badge.seed do |b|
|
||||
b.id = Badge::OneYearAnniversary
|
||||
b.default_name = "1 year anniversary"
|
||||
b.default_icon = "fa-birthday-cake"
|
||||
b.badge_type_id = BadgeType::Bronze
|
||||
b.query = Badge::Queries::OneYearAnniversary
|
||||
b.default_badge_grouping_id = BadgeGrouping::Community
|
||||
b.trigger = Badge::Trigger::None
|
||||
b.auto_revoke = false
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue