2   class ListsController < ApplicationController
 
   3     include PaginationMethods
 
   7     before_action :authorize_web
 
   8     before_action :set_locale
 
   9     before_action :check_database_readable
 
  11     authorize_resource :class => :users_list
 
  14     # display a list of users matching specified criteria
 
  16       @params = params.permit(:status, :username, :ip, :edits, :before, :after)
 
  19       users = users.where(:status => @params[:status]) if @params[:status].present?
 
  20       users = users.where("LOWER(email) = LOWER(?) OR LOWER(NORMALIZE(display_name, NFKC)) = LOWER(NORMALIZE(?, NFKC))", @params[:username], @params[:username]) if @params[:username].present?
 
  21       users = users.where("creation_address <<= ?", @params[:ip]) if @params[:ip].present?
 
  22       users = users.where(:changesets_count => 0) if @params[:edits] == "no"
 
  23       users = users.where.not(:changesets_count => 0) if @params[:edits] == "yes"
 
  25       @users_count = users.limit(501).count
 
  26       @users_count = I18n.t("count.at_least_pattern", :count => 500) if @users_count > 500
 
  28       @users, @newer_users_id, @older_users_id = get_page_items(users, :limit => 50)
 
  30       render :partial => "page" if turbo_frame_request_id == "pagination"
 
  34     # update status of selected users
 
  36       ids = params.fetch(:user, {}).keys.collect(&:to_i)
 
  38       User.where(:id => ids).update_all(:status => "confirmed") if params[:confirm]
 
  39       User.where(:id => ids).update_all(:status => "deleted") if params[:hide]
 
  41       redirect_to url_for(params.permit(:status, :username, :ip, :edits, :before, :after))