/** * @param Permitable $permitable * @param array $data */ public static function cacheAllModulePermissionsDataByPermitables($permitable, array $data) { assert('$permitable instanceof Permitable'); if ($permitable->getClassId('Permitable') == 0) { return; } $permitableModelIdentifier = $permitable->getModelIdentifier(); if (static::supportsAndAllowsMemcache()) { $prefix = static::getCachePrefix($permitableModelIdentifier) . static::$modulePermissionsDataCachePrefix; Yii::app()->cache->set($prefix . $permitableModelIdentifier, serialize($data)); } }
/** * @param SecurableItem $securableItem * @param Permitable $permitable * @param int $combinedPermissions */ public static function cacheCombinedPermissions(SecurableItem $securableItem, Permitable $permitable, $combinedPermissions) { assert('is_int($combinedPermissions) || ' . 'is_numeric($combinedPermissions[0]) && is_string($combinedPermissions[0])'); if ($securableItem->getClassId('SecurableItem') == 0 || $permitable->getClassId('Permitable') == 0) { return; } $securableItemModelIdentifer = $securableItem->getModelIdentifier(); $permitableModelIdentifier = $permitable->getModelIdentifier(); if (PHP_CACHING_ON) { self::$securableItemToPermitableToCombinedPermissions[$securableItemModelIdentifer][$permitableModelIdentifier] = $combinedPermissions; } if (MEMCACHE_ON && Yii::app()->cache !== null) { $prefix = self::getCachePrefix($securableItemModelIdentifer, self::$cacheType); $permitablesCombinedPermissions = Yii::app()->cache->get($prefix . $securableItemModelIdentifer); if ($permitablesCombinedPermissions === false) { $permitablesCombinedPermissions = array($permitableModelIdentifier => $combinedPermissions); Yii::app()->cache->set($prefix . $securableItemModelIdentifer, serialize($permitablesCombinedPermissions)); } else { $permitablesCombinedPermissions = unserialize($permitablesCombinedPermissions); assert('is_array($permitablesCombinedPermissions)'); $permitablesCombinedPermissions[$permitableModelIdentifier] = $combinedPermissions; Yii::app()->cache->set($prefix . $securableItemModelIdentifer, serialize($permitablesCombinedPermissions)); } } // NOTE: the db level caches the permissions when it calculates // them so php does not need to explicitly cache them here. }
/** * @param Permitable $permitable * @param array $data */ public static function cacheAllModulePermissionsDataByPermitables($permitable, array $data) { assert('$permitable instanceof Permitable'); if ($permitable->getClassId('Permitable') == 0) { return; } $permitableModelIdentifier = $permitable->getModelIdentifier(); if (static::supportsAndAllowsMemcache()) { $prefix = static::getCachePrefix($permitableModelIdentifier) . static::$modulePermissionsDataCachePrefix; static::cacheValueAndChecksum($prefix . $permitableModelIdentifier, $data); } }