summaryrefslogtreecommitdiffstats
path: root/library/vendor/Zend/Session
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:39:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:39:39 +0000
commit8ca6cc32b2c789a3149861159ad258f2cb9491e3 (patch)
tree2492de6f1528dd44eaa169a5c1555026d9cb75ec /library/vendor/Zend/Session
parentInitial commit. (diff)
downloadicingaweb2-upstream.tar.xz
icingaweb2-upstream.zip
Adding upstream version 2.11.4.upstream/2.11.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/vendor/Zend/Session')
-rw-r--r--library/vendor/Zend/Session/Abstract.php182
-rw-r--r--library/vendor/Zend/Session/Exception.php73
-rw-r--r--library/vendor/Zend/Session/Namespace.php511
-rw-r--r--library/vendor/Zend/Session/SaveHandler/DbTable.php579
-rw-r--r--library/vendor/Zend/Session/SaveHandler/Exception.php36
-rw-r--r--library/vendor/Zend/Session/SaveHandler/Interface.php81
-rw-r--r--library/vendor/Zend/Session/Validator/Abstract.php70
-rw-r--r--library/vendor/Zend/Session/Validator/Exception.php42
-rw-r--r--library/vendor/Zend/Session/Validator/HttpUserAgent.php65
-rw-r--r--library/vendor/Zend/Session/Validator/Interface.php52
10 files changed, 1691 insertions, 0 deletions
diff --git a/library/vendor/Zend/Session/Abstract.php b/library/vendor/Zend/Session/Abstract.php
new file mode 100644
index 0000000..15ffde0
--- /dev/null
+++ b/library/vendor/Zend/Session/Abstract.php
@@ -0,0 +1,182 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ * @since Preview Release 0.2
+ */
+
+
+/**
+ * Zend_Session_Abstract
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+abstract class Zend_Session_Abstract
+{
+ /**
+ * Whether or not session permits writing (modification of $_SESSION[])
+ *
+ * @var bool
+ */
+ protected static $_writable = false;
+
+ /**
+ * Whether or not session permits reading (reading data in $_SESSION[])
+ *
+ * @var bool
+ */
+ protected static $_readable = false;
+
+ /**
+ * Since expiring data is handled at startup to avoid __destruct difficulties,
+ * the data that will be expiring at end of this request is held here
+ *
+ * @var array
+ */
+ protected static $_expiringData = array();
+
+
+ /**
+ * Error message thrown when an action requires modification,
+ * but current Zend_Session has been marked as read-only.
+ */
+ const _THROW_NOT_WRITABLE_MSG = 'Zend_Session is currently marked as read-only.';
+
+
+ /**
+ * Error message thrown when an action requires reading session data,
+ * but current Zend_Session is not marked as readable.
+ */
+ const _THROW_NOT_READABLE_MSG = 'Zend_Session is not marked as readable.';
+
+
+ /**
+ * namespaceIsset() - check to see if a namespace or a variable within a namespace is set
+ *
+ * @param string $namespace
+ * @param string $name
+ * @return bool
+ */
+ protected static function _namespaceIsset($namespace, $name = null)
+ {
+ if (self::$_readable === false) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception(self::_THROW_NOT_READABLE_MSG);
+ }
+
+ if ($name === null) {
+ return ( isset($_SESSION[$namespace]) || isset(self::$_expiringData[$namespace]) );
+ } else {
+ return ( isset($_SESSION[$namespace][$name]) || isset(self::$_expiringData[$namespace][$name]) );
+ }
+ }
+
+
+ /**
+ * namespaceUnset() - unset a namespace or a variable within a namespace
+ *
+ * @param string $namespace
+ * @param string $name
+ * @throws Zend_Session_Exception
+ * @return void
+ */
+ protected static function _namespaceUnset($namespace, $name = null)
+ {
+ if (self::$_writable === false) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception(self::_THROW_NOT_WRITABLE_MSG);
+ }
+
+ $name = (string) $name;
+
+ // check to see if the api wanted to remove a var from a namespace or a namespace
+ if ($name === '') {
+ unset($_SESSION[$namespace]);
+ unset(self::$_expiringData[$namespace]);
+ } else {
+ unset($_SESSION[$namespace][$name]);
+ unset(self::$_expiringData[$namespace][$name]);
+ }
+
+ // if we remove the last value, remove namespace.
+ if (empty($_SESSION[$namespace])) {
+ unset($_SESSION[$namespace]);
+ }
+ }
+
+
+ /**
+ * namespaceGet() - Get $name variable from $namespace, returning by reference.
+ *
+ * @param string $namespace
+ * @param string $name
+ * @return mixed
+ */
+ protected static function & _namespaceGet($namespace, $name = null)
+ {
+ if (self::$_readable === false) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception(self::_THROW_NOT_READABLE_MSG);
+ }
+
+ if ($name === null) {
+ if (isset($_SESSION[$namespace])) { // check session first for data requested
+ return $_SESSION[$namespace];
+ } elseif (isset(self::$_expiringData[$namespace])) { // check expiring data for data reqeusted
+ return self::$_expiringData[$namespace];
+ } else {
+ return $_SESSION[$namespace]; // satisfy return by reference
+ }
+ } else {
+ if (isset($_SESSION[$namespace][$name])) { // check session first
+ return $_SESSION[$namespace][$name];
+ } elseif (isset(self::$_expiringData[$namespace][$name])) { // check expiring data
+ return self::$_expiringData[$namespace][$name];
+ } else {
+ return $_SESSION[$namespace][$name]; // satisfy return by reference
+ }
+ }
+ }
+
+
+ /**
+ * namespaceGetAll() - Get an array containing $namespace, including expiring data.
+ *
+ * @param string $namespace
+ * @param string $name
+ * @return mixed
+ */
+ protected static function _namespaceGetAll($namespace)
+ {
+ $currentData = (isset($_SESSION[$namespace]) && is_array($_SESSION[$namespace])) ?
+ $_SESSION[$namespace] : array();
+ $expiringData = (isset(self::$_expiringData[$namespace]) && is_array(self::$_expiringData[$namespace])) ?
+ self::$_expiringData[$namespace] : array();
+ return array_merge($currentData, $expiringData);
+ }
+}
diff --git a/library/vendor/Zend/Session/Exception.php b/library/vendor/Zend/Session/Exception.php
new file mode 100644
index 0000000..52672ec
--- /dev/null
+++ b/library/vendor/Zend/Session/Exception.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ * @since Preview Release 0.2
+ */
+
+
+/**
+ * @see Zend_Exception
+ */
+
+
+/**
+ * Zend_Session_Exception
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Session_Exception extends Zend_Exception
+{
+ /**
+ * sessionStartError
+ *
+ * @see http://framework.zend.com/issues/browse/ZF-1325
+ * @var string PHP Error Message
+ */
+ static public $sessionStartError = null;
+
+ /**
+ * handleSessionStartError() - interface for set_error_handler()
+ *
+ * @see http://framework.zend.com/issues/browse/ZF-1325
+ * @param int $errno
+ * @param string $errstr
+ * @return void
+ */
+ static public function handleSessionStartError($errno, $errstr, $errfile, $errline, $errcontext)
+ {
+ self::$sessionStartError = $errfile . '(Line:' . $errline . '): Error #' . $errno . ' ' . $errstr;
+ }
+
+ /**
+ * handleSilentWriteClose() - interface for set_error_handler()
+ *
+ * @see http://framework.zend.com/issues/browse/ZF-1325
+ * @param int $errno
+ * @param string $errstr
+ * @return void
+ */
+ static public function handleSilentWriteClose($errno, $errstr, $errfile, $errline, $errcontext)
+ {
+ self::$sessionStartError .= PHP_EOL . $errfile . '(Line:' . $errline . '): Error #' . $errno . ' ' . $errstr;
+ }
+}
+
diff --git a/library/vendor/Zend/Session/Namespace.php b/library/vendor/Zend/Session/Namespace.php
new file mode 100644
index 0000000..52d7945
--- /dev/null
+++ b/library/vendor/Zend/Session/Namespace.php
@@ -0,0 +1,511 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ * @since Preview Release 0.2
+ */
+
+
+/**
+ * @see Zend_Session
+ */
+
+
+/**
+ * @see Zend_Session_Abstract
+ */
+
+
+/**
+ * Zend_Session_Namespace
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Session_Namespace extends Zend_Session_Abstract implements IteratorAggregate
+{
+
+ /**
+ * used as option to constructor to prevent additional instances to the same namespace
+ */
+ const SINGLE_INSTANCE = true;
+
+ /**
+ * Namespace - which namespace this instance of zend-session is saving-to/getting-from
+ *
+ * @var string
+ */
+ protected $_namespace = "Default";
+
+ /**
+ * Namespace locking mechanism
+ *
+ * @var array
+ */
+ protected static $_namespaceLocks = array();
+
+ /**
+ * Single instance namespace array to ensure data security.
+ *
+ * @var array
+ */
+ protected static $_singleInstances = array();
+
+ /**
+ * resetSingleInstance()
+ *
+ * @param string $namespaceName
+ * @return null
+ */
+ public static function resetSingleInstance($namespaceName = null)
+ {
+ if ($namespaceName != null) {
+ if (array_key_exists($namespaceName, self::$_singleInstances)) {
+ unset(self::$_singleInstances[$namespaceName]);
+ }
+ return;
+ }
+
+ self::$_singleInstances = array();
+ return;
+ }
+
+ /**
+ * __construct() - Returns an instance object bound to a particular, isolated section
+ * of the session, identified by $namespace name (defaulting to 'Default').
+ * The optional argument $singleInstance will prevent construction of additional
+ * instance objects acting as accessors to this $namespace.
+ *
+ * @param string $namespace - programmatic name of the requested namespace
+ * @param bool $singleInstance - prevent creation of additional accessor instance objects for this namespace
+ * @return void
+ */
+ public function __construct($namespace = 'Default', $singleInstance = false)
+ {
+ if ($namespace === '') {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception('Session namespace must be a non-empty string.');
+ }
+
+ if ($namespace[0] == "_") {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception('Session namespace must not start with an underscore.');
+ }
+
+ if (preg_match('#(^[0-9])#i', $namespace[0])) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception('Session namespace must not start with a number.');
+ }
+
+ if (isset(self::$_singleInstances[$namespace])) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception("A session namespace object already exists for this namespace ('$namespace'), and no additional accessors (session namespace objects) for this namespace are permitted.");
+ }
+
+ if ($singleInstance === true) {
+ self::$_singleInstances[$namespace] = true;
+ }
+
+ $this->_namespace = $namespace;
+
+ // Process metadata specific only to this namespace.
+ Zend_Session::start(true); // attempt auto-start (throws exception if strict option set)
+
+ if (self::$_readable === false) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception(self::_THROW_NOT_READABLE_MSG);
+ }
+
+ if (!isset($_SESSION['__ZF'])) {
+ return; // no further processing needed
+ }
+
+ // do not allow write access to namespaces, after stop() or writeClose()
+ if (parent::$_writable === true) {
+ if (isset($_SESSION['__ZF'][$namespace])) {
+
+ // Expire Namespace by Namespace Hop (ENNH)
+ if (isset($_SESSION['__ZF'][$namespace]['ENNH'])) {
+ $_SESSION['__ZF'][$namespace]['ENNH']--;
+
+ if ($_SESSION['__ZF'][$namespace]['ENNH'] === 0) {
+ if (isset($_SESSION[$namespace])) {
+ self::$_expiringData[$namespace] = $_SESSION[$namespace];
+ unset($_SESSION[$namespace]);
+ }
+ unset($_SESSION['__ZF'][$namespace]);
+ }
+ }
+
+ // Expire Namespace Variables by Namespace Hop (ENVNH)
+ if (isset($_SESSION['__ZF'][$namespace]['ENVNH'])) {
+ foreach ($_SESSION['__ZF'][$namespace]['ENVNH'] as $variable => $hops) {
+ $_SESSION['__ZF'][$namespace]['ENVNH'][$variable]--;
+
+ if ($_SESSION['__ZF'][$namespace]['ENVNH'][$variable] === 0) {
+ if (isset($_SESSION[$namespace][$variable])) {
+ self::$_expiringData[$namespace][$variable] = $_SESSION[$namespace][$variable];
+ unset($_SESSION[$namespace][$variable]);
+ }
+ unset($_SESSION['__ZF'][$namespace]['ENVNH'][$variable]);
+ }
+ }
+ if(empty($_SESSION['__ZF'][$namespace]['ENVNH'])) {
+ unset($_SESSION['__ZF'][$namespace]['ENVNH']);
+ }
+ }
+ }
+
+ if (empty($_SESSION['__ZF'][$namespace])) {
+ unset($_SESSION['__ZF'][$namespace]);
+ }
+
+ if (empty($_SESSION['__ZF'])) {
+ unset($_SESSION['__ZF']);
+ }
+ }
+ }
+
+
+ /**
+ * getIterator() - return an iteratable object for use in foreach and the like,
+ * this completes the IteratorAggregate interface
+ *
+ * @return ArrayObject - iteratable container of the namespace contents
+ */
+ public function getIterator()
+ {
+ return new ArrayObject(parent::_namespaceGetAll($this->_namespace));
+ }
+
+
+ /**
+ * lock() - mark a session/namespace as readonly
+ *
+ * @return void
+ */
+ public function lock()
+ {
+ self::$_namespaceLocks[$this->_namespace] = true;
+ }
+
+
+ /**
+ * unlock() - unmark a session/namespace to enable read & write
+ *
+ * @return void
+ */
+ public function unlock()
+ {
+ unset(self::$_namespaceLocks[$this->_namespace]);
+ }
+
+
+ /**
+ * unlockAll() - unmark all session/namespaces to enable read & write
+ *
+ * @return void
+ */
+ public static function unlockAll()
+ {
+ self::$_namespaceLocks = array();
+ }
+
+
+ /**
+ * isLocked() - return lock status, true if, and only if, read-only
+ *
+ * @return bool
+ */
+ public function isLocked()
+ {
+ return isset(self::$_namespaceLocks[$this->_namespace]);
+ }
+
+
+ /**
+ * unsetAll() - unset all variables in this namespace
+ *
+ * @return true
+ */
+ public function unsetAll()
+ {
+ return parent::_namespaceUnset($this->_namespace);
+ }
+
+
+ /**
+ * __get() - method to get a variable in this object's current namespace
+ *
+ * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace
+ * @return mixed
+ */
+ public function & __get($name)
+ {
+ if ($name === '') {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception("The '$name' key must be a non-empty string");
+ }
+
+ return parent::_namespaceGet($this->_namespace, $name);
+ }
+
+
+ /**
+ * __set() - method to set a variable/value in this object's namespace
+ *
+ * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace
+ * @param mixed $value - value in the <key,value> pair to assign to the $name key
+ * @throws Zend_Session_Exception
+ * @return true
+ */
+ public function __set($name, $value)
+ {
+ if (isset(self::$_namespaceLocks[$this->_namespace])) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception('This session/namespace has been marked as read-only.');
+ }
+
+ if ($name === '') {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception("The '$name' key must be a non-empty string");
+ }
+
+ if (parent::$_writable === false) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
+ }
+
+ $name = (string) $name;
+
+ $_SESSION[$this->_namespace][$name] = $value;
+ }
+
+
+ /**
+ * apply() - enables applying user-selected function, such as array_merge() to the namespace
+ * Parameters following the $callback argument are passed to the callback function.
+ * Caveat: ignores members expiring now.
+ *
+ * Example:
+ * $namespace->apply('array_merge', array('tree' => 'apple', 'fruit' => 'peach'), array('flower' => 'rose'));
+ * $namespace->apply('count');
+ *
+ * @param string|array $callback - callback function
+ */
+ public function apply($callback)
+ {
+ $arg_list = func_get_args();
+ $arg_list[0] = $_SESSION[$this->_namespace];
+ return call_user_func_array($callback, $arg_list);
+ }
+
+
+ /**
+ * applySet() - enables applying user-selected function, and sets entire namespace to the result
+ * Result of $callback must be an array.
+ * Parameters following the $callback argument are passed to the callback function.
+ * Caveat: ignores members expiring now.
+ *
+ * Example:
+ * $namespace->applySet('array_merge', array('tree' => 'apple', 'fruit' => 'peach'), array('flower' => 'rose'));
+ *
+ * @param string|array $callback - callback function
+ */
+ public function applySet($callback)
+ {
+ $arg_list = func_get_args();
+ $arg_list[0] = $_SESSION[$this->_namespace];
+ $result = call_user_func_array($callback, $arg_list);
+ if (!is_array($result)) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception('Result must be an array. Got: ' . gettype($result));
+ }
+ $_SESSION[$this->_namespace] = $result;
+ return $result;
+ }
+
+
+ /**
+ * __isset() - determine if a variable in this object's namespace is set
+ *
+ * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace
+ * @return bool
+ */
+ public function __isset($name)
+ {
+ if ($name === '') {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception("The '$name' key must be a non-empty string");
+ }
+
+ return parent::_namespaceIsset($this->_namespace, $name);
+ }
+
+
+ /**
+ * __unset() - unset a variable in this object's namespace.
+ *
+ * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace
+ * @return true
+ */
+ public function __unset($name)
+ {
+ if ($name === '') {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception("The '$name' key must be a non-empty string");
+ }
+
+ return parent::_namespaceUnset($this->_namespace, $name);
+ }
+
+
+ /**
+ * setExpirationSeconds() - expire the namespace, or specific variables after a specified
+ * number of seconds
+ *
+ * @param int $seconds - expires in this many seconds
+ * @param mixed $variables - OPTIONAL list of variables to expire (defaults to all)
+ * @throws Zend_Session_Exception
+ * @return void
+ */
+ public function setExpirationSeconds($seconds, $variables = null)
+ {
+ if (parent::$_writable === false) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
+ }
+
+ if ($seconds <= 0) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception('Seconds must be positive.');
+ }
+
+ if ($variables === null) {
+
+ // apply expiration to entire namespace
+ $_SESSION['__ZF'][$this->_namespace]['ENT'] = time() + $seconds;
+
+ } else {
+
+ if (is_string($variables)) {
+ $variables = array($variables);
+ }
+
+ foreach ($variables as $variable) {
+ if (!empty($variable)) {
+ $_SESSION['__ZF'][$this->_namespace]['ENVT'][$variable] = time() + $seconds;
+ }
+ }
+ }
+ }
+
+
+ /**
+ * setExpirationHops() - expire the namespace, or specific variables after a specified
+ * number of page hops
+ *
+ * @param int $hops - how many "hops" (number of subsequent requests) before expiring
+ * @param mixed $variables - OPTIONAL list of variables to expire (defaults to all)
+ * @param boolean $hopCountOnUsageOnly - OPTIONAL if set, only count a hop/request if this namespace is used
+ * @throws Zend_Session_Exception
+ * @return void
+ */
+ public function setExpirationHops($hops, $variables = null, $hopCountOnUsageOnly = false)
+ {
+ if (parent::$_writable === false) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
+ }
+
+ if ($hops <= 0) {
+ /**
+ * @see Zend_Session_Exception
+ */
+ throw new Zend_Session_Exception('Hops must be positive number.');
+ }
+
+ if ($variables === null) {
+
+ // apply expiration to entire namespace
+ if ($hopCountOnUsageOnly === false) {
+ $_SESSION['__ZF'][$this->_namespace]['ENGH'] = $hops;
+ } else {
+ $_SESSION['__ZF'][$this->_namespace]['ENNH'] = $hops;
+ }
+
+ } else {
+
+ if (is_string($variables)) {
+ $variables = array($variables);
+ }
+
+ foreach ($variables as $variable) {
+ if (!empty($variable)) {
+ if ($hopCountOnUsageOnly === false) {
+ $_SESSION['__ZF'][$this->_namespace]['ENVGH'][$variable] = $hops;
+ } else {
+ $_SESSION['__ZF'][$this->_namespace]['ENVNH'][$variable] = $hops;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns the namespace name
+ *
+ * @return string
+ */
+ public function getNamespace()
+ {
+ return $this->_namespace;
+ }
+}
diff --git a/library/vendor/Zend/Session/SaveHandler/DbTable.php b/library/vendor/Zend/Session/SaveHandler/DbTable.php
new file mode 100644
index 0000000..a4b1bf7
--- /dev/null
+++ b/library/vendor/Zend/Session/SaveHandler/DbTable.php
@@ -0,0 +1,579 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-webat this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * @see Zend_Session
+ */
+
+/**
+ * @see Zend_Db_Table_Abstract
+ */
+
+/**
+ * @see Zend_Db_Table_Row_Abstract
+ */
+
+/**
+ * @see Zend_Config
+ */
+
+/**
+ * Zend_Session_SaveHandler_DbTable
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @subpackage SaveHandler
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Session_SaveHandler_DbTable
+ extends Zend_Db_Table_Abstract
+ implements Zend_Session_SaveHandler_Interface
+{
+ const PRIMARY_ASSIGNMENT = 'primaryAssignment';
+ const PRIMARY_ASSIGNMENT_SESSION_SAVE_PATH = 'sessionSavePath';
+ const PRIMARY_ASSIGNMENT_SESSION_NAME = 'sessionName';
+ const PRIMARY_ASSIGNMENT_SESSION_ID = 'sessionId';
+
+ const MODIFIED_COLUMN = 'modifiedColumn';
+ const LIFETIME_COLUMN = 'lifetimeColumn';
+ const DATA_COLUMN = 'dataColumn';
+
+ const LIFETIME = 'lifetime';
+ const OVERRIDE_LIFETIME = 'overrideLifetime';
+
+ const PRIMARY_TYPE_NUM = 'PRIMARY_TYPE_NUM';
+ const PRIMARY_TYPE_PRIMARYNUM = 'PRIMARY_TYPE_PRIMARYNUM';
+ const PRIMARY_TYPE_ASSOC = 'PRIMARY_TYPE_ASSOC';
+ const PRIMARY_TYPE_WHERECLAUSE = 'PRIMARY_TYPE_WHERECLAUSE';
+
+ /**
+ * Session table primary key value assignment
+ *
+ * @var array
+ */
+ protected $_primaryAssignment = null;
+
+ /**
+ * Session table last modification time column
+ *
+ * @var string
+ */
+ protected $_modifiedColumn = null;
+
+ /**
+ * Session table lifetime column
+ *
+ * @var string
+ */
+ protected $_lifetimeColumn = null;
+
+ /**
+ * Session table data column
+ *
+ * @var string
+ */
+ protected $_dataColumn = null;
+
+ /**
+ * Session lifetime
+ *
+ * @var int
+ */
+ protected $_lifetime = false;
+
+ /**
+ * Whether or not the lifetime of an existing session should be overridden
+ *
+ * @var boolean
+ */
+ protected $_overrideLifetime = false;
+
+ /**
+ * Session save path
+ *
+ * @var string
+ */
+ protected $_sessionSavePath;
+
+ /**
+ * Session name
+ *
+ * @var string
+ */
+ protected $_sessionName;
+
+ /**
+ * Constructor
+ *
+ * $config is an instance of Zend_Config or an array of key/value pairs containing configuration options for
+ * Zend_Session_SaveHandler_DbTable and Zend_Db_Table_Abstract. These are the configuration options for
+ * Zend_Session_SaveHandler_DbTable:
+ *
+ * primaryAssignment => (string|array) Session table primary key value assignment
+ * (optional; default: 1 => sessionId) You have to assign a value to each primary key of your session table.
+ * The value of this configuration option is either a string if you have only one primary key or an array if
+ * you have multiple primary keys. The array consists of numeric keys starting at 1 and string values. There
+ * are some values which will be replaced by session information:
+ *
+ * sessionId => The id of the current session
+ * sessionName => The name of the current session
+ * sessionSavePath => The save path of the current session
+ *
+ * NOTE: One of your assignments MUST contain 'sessionId' as value!
+ *
+ * modifiedColumn => (string) Session table last modification time column
+ *
+ * lifetimeColumn => (string) Session table lifetime column
+ *
+ * dataColumn => (string) Session table data column
+ *
+ * lifetime => (integer) Session lifetime (optional; default: ini_get('session.gc_maxlifetime'))
+ *
+ * overrideLifetime => (boolean) Whether or not the lifetime of an existing session should be overridden
+ * (optional; default: false)
+ *
+ * @param Zend_Config|array $config User-provided configuration
+ * @return void
+ * @throws Zend_Session_SaveHandler_Exception
+ */
+ public function __construct($config)
+ {
+ if ($config instanceof Zend_Config) {
+ $config = $config->toArray();
+ } else if (!is_array($config)) {
+ /**
+ * @see Zend_Session_SaveHandler_Exception
+ */
+
+ throw new Zend_Session_SaveHandler_Exception(
+ '$config must be an instance of Zend_Config or array of key/value pairs containing '
+ . 'configuration options for Zend_Session_SaveHandler_DbTable and Zend_Db_Table_Abstract.');
+ }
+
+ foreach ($config as $key => $value) {
+ do {
+ switch ($key) {
+ case self::PRIMARY_ASSIGNMENT:
+ $this->_primaryAssignment = $value;
+ break;
+ case self::MODIFIED_COLUMN:
+ $this->_modifiedColumn = (string) $value;
+ break;
+ case self::LIFETIME_COLUMN:
+ $this->_lifetimeColumn = (string) $value;
+ break;
+ case self::DATA_COLUMN:
+ $this->_dataColumn = (string) $value;
+ break;
+ case self::LIFETIME:
+ $this->setLifetime($value);
+ break;
+ case self::OVERRIDE_LIFETIME:
+ $this->setOverrideLifetime($value);
+ break;
+ default:
+ // unrecognized options passed to parent::__construct()
+ break 2;
+ }
+ unset($config[$key]);
+ } while (false);
+ }
+
+ parent::__construct($config);
+ }
+
+ /**
+ * Destructor
+ *
+ * @return void
+ */
+ public function __destruct()
+ {
+ Zend_Session::writeClose();
+ }
+
+ /**
+ * Set session lifetime and optional whether or not the lifetime of an existing session should be overridden
+ *
+ * $lifetime === false resets lifetime to session.gc_maxlifetime
+ *
+ * @param int $lifetime
+ * @param boolean $overrideLifetime (optional)
+ * @return Zend_Session_SaveHandler_DbTable
+ */
+ public function setLifetime($lifetime, $overrideLifetime = null)
+ {
+ if ($lifetime < 0) {
+ /**
+ * @see Zend_Session_SaveHandler_Exception
+ */
+ throw new Zend_Session_SaveHandler_Exception();
+ } else if (empty($lifetime)) {
+ $this->_lifetime = (int) ini_get('session.gc_maxlifetime');
+ } else {
+ $this->_lifetime = (int) $lifetime;
+ }
+
+ if ($overrideLifetime != null) {
+ $this->setOverrideLifetime($overrideLifetime);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Retrieve session lifetime
+ *
+ * @return int
+ */
+ public function getLifetime()
+ {
+ return $this->_lifetime;
+ }
+
+ /**
+ * Set whether or not the lifetime of an existing session should be overridden
+ *
+ * @param boolean $overrideLifetime
+ * @return Zend_Session_SaveHandler_DbTable
+ */
+ public function setOverrideLifetime($overrideLifetime)
+ {
+ $this->_overrideLifetime = (boolean) $overrideLifetime;
+
+ return $this;
+ }
+
+ /**
+ * Retrieve whether or not the lifetime of an existing session should be overridden
+ *
+ * @return boolean
+ */
+ public function getOverrideLifetime()
+ {
+ return $this->_overrideLifetime;
+ }
+
+ /**
+ * Open Session
+ *
+ * @param string $save_path
+ * @param string $name
+ * @return boolean
+ */
+ public function open($save_path, $name)
+ {
+ $this->_sessionSavePath = $save_path;
+ $this->_sessionName = $name;
+
+ return true;
+ }
+
+ /**
+ * Close session
+ *
+ * @return boolean
+ */
+ public function close()
+ {
+ return true;
+ }
+
+ /**
+ * Read session data
+ *
+ * @param string $id
+ * @return string
+ */
+ public function read($id)
+ {
+ $return = '';
+
+ $rows = call_user_func_array(array(&$this, 'find'), $this->_getPrimary($id));
+
+ if (count($rows)) {
+ if ($this->_getExpirationTime($row = $rows->current()) > time()) {
+ $return = $row->{$this->_dataColumn};
+ } else {
+ $this->destroy($id);
+ }
+ }
+
+ return $return;
+ }
+
+ /**
+ * Write session data
+ *
+ * @param string $id
+ * @param string $data
+ * @return boolean
+ */
+ public function write($id, $data)
+ {
+ $return = false;
+
+ $data = array($this->_modifiedColumn => time(),
+ $this->_dataColumn => (string) $data);
+
+ $rows = call_user_func_array(array(&$this, 'find'), $this->_getPrimary($id));
+
+ if (count($rows)) {
+ $data[$this->_lifetimeColumn] = $this->_getLifetime($rows->current());
+
+ if ($this->update($data, $this->_getPrimary($id, self::PRIMARY_TYPE_WHERECLAUSE))) {
+ $return = true;
+ }
+ } else {
+ $data[$this->_lifetimeColumn] = $this->_lifetime;
+
+ if ($this->insert(array_merge($this->_getPrimary($id, self::PRIMARY_TYPE_ASSOC), $data))) {
+ $return = true;
+ }
+ }
+
+ return $return;
+ }
+
+ /**
+ * Destroy session
+ *
+ * @param string $id
+ * @return boolean
+ */
+ public function destroy($id)
+ {
+ $return = false;
+
+ if ($this->delete($this->_getPrimary($id, self::PRIMARY_TYPE_WHERECLAUSE))) {
+ $return = true;
+ }
+
+ return $return;
+ }
+
+ /**
+ * Garbage Collection
+ *
+ * @param int $maxlifetime
+ * @return true
+ */
+ public function gc($maxlifetime)
+ {
+ $this->delete($this->getAdapter()->quoteIdentifier($this->_modifiedColumn, true) . ' + '
+ . $this->getAdapter()->quoteIdentifier($this->_lifetimeColumn, true) . ' < '
+ . $this->getAdapter()->quote(time()));
+
+ return true;
+ }
+
+ /**
+ * Calls other protected methods for individual setup tasks and requirement checks
+ *
+ * @return void
+ */
+ protected function _setup()
+ {
+ parent::_setup();
+
+ $this->_setupPrimaryAssignment();
+ $this->setLifetime($this->_lifetime);
+
+ $this->_checkRequiredColumns();
+ }
+
+ /**
+ * Initialize table and schema names
+ *
+ * @return void
+ * @throws Zend_Session_SaveHandler_Exception
+ */
+ protected function _setupTableName()
+ {
+ if (empty($this->_name) && basename(($this->_name = session_save_path())) != $this->_name) {
+ /**
+ * @see Zend_Session_SaveHandler_Exception
+ */
+
+ throw new Zend_Session_SaveHandler_Exception('session.save_path is a path and not a table name.');
+ }
+
+ if (strpos($this->_name, '.')) {
+ list($this->_schema, $this->_name) = explode('.', $this->_name);
+ }
+ }
+
+ /**
+ * Initialize session table primary key value assignment
+ *
+ * @return void
+ * @throws Zend_Session_SaveHandler_Exception
+ */
+ protected function _setupPrimaryAssignment()
+ {
+ if ($this->_primaryAssignment === null) {
+ $this->_primaryAssignment = array(1 => self::PRIMARY_ASSIGNMENT_SESSION_ID);
+ } else if (!is_array($this->_primaryAssignment)) {
+ $this->_primaryAssignment = array(1 => (string) $this->_primaryAssignment);
+ } else if (isset($this->_primaryAssignment[0])) {
+ array_unshift($this->_primaryAssignment, null);
+
+ unset($this->_primaryAssignment[0]);
+ }
+
+ if (count($this->_primaryAssignment) !== count($this->_primary)) {
+ /**
+ * @see Zend_Session_SaveHandler_Exception
+ */
+
+ throw new Zend_Session_SaveHandler_Exception(
+ "Value for configuration option '" . self::PRIMARY_ASSIGNMENT . "' must have an assignment "
+ . "for each session table primary key.");
+ } else if (!in_array(self::PRIMARY_ASSIGNMENT_SESSION_ID, $this->_primaryAssignment)) {
+ /**
+ * @see Zend_Session_SaveHandler_Exception
+ */
+
+ throw new Zend_Session_SaveHandler_Exception(
+ "Value for configuration option '" . self::PRIMARY_ASSIGNMENT . "' must have an assignment "
+ . "for the session id ('" . self::PRIMARY_ASSIGNMENT_SESSION_ID . "').");
+ }
+ }
+
+ /**
+ * Check for required session table columns
+ *
+ * @return void
+ * @throws Zend_Session_SaveHandler_Exception
+ */
+ protected function _checkRequiredColumns()
+ {
+ if ($this->_modifiedColumn === null) {
+ /**
+ * @see Zend_Session_SaveHandler_Exception
+ */
+
+ throw new Zend_Session_SaveHandler_Exception(
+ "Configuration must define '" . self::MODIFIED_COLUMN . "' which names the "
+ . "session table last modification time column.");
+ } else if ($this->_lifetimeColumn === null) {
+ /**
+ * @see Zend_Session_SaveHandler_Exception
+ */
+
+ throw new Zend_Session_SaveHandler_Exception(
+ "Configuration must define '" . self::LIFETIME_COLUMN . "' which names the "
+ . "session table lifetime column.");
+ } else if ($this->_dataColumn === null) {
+ /**
+ * @see Zend_Session_SaveHandler_Exception
+ */
+
+ throw new Zend_Session_SaveHandler_Exception(
+ "Configuration must define '" . self::DATA_COLUMN . "' which names the "
+ . "session table data column.");
+ }
+ }
+
+ /**
+ * Retrieve session table primary key values
+ *
+ * @param string $id
+ * @param string $type (optional; default: self::PRIMARY_TYPE_NUM)
+ * @return array
+ */
+ protected function _getPrimary($id, $type = null)
+ {
+ $this->_setupPrimaryKey();
+
+ if ($type === null) {
+ $type = self::PRIMARY_TYPE_NUM;
+ }
+
+ $primaryArray = array();
+
+ foreach ($this->_primary as $index => $primary) {
+ switch ($this->_primaryAssignment[$index]) {
+ case self::PRIMARY_ASSIGNMENT_SESSION_SAVE_PATH:
+ $value = $this->_sessionSavePath;
+ break;
+ case self::PRIMARY_ASSIGNMENT_SESSION_NAME:
+ $value = $this->_sessionName;
+ break;
+ case self::PRIMARY_ASSIGNMENT_SESSION_ID:
+ $value = (string) $id;
+ break;
+ default:
+ $value = (string) $this->_primaryAssignment[$index];
+ break;
+ }
+
+ switch ((string) $type) {
+ case self::PRIMARY_TYPE_PRIMARYNUM:
+ $primaryArray[$index] = $value;
+ break;
+ case self::PRIMARY_TYPE_ASSOC:
+ $primaryArray[$primary] = $value;
+ break;
+ case self::PRIMARY_TYPE_WHERECLAUSE:
+ $primaryArray[] = $this->getAdapter()->quoteIdentifier($primary, true) . ' = '
+ . $this->getAdapter()->quote($value);
+ break;
+ case self::PRIMARY_TYPE_NUM:
+ default:
+ $primaryArray[] = $value;
+ break;
+ }
+ }
+
+ return $primaryArray;
+ }
+
+ /**
+ * Retrieve session lifetime considering Zend_Session_SaveHandler_DbTable::OVERRIDE_LIFETIME
+ *
+ * @param Zend_Db_Table_Row_Abstract $row
+ * @return int
+ */
+ protected function _getLifetime(Zend_Db_Table_Row_Abstract $row)
+ {
+ $return = $this->_lifetime;
+
+ if (!$this->_overrideLifetime) {
+ $return = (int) $row->{$this->_lifetimeColumn};
+ }
+
+ return $return;
+ }
+
+ /**
+ * Retrieve session expiration time
+ *
+ * @param Zend_Db_Table_Row_Abstract $row
+ * @return int
+ */
+ protected function _getExpirationTime(Zend_Db_Table_Row_Abstract $row)
+ {
+ return (int) $row->{$this->_modifiedColumn} + $this->_getLifetime($row);
+ }
+}
diff --git a/library/vendor/Zend/Session/SaveHandler/Exception.php b/library/vendor/Zend/Session/SaveHandler/Exception.php
new file mode 100644
index 0000000..2b1876f
--- /dev/null
+++ b/library/vendor/Zend/Session/SaveHandler/Exception.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * @see Zend_Session_Exception
+ */
+
+/**
+ * Zend_Session_SaveHandler_Exception
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Session_SaveHandler_Exception extends Zend_Session_Exception
+{}
diff --git a/library/vendor/Zend/Session/SaveHandler/Interface.php b/library/vendor/Zend/Session/SaveHandler/Interface.php
new file mode 100644
index 0000000..18ed5fe
--- /dev/null
+++ b/library/vendor/Zend/Session/SaveHandler/Interface.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ * @since Preview Release 0.2
+ */
+
+/**
+ * Zend_Session_SaveHandler_Interface
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @subpackage SaveHandler
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @see http://php.net/session_set_save_handler
+ */
+interface Zend_Session_SaveHandler_Interface
+{
+
+ /**
+ * Open Session - retrieve resources
+ *
+ * @param string $save_path
+ * @param string $name
+ */
+ public function open($save_path, $name);
+
+ /**
+ * Close Session - free resources
+ *
+ */
+ public function close();
+
+ /**
+ * Read session data
+ *
+ * @param string $id
+ */
+ public function read($id);
+
+ /**
+ * Write Session - commit data to resource
+ *
+ * @param string $id
+ * @param mixed $data
+ */
+ public function write($id, $data);
+
+ /**
+ * Destroy Session - remove data from resource for
+ * given session id
+ *
+ * @param string $id
+ */
+ public function destroy($id);
+
+ /**
+ * Garbage Collection - remove old session data older
+ * than $maxlifetime (in seconds)
+ *
+ * @param int $maxlifetime
+ */
+ public function gc($maxlifetime);
+
+}
diff --git a/library/vendor/Zend/Session/Validator/Abstract.php b/library/vendor/Zend/Session/Validator/Abstract.php
new file mode 100644
index 0000000..f39d20e
--- /dev/null
+++ b/library/vendor/Zend/Session/Validator/Abstract.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ * @since Preview Release 0.2
+ */
+
+/**
+ * @see Zend_Session_Validator_Interface
+ */
+
+/**
+ * Zend_Session_Validator_Abstract
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @subpackage Validator
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+abstract class Zend_Session_Validator_Abstract implements Zend_Session_Validator_Interface
+{
+
+ /**
+ * SetValidData() - This method should be used to store the environment variables that
+ * will be needed in order to validate the session later in the validate() method.
+ * These values are stored in the session in the __ZF namespace, in an array named VALID
+ *
+ * @param mixed $data
+ * @return void
+ */
+ protected function setValidData($data)
+ {
+ $validatorName = get_class($this);
+
+ $_SESSION['__ZF']['VALID'][$validatorName] = $data;
+ }
+
+
+ /**
+ * GetValidData() - This method should be used to retrieve the environment variables that
+ * will be needed to 'validate' a session.
+ *
+ * @return mixed
+ */
+ protected function getValidData()
+ {
+ $validatorName = get_class($this);
+ if (isset($_SESSION['__ZF']['VALID'][$validatorName])) {
+ return $_SESSION['__ZF']['VALID'][$validatorName];
+ }
+ return null;
+ }
+
+}
diff --git a/library/vendor/Zend/Session/Validator/Exception.php b/library/vendor/Zend/Session/Validator/Exception.php
new file mode 100644
index 0000000..03c2a03
--- /dev/null
+++ b/library/vendor/Zend/Session/Validator/Exception.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ * @since Preview Release 0.2
+ */
+
+
+/**
+ * @see Zend_Session_Exception
+ */
+
+
+/**
+ * Zend_Session_Validator_Exception
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @subpackage Validator
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Session_Validator_Exception extends Zend_Session_Exception
+{
+
+}
+
diff --git a/library/vendor/Zend/Session/Validator/HttpUserAgent.php b/library/vendor/Zend/Session/Validator/HttpUserAgent.php
new file mode 100644
index 0000000..8431aa2
--- /dev/null
+++ b/library/vendor/Zend/Session/Validator/HttpUserAgent.php
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ * @since Preview Release 0.2
+ */
+
+/**
+ * @see Zend_Session_Validator_Abstract
+ */
+
+/**
+ * Zend_Session_Validator_HttpUserAgent
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @subpackage Validator
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Session_Validator_HttpUserAgent extends Zend_Session_Validator_Abstract
+{
+
+ /**
+ * Setup() - this method will get the current user agent and store it in the session
+ * as 'valid data'
+ *
+ * @return void
+ */
+ public function setup()
+ {
+ $this->setValidData( (isset($_SERVER['HTTP_USER_AGENT'])
+ ? $_SERVER['HTTP_USER_AGENT'] : null) );
+ }
+
+ /**
+ * Validate() - this method will determine if the current user agent matches the
+ * user agent we stored when we initialized this variable.
+ *
+ * @return bool
+ */
+ public function validate()
+ {
+ $currentBrowser = (isset($_SERVER['HTTP_USER_AGENT'])
+ ? $_SERVER['HTTP_USER_AGENT'] : null);
+
+ return $currentBrowser === $this->getValidData();
+ }
+
+}
diff --git a/library/vendor/Zend/Session/Validator/Interface.php b/library/vendor/Zend/Session/Validator/Interface.php
new file mode 100644
index 0000000..ab4eb3e
--- /dev/null
+++ b/library/vendor/Zend/Session/Validator/Interface.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ * @since Preview Release 0.2
+ */
+
+/**
+ * Zend_Session_Validator_Interface
+ *
+ * @category Zend
+ * @package Zend_Session
+ * @subpackage Validator
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+interface Zend_Session_Validator_Interface
+{
+
+ /**
+ * Setup() - this method will store the environment variables
+ * necessary to be able to validate against in future requests.
+ *
+ * @return void
+ */
+ public function setup();
+
+ /**
+ * Validate() - this method will be called at the beginning of
+ * every session to determine if the current environment matches
+ * that which was store in the setup() procedure.
+ *
+ * @return boolean
+ */
+ public function validate();
+
+}