(int) lifetime : * - Cache lifetime (in seconds) * - If null, the cache is valid forever * * =====> (int) logging : * - if set to true, a logging is activated throw Zend_Log * * @var array directives */ protected $_directives = array( 'lifetime' => 3600, 'logging' => false ); /** * Available options * * @var array available options */ protected $_options = array(); // ---------------------- // --- Public methods --- // ---------------------- /** * Constructor * * @param array $options associative array of options */ public function __construct($options = array()) { if (!is_array($options)) Zend_Cache::throwException('Options parameter must be an array'); while (list($name, $value) = each($options)) { $this->setOption($name, $value); } } /** * Set the frontend directives * * @param array $directives assoc of directives */ public function setDirectives($directives) { if (!is_array($directives)) Zend_Cache::throwException('Directives parameter must be an array'); while (list($name, $value) = each($directives)) { if (!is_string($name)) { Zend_Cache::throwException("Incorrect option name : $name"); } if (array_key_exists($name, $this->_directives)) { $this->_directives[$name] = $value; } // specific test for the logging directive if ($name == 'logging') { if ((!class_exists('Zend_Log', false)) && ($value)) { Zend_Cache::throwException('logging feature is on but Zend_Log is not "loaded"'); } } } } /** * Set an option * * @param string $name * @param mixed $value */ public function setOption($name, $value) { if (!is_string($name) || !array_key_exists($name, $this->_options)) { Zend_Cache::throwException("Incorrect option name : $name"); } $this->_options[$name] = $value; } /** * Get the life time * * if $specificLifetime is not false, the given specific life time is used * else, the global lifetime is used * * @return int cache life time */ public function getLifetime($specificLifetime) { if ($specificLifetime === false) { return $this->_directives['lifetime']; } return $specificLifetime; } /** * Return a system-wide tmp directory * * @return string system-wide tmp directory */ static function getTmpDir() { if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { // windows... foreach (array($_ENV, $_SERVER) as $tab) { foreach (array('TEMP', 'TMP', 'windir', 'SystemRoot') as $key) { if (isset($tab[$key])) { $result = $tab[$key]; if (($key == 'windir') or ($key == 'SystemRoot')) { $result = $result . '\\temp'; } return $result; } } } return '\temp'; } else { // unix... if (isset($_ENV['TMPDIR'])) return $_ENV['TMPDIR']; if (isset($_SERVER['TMPDIR'])) return $_SERVER['TMPDIR']; return '/tmp'; } } }