Issue #1887750 by Berdir, alexpott: Use path relative to DRUPAL_ROOT in configuration directories.

8.0.x
catch 2013-12-30 17:53:00 +00:00
parent 14e5cdb080
commit 7240b39bff
6 changed files with 26 additions and 51 deletions

View File

@ -418,19 +418,10 @@ function config_get_config_directory($type = CONFIG_ACTIVE_DIRECTORY) {
global $config_directories;
if (!empty($config_directories[$type])) {
// Allow a configuration directory path to be outside of webroot.
if (empty($config_directories[$type]['absolute'])) {
$path = conf_path() . '/files/' . $config_directories[$type]['path'];
return $config_directories[$type];
}
else {
$path = $config_directories[$type]['path'];
}
}
else {
throw new Exception(format_string('The configuration directory type %type does not exist.', array('%type' => $type)));
}
return $path;
}
/**
* Sets appropriate server variables needed for command line scripts to work.
@ -2293,7 +2284,7 @@ function _drupal_load_test_overrides($test_prefix) {
$path_prefix = 'simpletest/' . substr($test_prefix, 10);
$config_directories = array();
foreach (array(CONFIG_ACTIVE_DIRECTORY, CONFIG_STAGING_DIRECTORY) as $type) {
$config_directories[$type] = array('path' => $path_prefix . '/config_' . $type);
$config_directories[$type] = conf_path() . '/files/' . $path_prefix . '/config_' . $type;
}
// Check for and load a settings.php file in the simpletest files directory.

View File

@ -177,24 +177,20 @@ function drupal_get_database_types() {
* and comment properties.
* @code
* $settings['config_directories'] = array(
* CONFIG_ACTIVE_DIRECTORY => array(
* 'path' => (object) array(
* 'value' => 'config__hash/active'
* CONFIG_ACTIVE_DIRECTORY => (object) array(
* 'value' => 'config_hash/active'
* 'required' => TRUE,
* ),
* ),
* CONFIG_STAGING_DIRECTORY => array(
* 'path' => (object) array(
* CONFIG_STAGING_DIRECTORY => (object) array(
* 'value' => 'config_hash/staging',
* 'required' => TRUE,
* ),
* ),
* );
* @endcode
* gets dumped as:
* @code
* $config_directories['active']['path'] = 'config__hash/active';
* $config_directories['staging']['path'] = 'config__hash/staging'
* $config_directories['active'] = 'config_hash/active';
* $config_directories['staging'] = 'config_hash/staging'
* @endcode
*/
function drupal_rewrite_settings($settings = array(), $settings_file = NULL) {
@ -452,18 +448,14 @@ function drupal_install_config_directories($mode = NULL) {
if (empty($config_directories)) {
$config_directories_hash = Crypt::randomStringHashed(55);
$settings['config_directories'] = array(
CONFIG_ACTIVE_DIRECTORY => array(
'path' => (object) array(
'value' => 'config_' . $config_directories_hash . '/active',
CONFIG_ACTIVE_DIRECTORY => (object) array(
'value' => conf_path() . '/files/config_' . $config_directories_hash . '/active',
'required' => TRUE,
),
),
CONFIG_STAGING_DIRECTORY => array(
'path' => (object) array(
'value' => 'config_' . $config_directories_hash . '/staging',
CONFIG_STAGING_DIRECTORY => (object) array(
'value' => conf_path() . '/files/config_' . $config_directories_hash . '/staging',
'required' => TRUE,
),
),
);
// Rewrite settings.php, which also sets the value as global variable.
drupal_rewrite_settings($settings);

View File

@ -1012,14 +1012,14 @@ abstract class TestBase {
include_once DRUPAL_ROOT . '/core/includes/install.inc';
foreach (array(CONFIG_ACTIVE_DIRECTORY, CONFIG_STAGING_DIRECTORY) as $type) {
// Assign the relative path to the global variable.
$path = 'simpletest/' . substr($this->databasePrefix, 10) . '/config_' . $type;
$GLOBALS['config_directories'][$type]['path'] = $path;
$path = conf_path() . '/files/simpletest/' . substr($this->databasePrefix, 10) . '/config_' . $type;
$GLOBALS['config_directories'][$type] = $path;
// Ensure the directory can be created and is writeable.
if (!install_ensure_config_directory($type)) {
return FALSE;
}
// Provide the already resolved path for tests.
$this->configDirectories[$type] = $this->originalFileDirectory . '/' . $path;
$this->configDirectories[$type] = $path;
}
}

View File

@ -108,9 +108,8 @@ class InstallerTranslationTest extends InstallerTest {
// Reload config directories.
include $this->public_files_directory . '/settings.php';
$prefix = substr($this->public_files_directory, strlen(conf_path() . '/files/'));
foreach ($config_directories as $type => $data) {
$GLOBALS['config_directories'][$type]['path'] = $prefix . '/files/' . $data['path'];
foreach ($config_directories as $type => $path) {
$GLOBALS['config_directories'][$type] = $path;
}
$this->rebuildContainer();

View File

@ -82,9 +82,8 @@ class InstallerTest extends WebTestBase {
$this->drupalPostForm(NULL, array(), 'Save and continue');
// Reload config directories.
include $this->public_files_directory . '/settings.php';
$prefix = substr($this->public_files_directory, strlen(conf_path() . '/files/'));
foreach ($config_directories as $type => $data) {
$GLOBALS['config_directories'][$type]['path'] = $prefix . '/files/' . $data['path'];
foreach ($config_directories as $type => $path) {
$GLOBALS['config_directories'][$type] = $path;
}
$this->rebuildContainer();

View File

@ -246,14 +246,8 @@ $drupal_hash_salt = '';
* Example:
* @code
* $config_directories = array(
* CONFIG_ACTIVE_DIRECTORY => array(
* 'path' => '/some/directory/outside/webroot',
* 'absolute' => TRUE,
* ),
* CONFIG_STAGING_DIRECTORY => array(
* 'path' => '/another/directory/outside/webroot',
* 'absolute' => TRUE,
* ),
* CONFIG_ACTIVE_DIRECTORY => '/some/directory/outside/webroot',
* CONFIG_STAGING_DIRECTORY => '/another/directory/outside/webroot',
* );
* @endcode
*/