コード例 #1
0
ファイル: ValidatorChain.php プロジェクト: rexmac/zf2
 /**
  * Construct the validation chain
  *
  * Retrieves validators from session storage and attaches them.
  * 
  * @param  Storage $storage 
  * @return void
  */
 public function __construct(Storage $storage)
 {
     $this->_storage = $storage;
     $validators = $storage->getMetadata('_VALID');
     if ($validators) {
         foreach ($validators as $validator => $data) {
             $this->connect('session.validate', new $validator($data), 'isValid');
         }
     }
 }
コード例 #2
0
ファイル: Container.php プロジェクト: rafalwrzeszcz/zf2
 /**
  * Expire key by session hops
  *
  * Determines whether the container or an individual key within it has 
  * expired based on session hops
  * 
  * @param  Storage $storage 
  * @param  string $name 
  * @param  string $key 
  * @return bool
  */
 protected function _expireByHops(Storage $storage, $name, $key)
 {
     $ts = $storage->getRequestAccessTime();
     $metadata = $storage->getMetadata($name);
     // Global container expiry
     if (is_array($metadata) && isset($metadata['EXPIRE_HOPS']) && $ts > $metadata['EXPIRE_HOPS']['ts']) {
         $metadata['EXPIRE_HOPS']['hops']--;
         if (-1 === $metadata['EXPIRE_HOPS']['hops']) {
             unset($metadata['EXPIRE_HOPS']);
             $storage->setMetadata($name, $metadata, true);
             $storage[$name] = $this->_createContainer();
             return true;
         }
         $metadata['EXPIRE_HOPS']['ts'] = $ts;
         $storage->setMetadata($name, $metadata, true);
         return false;
     }
     // Single key expiry
     if (null !== $key && is_array($metadata) && isset($metadata['EXPIRE_HOPS_KEYS']) && isset($metadata['EXPIRE_HOPS_KEYS'][$key]) && $ts > $metadata['EXPIRE_HOPS_KEYS'][$key]['ts']) {
         $metadata['EXPIRE_HOPS_KEYS'][$key]['hops']--;
         if (-1 === $metadata['EXPIRE_HOPS_KEYS'][$key]['hops']) {
             unset($metadata['EXPIRE_HOPS_KEYS'][$key]);
             $storage->setMetadata($name, $metadata, true);
             unset($storage[$name][$key]);
             return true;
         }
         $metadata['EXPIRE_HOPS_KEYS'][$key]['ts'] = $ts;
         $storage->setMetadata($name, $metadata, true);
         return false;
     }
     // Find all expired keys
     if (null === $key && is_array($metadata) && isset($metadata['EXPIRE_HOPS_KEYS'])) {
         foreach (array_keys($metadata['EXPIRE_HOPS_KEYS']) as $key) {
             if ($ts > $metadata['EXPIRE_HOPS_KEYS'][$key]['ts']) {
                 $metadata['EXPIRE_HOPS_KEYS'][$key]['hops']--;
                 if (-1 === $metadata['EXPIRE_HOPS_KEYS'][$key]['hops']) {
                     unset($metadata['EXPIRE_HOPS_KEYS'][$key]);
                     $storage->setMetadata($name, $metadata, true);
                     unset($storage[$name][$key]);
                     continue;
                 }
                 $metadata['EXPIRE_HOPS_KEYS'][$key]['ts'] = $ts;
             }
         }
         $storage->setMetadata($name, $metadata, true);
         return false;
     }
     return false;
 }
コード例 #3
0
ファイル: Container.php プロジェクト: bradley-holt/zf2
 /**
  * Expire key by session hops
  *
  * Determines whether the container or an individual key within it has 
  * expired based on session hops
  * 
  * @param  Storage $storage 
  * @param  string $name 
  * @param  string $key 
  * @return bool
  */
 protected function _expireByHops(Storage $storage, $name, $key)
 {
     $ts = $storage->getRequestAccessTime();
     $metadata = $storage->getMetadata($name);
     if (is_array($metadata) && isset($metadata['EXPIRE_HOPS']) && $ts > $metadata['EXPIRE_HOPS']['ts']) {
         $metadata['EXPIRE_HOPS']['hops']--;
         if (-1 === $metadata['EXPIRE_HOPS']['hops']) {
             unset($metadata['EXPIRE_HOPS']);
             $storage->setMetadata($name, $metadata, true);
             $storage[$name] = $this->_createContainer();
             return true;
         }
         $metadata['EXPIRE_HOPS']['ts'] = $ts;
         $storage->setMetadata($name, $metadata, true);
         return false;
     }
     if (is_array($metadata) && isset($metadata['EXPIRE_HOPS_KEYS']) && isset($metadata['EXPIRE_HOPS_KEYS'][$key]) && $ts > $metadata['EXPIRE_HOPS_KEYS'][$key]['ts']) {
         $metadata['EXPIRE_HOPS_KEYS'][$key]['hops']--;
         if (-1 === $metadata['EXPIRE_HOPS_KEYS'][$key]['hops']) {
             unset($metadata['EXPIRE_HOPS_KEYS'][$key]);
             $storage->setMetadata($name, $metadata, true);
             unset($storage[$name][$key]);
             return true;
         }
         $metadata['EXPIRE_HOPS_KEYS'][$key]['ts'] = $ts;
         $storage->setMetadata($name, $metadata, true);
         return false;
     }
     return false;
 }