From: Michael M Slusarz Date: Wed, 17 Mar 2010 07:04:30 +0000 (-0600) Subject: First pass at passing Logger to framework libs using injector/binder X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=dee7473396b946feab4ead70784673b8b9c5991c;p=horde.git First pass at passing Logger to framework libs using injector/binder --- diff --git a/framework/Cache/lib/Horde/Cache/Base.php b/framework/Cache/lib/Horde/Cache/Base.php index a83649f83..d862587cd 100644 --- a/framework/Cache/lib/Horde/Cache/Base.php +++ b/framework/Cache/lib/Horde/Cache/Base.php @@ -23,9 +23,21 @@ abstract class Horde_Cache_Base protected $_params = array(); /** + * Logger. + * + * @var Horde_Log_Logger + */ + protected $_logger; + + /** * Construct a new Horde_Cache object. * - * @param array $params Parameter array. + * @param array $params Parameter array: + *
+     * 'lifetime' - (integer) Lifetime of data, in seconds.
+     *              DEFAULT: 86400 seconds
+     * 'logger' - (Horde_Log_Logger) Log object to use for log/debug messages.
+     * 
*/ public function __construct($params = array()) { @@ -35,6 +47,11 @@ abstract class Horde_Cache_Base : 86400; } + if (isset($params['logger'])) { + $this->_logger = $params['logger']; + unset($params['logger']); + } + $this->_params = $params; } diff --git a/framework/Cache/lib/Horde/Cache/Sql.php b/framework/Cache/lib/Horde/Cache/Sql.php index 1933c976f..0cf615d6d 100644 --- a/framework/Cache/lib/Horde/Cache/Sql.php +++ b/framework/Cache/lib/Horde/Cache/Sql.php @@ -122,7 +122,9 @@ class Horde_Cache_Sql extends Horde_Cache_Base try { $this->_connect(); } catch (Horde_Exception $e) { - Horde::logMessage($e, 'ERR'); + if ($this->_logger) { + $this->_logger->log($e, 'ERR'); + } return; } @@ -132,7 +134,9 @@ class Horde_Cache_Sql extends Horde_Cache_Base $result = $this->_write_db->query($query, $values); if (is_a($result, 'PEAR_Error')) { - Horde::logMessage($result, 'ERR'); + if ($this->_logger) { + $this->_logger->log($result, 'ERR'); + } } } @@ -160,7 +164,9 @@ class Horde_Cache_Sql extends Horde_Cache_Base try { $this->_connect(); } catch (Horde_Exception $e) { - Horde::logMessage($e, 'ERR'); + if ($this->_logger) { + $this->_logger->log($e, 'ERR'); + } return false; } @@ -180,18 +186,25 @@ class Horde_Cache_Sql extends Horde_Cache_Base $result = $this->_db->getOne($query, $values); if (is_a($result, 'PEAR_Error')) { - Horde::logMessage($result, 'ERR'); + if ($this->_logger) { + $this->_logger->log($result, 'ERR'); + } return false; } elseif (is_null($result)) { /* No rows were found - cache miss */ - Horde::logMessage(sprintf('Cache miss: %s (Id %s newer than %d)', $okey, $key, $maxage), 'DEBUG'); + if ($this->_logger) { + $this->_logger->log(sprintf('Cache miss: %s (Id %s newer than %d)', $okey, $key, $maxage), 'DEBUG'); + } return false; } if ($this->_mc) { $this->_mc->set($key, $result); } - Horde::logMessage(sprintf('Cache hit: %s (Id %s newer than %d)', $okey, $key, $maxage), 'DEBUG'); + + if ($this->_logger) { + $this->_logger->log(sprintf('Cache hit: %s (Id %s newer than %d)', $okey, $key, $maxage), 'DEBUG'); + } return $result; } @@ -218,7 +231,9 @@ class Horde_Cache_Sql extends Horde_Cache_Base try { $this->_connect(); } catch (Horde_Exception $e) { - Horde::logMessage($e, 'ERR'); + if ($this->_logger) { + $this->_logger->log($e, 'ERR'); + } return false; } @@ -229,7 +244,9 @@ class Horde_Cache_Sql extends Horde_Cache_Base ? 0 : $this->_getLifetime($lifetime) + $timestamp; - Horde::logMessage(sprintf('Cache set: %s (Id %s set at %d expires at %d)', $okey, $key, $timestamp, $expiration), 'DEBUG'); + if ($this->_logger) { + $this->_logger->log(sprintf('Cache set: %s (Id %s set at %d expires at %d)', $okey, $key, $timestamp, $expiration), 'DEBUG'); + } // Remove any old cache data and prevent duplicate keys $query = 'DELETE FROM ' . $this->_params['table'] . ' WHERE cache_id=?'; @@ -244,7 +261,9 @@ class Horde_Cache_Sql extends Horde_Cache_Base $result = $this->_write_db->query($query, $values); if (is_a($result, 'PEAR_Error')) { - Horde::logMessage($result, 'ERR'); + if ($this->_logger) { + $this->_logger->log($result, 'ERR'); + } return false; } @@ -273,7 +292,9 @@ class Horde_Cache_Sql extends Horde_Cache_Base try { $this->_connect(); } catch (Horde_Exception $e) { - Horde::logMessage($e, 'ERR'); + if ($this->_logger) { + $this->_logger->log($e, 'ERR'); + } return false; } @@ -290,16 +311,23 @@ class Horde_Cache_Sql extends Horde_Cache_Base $result = $this->_db->getRow($query, $values); if (is_a($result, 'PEAR_Error')) { - Horde::logMessage($result, 'ERR'); + if ($this->_logger) { + $this->_logger->log($result, 'ERR'); + } return false; } $timestamp = time(); if (empty($result)) { - Horde::logMessage(sprintf('Cache exists() miss: %s (Id %s newer than %d)', $okey, $key, $timestamp), 'DEBUG'); + if ($this->_logger) { + $this->_logger->log(sprintf('Cache exists() miss: %s (Id %s newer than %d)', $okey, $key, $timestamp), 'DEBUG'); + } return false; } - Horde::logMessage(sprintf('Cache exists() hit: %s (Id %s newer than %d)', $okey, $key, $timestamp), 'DEBUG'); + + if ($this->_logger) { + $this->_logger->log(sprintf('Cache exists() hit: %s (Id %s newer than %d)', $okey, $key, $timestamp), 'DEBUG'); + } return true; } @@ -322,7 +350,9 @@ class Horde_Cache_Sql extends Horde_Cache_Base try { $this->_connect(); } catch (Horde_Exception $e) { - Horde::logMessage($e, 'ERR'); + if ($this->_logger) { + $this->_logger->log($e, 'ERR'); + } return false; } @@ -332,7 +362,9 @@ class Horde_Cache_Sql extends Horde_Cache_Base $result = $this->_write_db->query($query, $values); if (is_a($result, 'PEAR_Error')) { - Horde::logMessage($result, 'ERR'); + if ($this->_logger) { + $this->_logger->log($result, 'ERR'); + } return false; } diff --git a/framework/Cache/package.xml b/framework/Cache/package.xml index 4ac63a6f6..deabc2ce0 100644 --- a/framework/Cache/package.xml +++ b/framework/Cache/package.xml @@ -33,7 +33,8 @@ Performance Suite's content cache), memcached, or an SQL table. beta LGPL - * Initial Horde 4 package. + * Removed dependency on Horde Core. + * Initial Horde 4 package. @@ -80,6 +81,10 @@ Performance Suite's content cache), memcached, or an SQL table. memcache + + Log + pear.horde.org + diff --git a/framework/Core/lib/Horde/Core/Binder/Cache.php b/framework/Core/lib/Horde/Core/Binder/Cache.php index f704c2a54..4dfaeada8 100644 --- a/framework/Core/lib/Horde/Core/Binder/Cache.php +++ b/framework/Core/lib/Horde/Core/Binder/Cache.php @@ -31,6 +31,8 @@ class Horde_Core_Binder_Cache implements Horde_Injector_Binder } } + $params['logger'] = $injector->getInstance('Horde_Log_Logger'); + return Horde_Cache::factory($driver, $params); } diff --git a/framework/Core/lib/Horde/Core/Binder/Memcache.php b/framework/Core/lib/Horde/Core/Binder/Memcache.php index d10b95b33..8a7d828b2 100644 --- a/framework/Core/lib/Horde/Core/Binder/Memcache.php +++ b/framework/Core/lib/Horde/Core/Binder/Memcache.php @@ -5,7 +5,7 @@ class Horde_Core_Binder_Memcache implements Horde_Injector_Binder { return empty($GLOBALS['conf']['memcache']['enabled']) ? null - : new Horde_Memcache($GLOBALS['conf']['memcache']); + : new Horde_Memcache(array_merge($GLOBALS['conf']['memcache'], array('logger' => $injector->getInstance('Horde_Log_Logger')))); } public function equals(Horde_Injector_Binder $binder) diff --git a/framework/Core/lib/Horde/Core/Binder/Notification.php b/framework/Core/lib/Horde/Core/Binder/Notification.php index 780dda7af..dd3b32d01 100644 --- a/framework/Core/lib/Horde/Core/Binder/Notification.php +++ b/framework/Core/lib/Horde/Core/Binder/Notification.php @@ -9,7 +9,7 @@ class Horde_Core_Binder_Notification implements Horde_Injector_Binder $notify->addType('status', 'horde.*', 'Horde_Core_Notification_Status'); $notify->addDecorator(new Horde_Notification_Handler_Decorator_Alarm(Horde_Alarm::factory(), Horde_Auth::getAuth())); - $notify->addDecorator(new Horde_Notification_Handler_Decorator_Hordelog()); + $notify->addDecorator(new Horde_Core_Notification_Hordelog()); return $notify; } diff --git a/framework/Core/lib/Horde/Core/Binder/Perms.php b/framework/Core/lib/Horde/Core/Binder/Perms.php index a3ad52207..9e3de99c9 100644 --- a/framework/Core/lib/Horde/Core/Binder/Perms.php +++ b/framework/Core/lib/Horde/Core/Binder/Perms.php @@ -3,15 +3,27 @@ class Horde_Core_Binder_Perms implements Horde_Injector_Binder { public function create(Horde_Injector $injector) { - $perm_driver = $perm_params = null; + $perm_params = array( + 'cache' => $injector->getInstance('Horde_Cache'), + 'logger' => $injector->getInstance('Horde_Logger') + ); - if (empty($GLOBALS['conf']['perms']['driver'])) { - $perm_driver = empty($GLOBALS['conf']['datatree']['driver']) - ? null - : 'datatree'; - } else { - $perm_driver = $GLOBALS['conf']['perms']['driver']; - $perm_params = Horde::getDriverConfig('perms', $perm_driver); + $perm_driver = empty($GLOBALS['conf']['perms']['driver']) + ? (empty($GLOBALS['conf']['datatree']['driver']) ? null : 'datatree') + : $GLOBALS['conf']['perms']['driver']; + + switch (strtolower($perm_driver)) { + case 'datatree': + $driver = $GLOBALS['conf']['datatree']['driver']; + $perm_params['datatree'] = DataTree::singleton( + $driver, + array_merge(Horde::getDriverConfig('datatree', $driver), array('group' => 'horde.perms')) + ); + break; + + case 'sql': + // TODO + break; } return Horde_Perms::factory($perm_driver, $perm_params); diff --git a/framework/Core/lib/Horde/Core/Binder/Template.php b/framework/Core/lib/Horde/Core/Binder/Template.php index 825f19b3b..3622006bc 100644 --- a/framework/Core/lib/Horde/Core/Binder/Template.php +++ b/framework/Core/lib/Horde/Core/Binder/Template.php @@ -4,7 +4,8 @@ class Horde_Core_Binder_Template implements Horde_Injector_Binder public function create(Horde_Injector $injector) { return new Horde_Template(array( - 'cacheob' => $injector->getInstance('Horde_Cache') + 'cacheob' => $injector->getInstance('Horde_Cache'), + 'logger' => $injector->getInstance('Horde_Log_Logger') )); } diff --git a/framework/Core/lib/Horde/Core/Notification/Hordelog.php b/framework/Core/lib/Horde/Core/Notification/Hordelog.php new file mode 100644 index 000000000..4018f1610 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Notification/Hordelog.php @@ -0,0 +1,29 @@ + + * @package Horde_Core + */ +class Horde_Core_Notification_Hordelog +extends Horde_Notification_Handler_Decorator_Base +{ + /** + * Event is being added to the Horde message stack. + * + * @param Horde_Notification_Event $event Event object. + * @param array $options Additional options (see + * Horde_Notification_Handler for + * details). + */ + public function push(Horde_Notification_Event $event, $options) + { + Horde::logMessage($event->message, 'DEBUG'); + } + +} diff --git a/framework/Core/package.xml b/framework/Core/package.xml index e20b07691..b09e9b6cc 100644 --- a/framework/Core/package.xml +++ b/framework/Core/package.xml @@ -80,6 +80,7 @@ Application Framework. + @@ -190,6 +191,7 @@ Application Framework. + diff --git a/framework/Memcache/lib/Horde/Memcache.php b/framework/Memcache/lib/Horde/Memcache.php index 96fad4142..a2eea7162 100644 --- a/framework/Memcache/lib/Horde/Memcache.php +++ b/framework/Memcache/lib/Horde/Memcache.php @@ -87,6 +87,13 @@ class Horde_Memcache protected $_noexist = array(); /** + * Logger instance. + * + * @var Horde_Log_Logger + */ + protected $_logger; + + /** * Constructor. * * @param array $params TODO @@ -99,6 +106,10 @@ class Horde_Memcache $this->_params['prefix'] = (empty($this->_params['prefix'])) ? 'horde' : $this->_params['prefix']; $this->_large = !empty($this->_params['large_items']); + if (isset($params['logger'])) { + $this->_logger = $params['logger']; + } + $this->__wakeup(); } @@ -129,7 +140,9 @@ class Horde_Memcache // Force consistent hashing ini_set('memcache.hash_strategy', 'consistent'); - Horde::logMessage('Connected to the following memcache servers:' . implode($servers, ', '), 'DEBUG'); + if ($this->_logger) { + $this->_logger->log('Connected to the following memcache servers:' . implode($servers, ', '), 'DEBUG'); + } } /** diff --git a/framework/Notification/lib/Horde/Notification/Handler/Decorator/Hordelog.php b/framework/Notification/lib/Horde/Notification/Handler/Decorator/Hordelog.php deleted file mode 100644 index b85cb75ca..000000000 --- a/framework/Notification/lib/Horde/Notification/Handler/Decorator/Hordelog.php +++ /dev/null @@ -1,29 +0,0 @@ - - * @package Horde_Notification - */ -class Horde_Notification_Handler_Decorator_Hordelog -extends Horde_Notification_Handler_Decorator_Base -{ - /** - * Event is being added to the Horde message stack. - * - * @param Horde_Notification_Event $event Event object. - * @param array $options Additional options (see - * Horde_Notification_Handler for - * details). - */ - public function push(Horde_Notification_Event $event, $options) - { - Horde::logMessage($event->message, 'DEBUG'); - } - -} diff --git a/framework/Notification/package.xml b/framework/Notification/package.xml index e3cafaf7b..cf8186761 100644 --- a/framework/Notification/package.xml +++ b/framework/Notification/package.xml @@ -40,7 +40,6 @@ http://pear.php.net/dtd/package-2.0.xsd"> - @@ -73,7 +72,6 @@ http://pear.php.net/dtd/package-2.0.xsd"> - @@ -123,7 +121,6 @@ http://pear.php.net/dtd/package-2.0.xsd"> - @@ -140,7 +137,6 @@ http://pear.php.net/dtd/package-2.0.xsd"> - diff --git a/framework/Perms/lib/Horde/Perms.php b/framework/Perms/lib/Horde/Perms.php index 4911b8a40..4b6a0daf8 100644 --- a/framework/Perms/lib/Horde/Perms.php +++ b/framework/Perms/lib/Horde/Perms.php @@ -32,6 +32,20 @@ class Horde_Perms const ROOT = -1; /** + * Cache object. + * + * @var Horde_Cache + */ + protected $_cache; + + /** + * Logger. + * + * @var Horde_Log_Logger + */ + protected $_logger; + + /** * Caches information about application permissions. * * @var array @@ -76,6 +90,28 @@ class Horde_Perms } /** + * Constructor. + * + * @param array $params Configuration parameters: + *
+     * 'cache' - (Horde_Cache) The object to use to cache perms.
+     * 'logger' - (Horde_Log_Logger) A logger object.
+     * 
+ * + * @throws Horde_Perms_Exception + */ + public function __construct($params = array()) + { + if (isset($params['cache'])) { + $this->_cache = $params['cache']; + } + + if (isset($params['logger'])) { + $this->_logger = $params['logger']; + } + } + + /** * Returns the available permissions for a given level. * * @param string $name The permission's name. @@ -299,7 +335,9 @@ class Horde_Perms try { $permission = $this->getPermission($permission); } catch (Horde_Perms_Exception $e) { - Horde::logMessage($e, 'DEBUG'); + if ($this->_logger) { + $this->_logger->log($e, 'DEBUG'); + } return false; } } diff --git a/framework/Perms/lib/Horde/Perms/Datatree.php b/framework/Perms/lib/Horde/Perms/Datatree.php index ff1788400..b1a6d1084 100644 --- a/framework/Perms/lib/Horde/Perms/Datatree.php +++ b/framework/Perms/lib/Horde/Perms/Datatree.php @@ -23,13 +23,6 @@ class Horde_Perms_Datatree extends Horde_Perms protected $_datatree; /** - * Pointer to a Horde_Cache instance. - * - * @var Horde_Cache - */ - protected $_cache; - - /** * Incrementing version number if cached classes change. * * @var integer @@ -46,22 +39,23 @@ class Horde_Perms_Datatree extends Horde_Perms /** * Constructor. * - * @throws Horde_Exception + * @param array $params Configuration parameters (in addition to base + * Horde_Perms parameters): + *
+     * 'datatree' - (DataTree) A datatree object. [REQUIRED]
+     * 
+ * + * @throws Horde_Perms_Exception */ - public function __construct() + public function __construct($params = array()) { - global $conf; - - if (empty($conf['datatree']['driver'])) { - throw new Horde_Exception('You must configure a DataTree backend.'); + if (empty($params['datatree'])) { + throw new Horde_Perms_Exception('You must configure a DataTree backend.'); } - $driver = $conf['datatree']['driver']; - $this->_datatree = DataTree::singleton($driver, - array_merge(Horde::getDriverConfig('datatree', $driver), - array('group' => 'horde.perms'))); + $this->_datatree = $params['datatree']; - $this->_cache = $GLOBALS['injector']->getInstance('Horde_Cache'); + parent::__construct($params); } /** diff --git a/framework/Perms/lib/Horde/Perms/Sql.php b/framework/Perms/lib/Horde/Perms/Sql.php index c843f3068..8dda93481 100644 --- a/framework/Perms/lib/Horde/Perms/Sql.php +++ b/framework/Perms/lib/Horde/Perms/Sql.php @@ -37,13 +37,6 @@ class Horde_Perms_Sql extends Horde_Perms protected $_write_db; /** - * Pointer to a Horde_Cache instance - * - * @var Horde_Cache - */ - protected $_cache; - - /** * Incrementing version number if cached classes change. * * @var integer @@ -59,10 +52,18 @@ class Horde_Perms_Sql extends Horde_Perms /** * Constructor. + * + * @param array $params Configuration parameters (in addition to base + * Horde_Perms parameters): + *
+     * NONE (TODO - pass in SQL object)
+     * 
+ * + * @throws Horde_Perms_Exception */ - public function __construct() + public function __construct($params = array()) { - $this->_cache = $GLOBALS['injector']->getInstance('Horde_Cache'); + parent::__construct($params); } /** diff --git a/framework/Template/lib/Horde/Template.php b/framework/Template/lib/Horde/Template.php index 616e45f17..90ce4d182 100644 --- a/framework/Template/lib/Horde/Template.php +++ b/framework/Template/lib/Horde/Template.php @@ -35,6 +35,13 @@ class Horde_Template protected $_cache; /** + * Logger. + * + * @var Horde_Log_Logger + */ + protected $_logger; + + /** * Option values. * * @var array @@ -104,9 +111,10 @@ class Horde_Template *
      * 'basepath' - (string) The directory where templates are read from.
      * 'cacheob' - (Horde_Cache) A caching object used to cache the output.
+     * 'logger' - (Horde_Log_Logger) A logger object.
      * 
*/ - public function __construct($basepath = null) + public function __construct($params = array()) { if (isset($params['basepath'])) { $this->_basepath = $params['basepath']; @@ -115,6 +123,10 @@ class Horde_Template if (isset($params['cacheob'])) { $this->_cache = $params['cacheob']; } + + if (isset($params['logger'])) { + $this->_logger = $params['logger']; + } } /** @@ -230,8 +242,9 @@ class Horde_Template $this->_parse(); if ($this->_cache && isset($cacheid) && - !$this->_cache->set($cacheid, $this->_template)) { - Horde::logMessage(sprintf(_("Could not save the compiled template file '%s'."), $file), 'ERR'); + !$this->_cache->set($cacheid, $this->_template) && + $this->_logger) { + $this->_logger->log(sprintf('Could not save the compiled template file "%s".', $file), 'ERR'); } } diff --git a/framework/Template/package.xml b/framework/Template/package.xml index 56c35cff7..f960795c9 100644 --- a/framework/Template/package.xml +++ b/framework/Template/package.xml @@ -30,7 +30,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> beta LGPL - * Initial Horde 4 package. + * Remove dependency on Horde_Core. + * Initial Horde 4 package.