From b6e32ac9717eb23b4b7677f57d380374de82cc77 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Mon, 9 Jan 2017 21:58:16 +0100 Subject: [PATCH] allow single crons to run manually --- cron/cron.php | 27 +++++++++++++++++++ .../saimod_sys_cron/js/saimod_sys_cron.js | 17 ++++++++++++ .../saimod_sys_cron/saimod_sys_cron.php | 6 +++++ .../saimod_sys_cron/tpl/list_entry.tpl | 3 +++ sai/modules/saimod_sys_cron/tpl/tabs.tpl | 2 ++ sql/qt/mysql/data/system_sai_api.sql | 1 + 6 files changed, 56 insertions(+) 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 @@ + + + diff --git a/sai/modules/saimod_sys_cron/tpl/tabs.tpl b/sai/modules/saimod_sys_cron/tpl/tabs.tpl index 52a5eca..6f861fb 100644 --- a/sai/modules/saimod_sys_cron/tpl/tabs.tpl +++ b/sai/modules/saimod_sys_cron/tpl/tabs.tpl @@ -16,6 +16,7 @@ Last Visit: ${last_visit}
next_run status + action @@ -35,6 +36,7 @@ Last Visit: ${last_visit}
+ diff --git a/sql/qt/mysql/data/system_sai_api.sql b/sql/qt/mysql/data/system_sai_api.sql index 5bc73c3..05b52c6 100644 --- a/sql/qt/mysql/data/system_sai_api.sql +++ b/sql/qt/mysql/data/system_sai_api.sql @@ -201,6 +201,7 @@ REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `na REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1209, 42, 2, 1200, 'deldialog', 'cls', 'STRING'); REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1210, 42, 2, 1200, 'change', 'cls', 'STRING'); REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1211, 42, 2, 1200, 'change', 'status', 'INT'); +REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1220, 42, 2, 1200, 'run', 'cls', 'STRING'); REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1300, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_page', 'action', NULL); REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1301, 42, 2, 1300, 'addcall', 'ID', 'INT');