_configDirectories = (array) $handlerOptions['directories']; } // Create new namespace for session access. $this->_sessionNamespace = new Zend_Session_Namespace('Config'); } /** * Loads and returns a configuration from session or .ini file. * If the config is read from .ini file, it is also stored to session. * * @param string $configFilename Name of the .ini file, where the config is stored. * * @return array */ public function load($configFilename) { // Retrieve config from session $config = (array) $this->_sessionNamespace->config; $this->_configFilename = $configFilename; // Check whether the configuration has been loaded. if (count($config) == 0) { // Search for the config file in the given directories. $this->_initIni(); $config = $this->_iniConfig->getIniData(); // Put configuration into session. $this->_sessionNamespace->config = $config; } return $config; } /** * Saves the configuration to session and .ini file. * * @param array $config Configuration to save. * * @return bool */ public function save($config) { if ($this->_iniConfig === null) { $this->_initIni(); } // Save config to session $this->_sessionNamespace->config = $config; // Save config to .ini file $this->_iniConfig->setIniData($config); return $this->_iniConfig->saveFile($this->_configFilename); } /** * Initializes the .ini file handler and sets the full filename of the .ini file. * * @return void */ private function _initIni() { foreach ($this->_configDirectories as $configDir) { $filename = rtrim($configDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $this->_configFilename; if (file_exists($filename)) { $this->_configFilename = $filename; $this->_iniConfig = new Msd_Ini($filename); break; } } } }