/**
  * 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;
 }
예제 #2
0
 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;
 }
예제 #5
0
 public function getConfigPaths($configPath)
 {
     $configs = parent::getConfigPaths($configPath);
     usort($configs, array($this, 'sortConfigPaths'));
     return $configs;
 }