2018-04-04 13:31:43 +00:00
< ? php
if ( isset ( $_SERVER [ 'SEEDDMS_HOME' ])) {
ini_set ( 'include_path' , $_SERVER [ 'SEEDDMS_HOME' ] . '/utils' . PATH_SEPARATOR . ini_get ( 'include_path' ));
$myincpath = $_SERVER [ 'SEEDDMS_HOME' ];
} else {
ini_set ( 'include_path' , dirname ( $argv [ 0 ]) . PATH_SEPARATOR . ini_get ( 'include_path' ));
$myincpath = dirname ( $argv [ 0 ]);
}
function usage () { /* {{{ */
echo " Usage: \n " ;
echo " seeddms-schedulercli [-h] [-v] [--config <file>] \n " ;
echo " \n " ;
echo " Description: \n " ;
echo " Check for scheduled tasks. \n " ;
echo " \n " ;
echo " Options: \n " ;
echo " -h, --help: print usage information and exit. \n " ;
echo " -v, --version: print version and exit. \n " ;
echo " --config: set alternative config file. \n " ;
echo " --mode: set mode of operation (run, check, list). \n " ;
} /* }}} */
$version = " 0.0.1 " ;
$shortoptions = " hvc " ;
$longoptions = array ( 'help' , 'version' , 'config:' , 'mode:' );
if ( false === ( $options = getopt ( $shortoptions , $longoptions ))) {
usage ();
exit ( 0 );
}
/* Print help and exit */
if ( isset ( $options [ 'h' ]) || isset ( $options [ 'help' ])) {
usage ();
exit ( 0 );
}
/* Print version and exit */
if ( isset ( $options [ 'v' ]) || isset ( $options [ 'verѕ ion' ])) {
echo $version . " \n " ;
exit ( 0 );
}
/* Set alternative config file */
if ( isset ( $options [ 'config' ])) {
define ( 'SEEDDMS_CONFIG_FILE' , $options [ 'config' ]);
}
$mode = 'list' ;
if ( isset ( $options [ 'mode' ])) {
if ( ! in_array ( $options [ 'mode' ], array ( 'run' , 'check' , 'list' ))) {
usage ();
exit ( 1 );
}
$mode = $options [ 'mode' ];
}
include ( $myincpath . " /inc/inc.Settings.php " );
2019-02-14 11:35:57 +00:00
include ( $myincpath . " /inc/inc.LogInit.php " );
2018-04-04 13:31:43 +00:00
include ( $myincpath . " /inc/inc.Init.php " );
2019-02-14 11:35:57 +00:00
include ( $myincpath . " /inc/inc.Language.php " );
2018-04-04 13:31:43 +00:00
include ( $myincpath . " /inc/inc.Extension.php " );
include ( $myincpath . " /inc/inc.DBInit.php " );
include ( $myincpath . " /inc/inc.Scheduler.php " );
$scheduler = new SeedDMS_Scheduler ( $db );
$tasks = $scheduler -> getTasks ();
foreach ( $tasks as $task ) {
2020-05-15 15:25:22 +00:00
if ( isset ( $GLOBALS [ 'SEEDDMS_SCHEDULER' ][ 'tasks' ][ $task -> getExtension ()]) && is_object ( $taskobj = $GLOBALS [ 'SEEDDMS_SCHEDULER' ][ 'tasks' ][ $task -> getExtension ()][ $task -> getTask ()])) {
2018-04-04 13:31:43 +00:00
switch ( $mode ) {
case " run " :
if ( method_exists ( $taskobj , 'execute' )) {
if ( ! $task -> getDisabled ()) {
2020-05-18 14:24:19 +00:00
if ( $user = $dms -> getUserByLogin ( 'cli_scheduler' )) {
if ( $taskobj -> execute ( $task , $dms , $user )) {
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 );
}
2018-04-04 13:31:43 +00:00
} else {
2020-05-18 14:24:19 +00:00
add_log_line ( " Execution of task " . $task -> getExtension () . " :: " . $task -> getTask () . " failed because of missing user 'cli_scheduler'. Task has been disabled. " , PEAR_LOG_ERR );
2018-04-04 13:31:43 +00:00
$task -> setDisabled ( 1 );
}
}
}
break ;
case " check " :
echo " Checking " . $task -> getExtension () . " :: " . $task -> getTask () . " : \n " ;
if ( ! method_exists ( $taskobj , 'execute' )) {
echo " Missing method execute() \n " ;
}
if ( get_parent_class ( $taskobj ) != 'SeedDMS_SchedulerTaskBase' ) {
echo " wrong parent class \n " ;
}
break ;
case " list " :
if ( ! $task -> getDisabled ()) {
if ( $task -> isDue ())
echo " * " ;
else
echo " " ;
} else {
echo " - " ;
}
echo " " . $task -> getExtension () . " :: " . $task -> getTask () . " " ;
echo " " . $task -> getNextRun ();
2018-07-12 11:56:22 +00:00
echo " " . $task -> getFrequency ();
2018-04-04 13:31:43 +00:00
echo " \n " ;
2018-07-12 11:56:22 +00:00
if ( $params = $task -> getParameter ()) {
foreach ( $params as $key => $value ) {
echo " " . $key . " : " . $value . " \n " ;
}
}
2018-04-04 13:31:43 +00:00
break ;
}
}
}