Exemplo n.º 1
0
 /**
  * @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));
     }
 }
Exemplo n.º 2
0
 /**
  * @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);
     }
 }