. */ /** * Doctrine_Task * * Abstract class used for writing Doctrine Tasks * * @package Doctrine * @subpackage Task * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.phpdoctrine.com * @since 1.0 * @version $Revision: 2761 $ * @author Jonathan H. Wage */ abstract class Doctrine_Task { public $taskName = null, $description = null, $arguments = array(), $requiredArguments = array(), $optionalArguments = array(); /** * __construct * * Since this is an abstract classes that extend this must follow a patter of Doctrine_Task_{TASK_NAME} * This is what determines the task name for executing it. * * @return void */ public function __construct() { $this->taskName = str_replace('_', '-', Doctrine::tableize(str_replace('Doctrine_Task_', '', get_class($this)))); } /** * execute * * Override with each task class * * @return void * @abstract */ abstract function execute(); /** * validate * * Validates that all required fields are present * * @return bool true */ public function validate() { $requiredArguments = $this->getRequiredArguments(); foreach ($requiredArguments as $arg) { if (!isset($this->arguments[$arg])) { throw new Doctrine_Task_Exception('Required arguments missing. The follow arguments are required: ' . implode(', ', $requiredArguments)); } } return true; } /** * addArgument * * @param string $name * @param string $value * @return void */ public function addArgument($name, $value) { $this->arguments[$name] = $value; } /** * getArgument * * @param string $name * @param string $default * @return mixed */ public function getArgument($name, $default = null) { if (isset($this->arguments[$name]) && $this->arguments[$name] !== null) { return $this->arguments[$name]; } else { return $default; } } /** * getArguments * * @return array $this->arguments */ public function getArguments() { return $this->arguments; } /** * setArguments * * @param array $args * @return void */ public function setArguments(array $args) { $this->arguments = $args; } /** * getTaskName * * @return string $taskName */ public function getTaskName() { return $this->taskName; } /** * getDescription * * @return string $description */ public function getDescription() { return $this->description; } /** * getRequiredArguments * * @return array $requiredArguments */ public function getRequiredArguments() { return array_keys($this->requiredArguments); } /** * getOptionalArguments * * @return array $optionalArguments */ public function getOptionalArguments() { return array_keys($this->optionalArguments); } /** * getRequiredArgumentsDescriptions * * @return array $requiredArgumentsDescriptions */ public function getRequiredArgumentsDescriptions() { return $this->requiredArguments; } /** * getOptionalArgumentsDescriptions * * @return array $optionalArgumentsDescriptions */ public function getOptionalArgumentsDescriptions() { return $this->optionalArguments; } }