sonarrradarrplexorganizrnginxdashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboard
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							168 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							168 lines
						
					
					
						
							3.6 KiB
						
					
					
				| <?php | |
| 
 | |
| /* | |
|  * This file is part of the Symfony package. | |
|  * | |
|  * (c) Fabien Potencier <fabien@symfony.com> | |
|  * | |
|  * For the full copyright and license information, please view the LICENSE | |
|  * file that was distributed with this source code. | |
|  */ | |
| 
 | |
| namespace Symfony\Component\HttpFoundation\Session\Storage; | |
| 
 | |
| use Symfony\Component\HttpFoundation\Session\SessionBagInterface; | |
| 
 | |
| /** | |
|  * Metadata container. | |
|  * | |
|  * Adds metadata to the session. | |
|  * | |
|  * @author Drak <drak@zikula.org> | |
|  */ | |
| class MetadataBag implements SessionBagInterface | |
| { | |
|     const CREATED = 'c'; | |
|     const UPDATED = 'u'; | |
|     const LIFETIME = 'l'; | |
| 
 | |
|     /** | |
|      * @var string | |
|      */ | |
|     private $name = '__metadata'; | |
| 
 | |
|     /** | |
|      * @var string | |
|      */ | |
|     private $storageKey; | |
| 
 | |
|     /** | |
|      * @var array | |
|      */ | |
|     protected $meta = [self::CREATED => 0, self::UPDATED => 0, self::LIFETIME => 0]; | |
| 
 | |
|     /** | |
|      * Unix timestamp. | |
|      * | |
|      * @var int | |
|      */ | |
|     private $lastUsed; | |
| 
 | |
|     /** | |
|      * @var int | |
|      */ | |
|     private $updateThreshold; | |
| 
 | |
|     /** | |
|      * @param string $storageKey      The key used to store bag in the session | |
|      * @param int    $updateThreshold The time to wait between two UPDATED updates | |
|      */ | |
|     public function __construct(string $storageKey = '_sf2_meta', int $updateThreshold = 0) | |
|     { | |
|         $this->storageKey = $storageKey; | |
|         $this->updateThreshold = $updateThreshold; | |
|     } | |
| 
 | |
|     /** | |
|      * {@inheritdoc} | |
|      */ | |
|     public function initialize(array &$array) | |
|     { | |
|         $this->meta = &$array; | |
| 
 | |
|         if (isset($array[self::CREATED])) { | |
|             $this->lastUsed = $this->meta[self::UPDATED]; | |
| 
 | |
|             $timeStamp = time(); | |
|             if ($timeStamp - $array[self::UPDATED] >= $this->updateThreshold) { | |
|                 $this->meta[self::UPDATED] = $timeStamp; | |
|             } | |
|         } else { | |
|             $this->stampCreated(); | |
|         } | |
|     } | |
| 
 | |
|     /** | |
|      * Gets the lifetime that the session cookie was set with. | |
|      * | |
|      * @return int | |
|      */ | |
|     public function getLifetime() | |
|     { | |
|         return $this->meta[self::LIFETIME]; | |
|     } | |
| 
 | |
|     /** | |
|      * Stamps a new session's metadata. | |
|      * | |
|      * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value | |
|      *                      will leave the system settings unchanged, 0 sets the cookie | |
|      *                      to expire with browser session. Time is in seconds, and is | |
|      *                      not a Unix timestamp. | |
|      */ | |
|     public function stampNew($lifetime = null) | |
|     { | |
|         $this->stampCreated($lifetime); | |
|     } | |
| 
 | |
|     /** | |
|      * {@inheritdoc} | |
|      */ | |
|     public function getStorageKey() | |
|     { | |
|         return $this->storageKey; | |
|     } | |
| 
 | |
|     /** | |
|      * Gets the created timestamp metadata. | |
|      * | |
|      * @return int Unix timestamp | |
|      */ | |
|     public function getCreated() | |
|     { | |
|         return $this->meta[self::CREATED]; | |
|     } | |
| 
 | |
|     /** | |
|      * Gets the last used metadata. | |
|      * | |
|      * @return int Unix timestamp | |
|      */ | |
|     public function getLastUsed() | |
|     { | |
|         return $this->lastUsed; | |
|     } | |
| 
 | |
|     /** | |
|      * {@inheritdoc} | |
|      */ | |
|     public function clear() | |
|     { | |
|         // nothing to do | |
|     } | |
| 
 | |
|     /** | |
|      * {@inheritdoc} | |
|      */ | |
|     public function getName() | |
|     { | |
|         return $this->name; | |
|     } | |
| 
 | |
|     /** | |
|      * Sets name. | |
|      * | |
|      * @param string $name | |
|      */ | |
|     public function setName($name) | |
|     { | |
|         $this->name = $name; | |
|     } | |
| 
 | |
|     private function stampCreated($lifetime = null) | |
|     { | |
|         $timeStamp = time(); | |
|         $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp; | |
|         $this->meta[self::LIFETIME] = (null === $lifetime) ? ini_get('session.cookie_lifetime') : $lifetime; | |
|     } | |
| }
 | |
| 
 |