/** * Return all users within a specific role */ public static function withRole($roles) { if (!is_array($roles)) { $roles = array($roles); } $roleObj = new RoleObj(); $query = new SelectQuery('Role'); $query->filter('`name` IN (' . implode(', ', array_pad(array(), count($roles), '?')) . ')'); $roleObj->read(array('query' => $query, 'parameters' => $roles)); if (!$roleObj->list) { return false; } $roleIds = array_flatten($roleObj->list, null, 'id'); $query = self::getQuery(); $query->distinct()->field('`' . self::getTable() . '`.*')->leftJoin('Assignment', array('`access_type` = "users"', '`access_id` = `' . self::getTable() . '`.`id`'))->filter('`role_id` IN (' . implode(', ', array_pad(array(), count($roleIds), '?')) . ')'); return $query->fetchAll($roleIds); }