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:  * Login system task for automated upgrade tasks.
  4:  *
  5:  * Copyright 2011-2012 Horde LLC (http://www.horde.org/)
  6:  *
  7:  * See the enclosed file COPYING for license information (LGPL). If you
  8:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  9:  *
 10:  * @author   Michael Slusarz <slusarz@horde.org>
 11:  * @category Horde
 12:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 13:  * @package  Core
 14:  */
 15: abstract class Horde_Core_LoginTasks_SystemTask_Upgrade extends Horde_LoginTasks_SystemTask
 16: {
 17:     /**
 18:      * The interval at which to run the task.
 19:      *
 20:      * @var integer
 21:      */
 22:     public $interval = Horde_LoginTasks::EVERY;
 23: 
 24:     /**
 25:      * The current application.
 26:      *
 27:      * @var string
 28:      */
 29:     protected $_app = 'horde';
 30: 
 31:     /**
 32:      * Do these upgrade tasks require authentication?
 33:      *
 34:      * @var boolean
 35:      */
 36:     protected $_auth = false;
 37: 
 38:     /**
 39:      * The list of versions to upgrade.
 40:      *
 41:      * @var array
 42:      */
 43:     protected $_toupgrade = array();
 44: 
 45:     /**
 46:      * The list of versions which upgrades will occur.
 47:      *
 48:      * @var array
 49:      */
 50:     protected $_versions = array();
 51: 
 52:     /**
 53:      * Constructor.
 54:      */
 55:     public function __construct()
 56:     {
 57:         usort($this->_versions, 'version_compare');
 58: 
 59:         if ($vers = $this->_pref('get')) {
 60:             foreach ($this->_versions as $val) {
 61:                 if (version_compare($vers, $val) === -1) {
 62:                     $this->_toupgrade[] = $val;
 63:                 }
 64:             }
 65:         } else {
 66:             $this->_toupgrade = $this->_versions;
 67:         }
 68: 
 69:         $this->active = !empty($this->_toupgrade);
 70:     }
 71: 
 72:     /**
 73:      * Perform upgrade tasks.
 74:      */
 75:     public function execute()
 76:     {
 77:         foreach ($this->_toupgrade as $val) {
 78:             $this->_upgrade($val);
 79:         }
 80: 
 81:         $this->_pref('set');
 82:     }
 83: 
 84:     /**
 85:      * Force re-run of all upgrade tasks.
 86:      */
 87:     public function forceUpgrade()
 88:     {
 89:         $this->active = true;
 90:         $this->_toupgrade = $this->_versions;
 91:         $this->execute();
 92:     }
 93: 
 94:     /**
 95:      * Perform upgrade tasks for a given version.
 96:      *
 97:      * For those running a git checkout, the system task for a given version
 98:      * will run continuously until that version is released. Code should
 99:      * be added to not convert already converted values.
100:      *
101:      * @param string $version  A version string.
102:      */
103:     abstract protected function _upgrade($version);
104: 
105:     /**
106:      */
107:     public function skip()
108:     {
109:         /* Skip task until we are authenticated. */
110:         return ($this->_auth &&
111:                 !$GLOBALS['registry']->isAuthenticated(array('app' => $this->_app)));
112:     }
113: 
114:     /**
115:      * Manage the upgrade preferences.
116:      *
117:      * @param string $action  Either 'get' or 'set'.
118:      *
119:      * @return string  The current version.
120:      */
121:     protected function _pref($action)
122:     {
123:         global $prefs, $registry;
124: 
125:         $key = $this->_app;
126:         if ($this->_auth) {
127:             $key .= '_auth';
128:         }
129: 
130:         $upgrade = @unserialize($prefs->getValue('upgrade_tasks'));
131: 
132:         switch ($action) {
133:         case 'get':
134:             $val = isset($upgrade[$key])
135:                 ? $upgrade[$key]
136:                 : null;
137:             break;
138: 
139:         case 'set':
140:             $val = $registry->getVersion($this->_app, true);
141:             $upgrade[$key] = $val;
142:             $prefs->setValue('upgrade_tasks', serialize($upgrade));
143:             break;
144:         }
145: 
146:         return $val;
147:     }
148: 
149: }
150: 
API documentation generated by ApiGen