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.
* @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:
+ * <pre>
+ * 'logger' - (Horde_Log_Logger) A logger instance.
+ * 'ttl' - (integer) Time to live value, in seconds.
+ * </pre>
*/
public function __construct($params = array())
{
+ if (isset($params['logger'])) {
+ $this->_logger = $params['logger'];
+ unset($params['logger']);
+ }
+
$this->_params = array_merge($this->_params, $params);
}
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);
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;
}
try {
$this->{'_' . $alarm_method}($alarm);
} catch (Horde_Alarm_Exception $e) {
- Horde::logMessage($e, 'ERR');
+ if ($this->_logger) {
+ $this->_logger->log($e, 'ERR');
+ }
}
}
}
<min>1.5.0</min>
</pearinstaller>
<package>
+ <name>Core</name>
+ <channel>pear.horde.org</channel>
+ </package>
+ <package>
<name>Date</name>
<channel>pear.horde.org</channel>
</package>
+ <package>
+ <name>Exception</name>
+ <channel>pear.horde.org</channel>
+ </package>
</required>
+ <optional>
+ <package>
+ <name>Log</name>
+ <channel>pear.horde.org</channel>
+ </package>
+ </optional>
</dependencies>
<phprelease>
<filelist>
--- /dev/null
+<?php
+class Horde_Core_Binder_Alarm implements Horde_Injector_Binder
+{
+ public function create(Horde_Injector $injector)
+ {
+ if (empty($GLOBALS['conf']['alarms']['driver'])) {
+ $driver = null;
+ } else {
+ $driver = $GLOBALS['conf']['alarms']['driver'];
+ $params = Horde::getDriverConfig('alarms', $driver);
+ }
+
+ $params['logger'] = $injector->getInstance('Horde_Log_Logger');
+
+ return Horde_Alarm::factory($driver, $params);
+ }
+
+ public function equals(Horde_Injector_Binder $binder)
+ {
+ return false;
+ }
+}
$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;
/* 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(),
</dir> <!-- /lib/Horde/Core/Autoloader/Callback -->
</dir> <!-- /lib/Horde/Core/Autoloader -->
<dir name="Binder">
+ <file name="Alarm.php" role="php" />
<file name="Cache.php" role="php" />
<file name="Db.php" role="php" />
<file name="Dns.php" role="php" />
<install name="lib/Horde/Config/Form.php" as="Horde/Config/Form.php" />
<install name="lib/Horde/Core/Autoloader/Callback/Auth.php" as="Horde/Core/Autoloader/Callback/Auth.php" />
<install name="lib/Horde/Core/Autoloader/Callback/Mime.php" as="Horde/Core/Autoloader/Callback/Mime.php" />
+ <install name="lib/Horde/Core/Binder/Alarm.php" as="Horde/Core/Binder/Alarm.php" />
<install name="lib/Horde/Core/Binder/Cache.php" as="Horde/Core/Binder/Cache.php" />
<install name="lib/Horde/Core/Binder/Db.php" as="Horde/Core/Binder/Db.php" />
<install name="lib/Horde/Core/Binder/Dns.php" as="Horde/Core/Binder/Dns.php" />
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'];
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'));
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');
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']);
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 {
}
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++;
}
/* 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();
}
}
- 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;
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();
$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++;
}
/* 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);
}
/* 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);
}
}
}
/* 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;