/** * Get all users * * @param int $roleId * @param string $username * @param array $deniedRoles * @param int $limit * @param int $page * @param string $sort * @return array */ public function getAll($roleId = null, $username = null, array $deniedRoles = null, $limit = null, $page = null, $sort = null) { $sql = Table\Users::sql(); $sql->select(['id' => DB_PREFIX . 'users.id', 'user_role_id' => DB_PREFIX . 'users.role_id', 'username' => DB_PREFIX . 'users.username', 'email' => DB_PREFIX . 'users.email', 'active' => DB_PREFIX . 'users.active', 'verified' => DB_PREFIX . 'users.verified', 'total_logins' => DB_PREFIX . 'users.total_logins', 'role_id' => DB_PREFIX . 'roles.id', 'role_name' => DB_PREFIX . 'roles.name'])->join(DB_PREFIX . 'roles', [DB_PREFIX . 'users.role_id' => DB_PREFIX . 'roles.id']); if (null !== $limit) { $page = null !== $page && (int) $page > 1 ? $page * $limit - $limit : null; $sql->select()->offset($page)->limit($limit); } $params = []; $order = $this->getSortOrder($sort, $page); $by = explode(' ', $order); $sql->select()->orderBy($by[0], $by[1]); if (null !== $username) { $sql->select()->where('username LIKE :username'); $params['username'] = $username . '%'; } if (is_array($deniedRoles) && count($deniedRoles) > 0) { foreach ($deniedRoles as $key => $denied) { $sql->select()->where('role_id != :role_id' . ($key + 1)); $params['role_id' . ($key + 1)] = $denied; } } if (null !== $roleId) { if ($roleId == 0) { $sql->select()->where(DB_PREFIX . 'users.role_id IS NULL'); $rows = count($params) > 0 ? Table\Users::execute((string) $sql, $params)->rows() : Table\Users::query((string) $sql)->rows(); } else { $sql->select()->where(DB_PREFIX . 'users.role_id = :role_id'); $params['role_id'] = $roleId; $rows = Table\Users::execute((string) $sql, $params)->rows(); } } else { $rows = count($params) > 0 ? Table\Users::execute((string) $sql, $params)->rows() : Table\Users::query((string) $sql)->rows(); } return $rows; }