Revert "fixes #2530: improved ip addr search"
This reverts commit 1eb2d515fd.
Conflicts:
app/views/moderator/ip_addrs/index.html.erb
This commit is contained in:
@@ -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}
|
||||
|
||||
|
||||
@@ -2,24 +2,11 @@
|
||||
<div id="a-index">
|
||||
<h1>IP Addresses</h1>
|
||||
|
||||
<p>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.</p>
|
||||
|
||||
<table class="striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>User</th>
|
||||
<th>Count</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @search.find_common_users.each do |user_id, count| %>
|
||||
<tr>
|
||||
<td><%= link_to User.id_to_name(user_id), user_path(user_id) %></td>
|
||||
<td><%= count %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% if params[:search][:user_id].present? || params[:search][:user_name].present? %>
|
||||
<%= render "ip_listing" %>
|
||||
<% else %>
|
||||
<%= render "user_listing" %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
<%= form_tag(moderator_ip_addrs_path, :method => :get, :class => "simple_form") do %>
|
||||
<%= search_field "user_name", :label => "User" %>
|
||||
<%= search_field "ip_addr", :label => "IP Addr" %>
|
||||
<%= submit_tag "Search" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@ module Danbooru
|
||||
class Configuration
|
||||
# The version of this Danbooru.
|
||||
def version
|
||||
"2.94.0"
|
||||
"2.93.0"
|
||||
end
|
||||
|
||||
# The name of this Danbooru.
|
||||
|
||||
Reference in New Issue
Block a user