mirror of
https://github.com/discourse/discourse.git
synced 2025-03-20 23:16:13 +08:00
FEATURE: 1 year anniversary badge
This commit is contained in:
parent
2a4b30346c
commit
0fca0e9758
@ -19,6 +19,7 @@ class Badge < ActiveRecord::Base
|
|||||||
NiceShare = 21
|
NiceShare = 21
|
||||||
GoodShare = 22
|
GoodShare = 22
|
||||||
GreatShare = 23
|
GreatShare = 23
|
||||||
|
OneYearAnniversary = 24
|
||||||
|
|
||||||
# other consts
|
# other consts
|
||||||
AutobiographerMinBioLength = 10
|
AutobiographerMinBioLength = 10
|
||||||
@ -171,6 +172,23 @@ SQL
|
|||||||
(:backfill OR u.id IN (:user_ids) )
|
(:backfill OR u.id IN (:user_ids) )
|
||||||
SQL
|
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)
|
def self.like_badge(count, is_topic)
|
||||||
# we can do better with dates, but its hard work
|
# we can do better with dates, but its hard work
|
||||||
"
|
"
|
||||||
|
@ -238,6 +238,18 @@ like_badges.each do |spec|
|
|||||||
end
|
end
|
||||||
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|
|
Badge.where("NOT system AND id < 100").each do |badge|
|
||||||
new_id = [Badge.maximum(:id) + 1, 100].max
|
new_id = [Badge.maximum(:id) + 1, 100].max
|
||||||
old_id = badge.id
|
old_id = badge.id
|
||||||
|
Loading…
x
Reference in New Issue
Block a user