/** * Retrieve translate object * * @return IfwPsn_Vendor_Zend_Translate * @throws IfwPsn_Vendor_Zend_Application_Resource_Exception if registry key was used * already but is no instance of IfwPsn_Vendor_Zend_Translate */ public function getTranslate() { if (null === $this->_translate) { $options = $this->getOptions(); if (!isset($options['content']) && !isset($options['data'])) { require_once IFW_PSN_LIB_ROOT . 'IfwPsn/Vendor/Zend/Application/Resource/Exception.php'; throw new IfwPsn_Vendor_Zend_Application_Resource_Exception('No translation source data provided.'); } else { if (array_key_exists('content', $options) && array_key_exists('data', $options)) { require_once IFW_PSN_LIB_ROOT . 'IfwPsn/Vendor/Zend/Application/Resource/Exception.php'; throw new IfwPsn_Vendor_Zend_Application_Resource_Exception('Conflict on translation source data: choose only one key between content and data.'); } } if (empty($options['adapter'])) { $options['adapter'] = IfwPsn_Vendor_Zend_Translate::AN_ARRAY; } if (!empty($options['data'])) { $options['content'] = $options['data']; unset($options['data']); } if (isset($options['log'])) { if (is_array($options['log'])) { $log = IfwPsn_Vendor_Zend_Log::factory($options['log']); } if ($log instanceof IfwPsn_Vendor_Zend_Log) { $options['log'] = $log; } } if (isset($options['options'])) { foreach ($options['options'] as $key => $value) { $options[$key] = $value; } } if (!empty($options['cache']) && is_string($options['cache'])) { $bootstrap = $this->getBootstrap(); if ($bootstrap instanceof IfwPsn_Vendor_Zend_Application_Bootstrap_ResourceBootstrapper && $bootstrap->hasPluginResource('CacheManager')) { $cacheManager = $bootstrap->bootstrap('CacheManager')->getResource('CacheManager'); if (null !== $cacheManager && $cacheManager->hasCache($options['cache'])) { $options['cache'] = $cacheManager->getCache($options['cache']); } } } $key = isset($options['registry_key']) && !is_numeric($options['registry_key']) ? $options['registry_key'] : self::DEFAULT_REGISTRY_KEY; unset($options['registry_key']); if (IfwPsn_Vendor_Zend_Registry::isRegistered($key)) { $translate = IfwPsn_Vendor_Zend_Registry::get($key); if (!$translate instanceof IfwPsn_Vendor_Zend_Translate) { require_once IFW_PSN_LIB_ROOT . 'IfwPsn/Vendor/Zend/Application/Resource/Exception.php'; throw new IfwPsn_Vendor_Zend_Application_Resource_Exception($key . ' already registered in registry but is ' . 'no instance of IfwPsn_Vendor_Zend_Translate'); } $translate->addTranslation($options); $this->_translate = $translate; } else { $this->_translate = new IfwPsn_Vendor_Zend_Translate($options); IfwPsn_Vendor_Zend_Registry::set($key, $this->_translate); } } return $this->_translate; }
/** * Retrieve logger object * * @return IfwPsn_Vendor_Zend_Log */ public function getLog() { if (null === $this->_log) { $options = $this->getOptions(); $log = IfwPsn_Vendor_Zend_Log::factory($options); $this->setLog($log); } return $this->_log; }
/** * Retrieve IfwPsn_Vendor_Zend_Cache_Manager instance * * @return IfwPsn_Vendor_Zend_Cache_Manager */ public function getCacheManager() { if (null === $this->_manager) { $this->_manager = new IfwPsn_Vendor_Zend_Cache_Manager(); $options = $this->getOptions(); foreach ($options as $key => $value) { // Logger if (isset($value['frontend']['options']['logger'])) { $logger = $value['frontend']['options']['logger']; if (is_array($logger)) { $value['frontend']['options']['logger'] = IfwPsn_Vendor_Zend_Log::factory($logger); } } // Cache templates if ($this->_manager->hasCacheTemplate($key)) { $this->_manager->setTemplateOptions($key, $value); } else { $this->_manager->setCacheTemplate($key, $value); } } } return $this->_manager; }
/** * Make sure if we enable logging that the IfwPsn_Vendor_Zend_Log class * is available. * Create a default log object if none is set. * * @throws IfwPsn_Vendor_Zend_Cache_Exception * @return void */ protected function _loggerSanity() { if (!isset($this->_options['logging']) || !$this->_options['logging']) { return; } if (isset($this->_options['logger']) && $this->_options['logger'] instanceof IfwPsn_Vendor_Zend_Log) { return; } // Create a default logger to the standard output stream require_once IFW_PSN_LIB_ROOT . 'IfwPsn/Vendor/Zend/Log.php'; require_once IFW_PSN_LIB_ROOT . 'IfwPsn/Vendor/Zend/Log/Writer/Stream.php'; require_once IFW_PSN_LIB_ROOT . 'IfwPsn/Vendor/Zend/Log/Filter/Priority.php'; $logger = new IfwPsn_Vendor_Zend_Log(new IfwPsn_Vendor_Zend_Log_Writer_Stream('php://output')); $logger->addFilter(new IfwPsn_Vendor_Zend_Log_Filter_Priority(IfwPsn_Vendor_Zend_Log::WARN, '<=')); $this->_options['logger'] = $logger; }
/** * @param $message * @param null $extras * @param bool $append_backtrace * @throws IfwPsn_Vendor_Zend_Log_Exception */ public function debug($message, $extras = null, $append_backtrace = false) { if ($append_backtrace) { $message = $this->_appendBacktrace($message); } parent::log($message, IfwPsn_Vendor_Zend_Log::DEBUG, $extras); }