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 (BSD). If you
8: * did not receive this file, see http://www.horde.org/licenses/bsdl.php.
9: *
10: * @author Michael Slusarz <slusarz@horde.org>
11: * @category Horde
12: * @license http://www.horde.org/licenses/bsdl.php BSD
13: * @package Hermes
14: */
15: class Hermes_LoginTasks_SystemTask_Upgrade extends Horde_Core_LoginTasks_SystemTask_Upgrade
16: {
17: /**
18: */
19: protected $_app = 'hermes';
20:
21: /**
22: */
23: protected $_versions = array(
24: '2.0'
25: );
26:
27: /**
28: */
29: protected function _upgrade($version)
30: {
31: switch ($version) {
32: case '2.0':
33: $this->_upgradeTimersStorage();
34: $this->_upgradePausedTimers();
35: }
36: }
37:
38: protected function _upgradeTimersStorage()
39: {
40: /* Upgrade to the new preferences storage format. */
41: $upgrade_prefs = array(
42: 'running_timers'
43: );
44:
45: $GLOBALS['injector']->getInstance('Horde_Core_Prefs_Storage_Upgrade')->upgradeSerialized($GLOBALS['prefs'], $upgrade_prefs);
46: }
47:
48: /**
49: * Add new fields to support pausing timers to any timers that are currently
50: * running.
51: */
52: protected function _upgradePausedTimers()
53: {
54: $timers = @unserialize($GLOBALS['prefs']->getValue('running_timers'));
55: if (!is_array($timers)) {
56: $timers = array();
57: };
58:
59: foreach ($timers as &$timer) {
60: $timer['paused'] = false;
61: $timer['elapsed'] = 0;
62: }
63:
64: $GLOBALS['prefs']->setValue('running_timers', serialize($timers));
65: }
66:
67: }
68: