|
|
@ -4,6 +4,8 @@ module Admin |
|
|
|
class TagsController < BaseController |
|
|
|
before_action :set_tags, only: :index |
|
|
|
before_action :set_tag, except: :index |
|
|
|
before_action :set_usage_by_domain, except: :index |
|
|
|
before_action :set_counters, except: :index |
|
|
|
|
|
|
|
def index |
|
|
|
authorize :tag, :index? |
|
|
@ -33,6 +35,21 @@ module Admin |
|
|
|
@tag = Tag.find(params[:id]) |
|
|
|
end |
|
|
|
|
|
|
|
def set_usage_by_domain |
|
|
|
@usage_by_domain = @tag.statuses |
|
|
|
.where(visibility: :public) |
|
|
|
.where(Status.arel_table[:id].gteq(Mastodon::Snowflake.id_at(Time.now.utc.beginning_of_day))) |
|
|
|
.joins(:account) |
|
|
|
.group('accounts.domain') |
|
|
|
.reorder('statuses_count desc') |
|
|
|
.pluck('accounts.domain, count(*) AS statuses_count') |
|
|
|
end |
|
|
|
|
|
|
|
def set_counters |
|
|
|
@accounts_today = @tag.history.first[:accounts] |
|
|
|
@accounts_week = Redis.current.pfcount(*current_week_days.map { |day| "activity:tags:#{@tag.id}:#{day}:accounts" }) |
|
|
|
end |
|
|
|
|
|
|
|
def filtered_tags |
|
|
|
scope = Tag |
|
|
|
scope = scope.discoverable if filter_params[:context] == 'directory' |
|
|
@ -49,5 +66,13 @@ module Admin |
|
|
|
def tag_params |
|
|
|
params.require(:tag).permit(:name, :trendable, :usable, :listable) |
|
|
|
end |
|
|
|
|
|
|
|
def current_week_days |
|
|
|
now = Time.now.utc.beginning_of_day.to_date |
|
|
|
|
|
|
|
(Date.commercial(now.cwyear, now.cweek)..now).map do |date| |
|
|
|
date.to_time.utc.beginning_of_day.to_i |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
end |