Overview

Namespaces

  • Composer
    • Autoload
  • Guzzle
    • Common
      • Exception
    • Http
      • Curl
      • Exception
      • Message
        • Header
      • QueryAggregator
    • Parser
      • Cookie
      • Message
      • UriTemplate
      • Url
    • Plugin
      • Mock
    • Stream
  • Mockery
    • Adapter
      • Phpunit
    • CountValidator
    • Exception
    • Generator
      • StringManipulation
        • Pass
    • Loader
    • Matcher
  • None
  • Omnipay
    • Common
      • Exception
      • Message
    • Dummy
      • Message
    • Fatzebra
      • Message
  • PHP
  • Symfony
    • Component
      • EventDispatcher
        • Debug
        • DependencyInjection
        • Tests
          • Debug
          • DependencyInjection
      • HttpFoundation
        • File
          • Exception
          • MimeType
        • Session
          • Attribute
          • Flash
          • Storage
            • Handler
            • Proxy
        • Tests
          • File
            • MimeType
          • Session
            • Attribute
            • Flash
            • Storage
              • Handler
              • Proxy
      • Yaml
        • Exception
        • Tests

Classes

  • Symfony\Component\Yaml\Tests\A
  • Symfony\Component\Yaml\Tests\B
  • Symfony\Component\Yaml\Tests\DumperTest
  • Symfony\Component\Yaml\Tests\InlineTest
  • Symfony\Component\Yaml\Tests\ParseExceptionTest
  • Symfony\Component\Yaml\Tests\ParserTest
  • Symfony\Component\Yaml\Tests\YamlTest
  • Overview
  • Namespace
  • Function
  • Tree
  1: <?php
  2: 
  3: /*
  4:  * This file is part of the Symfony package.
  5:  *
  6:  * (c) Fabien Potencier <fabien@symfony.com>
  7:  *
  8:  * For the full copyright and license information, please view the LICENSE
  9:  * file that was distributed with this source code.
 10:  */
 11: 
 12: namespace Symfony\Component\HttpFoundation\Session\Storage;
 13: 
 14: use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
 15: 
 16: /**
 17:  * Metadata container.
 18:  *
 19:  * Adds metadata to the session.
 20:  *
 21:  * @author Drak <drak@zikula.org>
 22:  */
 23: class MetadataBag implements SessionBagInterface
 24: {
 25:     const CREATED = 'c';
 26:     const UPDATED = 'u';
 27:     const LIFETIME = 'l';
 28: 
 29:     /**
 30:      * @var string
 31:      */
 32:     private $name = '__metadata';
 33: 
 34:     /**
 35:      * @var string
 36:      */
 37:     private $storageKey;
 38: 
 39:     /**
 40:      * @var array
 41:      */
 42:     protected $meta = array(self::CREATED => 0, self::UPDATED => 0, self::LIFETIME => 0);
 43: 
 44:     /**
 45:      * Unix timestamp.
 46:      *
 47:      * @var int
 48:      */
 49:     private $lastUsed;
 50: 
 51:     /**
 52:      * @var int
 53:      */
 54:     private $updateThreshold;
 55: 
 56:     /**
 57:      * Constructor.
 58:      *
 59:      * @param string $storageKey      The key used to store bag in the session.
 60:      * @param int    $updateThreshold The time to wait between two UPDATED updates
 61:      */
 62:     public function __construct($storageKey = '_sf2_meta', $updateThreshold = 0)
 63:     {
 64:         $this->storageKey = $storageKey;
 65:         $this->updateThreshold = $updateThreshold;
 66:     }
 67: 
 68:     /**
 69:      * {@inheritdoc}
 70:      */
 71:     public function initialize(array &$array)
 72:     {
 73:         $this->meta = &$array;
 74: 
 75:         if (isset($array[self::CREATED])) {
 76:             $this->lastUsed = $this->meta[self::UPDATED];
 77: 
 78:             $timeStamp = time();
 79:             if ($timeStamp - $array[self::UPDATED] >= $this->updateThreshold) {
 80:                 $this->meta[self::UPDATED] = $timeStamp;
 81:             }
 82:         } else {
 83:             $this->stampCreated();
 84:         }
 85:     }
 86: 
 87:     /**
 88:      * Gets the lifetime that the session cookie was set with.
 89:      *
 90:      * @return int
 91:      */
 92:     public function getLifetime()
 93:     {
 94:         return $this->meta[self::LIFETIME];
 95:     }
 96: 
 97:     /**
 98:      * Stamps a new session's metadata.
 99:      *
100:      * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value
101:      *                      will leave the system settings unchanged, 0 sets the cookie
102:      *                      to expire with browser session. Time is in seconds, and is
103:      *                      not a Unix timestamp.
104:      */
105:     public function stampNew($lifetime = null)
106:     {
107:         $this->stampCreated($lifetime);
108:     }
109: 
110:     /**
111:      * {@inheritdoc}
112:      */
113:     public function getStorageKey()
114:     {
115:         return $this->storageKey;
116:     }
117: 
118:     /**
119:      * Gets the created timestamp metadata.
120:      *
121:      * @return int Unix timestamp
122:      */
123:     public function getCreated()
124:     {
125:         return $this->meta[self::CREATED];
126:     }
127: 
128:     /**
129:      * Gets the last used metadata.
130:      *
131:      * @return int Unix timestamp
132:      */
133:     public function getLastUsed()
134:     {
135:         return $this->lastUsed;
136:     }
137: 
138:     /**
139:      * {@inheritdoc}
140:      */
141:     public function clear()
142:     {
143:         // nothing to do
144:     }
145: 
146:     /**
147:      * {@inheritdoc}
148:      */
149:     public function getName()
150:     {
151:         return $this->name;
152:     }
153: 
154:     /**
155:      * Sets name.
156:      *
157:      * @param string $name
158:      */
159:     public function setName($name)
160:     {
161:         $this->name = $name;
162:     }
163: 
164:     private function stampCreated($lifetime = null)
165:     {
166:         $timeStamp = time();
167:         $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp;
168:         $this->meta[self::LIFETIME] = (null === $lifetime) ? ini_get('session.cookie_lifetime') : $lifetime;
169:     }
170: }
171: 
Omnipay Fat Zebra / Paystream Gateway Module API Documentation API documentation generated by ApiGen