use new method resolveTask()

This commit is contained in:
Uwe Steinmann 2020-06-28 13:59:54 +02:00
parent af9dc81ba4
commit b44a368d6d
5 changed files with 43 additions and 32 deletions

View File

@ -28,34 +28,34 @@ class SeedDMS_Controller_Cron extends SeedDMS_Controller_Common {
$mode = 'run'; //$this->params['mode'];
$db = $dms->getDb();
$scheduler = new SeedDMS_Scheduler($db);
$tasks = $scheduler->getTasks();
$scheduler = new SeedDMS_Scheduler($db);
$tasks = $scheduler->getTasks();
foreach($tasks as $task) {
if(isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()]) && is_object($taskobj = $GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()])) {
switch($mode) {
case "run":
if(method_exists($taskobj, 'execute')) {
if(!$task->getDisabled() && $task->isDue()) {
if($user = $dms->getUserByLogin('cli_scheduler')) {
if($taskobj->execute($task, $dms, $user, $settings)) {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." successful.");
$task->updateLastNextRun();
} else {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." failed, task has been disabled.", PEAR_LOG_ERR);
$task->setDisabled(1);
}
} else {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." failed because of missing user 'cli_scheduler'. Task has been disabled.", PEAR_LOG_ERR);
$task->setDisabled(1);
foreach($tasks as $task) {
if(isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()]) && is_object($taskobj = resolveTask($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()]))) {
switch($mode) {
case "run":
if(method_exists($taskobj, 'execute')) {
if(!$task->getDisabled() && $task->isDue()) {
if($user = $dms->getUserByLogin('cli_scheduler')) {
if($taskobj->execute($task)) {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." successful.");
$task->updateLastNextRun();
} else {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." failed, task has been disabled.", PEAR_LOG_ERR);
$task->setDisabled(1);
}
} else {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." failed because of missing user 'cli_scheduler'. Task has been disabled.", PEAR_LOG_ERR);
$task->setDisabled(1);
}
}
}
break;
}
}
break;
}
}
}
return true;
} /* }}} */
}

View File

@ -37,14 +37,14 @@ class SeedDMS_SchedulerTaskBase {
var $logger;
public function ____construct($dms, $user, $settings, $logger) { /* {{{ */
public function __construct($dms=null, $user=null, $settings=null, $logger=null) { /* {{{ */
$this->dms = $dms;
$this->user = $user;
$this->settings = $settings;
$this->logger = $logger;
} /* }}} */
public function execute($task, $dms, $user, $settings) { /* {{{ */
public function execute($task) { /* {{{ */
return true;
} /* }}} */

View File

@ -18,9 +18,13 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */
* @param $dms dms
* @return boolean true if task was executed succesfully, otherwise false
*/
public function execute($task, $dms, $user, $settings) {
public function execute($task) {
$dms = $this->dms;
$taskparams = $task->getParameter();
$dms->getDocumentsExpired(intval($taskparams['days']));
$docs = $dms->getDocumentsExpired(intval($taskparams['days']));
foreach($docs as $doc) {
echo $doc->getName()."\n";
}
return true;
}
@ -39,4 +43,4 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */
}
} /* }}} */
$GLOBALS['SEEDDMS_SCHEDULER']['tasks']['core']['expireddocs'] = new SeedDMS_ExpiredDocumentsTask;
$GLOBALS['SEEDDMS_SCHEDULER']['tasks']['core']['expireddocs'] = 'SeedDMS_ExpiredDocumentsTask';

View File

@ -68,7 +68,7 @@ $scheduler = new SeedDMS_Scheduler($db);
$tasks = $scheduler->getTasks();
foreach($tasks as $task) {
if(isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()]) && is_object($taskobj = $GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()])) {
if(isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()]) && is_object($taskobj = resolveTask($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()]))) {
switch($mode) {
case "run":
case "dryrun":
@ -76,7 +76,7 @@ foreach($tasks as $task) {
if(!$task->getDisabled() && $task->isDue()) {
if($user = $dms->getUserByLogin('cli_scheduler')) {
if($mode == 'run') {
if($taskobj->execute($task, $dms, $user, $settings)) {
if($taskobj->execute($task)) {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." successful.");
$task->updateLastNextRun();
} else {

View File

@ -99,8 +99,7 @@ $(document).ready( function() {
$user = $this->params['user'];
$extname = $this->params['extname'];
$taskname = $this->params['taskname'];
if($extname && $taskname) {
$taskobj = $GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$extname][$taskname];
if($extname && $taskname && is_object($taskobj = resolveTask($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$extname][$taskname]))) {
if(method_exists($taskobj, 'getAdditionalParams'))
$additionalparams = $taskobj->getAdditionalParams();
else
@ -204,6 +203,11 @@ $(document).ready( function() {
}
$taskobj = $GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()];
$taskobj = resolveTask($taskobj);
if(!is_object($taskobj)) {
$this->errorMsg(getMLText('task_class_not_callable'));
return;
}
?>
<form action="../op/op.SchedulerTaskMgr.php" method="post" class="form-horizontal">
<?= createHiddenFieldWithKey('edittask') ?>
@ -324,7 +328,7 @@ $(document).ready( function() {
print "<th></th>\n";
print "</tr></thead><tbody>\n";
foreach($tasks as $task) {
if(!isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()]))
if(!isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()]) || !is_object(resolveTask($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()])))
$class = 'error';
else
$class = 'success';
@ -387,6 +391,9 @@ $(document).ready( function() {
$errmsgs = array();
foreach($GLOBALS['SEEDDMS_SCHEDULER']['tasks'] as $extname=>$tasks) {
foreach($tasks as $taskname=>$task) {
$task = resolveTask($task);
if(!is_object($task))
continue;
echo "<tr>";
echo "<td>";
echo $extname."::".$taskname;