mirror of
				https://git.code.sf.net/p/seeddms/code
				synced 2025-10-31 05:11:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			279 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			279 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Implementation of an SchedulerTask.
 | |
|  *
 | |
|  * SeedDMS can be extended by extensions. Extension usually implement
 | |
|  * hook.
 | |
|  *
 | |
|  * @category   DMS
 | |
|  * @package    SeedDMS
 | |
|  * @license    GPL 2
 | |
|  * @version    @version@
 | |
|  * @author     Uwe Steinmann <uwe@steinmann.cx>
 | |
|  * @copyright  2018 Uwe Steinmann
 | |
|  * @version    Release: @package_version@
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Class to represent a SchedulerTask
 | |
|  *
 | |
|  * This class provides some very basic methods to manage extensions.
 | |
|  *
 | |
|  * @category   DMS
 | |
|  * @package    SeedDMS
 | |
|  * @author     Markus Westphal, Malcolm Cowe, Uwe Steinmann <uwe@steinmann.cx>
 | |
|  * @copyright  2011 Uwe Steinmann
 | |
|  * @version    Release: @package_version@
 | |
|  */
 | |
| class SeedDMS_SchedulerTask {
 | |
| 	/**
 | |
| 	 * Instanz of database
 | |
| 	 */
 | |
| 	protected $db;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var integer unique id of task
 | |
| 	 */
 | |
| 	protected $_id;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var string name of task
 | |
| 	 */
 | |
| 	protected $_name;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var string description of task
 | |
| 	 */
 | |
| 	protected $_description;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var string extension of task
 | |
| 	 */
 | |
| 	protected $_extension;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var string task of task
 | |
| 	 */
 | |
| 	protected $_task;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var string frequency of task
 | |
| 	 */
 | |
| 	protected $_frequency;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var integer set if disabled
 | |
| 	 */
 | |
| 	protected $_disabled;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var integer last run
 | |
| 	 */
 | |
| 	protected $_lastrun;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var integer next run
 | |
| 	 */
 | |
| 	protected $_nextrun;
 | |
| 
 | |
| 	public static function getInstance($id, $db) { /* {{{ */
 | |
| 		$queryStr = "SELECT * FROM `tblSchedulerTask` WHERE `id` = " . (int) $id;
 | |
| 		$resArr = $db->getResultArray($queryStr);
 | |
| 		if (is_bool($resArr) && $resArr == false)
 | |
| 			return false;
 | |
| 		if (count($resArr) != 1)
 | |
| 			return null;
 | |
| 		$row = $resArr[0];
 | |
| 
 | |
| 		$task = new self($row["id"], $row['name'], $row["description"], $row["extension"], $row["task"], $row["frequency"], $row['disabled'], json_decode($row['params'], true), $row["nextrun"], $row["lastrun"]);
 | |
| 		$task->setDB($db);
 | |
| 
 | |
| 		return $task;
 | |
| 	} /* }}} */
 | |
| 
 | |
| 	public static function getInstances($db) { /* {{{ */
 | |
| 		$queryStr = "SELECT * FROM `tblSchedulerTask`";
 | |
| 		$resArr = $db->getResultArray($queryStr);
 | |
| 		if (is_bool($resArr) && $resArr == false)
 | |
| 			return false;
 | |
| 		if (count($resArr) == 0)
 | |
| 			return array();
 | |
| 
 | |
| 		$tasks = array();
 | |
| 		foreach($resArr as $row) {
 | |
| 			$task = new self($row["id"], $row['name'], $row["description"], $row["extension"], $row["task"], $row["frequency"], $row['disabled'], json_decode($row['params'], true), $row["nextrun"], $row["lastrun"]);
 | |
| 			$task->setDB($db);
 | |
| 			$tasks[] = $task;
 | |
| 		}
 | |
| 
 | |
| 		return $tasks;
 | |
| 	} /* }}} */
 | |
| 
 | |
| 	public static function getInstancesByExtension($extname, $taskname, $db) { /* {{{ */
 | |
| 		$queryStr = "SELECT * FROM `tblSchedulerTask` WHERE `extension` = '".$extname."' AND `task` = '".$taskname."'";
 | |
| 		$resArr = $db->getResultArray($queryStr);
 | |
| 		if (is_bool($resArr) && $resArr == false)
 | |
| 			return false;
 | |
| 		if (count($resArr) == 0)
 | |
| 			return array();
 | |
| 
 | |
| 		$tasks = array();
 | |
| 		foreach($resArr as $row) {
 | |
| 			$task = new self($row["id"], $row['name'], $row["description"], $row["extension"], $row["task"], $row["frequency"], $row['disabled'], json_decode($row['params'], true), $row["nextrun"], $row["lastrun"]);
 | |
| 			$task->setDB($db);
 | |
| 			$tasks[] = $task;
 | |
| 		}
 | |
| 
 | |
| 		return $tasks;
 | |
| 	} /* }}} */
 | |
| 
 | |
| 	function __construct($id, $name, $description, $extension, $task, $frequency, $disabled, $params, $nextrun, $lastrun) {
 | |
| 		$this->_id = $id;
 | |
| 		$this->_name = $name;
 | |
| 		$this->_description = $description;
 | |
| 		$this->_extension = $extension;
 | |
| 		$this->_task = $task;
 | |
| 		$this->_frequency = $frequency;
 | |
| 		$this->_disabled = $disabled;
 | |
| 		$this->_params = $params;
 | |
| 		$this->_nextrun = $nextrun;
 | |
| 		$this->_lastrun = $lastrun;
 | |
| 	}
 | |
| 
 | |
| 	public function setDB($db) {
 | |
| 		$this->db = $db;
 | |
| 	}
 | |
| 
 | |
| 	public function getID() {
 | |
| 		return $this->_id;
 | |
| 	}
 | |
| 
 | |
| 	public function getName() {
 | |
| 		return $this->_name;
 | |
| 	}
 | |
| 
 | |
| 	public function setName($newName) { /* {{{ */
 | |
| 		$db = $this->db;
 | |
| 
 | |
| 		$queryStr = "UPDATE `tblSchedulerTask` SET `name` =".$db->qstr($newName)." WHERE `id` = " . $this->_id;
 | |
| 		$res = $db->getResult($queryStr);
 | |
| 		if (!$res)
 | |
| 			return false;
 | |
| 
 | |
| 		$this->_name = $newName;
 | |
| 		return true;
 | |
| 	} /* }}} */
 | |
| 
 | |
| 	public function getDescription() {
 | |
| 		return $this->_description;
 | |
| 	}
 | |
| 
 | |
| 	public function setDescription($newDescripion) { /* {{{ */
 | |
| 		$db = $this->db;
 | |
| 
 | |
| 		$queryStr = "UPDATE `tblSchedulerTask` SET `description` =".$db->qstr($newDescripion)." WHERE `id` = " . $this->_id;
 | |
| 		$res = $db->getResult($queryStr);
 | |
| 		if (!$res)
 | |
| 			return false;
 | |
| 
 | |
| 		$this->_description = $newDescripion;
 | |
| 		return true;
 | |
| 	} /* }}} */
 | |
| 
 | |
| 	public function getExtension() {
 | |
| 		return $this->_extension;
 | |
| 	}
 | |
| 
 | |
| 	public function getTask() {
 | |
| 		return $this->_task;
 | |
| 	}
 | |
| 
 | |
| 	public function getFrequency() {
 | |
| 		return $this->_frequency;
 | |
| 	}
 | |
| 
 | |
| 	public function setFrequency($newFrequency) { /* {{{ */
 | |
| 		$db = $this->db;
 | |
| 
 | |
| 		try {
 | |
| 			$cron = Cron\CronExpression::factory($newFrequency);
 | |
| 		} catch (Exception $e) {
 | |
| 			return false;
 | |
| 		}
 | |
| 		$nextrun = $cron->getNextRunDate()->format('Y-m-d H:i:s');
 | |
| 
 | |
| 		$queryStr = "UPDATE `tblSchedulerTask` SET `frequency` =".$db->qstr($newFrequency).", `nextrun` = '".$nextrun."' WHERE `id` = " . $this->_id;
 | |
| 		$res = $db->getResult($queryStr);
 | |
| 		if (!$res)
 | |
| 			return false;
 | |
| 
 | |
| 		$this->_frequency = $newFrequency;
 | |
| 		$this->_nextrun = $nextrun;
 | |
| 		return true;
 | |
| 	} /* }}} */
 | |
| 
 | |
| 	public function getNextRun() {
 | |
| 		return $this->_nextrun;
 | |
| 	}
 | |
| 
 | |
| 	public function getLastRun() {
 | |
| 		return $this->_lastrun;
 | |
| 	}
 | |
| 
 | |
| 	public function getDisabled() {
 | |
| 		return $this->_disabled;
 | |
| 	}
 | |
| 
 | |
| 	public function setDisabled($newDisabled) { /* {{{ */
 | |
| 		$db = $this->db;
 | |
| 
 | |
| 		$queryStr = "UPDATE `tblSchedulerTask` SET `disabled` =".intval($newDisabled)." WHERE `id` = " . $this->_id;
 | |
| 		$res = $db->getResult($queryStr);
 | |
| 		if (!$res)
 | |
| 			return false;
 | |
| 
 | |
| 		$this->_disabled = $newDisable;
 | |
| 		return true;
 | |
| 	} /* }}} */
 | |
| 
 | |
| 	public function setParameter($newParams) { /* {{{ */
 | |
| 		$db = $this->db;
 | |
| 
 | |
| 		$queryStr = "UPDATE `tblSchedulerTask` SET `parameter` =".json_encode($newParams)." WHERE `id` = " . $this->_id;
 | |
| 		$res = $db->getResult($queryStr);
 | |
| 		if (!$res)
 | |
| 			return false;
 | |
| 
 | |
| 		$this->_params = $newParams;
 | |
| 		return true;
 | |
| 	} /* }}} */
 | |
| 
 | |
| 	public function getParameter() {
 | |
| 		return $this->_params;
 | |
| 	}
 | |
| 
 | |
| 	public function isDue() {
 | |
| 		return $this->_nextrun < date('Y-m-d H:i:s');
 | |
| 	}
 | |
| 
 | |
| 	public function updateLastNextRun() {
 | |
| 		$db = $this->db;
 | |
| 
 | |
| 		$lastrun = date('Y-m-d H:i:s');
 | |
| 		try {
 | |
| 			$cron = Cron\CronExpression::factory($this->_frequency);
 | |
| 			$nextrun = $cron->getNextRunDate()->format('Y-m-d H:i:s');
 | |
| 		} catch (Exception $e) {
 | |
| 			$nextrun = null;
 | |
| 		}
 | |
| 
 | |
| 		$queryStr = "UPDATE `tblSchedulerTask` SET `lastrun`=".$db->qstr($lastrun).", `nextrun`=".($nextrun ? $db->qstr($nextrun) : "NULL")." WHERE `id` = " . $this->_id;
 | |
| 		$res = $db->getResult($queryStr);
 | |
| 		if (!$res)
 | |
| 			return false;
 | |
| 
 | |
| 		$this->_lastrun = $lastrun;
 | |
| 		$this->_nextrun = $nextrun;
 | |
| 	}
 | |
| }
 |