From: Michael M Slusarz Date: Wed, 17 Mar 2010 23:34:10 +0000 (-0600) Subject: Use global injector binder to get Alarm object using Horde alarm config X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=6cabfab972f38336f204179e5b41d0ecf3b0525d;p=horde.git Use global injector binder to get Alarm object using Horde alarm config --- diff --git a/framework/Alarm/lib/Horde/Alarm.php b/framework/Alarm/lib/Horde/Alarm.php index ecc14e4ec..4423b47e0 100644 --- a/framework/Alarm/lib/Horde/Alarm.php +++ b/framework/Alarm/lib/Horde/Alarm.php @@ -18,11 +18,20 @@ class Horde_Alarm { /** + * Logger. + * + * @var Horde_Log_Logger + */ + protected $_logger; + + /** * Hash containing connection parameters. * * @var array */ - protected $_params = array('ttl' => 300); + protected $_params = array( + 'ttl' => 300 + ); /** * Attempts to return a concrete instance based on $driver. @@ -37,40 +46,42 @@ class Horde_Alarm * @return Horde_Alarm The newly created concrete instance. * @throws Horde_Alarm_Exception */ - static public function factory($driver = null, $params = null) + static public function factory($driver = null, $params = array()) { - if (is_null($driver)) { - $driver = $GLOBALS['conf']['alarms']['driver']; - } if (empty($driver)) { - return new Horde_Alarm(); + return new Horde_Alarm($params); } $driver = ucfirst(basename($driver)); - - if (is_null($params)) { - $params = Horde::getDriverConfig('alarms', $driver); - } - $class = __CLASS__ . '_' . $driver; - if (class_exists($class)) { - $alarm = new $class($params); - $alarm->initialize(); - $alarm->gc(); - return $alarm; + if (!class_exists($class)) { + throw new Horde_Alarm_Exception('Could not find driver.'); } - throw new Horde_Alarm_Exception('Could not find driver.'); + $alarm = new $class($params); + $alarm->initialize(); + $alarm->gc(); + + return $alarm; } /** * Constructor. * - * @param array $params Any parameters needed for this driver. + * @param array $params Configuration parameters: + *
+     * 'logger' - (Horde_Log_Logger) A logger instance.
+     * 'ttl' - (integer) Time to live value, in seconds.
+     * 
*/ public function __construct($params = array()) { + if (isset($params['logger'])) { + $this->_logger = $params['logger']; + unset($params['logger']); + } + $this->_params = array_merge($this->_params, $params); } @@ -300,7 +311,9 @@ class Horde_Alarm try { $app_alarms = $GLOBALS['registry']->callByPackage($app, 'listAlarms', array(time(), $user), array('noperms' => true)); } catch (Horde_Exception $e) { - Horde::logMessage($e, 'ERR'); + if ($this->_logger) { + $this->_logger->log($e, 'ERR'); + } $app_alarms = array(); } $alarms = array_merge($alarms, $app_alarms); @@ -374,7 +387,9 @@ class Horde_Alarm try { $alarms = $this->listAlarms($user, null, $load, $preload); } catch (Horde_Alarm_Exception $e) { - Horde::logMessage($e, 'ERR'); + if ($this->_logger) { + $this->_logger->log($e, 'ERR'); + } throw $e; } @@ -390,7 +405,9 @@ class Horde_Alarm try { $this->{'_' . $alarm_method}($alarm); } catch (Horde_Alarm_Exception $e) { - Horde::logMessage($e, 'ERR'); + if ($this->_logger) { + $this->_logger->log($e, 'ERR'); + } } } } diff --git a/framework/Alarm/package.xml b/framework/Alarm/package.xml index de323e8c4..512d834f0 100644 --- a/framework/Alarm/package.xml +++ b/framework/Alarm/package.xml @@ -57,10 +57,24 @@ http://pear.php.net/dtd/package-2.0.xsd"> 1.5.0 + Core + pear.horde.org + + Date pear.horde.org + + Exception + pear.horde.org + + + + Log + pear.horde.org + + diff --git a/framework/Core/lib/Horde/Core/Binder/Alarm.php b/framework/Core/lib/Horde/Core/Binder/Alarm.php new file mode 100644 index 000000000..5bc360171 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Binder/Alarm.php @@ -0,0 +1,22 @@ +getInstance('Horde_Log_Logger'); + + return Horde_Alarm::factory($driver, $params); + } + + public function equals(Horde_Injector_Binder $binder) + { + return false; + } +} diff --git a/framework/Core/lib/Horde/Core/Binder/Notification.php b/framework/Core/lib/Horde/Core/Binder/Notification.php index dd3b32d01..35e83d6cf 100644 --- a/framework/Core/lib/Horde/Core/Binder/Notification.php +++ b/framework/Core/lib/Horde/Core/Binder/Notification.php @@ -8,7 +8,7 @@ class Horde_Core_Binder_Notification implements Horde_Injector_Binder $notify->addType('default', '*', 'Horde_Core_Notification_Status'); $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_Alarm($injector->getInstance('Horde_Alarm'), Horde_Auth::getAuth())); $notify->addDecorator(new Horde_Core_Notification_Hordelog()); return $notify; diff --git a/framework/Core/lib/Horde/Registry.php b/framework/Core/lib/Horde/Registry.php index 20438bdf8..0435fcdf9 100644 --- a/framework/Core/lib/Horde/Registry.php +++ b/framework/Core/lib/Horde/Registry.php @@ -234,6 +234,7 @@ class Horde_Registry /* Define binders. */ $binders = array( + 'Horde_Alarm' => new Horde_Core_Binder_Alarm(), 'Horde_Cache' => new Horde_Core_Binder_Cache(), 'Horde_Db_Adapter_Base' => new Horde_Core_Binder_Db('reader'), 'Horde_Log_Logger' => new Horde_Core_Binder_Logger(), diff --git a/framework/Core/package.xml b/framework/Core/package.xml index d470e1eae..3e255213f 100644 --- a/framework/Core/package.xml +++ b/framework/Core/package.xml @@ -64,6 +64,7 @@ Application Framework. + @@ -193,6 +194,7 @@ Application Framework. + diff --git a/horde/admin/alarms.php b/horde/admin/alarms.php index a83ac530d..865274d39 100644 --- a/horde/admin/alarms.php +++ b/horde/admin/alarms.php @@ -11,7 +11,7 @@ require_once dirname(__FILE__) . '/../lib/Application.php'; Horde_Registry::appInit('horde', array('admin' => true)); -$horde_alarm = Horde_Alarm::factory(); +$horde_alarm = $injector->getInstance('Horde_Alarm'); $methods = array(); foreach ($horde_alarm->notificationMethods() as $name => $method) { $methods[$name] = $method['__desc']; diff --git a/horde/bin/alarms b/horde/bin/alarms index 10e1d97e4..cfb3ed8ea 100755 --- a/horde/bin/alarms +++ b/horde/bin/alarms @@ -12,4 +12,4 @@ require_once dirname(__FILE__) . '/../lib/Application.php'; Horde_Registry::appInit('horde', array('authentication' => 'none', 'cli' => true, 'user_admin' => true)); -Horde_Alarm::factory()->notify(null, true, false, array('notify')); +$injector->getInstance('Horde_Alarm')->notify(null, true, false, array('notify')); diff --git a/horde/services/snooze.php b/horde/services/snooze.php index ac4025c07..7f00b5553 100644 --- a/horde/services/snooze.php +++ b/horde/services/snooze.php @@ -11,7 +11,7 @@ require_once dirname(__FILE__) . '/../lib/Application.php'; Horde_Registry::appInit('horde', array('nologintasks' => true)); -$alarm = Horde_Alarm::factory(); +$alarm = $injector->getInstance('Horde_Alarm'); $id = Horde_Util::getPost('alarm'); $snooze = Horde_Util::getPost('snooze'); diff --git a/kronolith/lib/Application.php b/kronolith/lib/Application.php index 1a2fad094..58d7462b5 100644 --- a/kronolith/lib/Application.php +++ b/kronolith/lib/Application.php @@ -171,7 +171,7 @@ class Kronolith_Application extends Horde_Registry_Application try { $alarms = $GLOBALS['registry']->callByPackage('kronolith', 'listAlarms', array($_SERVER['REQUEST_TIME'])); if (!empty($alarms)) { - $horde_alarm = Horde_Alarm::factory(); + $horde_alarm = $GLOBALS['injector']->getInstance('Horde_Alarm'); foreach ($alarms as $alarm) { $alarm['start'] = new Horde_Date($alarm['start']); $alarm['end'] = new Horde_Date($alarm['end']); diff --git a/kronolith/lib/Block/tree_alarms.php b/kronolith/lib/Block/tree_alarms.php index 2c7c508da..39088d2ac2 100644 --- a/kronolith/lib/Block/tree_alarms.php +++ b/kronolith/lib/Block/tree_alarms.php @@ -12,10 +12,7 @@ class Horde_Block_kronolith_tree_alarms extends Horde_Block { function _buildTree(&$tree, $indent = 0, $parent = null) { - $horde_alarm = null; - if (!empty($GLOBALS['conf']['alarms']['driver'])) { - $horde_alarm = Horde_Alarm::factory(); - } + $horde_alarm = $GLOBALS['injector']->getInstance('Horde_Alarm'); $alarmCount = 0; try { @@ -27,7 +24,7 @@ class Horde_Block_kronolith_tree_alarms extends Horde_Block { } foreach ($alarms as $calId => $calAlarms) { foreach ($calAlarms as $event) { - if ($horde_alarm && $horde_alarm->isSnoozed($event->uid, Horde_Auth::getAuth())) { + if ($horde_alarm->isSnoozed($event->uid, Horde_Auth::getAuth())) { continue; } $alarmCount++; diff --git a/kronolith/lib/Driver/Sql.php b/kronolith/lib/Driver/Sql.php index 3db4643c3..9df2e5866 100644 --- a/kronolith/lib/Driver/Sql.php +++ b/kronolith/lib/Driver/Sql.php @@ -737,10 +737,7 @@ class Kronolith_Driver_Sql extends Kronolith_Driver } /* Remove any pending alarms. */ - if (@include_once 'Horde/Alarm.php') { - $alarm = Horde_Alarm::factory(); - $alarm->delete($event->uid); - } + $GLOBALS['injector']->getInstance('Horde_Alarm')->delete($event->uid); /* Remove any tags */ $tagger = Kronolith::getTagger(); diff --git a/kronolith/lib/Event.php b/kronolith/lib/Event.php index 69d9402a5..4fbb5b297 100644 --- a/kronolith/lib/Event.php +++ b/kronolith/lib/Event.php @@ -479,14 +479,10 @@ abstract class Kronolith_Event } } - if (!empty($GLOBALS['conf']['alarms']['driver'])) { - $alarm = $this->toAlarm(new Horde_Date($_SERVER['REQUEST_TIME'])); - if ($alarm) { - $alarm['start'] = new Horde_Date($alarm['start']); - $alarm['end'] = new Horde_Date($alarm['end']); - $horde_alarm = Horde_Alarm::factory(); - $horde_alarm->set($alarm); - } + if ($alarm = $this->toAlarm(new Horde_Date($_SERVER['REQUEST_TIME']))) { + $alarm['start'] = new Horde_Date($alarm['start']); + $alarm['end'] = new Horde_Date($alarm['end']); + $GLOBALS['injector']->getInstance('Horde_Alarm')->set($alarm); } return $result; diff --git a/nag/lib/Block/tree_alarms.php b/nag/lib/Block/tree_alarms.php index 8bc9488e3..3fa96293c 100644 --- a/nag/lib/Block/tree_alarms.php +++ b/nag/lib/Block/tree_alarms.php @@ -12,10 +12,7 @@ class Horde_Block_nag_tree_alarms extends Horde_Block { function _buildTree(&$tree, $indent = 0, $parent = null) { - $horde_alarm = null; - if (!empty($GLOBALS['conf']['alarms']['driver'])) { - $horde_alarm = Horde_Alarm::factory(); - } + $horde_alarm = $GLOBALS['injector']->getInstance('Horde_Alarm'); // Get any alarms in the next hour. $now = time(); @@ -26,8 +23,7 @@ class Horde_Block_nag_tree_alarms extends Horde_Block { $alarmCount = 0; foreach ($alarms as $taskId => $task) { - if ($horde_alarm && - $horde_alarm->isSnoozed($task->uid, Horde_Auth::getAuth())) { + if ($horde_alarm->isSnoozed($task->uid, Horde_Auth::getAuth())) { continue; } $alarmCount++; diff --git a/nag/lib/Driver.php b/nag/lib/Driver.php index 44e78c564..a50780c9a 100644 --- a/nag/lib/Driver.php +++ b/nag/lib/Driver.php @@ -241,13 +241,10 @@ class Nag_Driver } /* Add an alarm if necessary. */ - if (!empty($GLOBALS['conf']['alarms']['driver']) && !empty($alarm)) { - $alarm = $task->toAlarm(); - if ($alarm) { - $alarm['start'] = new Horde_Date($alarm['start']); - $horde_alarm = Horde_Alarm::factory(); - $horde_alarm->set($alarm); - } + if (!empty($alarm) && + ($alarm = $task->toAlarm())) { + $alarm['start'] = new Horde_Date($alarm['start']); + $GLOBALS['injector']->getInstance('Horde_Alarm')->set($alarm); } return array($taskId, $uid); @@ -340,17 +337,15 @@ class Nag_Driver } /* Update alarm if necessary. */ - if (!empty($GLOBALS['conf']['alarms']['driver'])) { - $horde_alarm = Horde_Alarm::factory(); - if (empty($alarm) || $completed) { - $horde_alarm->delete($task->uid); - } else { - $task = $this->get($taskId); - $alarm = $task->toAlarm(); - if ($alarm) { - $alarm['start'] = new Horde_Date($alarm['start']); - $horde_alarm->set($alarm); - } + $horde_alarm = $GLOBALS['injector']->getInstance('Horde_Alarm'); + if (empty($alarm) || $completed) { + $horde_alarm->delete($task->uid); + } else { + $task = $this->get($taskId); + $alarm = $task->toAlarm(); + if ($alarm) { + $alarm['start'] = new Horde_Date($alarm['start']); + $horde_alarm->set($alarm); } } @@ -407,10 +402,8 @@ class Nag_Driver } /* Delete alarm if necessary. */ - if (!empty($GLOBALS['conf']['alarms']['driver']) && - !empty($task->alarm)) { - $horde_alarm = Horde_Alarm::factory(); - $horde_alarm->delete($task->uid); + if (!empty($task->alarm)) { + $GLOBALS['injector']->getInstance('Horde_Alarm')->delete($task->uid); } return true;