/**
  * @param AbstractAjxpUser $userObject
  * @param string $rolePrefix get all roles with prefix
  * @param string $includeString get roles in this string
  * @param string $excludeString eliminate roles in this string
  * @param bool $byUserRoles
  * @return array
  */
 public function getUserRoleList($userObject, $rolePrefix, $includeString, $excludeString, $byUserRoles = false)
 {
     if (!$userObject) {
         return array();
     }
     if ($byUserRoles) {
         $allUserRoles = $userObject->getRoles();
     } else {
         $allUserRoles = AuthService::getRolesList(array(), true);
     }
     $allRoles = array();
     if (isset($allUserRoles)) {
         // Exclude
         if ($excludeString) {
             if (strpos($excludeString, "preg:") !== false) {
                 $matchFilterExclude = "/" . str_replace("preg:", "", $excludeString) . "/i";
             } else {
                 $valueFiltersExclude = array_map("trim", explode(",", $excludeString));
                 $valueFiltersExclude = array_map("strtolower", $valueFiltersExclude);
             }
         }
         // Include
         if ($includeString) {
             if (strpos($includeString, "preg:") !== false) {
                 $matchFilterInclude = "/" . str_replace("preg:", "", $includeString) . "/i";
             } else {
                 $valueFiltersInclude = array_map("trim", explode(",", $includeString));
                 $valueFiltersInclude = array_map("strtolower", $valueFiltersInclude);
             }
         }
         foreach ($allUserRoles as $roleId => $role) {
             if (!empty($rolePrefix) && strpos($roleId, $rolePrefix) === false) {
                 continue;
             }
             if (isset($matchFilterExclude) && preg_match($matchFilterExclude, substr($roleId, strlen($rolePrefix)))) {
                 continue;
             }
             if (isset($valueFiltersExclude) && in_array(strtolower(substr($roleId, strlen($rolePrefix))), $valueFiltersExclude)) {
                 continue;
             }
             if (isset($matchFilterInclude) && !preg_match($matchFilterInclude, substr($roleId, strlen($rolePrefix)))) {
                 continue;
             }
             if (isset($valueFiltersInclude) && !in_array(strtolower(substr($roleId, strlen($rolePrefix))), $valueFiltersInclude)) {
                 continue;
             }
             if (is_a($role, "AJXP_Role")) {
                 $roleObject = $role;
             } else {
                 $roleObject = AuthService::getRole($roleId);
             }
             $label = $roleObject->getLabel();
             $label = !empty($label) ? $label : substr($roleId, strlen($rolePrefix));
             $allRoles[$roleId] = $label;
         }
     }
     return $allRoles;
 }
 /**
  * @param AbstractAjxpUser $userObject
  */
 public function updateUserObject(&$userObject)
 {
     $applyRole = $this->getOption("AUTO_APPLY_ROLE");
     if (!empty($applyRole) && !(is_array($userObject->getRoles()) && array_key_exists($applyRole, $userObject->getRoles()))) {
         $rObject = AuthService::getRole($applyRole, true);
         $userObject->addRole($rObject);
         $userObject->save("superuser");
     }
 }