discourse/app/models/about.rb

70 lines
1.8 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2014-08-12 04:59:00 +08:00
class About
include ActiveModel::Serialization
2015-07-07 12:52:19 +08:00
include StatsCacheable
2014-08-12 04:59:00 +08:00
attr_accessor :moderators,
:admins
2015-07-07 12:52:19 +08:00
def self.stats_cache_key
'about-stats'
end
def self.fetch_stats
About.new.stats
end
2014-08-12 06:15:35 +08:00
def version
Discourse::VERSION::STRING
end
def https
SiteSetting.force_https
end
2014-08-12 06:15:35 +08:00
def title
SiteSetting.title
end
def locale
SiteSetting.default_locale
end
def description
SiteSetting.site_description
end
2014-08-12 04:59:00 +08:00
def moderators
@moderators ||= User.where(moderator: true, admin: false)
2017-07-28 09:20:09 +08:00
.human_users
.order("last_seen_at DESC")
2014-08-12 04:59:00 +08:00
end
def admins
@admins ||= User.where(admin: true)
.human_users
.order("last_seen_at DESC")
2014-08-12 04:59:00 +08:00
end
def stats
@stats ||= {
topic_count: Topic.listable_topics.count,
post_count: Post.count,
2015-02-18 04:31:50 +08:00
user_count: User.real.count,
2014-08-12 04:59:00 +08:00
topics_7_days: Topic.listable_topics.where('created_at > ?', 7.days.ago).count,
2015-02-03 01:27:49 +08:00
topics_30_days: Topic.listable_topics.where('created_at > ?', 30.days.ago).count,
2014-08-12 04:59:00 +08:00
posts_7_days: Post.where('created_at > ?', 7.days.ago).count,
2015-02-03 01:27:49 +08:00
posts_30_days: Post.where('created_at > ?', 30.days.ago).count,
2014-08-12 06:15:35 +08:00
users_7_days: User.where('created_at > ?', 7.days.ago).count,
2015-02-03 01:27:49 +08:00
users_30_days: User.where('created_at > ?', 30.days.ago).count,
active_users_7_days: User.where('last_seen_at > ?', 7.days.ago).count,
2015-02-03 01:27:49 +08:00
active_users_30_days: User.where('last_seen_at > ?', 30.days.ago).count,
2014-08-12 06:15:35 +08:00
like_count: UserAction.where(action_type: UserAction::LIKE).count,
2015-02-03 01:27:49 +08:00
likes_7_days: UserAction.where(action_type: UserAction::LIKE).where("created_at > ?", 7.days.ago).count,
likes_30_days: UserAction.where(action_type: UserAction::LIKE).where("created_at > ?", 30.days.ago).count
2014-08-12 04:59:00 +08:00
}
end
end