From b44a368d6dca4b08a059bc0298ae205c246f4ca9 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sun, 28 Jun 2020 13:59:54 +0200 Subject: [PATCH] use new method resolveTask() --- controllers/class.Cron.php | 44 +++++++++++----------- inc/inc.ClassSchedulerTaskBase.php | 4 +- inc/inc.Tasks.php | 10 +++-- utils/schedulercli.php | 4 +- views/bootstrap/class.SchedulerTaskMgr.php | 13 +++++-- 5 files changed, 43 insertions(+), 32 deletions(-) diff --git a/controllers/class.Cron.php b/controllers/class.Cron.php index 631d20253..2c9d62837 100644 --- a/controllers/class.Cron.php +++ b/controllers/class.Cron.php @@ -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; } /* }}} */ } diff --git a/inc/inc.ClassSchedulerTaskBase.php b/inc/inc.ClassSchedulerTaskBase.php index 726963c04..a596348d9 100644 --- a/inc/inc.ClassSchedulerTaskBase.php +++ b/inc/inc.ClassSchedulerTaskBase.php @@ -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; } /* }}} */ diff --git a/inc/inc.Tasks.php b/inc/inc.Tasks.php index 0311c227a..34e94537e 100644 --- a/inc/inc.Tasks.php +++ b/inc/inc.Tasks.php @@ -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'; diff --git a/utils/schedulercli.php b/utils/schedulercli.php index 3b16e9461..07a1d44ff 100644 --- a/utils/schedulercli.php +++ b/utils/schedulercli.php @@ -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 { diff --git a/views/bootstrap/class.SchedulerTaskMgr.php b/views/bootstrap/class.SchedulerTaskMgr.php index 5f702d51f..da2fed19d 100644 --- a/views/bootstrap/class.SchedulerTaskMgr.php +++ b/views/bootstrap/class.SchedulerTaskMgr.php @@ -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; + } ?>
@@ -324,7 +328,7 @@ $(document).ready( function() { print "\n"; print "\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 ""; echo ""; echo $extname."::".$taskname;