Open Journal Systems  3.3.0
ScheduledTaskTool.inc.php
1 <?php
2 
18 define('TASKS_REGISTRY_FILE', 'registry/scheduledTasks.xml');
19 
20 import('lib.pkp.classes.scheduledTask.ScheduledTask');
21 import('lib.pkp.classes.scheduledTask.ScheduledTaskHelper');
22 import('lib.pkp.classes.scheduledTask.ScheduledTaskDAO');
23 
26  var $file;
27 
29  var $taskDao;
30 
37  function __construct($argv = array()) {
38  parent::__construct($argv);
39 
40  if (isset($this->argv[0])) {
41  $this->file = $this->argv[0];
42  } else {
43  $this->file = TASKS_REGISTRY_FILE;
44  }
45 
46  if (!file_exists($this->file) || !is_readable($this->file)) {
47  printf("Tasks file \"%s\" does not exist or is not readable!\n", $this->file);
48  exit(1);
49  }
50 
51  $this->taskDao = DAORegistry::getDAO('ScheduledTaskDAO');
52  }
53 
57  function usage() {
58  echo "Script to run a set of scheduled tasks\n"
59  . "Usage: {$this->scriptName} [tasks_file]\n";
60  }
61 
65  function execute() {
66  $this->parseTasks($this->file);
67  }
68 
73  function parseTasks($file) {
74  $xmlParser = new XMLParser();
75  $tree = $xmlParser->parse($file);
76 
77  if (!$tree) {
78  printf("Unable to parse file \"%s\"!\n", $file);
79  exit(1);
80  }
81 
82  foreach ($tree->getChildren() as $task) {
83  $className = $task->getAttribute('class');
84 
85  $frequency = $task->getChildByName('frequency');
86  if (isset($frequency)) {
87  $canExecute = ScheduledTaskHelper::checkFrequency($className, $frequency);
88  } else {
89  // Always execute if no frequency is specified
90  $canExecute = true;
91  }
92 
93  if ($canExecute) {
94  $this->executeTask($className, ScheduledTaskHelper::getTaskArgs($task));
95  }
96  }
97  }
98 
104  function executeTask($className, $args) {
105  // Load and execute the task
106  if (!is_object($task = instantiate($className, null, null, 'execute', $args))) {
107  fatalError('Cannot instantiate task class.');
108  }
109  $this->taskDao->updateLastRunTime($className);
110  $task->execute();
111  }
112 }
113 
114 
ScheduledTaskTool\executeTask
executeTask($className, $args)
Definition: ScheduledTaskTool.inc.php:110
instantiate
& instantiate($fullyQualifiedClassName, $expectedTypes=null, $expectedPackages=null, $expectedMethods=null, $constructorArg=null)
Definition: functions.inc.php:165
ScheduledTaskTool\parseTasks
parseTasks($file)
Definition: ScheduledTaskTool.inc.php:79
CommandLineTool
Initialization code for command-line scripts.
Definition: CliTool.inc.php:44
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ScheduledTaskTool\$file
$file
Definition: ScheduledTaskTool.inc.php:29
ScheduledTaskHelper\checkFrequency
static checkFrequency($className, $frequency)
Definition: ScheduledTaskHelper.inc.php:89
ScheduledTaskTool\__construct
__construct($argv=array())
Definition: ScheduledTaskTool.inc.php:43
ScheduledTaskTool\execute
execute()
Definition: ScheduledTaskTool.inc.php:71
XMLParser
Generic class for parsing an XML document into a data structure.
Definition: XMLParser.inc.php:28
ScheduledTaskTool\$taskDao
$taskDao
Definition: ScheduledTaskTool.inc.php:35
ScheduledTaskTool
CLI tool to execute a set of scheduled tasks.
Definition: ScheduledTaskTool.inc.php:24
fatalError
if(!function_exists('import')) fatalError($reason)
Definition: functions.inc.php:32
ScheduledTaskHelper\getTaskArgs
static getTaskArgs($task)
Definition: ScheduledTaskHelper.inc.php:70
CommandLineTool\$argv
$argv
Definition: CliTool.inc.php:53
ScheduledTaskTool\usage
usage()
Definition: ScheduledTaskTool.inc.php:63