* и 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) {
/** * @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); } } } } } } }