diff --git a/cron/cron.php b/cron/cron.php index 15b3fb3..fa11ec5 100644 --- a/cron/cron.php +++ b/cron/cron.php @@ -58,6 +58,33 @@ class cron { return \SYSTEM\LOG\JsonResult::ok(); } + public static function run_class($class){ + $cron = \SYSTEM\SQL\SYS_SAIMOD_CRON_SINGLE_SELECT::Q1(array($class)); + if(!$cron){ + return \SYSTEM\LOG\JsonResult::fail();} + //check module + if(!self::check($cron[\SYSTEM\SQL\system_cron::FIELD_CLASS])){ + self::status($cron[\SYSTEM\SQL\system_cron::FIELD_CLASS], \SYSTEM\CRON\cronstatus::CRON_STATUS_FAIL_CLASS); + return \SYSTEM\LOG\JsonResult::fail();} + //time to execute? + if(!\SYSTEM\CRON\crontime::check_now( strtotime($cron[\SYSTEM\SQL\system_cron::FIELD_LAST_RUN]), + $cron[\SYSTEM\SQL\system_cron::FIELD_MIN], + $cron[\SYSTEM\SQL\system_cron::FIELD_HOUR], + $cron[\SYSTEM\SQL\system_cron::FIELD_DAY], + $cron[\SYSTEM\SQL\system_cron::FIELD_DAY_WEEK], + $cron[\SYSTEM\SQL\system_cron::FIELD_MONTH])){ + return \SYSTEM\LOG\JsonResult::fail();} + //Status is ok? + if($cron[\SYSTEM\SQL\system_cron::FIELD_STATUS] != \SYSTEM\CRON\cronstatus::CRON_STATUS_SUCCESFULLY){ + new \SYSTEM\LOG\CRON('Cron for Class '.$cron[\SYSTEM\SQL\system_cron::FIELD_CLASS].' could not execute cuz Status aint good: '. \SYSTEM\CRON\cronstatus::text($cron[\SYSTEM\SQL\system_cron::FIELD_STATUS])); + return \SYSTEM\LOG\JsonResult::fail();} + //set running + self::status($cron[\SYSTEM\SQL\system_cron::FIELD_CLASS], \SYSTEM\CRON\cronstatus::CRON_STATUS_RUNNING); + self::status($cron[\SYSTEM\SQL\system_cron::FIELD_CLASS], call_user_func(array($cron[\SYSTEM\SQL\system_cron::FIELD_CLASS],'run'))); + + return \SYSTEM\LOG\JsonResult::ok(); + } + /** * Determine next run of a given Cronjob * diff --git a/sai/modules/saimod_sys_cron/js/saimod_sys_cron.js b/sai/modules/saimod_sys_cron/js/saimod_sys_cron.js index 1ea42ea..f62807e 100644 --- a/sai/modules/saimod_sys_cron/js/saimod_sys_cron.js +++ b/sai/modules/saimod_sys_cron/js/saimod_sys_cron.js @@ -4,6 +4,23 @@ function init_saimod_sys_cron() { register_cron_del(); register_cron_edit(); register_cron_change(); + register_cron_run(); +} + +function register_cron_run(){ + $('.btn_cron_run').click(function(){ + $.ajax({ type :'GET', + url : './sai.php?sai_mod=.SYSTEM.SAI.saimod_sys_cron&action=run'+ + '&cls='+$(this).attr('_class'), + success : function(data) { + if(data.status){ + alert('ok'); + }else{ + alert('fail'); + } + } + }); + }); } function register_cron_change(){ diff --git a/sai/modules/saimod_sys_cron/saimod_sys_cron.php b/sai/modules/saimod_sys_cron/saimod_sys_cron.php index ac81464..4357985 100644 --- a/sai/modules/saimod_sys_cron/saimod_sys_cron.php +++ b/sai/modules/saimod_sys_cron/saimod_sys_cron.php @@ -50,6 +50,12 @@ class saimod_sys_cron extends \SYSTEM\SAI\SaiModule { return \SYSTEM\LOG\JsonResult::ok(); } + public static function sai_mod__system_sai_saimod_sys_cron_action_run($cls){ + if(!\SYSTEM\SECURITY\security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI_CRON)){ + throw new \SYSTEM\LOG\ERROR("You dont have edit Rights - Cant proceeed");} + return \SYSTEM\CRON\cron::run_class($cls); + } + /** * Add a new Cron Entry * diff --git a/sai/modules/saimod_sys_cron/tpl/list_entry.tpl b/sai/modules/saimod_sys_cron/tpl/list_entry.tpl index a2226b8..2cb647f 100644 --- a/sai/modules/saimod_sys_cron/tpl/list_entry.tpl +++ b/sai/modules/saimod_sys_cron/tpl/list_entry.tpl @@ -21,6 +21,9 @@