/** * Создает hook - крючок, для пользовательских функций и плагинов. * может быть вызван несколькими спообами: * 1. createHook('userFunction'); - в любом месте программы выполнится пользовательская функция userFunction() из плагина; * 2. createHook('userFunction', $args); - в любом месте программы выполнится пользовательская функция userFunction($args) из плагина с параметрами; * 3. return createHook('thisFunctionInUserEnviroment', $result, $args); - хук прописывается перед. * возвращением результата какой либо функции, * в качестве параметров передается результат работы текущей функции, * и начальные параметры которые были переданы ей. * * @param array $arr параметры, которые надо защитить. * @return array $arr теже параметры, но уже безопасные. */ public static function createHook($hookName) { // Вариант 1. createHook('userFunction'); $arg = array(); $result = false; // Вариант 2. createHook('userFunction', $args); // Не удалять, он работает. // Для случая: // createHook(__CLASS__."_".__FUNCTION__, $title); // mgAddAction('mg_titlepage', 'myTitle', 1); if (func_num_args() == 2) { $arg = func_get_args(); $arg = $arg[1]; } // Вариант 3. return createHook('thisFunctionInUserEnviroment', $result, $args); if (func_num_args() == 3) { $arg = func_get_args(); $result = isset($arg[1]) ? true : false; if ($result) { $argumets = array('result' => $arg[1], 'args' => $arg[2]); $arg = $argumets; } } if ($result) { return PM::createHook($hookName, $arg, $result); } PM::createHook($hookName, $arg, $result); }