188 Zeilen
4,4 KiB
PHP
188 Zeilen
4,4 KiB
PHP
<?php
|
|
/**
|
|
* This file is part of MySQLDumper released under the GNU/GPL 2 license
|
|
* http://www.mysqldumper.net
|
|
*
|
|
* @package MySQLDumper
|
|
* @subpackage File
|
|
* @version SVN: $rev: 1207 $
|
|
* @author $Author$
|
|
*/
|
|
|
|
/**
|
|
* Task Manager Class (Singleton)
|
|
*
|
|
* Class handles task lists
|
|
*
|
|
* @package MySQLDumper
|
|
* @subpackage TaskManager
|
|
*/
|
|
class Msd_TaskManager
|
|
{
|
|
/**
|
|
* Define task types.
|
|
* The integer value defines the ordering in wich tasks are executed.
|
|
* @var int
|
|
*/
|
|
const GET_CREATE_TABLE = 100;
|
|
const BACKUP_TABLE_DATA = 200;
|
|
const GET_ALTER_TABLE_ADD_KEYS = 300;
|
|
|
|
/**
|
|
* Instance
|
|
*
|
|
* @var Msd_Configuration
|
|
*/
|
|
private static $_instance = NULL;
|
|
|
|
/**
|
|
* Task Namespace
|
|
* @var Zend_Session_Namespace
|
|
*/
|
|
private $_session;
|
|
|
|
private $_tasks = array();
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* Get task list from session or init an empty list.
|
|
*
|
|
* @param string $taskType Task type to get or create.
|
|
* Defaults to "backupTasks".
|
|
* @param boolean Whether to create a new task list and delete all entries
|
|
* or to get it from the session
|
|
*
|
|
* @return void
|
|
*/
|
|
private function __construct($taskType, $clear = false)
|
|
{
|
|
$this->_session = new Zend_Session_Namespace($taskType, true);
|
|
if (isset($this->_session->tasks)) {
|
|
$this->_tasks = $this->_session->tasks;
|
|
}
|
|
if ($clear === true) {
|
|
$this->clearTasks();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns the task manager instance
|
|
*
|
|
* @param string $configname The name of the configuration file to load.
|
|
* If not set we will load the config from
|
|
* session if present.
|
|
* @param boolean $forceLoading If set the config will be read from file.
|
|
*
|
|
* @return Msd_Configuration
|
|
*/
|
|
public static function getInstance($taskType = 'backupTasks',
|
|
$clear = false)
|
|
{
|
|
if (null == self::$_instance) {
|
|
self::$_instance = new self($taskType, $clear);
|
|
}
|
|
return self::$_instance;
|
|
}
|
|
|
|
/**
|
|
* Add a task
|
|
*
|
|
* @param string $type Type of tasks
|
|
* @param array $options Option array
|
|
*
|
|
* @return void
|
|
*/
|
|
public function addTask($type, $options = array())
|
|
{
|
|
$tasks = $this->_tasks;
|
|
if (empty($tasks[$type])) {
|
|
$tasks[$type] = array();
|
|
}
|
|
$tasks[$type][] = $options;
|
|
$this->_tasks = $tasks;
|
|
$this->_saveTasksToSession();
|
|
}
|
|
|
|
/**
|
|
* Get tasks of given type
|
|
*
|
|
* Returns false if type is not present in task list.
|
|
*
|
|
* @param string $type
|
|
*
|
|
* @return array|false
|
|
*/
|
|
public function getTasks($type = '')
|
|
{
|
|
if ($type > '') {
|
|
if (!isset($this->_tasks[$type])) {
|
|
return false;
|
|
}
|
|
return $this->_tasks[$type];
|
|
}
|
|
return $this->_tasks;
|
|
}
|
|
|
|
/**
|
|
* Reset tasks array
|
|
*
|
|
* @return void
|
|
*/
|
|
public function clearTasks()
|
|
{
|
|
$this->_tasks = array();
|
|
$this->_saveTasksToSession();
|
|
}
|
|
|
|
/**
|
|
* Remove the first task of the given type
|
|
*
|
|
* @param string $type
|
|
*
|
|
* @return void
|
|
*/
|
|
public function removeActualTask($type)
|
|
{
|
|
$tasks = $this->getTasks($type);
|
|
print_r($tasks);
|
|
if ($tasks === false) {
|
|
return;
|
|
}
|
|
if (empty($tasks)) {
|
|
// no task of that type left - remove type
|
|
unset($this->_tasks[$type]);
|
|
}
|
|
unset($tasks[0]);
|
|
//rebuild index
|
|
sort($tasks);
|
|
$this->_tasks[$type] = $tasks;
|
|
$this->_saveTasksToSession();
|
|
}
|
|
|
|
/**
|
|
* Return the first task of given type or false if there is none.
|
|
*
|
|
* @param $type The type of the task to get.
|
|
*
|
|
* @return array|false
|
|
*/
|
|
public function getActualTask($type)
|
|
{
|
|
$tasks = $this->getTasks($type);
|
|
if (isset($tasks[0])) {
|
|
return $tasks[0];
|
|
};
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Save task list to session
|
|
*
|
|
* @return void
|
|
*/
|
|
private function _saveTasksToSession()
|
|
{
|
|
$this->_session->tasks = $this->_tasks;
|
|
}
|
|
}
|