Example #1
0
 * и include-файлы /plugins/[plugin_name]/include/*.php
 */
$sPluginsDir = Config::Get('path.root.server') . '/plugins';
$sPluginsListFile = $sPluginsDir . '/plugins.dat';
if ($aPluginsList = @file($sPluginsListFile)) {
    $aPluginsList = array_map('trim', $aPluginsList);
    foreach ($aPluginsList as $sPlugin) {
        $aConfigFiles = glob($sPluginsDir . '/' . $sPlugin . '/config/*.php');
        if ($aConfigFiles and count($aConfigFiles) > 0) {
            $aConfig = array();
            foreach ($aConfigFiles as $sPath) {
                $aConfig = (include $sPath);
                if (!empty($aConfig) && is_array($aConfig)) {
                    // Если конфиг этого плагина пуст, то загружаем массив целиком
                    $sKey = "plugin.{$sPlugin}";
                    if (!Config::isExist($sKey)) {
                        Config::Set($sKey, $aConfig);
                    } else {
                        // Если уже существую привязанные к плагину ключи,
                        // то сливаем старые и новое значения ассоциативно
                        Config::Set($sKey, func_array_merge_assoc(Config::Get($sKey), $aConfig));
                    }
                }
            }
        }
        /**
         * Подключаем include-файлы
         */
        $aIncludeFiles = glob($sPluginsDir . '/' . $sPlugin . '/include/*.php');
        if ($aIncludeFiles and count($aIncludeFiles)) {
            foreach ($aIncludeFiles as $sPath) {
Example #2
0
 /**
  * @param string $sConfigDir
  * @param int    $nConfigLevel
  */
 protected static function _loadConfigFiles($sConfigDir, $nConfigLevel)
 {
     // * Загружаем конфиги модулей вида /config/modules/[module_name]/config.php
     $sDirConfig = $sConfigDir . '/modules/';
     $aFiles = glob($sDirConfig . '*/config.php');
     if ($aFiles) {
         foreach ($aFiles as $sConfigFile) {
             $sDirModule = basename(dirname($sConfigFile));
             $aConfig = F::IncludeFile($sConfigFile, true, true);
             if (!empty($aConfig) && is_array($aConfig)) {
                 $sKey = 'module.' . $sDirModule;
                 Config::Load(array($sKey => $aConfig), false, null, $nConfigLevel, $sConfigFile);
             }
         }
     }
     /*
      * Подгружаем файлы локального конфига
      */
     $sConfigFile = $sConfigDir . '/config.local.php';
     if (F::File_Exists($sConfigFile)) {
         if ($aConfig = F::File_IncludeFile($sConfigFile, true)) {
             Config::Set($aConfig, false, null, $nConfigLevel, $sConfigFile);
         }
     }
     /*
      * Загружает конфиг-файлы плагинов вида /plugins/[plugin_name]/config/*.php
      * и include-файлы вида /plugins/[plugin_name]/include/*.php
      */
     $sPluginsDir = F::GetPluginsDir($nConfigLevel == Config::LEVEL_APP);
     if ($aPluginsList = F::GetPluginsList(false, false)) {
         foreach ($aPluginsList as $sPlugin => $aPluginInfo) {
             // Paths to dirs of plugins
             Config::Set('path.dir.plugin.' . $aPluginInfo['id'], $aPluginInfo['path']);
             // Загружаем все конфиг-файлы плагина
             $aConfigFiles = glob($sPluginsDir . '/' . $aPluginInfo['dirname'] . '/config/*.php');
             if ($aConfigFiles) {
                 // move config.php to begin of array
                 if (sizeof($aConfigFiles) > 1) {
                     $sConfigFile = $sPluginsDir . '/' . $aPluginInfo['dirname'] . '/config/config.php';
                     $iIndex = array_search($sConfigFile, $aConfigFiles);
                     if ($iIndex) {
                         $aConfigFiles = array_merge(array_splice($aConfigFiles, $iIndex, 1), $aConfigFiles);
                     }
                 }
                 foreach ($aConfigFiles as $sConfigFile) {
                     $aConfig = F::IncludeFile($sConfigFile, true, true);
                     if (!empty($aConfig) && is_array($aConfig)) {
                         // Если конфиг этого плагина пуст, то загружаем массив целиком
                         $sKey = 'plugin.' . $sPlugin;
                         if (!Config::isExist($sKey)) {
                             Config::Set($sKey, $aConfig, null, $nConfigLevel, $sConfigFile);
                         } else {
                             // Если уже существуют привязанные к плагину ключи,
                             // то сливаем старые и новое значения ассоциативно-комбинированно
                             /** @see AltoFunc_Array::MergeCombo() */
                             Config::Set($sKey, F::Array_MergeCombo(Config::Get($sKey), $aConfig), null, $nConfigLevel, $sConfigFile);
                         }
                     }
                 }
             }
         }
     }
 }