about summary refs log tree commit diff
path: root/app/models/trends.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/trends.rb')
-rw-r--r--app/models/trends.rb29
1 files changed, 27 insertions, 2 deletions
diff --git a/app/models/trends.rb b/app/models/trends.rb
index 8f8cb0261..0be900b04 100644
--- a/app/models/trends.rb
+++ b/app/models/trends.rb
@@ -13,15 +13,40 @@ module Trends
     @tags ||= Trends::Tags.new
   end
 
+  def self.statuses
+    @statuses ||= Trends::Statuses.new
+  end
+
+  def self.register!(status)
+    [links, tags, statuses].each { |trend_type| trend_type.register(status) }
+  end
+
   def self.refresh!
-    [links, tags].each(&:refresh)
+    [links, tags, statuses].each(&:refresh)
   end
 
   def self.request_review!
-    [tags].each(&:request_review) if enabled?
+    return unless enabled?
+
+    links_requiring_review    = links.request_review
+    tags_requiring_review     = tags.request_review
+    statuses_requiring_review = statuses.request_review
+
+    User.staff.includes(:account).find_each do |user|
+      links    = user.allows_trending_tags_review_emails? ? links_requiring_review : []
+      tags     = user.allows_trending_links_review_emails? ? tags_requiring_review : []
+      statuses = user.allows_trending_statuses_review_emails? ? statuses_requiring_review : []
+      next if links.empty? && tags.empty? && statuses.empty?
+
+      AdminMailer.new_trends(user.account, links, tags, statuses).deliver_later!
+    end
   end
 
   def self.enabled?
     Setting.trends
   end
+
+  def self.available_locales
+    @available_locales ||= I18n.available_locales.map { |locale| locale.to_s.split(/[_-]/).first }.uniq
+  end
 end