Esempio n. 1
0
 /**
  * Includes module by its name
  *
  * @param string $moduleName Name of the included module
  * @return bool Returns true if module was included successfully, otherwise returns false
  * @throws LoaderException
  */
 public static function includeModule($moduleName)
 {
     if (!is_string($moduleName) || $moduleName == "") {
         throw new LoaderException("Empty module name");
     }
     if (preg_match("#[^a-zA-Z0-9._]#", $moduleName)) {
         throw new LoaderException(sprintf("Module name '%s' is not correct", $moduleName));
     }
     $moduleName = strtr($moduleName, static::ALPHA_UPPER, static::ALPHA_LOWER);
     if (self::SAFE_MODE) {
         if (!in_array($moduleName, self::$safeModeModules)) {
             return false;
         }
     }
     if (isset(self::$arLoadedModules[$moduleName])) {
         return self::$arLoadedModules[$moduleName];
     }
     if (isset(self::$arSemiloadedModules[$moduleName])) {
         trigger_error("Module '" . $moduleName . "' is in loading progress", E_USER_WARNING);
     }
     $arInstalledModules = ModuleManager::getInstalledModules();
     if (!isset($arInstalledModules[$moduleName])) {
         return self::$arLoadedModules[$moduleName] = false;
     }
     $documentRoot = static::getDocumentRoot();
     $moduleHolder = self::LOCAL_HOLDER;
     $pathToInclude = $documentRoot . "/" . $moduleHolder . "/modules/" . $moduleName . "/include.php";
     if (!file_exists($pathToInclude)) {
         $moduleHolder = self::FREETRIX_HOLDER;
         $pathToInclude = $documentRoot . "/" . $moduleHolder . "/modules/" . $moduleName . "/include.php";
         if (!file_exists($pathToInclude)) {
             return self::$arLoadedModules[$moduleName] = false;
         }
     }
     self::$arLoadedModulesHolders[$moduleName] = $moduleHolder;
     self::$arSemiloadedModules[$moduleName] = true;
     $res = self::includeModuleInternal($pathToInclude);
     unset(self::$arSemiloadedModules[$moduleName]);
     if ($res === false) {
         return self::$arLoadedModules[$moduleName] = false;
     }
     return self::$arLoadedModules[$moduleName] = true;
 }
Esempio n. 2
0
 public static function includeModule($moduleName)
 {
     if (!is_string($moduleName) || $moduleName == "") {
         throw new LoaderException("Empty module name");
     }
     if (preg_match("#[^a-zA-Z0-9._]#", $moduleName)) {
         throw new LoaderException(sprintf("Module name '%s' is not correct", $moduleName));
     }
     $moduleName = strtolower($moduleName);
     if (self::SAFE_MODE) {
         if (!in_array($moduleName, self::$safeModeModules)) {
             return null;
         }
     }
     if (array_key_exists($moduleName, self::$arLoadedModules)) {
         return self::$arLoadedModules[$moduleName];
     }
     $arInstalledModules = ModuleManager::getInstalledModules();
     if (!array_key_exists($moduleName, $arInstalledModules)) {
         return self::$arLoadedModules[$moduleName] = null;
     }
     static $documentRoot = null;
     if ($documentRoot === null) {
         $documentRoot = Application::getDocumentRoot();
         while (substr($documentRoot, -1) == "/") {
             $documentRoot = substr($documentRoot, 0, -1);
         }
     }
     $moduleHolder = self::LOCAL_HOLDER;
     $pathToModule = $documentRoot . "/" . $moduleHolder . "/modules/" . $moduleName;
     $pathToInclude = $pathToModule . "/include_module.php";
     if (!file_exists($pathToInclude)) {
         $pathToInclude = $pathToModule . "/include.php";
         if (!file_exists($pathToInclude)) {
             $moduleHolder = self::BITRIX_HOLDER;
             $pathToModule = $documentRoot . "/" . $moduleHolder . "/modules/" . $moduleName;
             $pathToInclude = $pathToModule . "/include_module.php";
             if (!file_exists($pathToInclude)) {
                 $pathToInclude = $pathToModule . "/include.php";
                 if (!file_exists($pathToInclude)) {
                     return self::$arLoadedModules[$moduleName] = null;
                 }
             }
         }
     }
     $res = self::includeModuleInternal($pathToInclude);
     if ($res === false) {
         return self::$arLoadedModules[$moduleName] = null;
     }
     self::$arLoadedModulesHolders[$moduleName] = $moduleHolder;
     if (strpos($moduleName, ".") !== false) {
         $moduleNameTmp = str_replace(".", "_", $moduleName);
         $className = "\\" . $moduleNameTmp . "\\" . $moduleNameTmp;
     } else {
         $className = "\\Bitrix\\" . $moduleName;
     }
     if (class_exists($className)) {
         return self::$arLoadedModules[$moduleName] = new $className();
     }
     return self::$arLoadedModules[$moduleName] = true;
 }