diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Application/Resource/Session.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Application/Resource/Session.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,118 @@ +_saveHandler = $saveHandler; + return $this; + } + + /** + * Get session save handler + * + * @return Zend_Session_SaveHandler_Interface + */ + public function getSaveHandler() + { + if (!$this->_saveHandler instanceof Zend_Session_SaveHandler_Interface) { + if (is_array($this->_saveHandler)) { + if (!array_key_exists('class', $this->_saveHandler)) { + throw new Zend_Application_Resource_Exception('Session save handler class not provided in options'); + } + $options = array(); + if (array_key_exists('options', $this->_saveHandler)) { + $options = $this->_saveHandler['options']; + } + $this->_saveHandler = $this->_saveHandler['class']; + $this->_saveHandler = new $this->_saveHandler($options); + } elseif (is_string($this->_saveHandler)) { + $this->_saveHandler = new $this->_saveHandler(); + } + + if (!$this->_saveHandler instanceof Zend_Session_SaveHandler_Interface) { + throw new Zend_Application_Resource_Exception('Invalid session save handler'); + } + } + return $this->_saveHandler; + } + + /** + * @return bool + */ + protected function _hasSaveHandler() + { + return ($this->_saveHandler !== null); + } + + /** + * Defined by Zend_Application_Resource_Resource + * + * @return void + */ + public function init() + { + $options = array_change_key_case($this->getOptions(), CASE_LOWER); + if (isset($options['savehandler'])) { + unset($options['savehandler']); + } + + if (count($options) > 0) { + Zend_Session::setOptions($options); + } + + if ($this->_hasSaveHandler()) { + Zend_Session::setSaveHandler($this->getSaveHandler()); + } + } +}