Index: Horde/Horde.php =================================================================== RCS file: /repository/framework/Horde/Horde.php,v retrieving revision 1.716 diff -u -r1.716 Horde.php --- Horde/Horde.php 17 Jun 2009 03:56:20 -0000 1.716 +++ Horde/Horde.php 17 Jun 2009 15:38:29 -0000 @@ -653,6 +653,8 @@ : $registry->get('fileroot', $app) . '/config/'; $file = $config_dir . $config_file; + $output = ''; + if (file_exists($file)) { /* If we are not exporting variables located in the configuration * file, or we are not capturing the output, then there is no @@ -661,7 +663,7 @@ $success = (is_null($var_names) && !$show_output) ? include_once $file : include $file; - $output = ob_get_clean(); + $output .= ob_get_clean(); if (!empty($output) && !$show_output) { return PEAR::raiseError(sprintf('Failed to import configuration file "%s": ', $file) . strip_tags($output)); @@ -673,6 +675,31 @@ $was_included = true; } + + // Load global configuration stanzas in .d directory + $directory = preg_replace('/\.php$/', '.d', $file); + if (file_exists($directory) && is_dir($directory)) { + $sub_files = glob("$directory/*.php"); + if ($sub_files) { + foreach ($sub_files as $sub_file) { + ob_start(); + $success = (is_null($var_names) && !$show_output) + ? include_once $sub_file + : include $sub_file; + $output .= ob_get_clean(); + + if (!empty($output) && !$show_output) { + return PEAR::raiseError(sprintf('Failed to import configuration file "%s": ', $sub_file) . strip_tags($output)); + } + + if (!$success) { + return PEAR::raiseError(sprintf('Failed to import configuration file "%s".', $sub_file)); + } + } + } + } + + $output = ''; // Load vhost configuration file. if (!empty($conf['vhosts']) || !empty($GLOBALS['conf']['vhosts'])) { @@ -686,7 +713,7 @@ $success = (is_null($var_names) && !$show_output) ? include_once $file : include $file; - $output = ob_get_clean(); + $output .= ob_get_clean(); if (!empty($output) && !$show_output) { return PEAR::raiseError(sprintf('Failed to import configuration file "%s": ', $file) . strip_tags($output)); @@ -698,6 +725,29 @@ $was_included = true; } + // Load vhost configuration stanzas in .d directory + $directory = preg_replace('/\.php$/', '.d', $file); + if (file_exists($directory) && is_dir($directory)) { + $sub_files = glob("$directory/*.php"); + if ($sub_files) { + foreach ($files as $sub_file) { + ob_start(); + $success = (is_null($var_names) && !$show_output) + ? include_once $sub_file + : include $sub_file; + $output .= ob_get_clean(); + + if (!empty($output) && !$show_output) { + return PEAR::raiseError(sprintf('Failed to import configuration file "%s": ', $sub_file) . strip_tags($output)); + } + + if (!$success) { + return PEAR::raiseError(sprintf('Failed to import configuration file "%s".', $sub_file)); + } + } + } + } + } // Return an error if neither main or vhosted versions of the config