/** * Gets the configuration file paths for a given relative configuration path. * * @param string The configuration path * * @return array An array of paths */ public function getConfigPaths($configPath) { // returned in reverse order cascade // if there is a configuration dimension if ($this->hasDimension()) { $cacheKey = sprintf('sf_config_dirs_%s', $configPath); // if there is a cache return it if ($this->dimension->getCache()->has($cacheKey)) { $configs = $this->dimension->getCache()->get($cacheKey); } else { // reverse cascade $dimensions = array_reverse($this->dimension->getCascade()); // $configPath = modules/blah/config/config.yml | config/config.yml $configDirName = dirname($configPath); $configFileName = basename($configPath); $globalConfigPath = basename($configDirName) . '/' . $configFileName; // config/config.yml $files = array(sfConfig::get('sf_symfony_lib_dir') . '/config/' . $globalConfigPath); if ($bundledPluginConfigs = glob(sfConfig::get('sf_symfony_lib_dir') . '/plugins/*/' . $globalConfigPath)) { $files = array_merge($files, $bundledPluginConfigs); // bundled plugins } if ($pluginConfigs = glob(sfConfig::get('sf_plugins_dir') . '/*/' . $globalConfigPath)) { foreach ($pluginConfigs as $pluginConfig) { $configDir = dirname($pluginConfig); array_push($files, $pluginConfig); // plugins foreach ($dimensions as $dimension) { array_push($files, $configDir . '/' . $dimension . '/' . basename($pluginConfig)); // plugin dimensions } } } if (is_readable(sfConfig::get('sf_root_dir') . '/' . $globalConfigPath)) { $configDir = dirname(sfConfig::get('sf_root_dir') . '/' . $globalConfigPath); array_push($files, sfConfig::get('sf_root_dir') . '/' . $globalConfigPath); // project foreach ($dimensions as $dimension) { array_push($files, $configDir . '/' . $dimension . '/' . basename($globalConfigPath)); // project dimensions } } if (is_readable(sfConfig::get('sf_root_dir') . '/' . $configPath)) { $configDir = dirname(sfConfig::get('sf_root_dir') . '/' . $configPath); array_push($files, sfConfig::get('sf_root_dir') . '/' . $configPath); // project foreach ($dimensions as $dimension) { array_push($files, $configDir . '/' . $dimension . '/' . basename($configPath)); // project dimensions } } if (is_readable(sfConfig::get('sf_app_dir') . '/' . $globalConfigPath)) { $configDir = dirname(sfConfig::get('sf_app_dir') . '/' . $globalConfigPath); array_push($files, sfConfig::get('sf_app_dir') . '/' . $globalConfigPath); // application foreach ($dimensions as $dimension) { array_push($files, $configDir . '/' . $dimension . '/' . basename($globalConfigPath)); // application dimensions } } array_push($files, sfConfig::get('sf_app_cache_dir') . '/' . $configPath); // generated modules if ($pluginConfigs = glob(sfConfig::get('sf_plugins_dir') . '/*/' . $configPath)) { foreach ($pluginConfigs as $pluginConfig) { $configDir = dirname($pluginConfig); array_push($files, $pluginConfig); // plugins foreach ($dimensions as $dimension) { array_push($files, $configDir . '/' . $dimension . '/' . basename($pluginConfig)); // plugin dimensions } } } if (is_readable(sfConfig::get('sf_app_dir') . '/' . $configPath)) { $configDir = dirname(sfConfig::get('sf_app_dir') . '/' . $configPath); array_push($files, sfConfig::get('sf_app_dir') . '/' . $configPath); // module foreach ($dimensions as $dimension) { array_push($files, $configDir . '/' . $dimension . '/' . basename($configPath)); // module } } $configs = array(); $files = array_unique($files); foreach ($files as $file) { if (is_readable($file)) { $configs[] = $file; } } // save cache $this->dimension->getCache()->set($cacheKey, $configs); } } else { $configs = parent::getConfigPaths($configPath); } return $configs; }
public function getFactoriesConfiguration(sfApplicationConfiguration $appConfiguration) { if (is_null($this->config)) { $this->config = sfFactoryConfigHandler::getConfiguration($appConfiguration->getConfigPaths('config/factories.yml')); } return $this->config; }
public function getFactoriesConfiguration(sfApplicationConfiguration $appConfiguration) { $app = $appConfiguration->getApplication(); $env = $appConfiguration->getEnvironment(); if (!isset($this->config[$app])) { $this->config[$app] = array(); } if (!isset($this->config[$app][$env])) { $this->config[$app][$env] = sfFactoryConfigHandler::getConfiguration($appConfiguration->getConfigPaths('config/factories.yml')); } return $this->config[$app][$env]; }
/** * Gets the configuration file paths for a given relative configuration path. * * @param string $configPath The configuration path * * @return array An array of paths */ public function getConfigPaths($configPath) { $globalConfigPath = basename(dirname($configPath)) . '/' . basename($configPath); $files = array(); if ($libDirs = glob(sfConfig::get('sf_lib_dir') . '/config/' . $configPath)) { $files = array_merge($files, $libDirs); // library configurations } $files = array_merge($files, $this->globEnablePlugin($configPath, false)); $files = array_merge($files, $this->globEnablePlugin($globalConfigPath, false)); $files = array_merge($files, $this->globEnablePlugin('/apps/' . sfConfig::get('sf_app') . '/' . $globalConfigPath, false)); $files = array_merge($files, $this->globEnablePlugin('/apps/' . sfConfig::get('sf_app') . '/' . $configPath, false)); $configs = array(); foreach (array_unique($files) as $file) { if (is_readable($file)) { $configs[] = $file; } } $configs = array_merge(parent::getConfigPaths($configPath), $configs); return $configs; }
public function getConfigPaths($configPath) { $configs = parent::getConfigPaths($configPath); usort($configs, array($this, 'sortConfigPaths')); return $configs; }