request_model = $this->load->model('request'); } private function get_filted_query($select) { $filter_username = $this->request_model->get_str('filter_username', FALSE); $filter_fisrt_name = $this->request_model->get_str('filter_first_name', FALSE); $filter_last_name = $this->request_model->get_str('filter_last_name', FALSE); $filter_email = $this->request_model->get_str('filter_email', FALSE); $max = $this->request_model->get_int('max', FALSE); $query = $this->db ->select($select) ->from('api.user u'); if ($filter_username) { $query = $query ->where('u.username') ->like('%' . $filter_username . '%'); } if ($filter_fisrt_name) { $query = $query ->where('u.first_name') ->like('%'. $filter_fisrt_name . '%'); } if ($filter_last_name) { $query = $query ->where('u.last_name') ->like('%' . $filter_last_name . '%'); } if ($filter_email) { $query = $query ->where('u.email') ->like('%' . $filter_email . '%'); } if ($max) { $query = $query ->where('u.id') ->le($max); } return $query; } public function get_users(): array { $page = $this->request_model->get_int('page', 0); $page_size = 24; $offset = $page_size * $page; $users = $this->get_filted_query('*') ->order_by('u.id', 'DESC') ->offset($offset) ->limit($page_size) ->rows(); $count = $this->get_filted_query('COUNT(u.id) AS count') ->row()['count']; $max = 0; foreach ($users as $user) { $max = max($max, $user['id']); } return array( 'users' => $users, 'count' => $count, 'page_size' => $page_size, 'max_id' => $max ); } public function get_data(): ?array { $data = parent::get_data(); $data['title'] = lang('title'); return $data; } }