Exemplo n.º 1
0
 /**
  * Cache all permissions
  */
 public static function cacheAllPermissions()
 {
     Logging::log('caches permissions');
     self::$_permissions = array();
     if (!self::isInstallmode() && ($permissions = self::getCache()->get(Cache::KEY_PERMISSIONS_CACHE))) {
         self::$_permissions = $permissions;
         Logging::log('Using cached permissions');
     } else {
         if (self::isInstallmode() || !($permissions = self::getCache()->fileGet(Cache::KEY_PERMISSIONS_CACHE))) {
             Logging::log('starting to cache access permissions');
             if ($res = Permissions::getTable()->getAll()) {
                 while ($row = $res->getNextRow()) {
                     if (!array_key_exists($row->get(Permissions::MODULE), self::$_permissions)) {
                         self::$_permissions[$row->get(Permissions::MODULE)] = array();
                     }
                     if (!array_key_exists($row->get(Permissions::PERMISSION_TYPE), self::$_permissions[$row->get(Permissions::MODULE)])) {
                         self::$_permissions[$row->get(Permissions::MODULE)][$row->get(Permissions::PERMISSION_TYPE)] = array();
                     }
                     if (!array_key_exists($row->get(Permissions::TARGET_ID), self::$_permissions[$row->get(Permissions::MODULE)][$row->get(Permissions::PERMISSION_TYPE)])) {
                         self::$_permissions[$row->get(Permissions::MODULE)][$row->get(Permissions::PERMISSION_TYPE)][$row->get(Permissions::TARGET_ID)] = array();
                     }
                     self::$_permissions[$row->get(Permissions::MODULE)][$row->get(Permissions::PERMISSION_TYPE)][$row->get(Permissions::TARGET_ID)][] = array('uid' => $row->get(Permissions::UID), 'gid' => $row->get(Permissions::GID), 'tid' => $row->get(Permissions::TID), 'allowed' => (bool) $row->get(Permissions::ALLOWED), 'role_id' => $row->get(Permissions::ROLE_ID));
                 }
             }
             Logging::log('done (starting to cache access permissions)');
             if (!self::isInstallmode()) {
                 self::getCache()->fileAdd(Cache::KEY_PERMISSIONS_CACHE, self::$_permissions);
             }
         } else {
             self::$_permissions = $permissions;
         }
         if (!self::isInstallmode()) {
             self::getCache()->add(Cache::KEY_PERMISSIONS_CACHE, self::$_permissions);
         }
     }
     Logging::log('...cached');
 }