From 74ac1e51412bd938fadc5594536e12c295568285 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 1 Feb 2016 15:46:04 +0900 Subject: [PATCH 1/2] Allow triggers to call arbitrary functions --- classes/module/ModuleHandler.class.php | 15 +++++++++++++-- modules/module/module.controller.php | 18 ++++++++++++++++++ modules/module/module.model.php | 15 +++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 9a0293ac1..9e3c7807c 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -1207,9 +1207,9 @@ class ModuleHandler extends Handler $oModuleModel = getModel('module'); $triggers = $oModuleModel->getTriggers($trigger_name, $called_position); - if(!$triggers || count($triggers) < 1) + if(!$triggers) { - return new Object(); + $triggers = array(); } //store before trigger call time @@ -1252,6 +1252,17 @@ class ModuleHandler extends Handler unset($oModule); } + $trigger_functions = $oModuleModel->getTriggerFunctions($trigger_name, $called_position); + foreach($trigger_functions as $item) + { + $item($obj); + + if(is_object($output) && method_exists($output, 'toBool') && !$output->toBool()) + { + return $output; + } + } + return new Object(); } diff --git a/modules/module/module.controller.php b/modules/module/module.controller.php index 8a7f1e9d5..11f6c5fec 100644 --- a/modules/module/module.controller.php +++ b/modules/module/module.controller.php @@ -60,6 +60,24 @@ class moduleController extends module return $output; } + /** + * @brief Add trigger callback function + * + * @param string $trigger_name + * @param string $called_position + * @param callable $callback_function + */ + function insertTriggerFunction($trigger_name, $called_position, $callback_function) + { + if(!isset($GLOBALS['__trigger_functions__'])) + { + $GLOBALS['__trigger_functions__'] = array(); + } + + $GLOBALS['__trigger_functions__'][$trigger_name][$called_position][] = $callback_function; + return true; + } + /** * @brief Add module trigger * module trigger is to call a trigger to a target module diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 5b8b27853..b04529b74 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -625,6 +625,21 @@ class moduleModel extends module } } + /** + * @brief Get trigger functions + */ + function getTriggerFunctions($trigger_name, $called_position) + { + if(isset($GLOBALS['__trigger_functions__'][$trigger_name][$called_position])) + { + return $GLOBALS['__trigger_functions__'][$trigger_name][$called_position]; + } + else + { + return array(); + } + } + /** * @brief Get a list of all triggers on the trigger_name */ From 568b78959d55cacba81246276a8299b9984ea5b6 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 1 Feb 2016 16:31:58 +0900 Subject: [PATCH 2/2] Simplify --- modules/module/module.controller.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/modules/module/module.controller.php b/modules/module/module.controller.php index 11f6c5fec..b23ca03e7 100644 --- a/modules/module/module.controller.php +++ b/modules/module/module.controller.php @@ -67,13 +67,8 @@ class moduleController extends module * @param string $called_position * @param callable $callback_function */ - function insertTriggerFunction($trigger_name, $called_position, $callback_function) + function addTriggerFunction($trigger_name, $called_position, $callback_function) { - if(!isset($GLOBALS['__trigger_functions__'])) - { - $GLOBALS['__trigger_functions__'] = array(); - } - $GLOBALS['__trigger_functions__'][$trigger_name][$called_position][] = $callback_function; return true; }