diff --git a/app/logical/moderator/ip_addr_search.rb b/app/logical/moderator/ip_addr_search.rb index da9f604ce..70231f23f 100644 --- a/app/logical/moderator/ip_addr_search.rb +++ b/app/logical/moderator/ip_addr_search.rb @@ -19,46 +19,11 @@ module Moderator end end - def find_common_users - user = User.find_by_name(params[:user_name]) - ip_addrs = Set.new - user_ids = {} - - ip_addrs.merge(find_distinct_ip_addrs("comments", "ip_addr", "creator_id", user.id)) - ip_addrs.merge(find_distinct_ip_addrs("post_versions", "updater_ip_addr", "updater_id", user.id)) - ip_addrs.merge(find_distinct_ip_addrs("note_versions", "updater_ip_addr", "updater_id", user.id)) - ip_addrs.merge(find_distinct_ip_addrs("pool_versions", "updater_ip_addr", "updater_id", user.id)) - ip_addrs.merge(find_distinct_ip_addrs("wiki_page_versions", "updater_ip_addr", "updater_id", user.id)) - ip_addrs.merge(find_distinct_ip_addrs("dmails", "creator_ip_addr", "from_id", user.id)) - - ip_addrs.each do |ip_addr| - find_distinct_user_ids(user_ids, "comments", "ip_addr", "creator_id", ip_addrs.to_a) - find_distinct_user_ids(user_ids, "post_versions", "updater_ip_addr", "updater_id", ip_addrs.to_a) - find_distinct_user_ids(user_ids, "note_versions", "updater_ip_addr", "updater_id", ip_addrs.to_a) - find_distinct_user_ids(user_ids, "pool_versions", "updater_ip_addr", "updater_id", ip_addrs.to_a) - find_distinct_user_ids(user_ids, "wiki_page_versions", "updater_ip_addr", "updater_id", ip_addrs.to_a) - find_distinct_user_ids(user_ids, "dmails", "creator_ip_addr", "from_id", ip_addrs.to_a) - end - - user_ids - end - private def select_all_sql(sql, *params) ActiveRecord::Base.select_all_sql(sql, *params) end - def find_distinct_ip_addrs(table_name, ip_field_name, user_field_name, user_id) - select_all_sql("select #{ip_field_name} from #{table_name} where updated_at >= ? and #{user_field_name} = ? group by #{ip_field_name}", 3.months.ago, user_id).rows.flatten - end - - def find_distinct_user_ids(user_ids, table_name, ip_field_name, user_field_name, ip_addrs) - select_all_sql("select #{user_field_name}, count(*) from #{table_name} where updated_at >= ? and #{ip_field_name} in (?) group by #{user_field_name}", 3.months.ago, ip_addrs).rows.each do |user_id, count| - user_ids[user_id] ||= 0 - user_ids[user_id] += count.to_i - end - end - def search_by_ip_addr(ip_addrs) sums = Hash.new {|h, k| h[k] = 0} diff --git a/app/views/moderator/ip_addrs/index.html.erb b/app/views/moderator/ip_addrs/index.html.erb index 3c71b18d1..bca873222 100644 --- a/app/views/moderator/ip_addrs/index.html.erb +++ b/app/views/moderator/ip_addrs/index.html.erb @@ -2,24 +2,11 @@
The following users share IP addresses used by <%= params[:search][:user_name] %>. This searches across comments, post changes, note changes, pool changes, wiki changes, and dmails over the past 3 months.
- -| User | -Count | -
|---|---|
| <%= link_to User.id_to_name(user_id), user_path(user_id) %> | -<%= count %> | -