Esempio n. 1
0
File: mg.php Progetto: nellka/mebel
 /**
  * Создает 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);
 }