/**
* Return a Horde_Alarm instance.
*
* @return Horde_Alarm
* @throws Horde_Exception
*/
public function create()
{
global $conf;
if (isset($this->_alarm)) {
return $this->_alarm;
}
$driver = empty($conf['alarms']['driver']) ? 'null' : $conf['alarms']['driver'];
$params = Horde::getDriverConfig('alarms', $driver);
switch (Horde_String::lower($driver)) {
case 'sql':
$params['db'] = $this->_injector->getInstance('Horde_Core_Factory_Db')->create('horde', 'alarms');
break;
}
$params['logger'] = $this->_injector->getInstance('Horde_Log_Logger');
$params['loader'] = array($this, 'load');
$this->_ttl = isset($params['ttl']) ? $params['ttl'] : 300;
$class = $this->_getDriverName($driver, 'Horde_Alarm');
$this->_alarm = new $class($params);
$this->_alarm->initialize();
$this->_alarm->gc();
/* Add those handlers that need configuration and can't be auto-loaded
* through Horde_Alarms::handlers(). */
$this->_alarm->addHandler('notify', new Horde_Core_Alarm_Handler_Notify());
$this->_alarm->addHandler('desktop', new Horde_Core_Alarm_Handler_Desktop(array('icon' => new Horde_Core_Alarm_Handler_Desktop_Icon('alerts/alarm.png'), 'js_notify' => array($this->_injector->getInstance('Horde_PageOutput'), 'addInlineScript'))));
$this->_alarm->addHandler('mail', new Horde_Alarm_Handler_Mail(array('identity' => $this->_injector->getInstance('Horde_Core_Factory_Identity'), 'mail' => $this->_injector->getInstance('Horde_Mail'))));
return $this->_alarm;
}