/** * 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; }