array( 'Exception' => null, ), ); /** * Standard plugins * * @var array */ public static $standardPlugins = array( 'Exception', ); /** * Creates a new instance of the Debug Bar * * @param array|Zend_Config $options * @throws Zend_Controller_Exception * @return void */ protected $_closingBracket = null; public function __construct($options = null) { if (isset($options)) { if ($options instanceof Zend_Config) { $options = $options->toArray(); } /* * Verify that adapter parameters are in an array. */ if (!is_array($options)) { throw new Zend_Exception('Parameters must be in an array or a Zend_Config object'); } $this->setOptions($options); } /** * Creating the log tab */ $logger = new WsDebug_Controller_Plugin_Debug_Plugin_Log(); $this->registerPlugin($logger); $logger->mark('Startup - WsDebug construct()', true); /** * Loading already defined plugins */ $this->_loadPlugins(); } /** * Get the ZFDebug logger * * @return Zend_Log */ public function getLogger() { return $this->getPlugin('Log')->logger(); } /** * Sets options of the Debug Bar * * @param array $options * @return ZFDebug_Controller_Plugin_Debug */ public function setOptions(array $options = array()) { if (isset($options['plugins'])) { $this->_options['plugins'] = $options['plugins']; } return $this; } /** * Register a new plugin in the Debug Bar * * @param WsDebug_Controller_Plugin_Debug_Plugin_Interface * @return WsDebug_Controller_Plugin_Debug */ public function registerPlugin(WsDebug_Controller_Plugin_Debug_Plugin_Interface $plugin) { $this->_plugins[$plugin->getIdentifier()] = $plugin; return $this; } /** * Unregister a plugin in the Debug Bar * * @param string $plugin * @return WsDebug_Controller_Plugin_Debug */ public function unregisterPlugin($plugin) { if (false !== strpos($plugin, '_')) { foreach ($this->_plugins as $key => $_plugin) { if ($plugin == get_class($_plugin)) { unset($this->_plugins[$key]); } } } else { $plugin = strtolower($plugin); if (isset($this->_plugins[$plugin])) { unset($this->_plugins[$plugin]); } } return $this; } /** * Get a registered plugin in the Debug Bar * * @param string $identifier * @return WsDebug_Controller_Plugin_Debug_Plugin_Interface */ public function getPlugin($identifier) { $identifier = strtolower($identifier); if (isset($this->_plugins[$identifier])) { return $this->_plugins[$identifier]; } return false; } /** * Defined by Zend_Controller_Plugin_Abstract */ public function dispatchLoopShutdown() { $txt = ''; /** * Creating content for all registered plugins */ foreach ($this->_plugins as $plugin) { $data = $plugin->getData(); if ($data == '') { continue; } $txt .= 'Debug - ' . ucfirst($plugin->getIdentifier())." : \n"; $txt .= $data; } $this->_output($txt); } ### INTERNAL METHODS BELOW ### /** * Load plugins set in config option * * @return void; */ protected function _loadPlugins() { foreach ($this->_options['plugins'] as $plugin => $options) { if (is_numeric($plugin)) { # Plugin passed as array value instead of key $plugin = $options; $options = array(); } // Register an instance if (is_object($plugin) && in_array('WsDebug_Controller_Plugin_Debug_Plugin_Interface', class_implements($plugin))) { $this->registerPlugin($plugin); continue; } if (!is_string($plugin)) { throw new Exception("Invalid plugin name", 1); } $plugin = ucfirst($plugin); // Register a classname if (in_array($plugin, WsDebug_Controller_Plugin_Debug::$standardPlugins)) { // standard plugin $pluginClass = 'WsDebug_Controller_Plugin_Debug_Plugin_' . $plugin; } else { // we use a custom plugin if (!preg_match('~^[\w]+$~D', $plugin)) { throw new Zend_Exception("WsDebug: Invalid plugin name [$plugin]"); } $pluginClass = $plugin; } require_once str_replace('_', DIRECTORY_SEPARATOR, $pluginClass) . '.php'; $object = new $pluginClass($options); $this->registerPlugin($object); } } /** * Output text for logging * * @param string $txt * @return void */ protected function _output($txt) { //file_put_contents(APPLICATION_PATH . '/../test.log', $txt, FILE_APPEND); //Is txt should be send by mail //Is txt should be write to file } }