Beispiel #1
0
 /**
  * Выполнение всех обработчиков события
  * @param string $moduleName
  * @param string $eventName
  * @param array $arParams
  */
 public static function run($moduleName, $eventName, &$arParams = array())
 {
     if (empty(self::$_arEvents[$moduleName][$eventName])) {
         return false;
     }
     foreach (self::$_arEvents[$moduleName][$eventName] as &$event) {
         $callable_name = "";
         if (!is_callable($event, false, $callable_name)) {
             if (is_array($event) && count($event) == 2) {
                 fixNamespaceName($event[0]);
             } elseif (is_string($event)) {
                 fixNamespaceName($event);
             }
             if (!is_callable($event, false, $callable_name)) {
                 continue;
             }
         }
         call_user_func($event, &$arParams);
     }
 }
Beispiel #2
0
 /**
  * предопределять переменную self::$classesPaths
  * Пример использования.
  * CModules::addAutoloadClasses(
  * 		"catalog",
  * 		array(
  * 			"SomeClass1" => "lib/fileWithSomeClasses.php",
  * 			"SomeClass1" => "lib/fileWithSomeClasses.php",
  * 		)
  * );
  * Пути попадают сразу в self::$classesPaths,
  * /!\ при чем перезаписывая те значения,
  *     которые были сформированы автоматически ф-ией self::includeLibFiles()
  */
 public static function setAutoloadClasses($moduleID, $arClassesFiles, $argDirectLoadClasses = self::global_set, $debug = self::global_set)
 {
     if (!self::$bInit) {
         return false;
     }
     if ($debug === self::global_set) {
         $debug = self::$debugMe;
     }
     $dctLoadSetSrc = "";
     if ($argDirectLoadClasses === self::global_set) {
         $argDirectLoadClasses = (bool) self::$directLoadClasses;
         $dctLoadSetSrc = "global set";
     } else {
         $argDirectLoadClasses = (bool) $argDirectLoadClasses;
         $dctLoadSetSrc = "argument set";
     }
     $moduleID = strtolower($moduleID);
     if (strlen($moduleID) == 0) {
         if ($debug) {
             echo 'Module name not set. Class-files path is "' . DOC_ROOT . '".' . endl;
         }
         $CurentModulePath = DOC_ROOT;
     } elseif (is_dir(MODULES_PATH_FULL . "/" . $moduleID)) {
         $CurentModulePath = MODULES_PATH_FULL . "/" . $moduleID;
     } else {
         if ($debug) {
             echo 'Module name "' . $moduleID . '" is incorrect.' . endl;
         }
         return false;
     }
     if ($debug) {
         echo '<b>CALL Modules::setAutoloadClasses(' . ($moduleID ? $moduleID : 'false') . ',...)</b>' . endl;
     }
     foreach ($arClassesFiles as $className => $arClassFileNameModRelated) {
         if (file_exists($CurentModulePath . "/" . $arClassFileNameModRelated)) {
             fixNamespaceName($className);
             if (!class_exists($className, false)) {
                 if ($debug) {
                     echo "Class not loaded yet. Adding to autoload list: <u>{$className}</u>" . endl;
                 }
                 self::$classesPaths[$className] = $CurentModulePath . "/" . $arClassFileNameModRelated;
                 if ($argDirectLoadClasses) {
                     if ($debug) {
                         echo "Direct loading class({$dctLoadSetSrc}): {$className} - " . self::$classesPaths[$className] . endl;
                     }
                     include_once self::$classesPaths[$className];
                 }
             }
         } else {
             if ($debug) {
                 echo "File with class <u>{$className}</u> not found: " . $CurentModulePath . "/" . $arClassFileNameModRelated . endl;
             }
         }
     }
     //sort(self::$classesPaths);
 }