Overview

Packages

  • Auth
  • Core
  • Horde
    • Imsp
  • None
  • Notification

Classes

  • Horde
  • Horde_Config
  • Horde_Config_Form
  • Horde_Core_ActiveSync_Connector
  • Horde_Core_ActiveSync_Driver
  • Horde_Core_Ajax_Application
  • Horde_Core_Ajax_Imple
  • Horde_Core_Ajax_Imple_AutoCompleter
  • Horde_Core_Ajax_Imple_Geocoder_Geonames
  • Horde_Core_Ajax_Imple_SpellChecker
  • Horde_Core_Alarm_Handler_Notify
  • Horde_Core_Auth_Application
  • Horde_Core_Auth_Composite
  • Horde_Core_Auth_Ldap
  • Horde_Core_Auth_Msad
  • Horde_Core_Auth_Shibboleth
  • Horde_Core_Auth_Signup_Base
  • Horde_Core_Auth_Signup_Form
  • Horde_Core_Auth_Signup_Null
  • Horde_Core_Auth_Signup_Sql
  • Horde_Core_Auth_Signup_SqlObject
  • Horde_Core_Autoloader_Callback_Mime
  • Horde_Core_Autoloader_Callback_Nls
  • Horde_Core_Block
  • Horde_Core_Block_Collection
  • Horde_Core_Block_Layout
  • Horde_Core_Block_Layout_Manager
  • Horde_Core_Block_Layout_View
  • Horde_Core_Block_Upgrade
  • Horde_Core_Browser
  • Horde_Core_Bundle
  • Horde_Core_Cli
  • Horde_Core_Controller_NotFound
  • Horde_Core_Controller_RequestConfiguration
  • Horde_Core_Controller_RequestMapper
  • Horde_Core_Controller_SettingsFinder
  • Horde_Core_Db_Migration
  • Horde_Core_Factory_ActiveSyncBackend
  • Horde_Core_Factory_ActiveSyncServer
  • Horde_Core_Factory_ActiveSyncState
  • Horde_Core_Factory_Ajax
  • Horde_Core_Factory_Alarm
  • Horde_Core_Factory_Auth
  • Horde_Core_Factory_AuthSignup
  • Horde_Core_Factory_Base
  • Horde_Core_Factory_BlockCollection
  • Horde_Core_Factory_Browser
  • Horde_Core_Factory_Cache
  • Horde_Core_Factory_Crypt
  • Horde_Core_Factory_Data
  • Horde_Core_Factory_Db
  • Horde_Core_Factory_DbBase
  • Horde_Core_Factory_DbPear
  • Horde_Core_Factory_Dns
  • Horde_Core_Factory_Editor
  • Horde_Core_Factory_Facebook
  • Horde_Core_Factory_Group
  • Horde_Core_Factory_History
  • Horde_Core_Factory_HttpClient
  • Horde_Core_Factory_Identity
  • Horde_Core_Factory_Image
  • Horde_Core_Factory_Imple
  • Horde_Core_Factory_Imsp
  • Horde_Core_Factory_ImspAuth
  • Horde_Core_Factory_Injector
  • Horde_Core_Factory_KolabServer
  • Horde_Core_Factory_KolabSession
  • Horde_Core_Factory_KolabStorage
  • Horde_Core_Factory_Ldap
  • Horde_Core_Factory_Lock
  • Horde_Core_Factory_Logger
  • Horde_Core_Factory_LoginTasks
  • Horde_Core_Factory_Mail
  • Horde_Core_Factory_Mapper
  • Horde_Core_Factory_Matcher
  • Horde_Core_Factory_Memcache
  • Horde_Core_Factory_MimeViewer
  • Horde_Core_Factory_Notification
  • Horde_Core_Factory_Perms
  • Horde_Core_Factory_PermsCore
  • Horde_Core_Factory_Prefs
  • Horde_Core_Factory_Request
  • Horde_Core_Factory_Secret
  • Horde_Core_Factory_SessionHandler
  • Horde_Core_Factory_Share
  • Horde_Core_Factory_ShareBase
  • Horde_Core_Factory_Template
  • Horde_Core_Factory_TextFilter
  • Horde_Core_Factory_ThemesCache
  • Horde_Core_Factory_Token
  • Horde_Core_Factory_Tree
  • Horde_Core_Factory_Twitter
  • Horde_Core_Factory_UrlShortener
  • Horde_Core_Factory_Vfs
  • Horde_Core_Factory_View
  • Horde_Core_Factory_Weather
  • Horde_Core_Group_Ldap
  • Horde_Core_Log_Logger
  • Horde_Core_LoginTasks
  • Horde_Core_LoginTasks_Backend_Horde
  • Horde_Core_LoginTasks_SystemTask_Upgrade
  • Horde_Core_Mime_Viewer_Syntaxhighlighter
  • Horde_Core_Mime_Viewer_Vcard
  • Horde_Core_Notification_Event_Status
  • Horde_Core_Notification_Handler_Decorator_Hordelog
  • Horde_Core_Notification_Storage_Session
  • Horde_Core_Perms
  • Horde_Core_Perms_Ui
  • Horde_Core_Prefs_Cache_Session
  • Horde_Core_Prefs_Identity
  • Horde_Core_Prefs_Storage_Configuration
  • Horde_Core_Prefs_Storage_Hooks
  • Horde_Core_Prefs_Storage_Upgrade
  • Horde_Core_Prefs_Ui
  • Horde_Core_Prefs_Ui_Widgets
  • Horde_Core_Share_Driver
  • Horde_Core_Share_FactoryCallback
  • Horde_Core_Sidebar
  • Horde_Core_Text_Filter_Bbcode
  • Horde_Core_Text_Filter_Emails
  • Horde_Core_Text_Filter_Emoticons
  • Horde_Core_Text_Filter_Highlightquotes
  • Horde_Core_Translation
  • Horde_Core_Tree_Html
  • Horde_Core_Tree_Javascript
  • Horde_Core_Tree_Simplehtml
  • Horde_Core_Ui_FlagImage
  • Horde_Core_Ui_JsCalendar
  • Horde_Core_Ui_Language
  • Horde_Core_Ui_Layout
  • Horde_Core_Ui_ModalFormRenderer
  • Horde_Core_Ui_Pager
  • Horde_Core_Ui_Tabs
  • Horde_Core_Ui_TagCloud
  • Horde_Core_Ui_VarRenderer
  • Horde_Core_Ui_VarRenderer_Html
  • Horde_Core_Ui_VarRenderer_TablesetHtml
  • Horde_Core_Ui_Widget
  • Horde_ErrorHandler
  • Horde_Help
  • Horde_Menu
  • Horde_Registry
  • Horde_Registry_Api
  • Horde_Registry_Application
  • Horde_Registry_Caller
  • Horde_Registry_Nlsconfig
  • Horde_Script_Files
  • Horde_Session
  • Horde_Session_Null
  • Horde_Themes
  • Horde_Themes_Cache
  • Horde_Themes_Css
  • Horde_Themes_Element
  • Horde_Themes_Image
  • Horde_Themes_Sound

Exceptions

  • Horde_Exception_HookNotSet
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * A Horde_Injector:: based Horde_Alarm:: factory.
  4:  *
  5:  * PHP version 5
  6:  *
  7:  * @category Horde
  8:  * @package  Core
  9:  * @author   Michael J. Rubinsky <mrubinsk@horde.org>
 10:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 11:  * @link     http://pear.horde.org/index.php?package=Core
 12:  */
 13: 
 14: /**
 15:  * A Horde_Injector:: based Horde_Core_Ajax_Application:: factory.
 16:  *
 17:  * Copyright 2010-2012 Horde LLC (http://www.horde.org/)
 18:  *
 19:  * See the enclosed file COPYING for license information (LGPL). If you
 20:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
 21:  *
 22:  * @category Horde
 23:  * @package  Core
 24:  * @author   Michael J. Rubinsky <mrubinsk@horde.org>
 25:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 26:  * @link     http://pear.horde.org/index.php?package=Core
 27:  */
 28: class Horde_Core_Factory_Alarm extends Horde_Core_Factory_Base
 29: {
 30:     /**
 31:      * A Horde_Alarm instance.
 32:      *
 33:      * @var Horde_Alarm
 34:      */
 35:     protected $_alarm;
 36: 
 37:     /**
 38:      * Return a Horde_Alarm instance.
 39:      *
 40:      * @return Horde_Alarm
 41:      */
 42:     public function create()
 43:     {
 44:         if (isset($this->_alarm)) {
 45:             return $this->_alarm;
 46:         }
 47: 
 48:         $driver = empty($GLOBALS['conf']['alarms']['driver'])
 49:             ? 'Null'
 50:             : $GLOBALS['conf']['alarms']['driver'];
 51:         $params = Horde::getDriverConfig('alarms', $driver);
 52: 
 53:         if (strcasecmp($driver, 'Sql') === 0) {
 54:             $params['db'] = $this->_injector->getInstance('Horde_Db_Adapter');
 55:         }
 56: 
 57:         $params['logger'] = $this->_injector->getInstance('Horde_Log_Logger');
 58:         $params['loader'] = array($this, 'load');
 59: 
 60:         $class = 'Horde_Alarm_' . $driver;
 61:         $this->_alarm = new $class($params);
 62:         $this->_alarm->initialize();
 63:         $this->_alarm->gc();
 64: 
 65:         /* Add those handlers that need configuration and can't be auto-loaded
 66:          * through Horde_Alarms::handlers(). */
 67:         $this->_alarm->addHandler('notify', new Horde_Core_Alarm_Handler_Notify());
 68: 
 69:         $handler_params = array(
 70:             'js_notify' => array('Horde', 'addInlineScript'),
 71:             'icon' => (string)Horde_Themes::img('alerts/alarm.png')
 72:         );
 73:         $this->_alarm->addHandler('desktop', new Horde_Alarm_Handler_Desktop($handler_params));
 74: 
 75:         $handler_params = array(
 76:             'identity' => $this->_injector->getInstance('Horde_Core_Factory_Identity'),
 77:             'mail' => $this->_injector->getInstance('Horde_Mail'),
 78:         );
 79:         $this->_alarm->addHandler('mail', new Horde_Alarm_Handler_Mail($handler_params));
 80: 
 81:         return $this->_alarm;
 82:     }
 83: 
 84:     /**
 85:      * Retrieves active alarms from all applications and stores them in the
 86:      * backend.
 87:      *
 88:      * The applications will only be called once in the configured time span,
 89:      * by default 5 minutes.
 90:      *
 91:      * @param string $user      Retrieve alarms for this user, or for all users
 92:      *                          if null.
 93:      * @param boolean $preload  Preload alarms that go off within the next
 94:      *                          ttl time span?
 95:      */
 96:     public function load($user = null, $preload = true)
 97:     {
 98:         global $session;
 99: 
100:         $driver = empty($GLOBALS['conf']['alarms']['driver'])
101:             ? 'Null'
102:             : $GLOBALS['conf']['alarms']['driver'];
103:         $params = Horde::getDriverConfig('alarms', $driver);
104: 
105:         if (!isset($params['ttl'])) {
106:             $params['ttl'] = 0;
107:         }
108: 
109:         if ($session->exists('horde', 'alarm_loaded') &&
110:             (time() - $session->get('horde', 'alarm_loaded')) < $params['ttl']) {
111:             return;
112:         }
113: 
114:         foreach ($GLOBALS['registry']->listApps(null, false, Horde_Perms::READ) as $app) {
115:             /* Preload alarms that happen in the next ttl seconds. */
116:             if ($preload) {
117:                 try {
118:                     $alarms = $GLOBALS['registry']->callAppMethod($app, 'listAlarms', array('args' => array(time() + $params['ttl'], $user), 'noperms' => true));
119:                 } catch (Horde_Exception $e) {
120:                     continue;
121:                 }
122:             } else {
123:                 $alarms = array();
124:             }
125: 
126:             /* Load current alarms if no preloading requested or if this
127:              * is the first call in this session. */
128:             if (!$preload || !$session->get('horde', 'alarm_loaded')) {
129:                 try {
130:                     $app_alarms = $GLOBALS['registry']->callAppMethod($app, 'listAlarms', array('args' => array(time(), $user), 'noperms' => true));
131:                 } catch (Horde_Exception $e) {
132:                     Horde::logMessage($e);
133:                     $app_alarms = array();
134:                 }
135:                 $alarms = array_merge($alarms, $app_alarms);
136:             }
137: 
138:             foreach ($alarms as $alarm) {
139:                 $this->_alarm->set($alarm, true);
140:             }
141:         }
142: 
143:         $session->set('horde', 'alarm_loaded', time());
144:     }
145: 
146: }
147: 
API documentation generated by ApiGen