Beispiel #1
0
 /**
  * Gets the permission on the module
  *
  * @param CStoredObject $object        Object to load the permissions of
  * @param int           $permType      Permission level
  * @param CStoredObject $defaultObject Default object to load the permissions from
  * @param int           $user_id       User ID
  *
  * @return bool
  */
 static function getPermObject(CStoredObject $object, $permType, $defaultObject = null, $user_id = null)
 {
     $user = CUser::get($user_id);
     // Shorteners
     $class = $object->_class;
     $id = $object->_id;
     // Use permission query cache when available
     if (isset(self::$users_cache[$user->_id][$class][$id])) {
         return self::$users_cache[$user->_id][$class][$id] >= $permType;
     }
     // New cached permissions system : DO NOT REMOVE
     if (is_array(self::$users_perms)) {
         self::buildUser($user->_id);
         $perms = self::$users_perms[$user->_id];
         // Object specific, or Class specific, or Module generic
         $perm = isset($perms[$class][$id]) ? $perms[$class][$id] : (isset($perms[$class]["all"]) ? $perms[$class]["all"] : "module");
         // In case of module check, first build module cache, then get value from cache
         if ($perm == "module") {
             $mod_id = $object->_ref_module->_id;
             CPermModule::getPermModule($mod_id, $permType, $user->_id);
             $perm = CPermModule::$users_cache[$user->_id][$mod_id]["permission"];
         }
         self::$users_cache[$user->_id][$class][$id] = $perm;
         return $perm >= $permType;
     }
     global $userPermsObjects;
     $object_class = $object->_class;
     $object_id = $object->_id;
     if (isset($userPermsObjects[$object_class][$object_id])) {
         return $userPermsObjects[$object_class][$object_id]->permission >= $permType;
     }
     if (isset($userPermsObjects[$object_class][0])) {
         return $userPermsObjects[$object_class][0]->permission >= $permType;
     }
     return $defaultObject != null ? $defaultObject->getPerm($permType) : $object->_ref_module->getPerm($permType);
 }
 */
CCanDo::checkEdit();
$user_id = CCanDo::edit() ? CValue::getOrSession("user_id", "default") : null;
$user = CUser::get($user_id);
$prof = $user->profile_id ? CUser::get($user->profile_id) : new CUser();
if ($user_id == "default") {
    $user->_id = null;
}
$prefvalues = array("default" => CPreferences::get(null, true), "template" => $user->profile_id ? CPreferences::get($user->profile_id, true) : array(), "user" => $user->_id !== "" ? CPreferences::get($user->_id, true) : array());
// common sera toujours au debut
$prefs = array("common" => array());
// Classement par module et par permission fonctionnelle
CPreferences::loadModules(true);
foreach (CPreferences::$modules as $modname => $prefnames) {
    $module = CModule::getActive($modname);
    $canRead = $module ? CPermModule::getPermModule($module->_id, PERM_READ, $user_id) : false;
    if ($modname == "common" || $user_id == "default" || $canRead) {
        $prefs[$modname] = array();
        foreach ($prefnames as $prefname) {
            $prefs[$modname][$prefname] = array("default" => CMbArray::extract($prefvalues["default"], $prefname), "template" => CMbArray::extract($prefvalues["template"], $prefname), "user" => CMbArray::extract($prefvalues["user"], $prefname));
        }
    }
}
// Warning: user clone necessary!
// Some module index change $user global
$user_clone = $user;
// Chargement des modules
$modules = CPermModule::getVisibleModules();
foreach ($modules as $module) {
    // Module might not be present
    @(include "./modules/{$module->mod_name}/index.php");
Beispiel #3
0
 /**
  * get the permission module
  *
  * @param int $permType
  *
  * @return bool
  */
 function getPerm($permType)
 {
     return CPermModule::getPermModule($this->mod_id, $permType);
 }