diff --git a/app/models/post.rb b/app/models/post.rb index 1b74ee22b5b..a62bea04dc9 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -292,6 +292,7 @@ class Post < ActiveRecord::Base end + # TODO: move to post-analyzer? # Determine what posts are quoted by this post def extract_quoted_post_numbers temp_collector = [] diff --git a/app/models/post_alert_observer.rb b/app/models/post_alert_observer.rb index 141ae363b94..251d5605b0f 100644 --- a/app/models/post_alert_observer.rb +++ b/app/models/post_alert_observer.rb @@ -96,20 +96,18 @@ class PostAlertObserver < ActiveRecord::Observer display_username: opts[:display_username] || post.user.username }.to_json) end + # TODO: Move to post-analyzer? # Returns a list users who have been mentioned def extract_mentioned_users(post) User.where(username_lower: post.raw_mentions).where("id <> ?", post.user_id) end + # TODO: Move to post-analyzer? # Returns a list of users who were quoted in the post def extract_quoted_users(post) - result = [] - post.raw.scan(/\[quote=\"([^,]+),.+\"\]/).uniq.each do |m| - username = m.first.strip.downcase - user = User.where("username_lower = :username and id != :id", username: username, id: post.user_id).first - result << user if user.present? - end - result + post.raw.scan(/\[quote=\"([^,]+),.+\"\]/).uniq.map do |m| + User.where("username_lower = :username and id != :id", username: m.first.strip.downcase, id: post.user_id).first + end.compact end # Notify a bunch of users