/** * 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'); }