Exemple #1
0
 /**
  * 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;
 }