public static function loadConfig($path, $environment, $recursivelyLoadModuleConfig = false) { self::$_environment = $environment; if (is_string($path) && is_dir($path)) { $iterator = new Centurion_Iterator_Directory($path); $tabFile = array(); foreach ($iterator as $file) { if ($file->isDot()) { continue; } $tabFile[] = $file->getPathName(); } if (0 == count($tabFile)) { return array(); } sort($tabFile); $backendOptions = array('cache_dir' => APPLICATION_PATH . '/../data/cache/config/'); $frontendOptions = array('master_files' => array_values($tabFile), 'automatic_serialization' => true, 'cache_id_prefix' => str_replace('-', '_', $environment)); try { $cacheConfig = Zend_Cache::factory('File', 'File', $frontendOptions, $backendOptions); } catch (Exception $e) { self::$_noCache = true; } if (self::$_noCache || !($config = $cacheConfig->load(md5(implode('|', $tabFile))))) { $config = array(); foreach ($tabFile as $file) { $suffix = strtolower(pathinfo($file, PATHINFO_EXTENSION)); switch ($suffix) { case 'ini': case 'xml': case 'php': case 'inc': $result = self::_loadConfig($file); $config = self::mergeArrays($config, $result); } } if (!self::$_noCache) { $cacheConfig->save($config); } } if ($recursivelyLoadModuleConfig && isset($config['resources']) && isset($config['resources']['modules'])) { foreach ($config['resources']['modules'] as $module) { $dir = null; if (file_exists(APPLICATION_PATH . '/../library/Centurion/Contrib/' . $module . '/configs')) { $dir = APPLICATION_PATH . '/../library/Centurion/Contrib/' . $module . '/configs'; } else { if (file_exists(APPLICATION_PATH . '/modules/' . $module . '/configs')) { $dir = APPLICATION_PATH . '/modules/' . $module . '/configs'; } } if (null !== $dir) { $result = self::loadConfig($dir, $environment); $config = self::mergeArrays($result, $config); } } } return $config; } throw new Centurion_Exception('Path must be a directory', 500); }