From 019416ef54b245716ceba58f2a541331c7801056 Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Sat, 2 Oct 2010 22:25:54 -0400 Subject: [PATCH] Continue the saga of moving binders to factories... Horde_Alarm this time. --- framework/Core/lib/Horde/Core/Factory/Alarm.php | 81 +++++++++++++++++++++++++ framework/Core/lib/Horde/Registry.php | 5 +- framework/Core/package.xml | 4 +- 3 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 framework/Core/lib/Horde/Core/Factory/Alarm.php diff --git a/framework/Core/lib/Horde/Core/Factory/Alarm.php b/framework/Core/lib/Horde/Core/Factory/Alarm.php new file mode 100644 index 000000000..2b448cda8 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Factory/Alarm.php @@ -0,0 +1,81 @@ + + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Core + */ + +/** + * A Horde_Injector:: based Horde_Core_Ajax_Application:: factory. + * + * Copyright 2010 The Horde Project (http://www.horde.org/) + * + * See the enclosed file COPYING for license information (LGPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. + * + * @category Horde + * @package Core + * @author Michael J. Rubinsky + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Core + */ +class Horde_Core_Factory_Alarm +{ + /** + * Return a Horde_Alarm instance + * + */ + public function create(Horde_Injector $injector) + { + $driver = empty($GLOBALS['conf']['alarms']['driver']) + ? 'Null' + : $GLOBALS['conf']['alarms']['driver']; + + $params = Horde::getDriverConfig('alarms', $driver); + + if (strcasecmp($driver, 'Sql') === 0) { + $params['db'] = $injector->getInstance('Horde_Db')->getDb('horde', 'alarm'); + $config = $injector->getInstance('Horde_Db')->getConfig('alarm'); + $params['charset'] = $config['charset']; + } + + $params['logger'] = $injector->getInstance('Horde_Log_Logger'); + + $class = 'Horde_Alarm_' . $driver; + $alarm = new $class($params); + $alarm->initialize(); + $alarm->gc(); + + /* Add those handlers that need configuration and can't be auto-loaded + * through Horde_Alarms::handlers(). */ + /* + $handler_params = array( + 'notification' => $injector->getInstance('Horde_Notification') + ); + $alarm->addHandler('notify', new Horde_Alarm_Handler_Notification($handler_params) + ); + + $handler_params = array( + 'js_notify' => array('Horde', 'addInlineScript'), + 'icon' => (string)Horde_Themes::img('alerts/alarm.png') + ); + $alarm->addHandler('desktop', new Horde_Alarm_Handler_Desktop($handler_params)); + */ + + $handler_params = array( + 'identity' => $injector->getInstance('Horde_Prefs_Identity'), + 'mail' => $injector->getInstance('Horde_Mail'), + 'charset' => $GLOBALS['registry']->getCharset() + ); + $alarm->addHandler('mail', new Horde_Alarm_Handler_Mail($handler_params)); + + return $alarm; + } + +} diff --git a/framework/Core/lib/Horde/Registry.php b/framework/Core/lib/Horde/Registry.php index 6712ba4e4..c6514ef0d 100644 --- a/framework/Core/lib/Horde/Registry.php +++ b/framework/Core/lib/Horde/Registry.php @@ -264,7 +264,6 @@ class Horde_Registry /* Define binders. */ $binders = array( - 'Horde_Alarm' => 'Horde_Core_Binder_Alarm', 'Horde_Auth_Factory' => 'Horde_Core_Binder_AuthFactory', // 'Horde_Browser' - initialized below 'Horde_Core_Auth_Signup' => 'Horde_Core_Binder_AuthSignup', @@ -303,6 +302,10 @@ class Horde_Registry /* Define factories. */ $factories = array( + 'Horde_Alarm' => array( + 'Horde_Core_Factory_Alarm', + 'create' + ), 'Horde_Cache' => array( 'Horde_Core_Factory_Cache', 'create', diff --git a/framework/Core/package.xml b/framework/Core/package.xml index 7876d35aa..a17348335 100644 --- a/framework/Core/package.xml +++ b/framework/Core/package.xml @@ -110,7 +110,6 @@ Application Framework. - @@ -153,6 +152,7 @@ Application Framework. + @@ -431,7 +431,6 @@ Application Framework. - @@ -470,6 +469,7 @@ Application Framework. + -- 2.11.0