- Patch #1484690 by Pol, jhedstrom, beejeebus: implement overrides in the configuration system.
parent
5868d523c9
commit
d2f1b2560f
|
@ -81,17 +81,27 @@ class DrupalConfig {
|
|||
* The data that was requested.
|
||||
*/
|
||||
public function get($key = '') {
|
||||
global $conf;
|
||||
|
||||
$name = $this->_verifiedStorage->getName();
|
||||
if (isset($conf[$name])) {
|
||||
$merged_data = drupal_array_merge_deep($this->data, $conf[$name]);
|
||||
}
|
||||
else {
|
||||
$merged_data = $this->data;
|
||||
}
|
||||
|
||||
if (empty($key)) {
|
||||
return $this->data;
|
||||
return $merged_data;
|
||||
}
|
||||
else {
|
||||
$parts = explode('.', $key);
|
||||
if (count($parts) == 1) {
|
||||
return isset($this->data[$key]) ? $this->data[$key] : NULL;
|
||||
return isset($merged_data[$key]) ? $merged_data[$key] : NULL;
|
||||
}
|
||||
else {
|
||||
$key_exists = NULL;
|
||||
$value = drupal_array_get_nested_value($this->data, $parts, $key_exists);
|
||||
$value = drupal_array_get_nested_value($merged_data, $parts, $key_exists);
|
||||
return $key_exists ? $value : NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,4 +99,11 @@ abstract class DrupalConfigVerifiedStorage implements DrupalConfigVerifiedStorag
|
|||
$this->deleteFromActive();
|
||||
$this->deleteFile();
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements DrupalConfigVerifiedStorageInterface::getName().
|
||||
*/
|
||||
public function getName() {
|
||||
return $this->name;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -81,4 +81,9 @@ interface DrupalConfigVerifiedStorageInterface {
|
|||
* @todo
|
||||
*/
|
||||
static function getNamesWithPrefix($prefix);
|
||||
|
||||
/**
|
||||
* Gets the name of this object.
|
||||
*/
|
||||
public function getName();
|
||||
}
|
||||
|
|
|
@ -268,3 +268,31 @@ class ConfigFileContentTestCase extends DrupalWebTestCase {
|
|||
// Attempt to delete non-existing configuration.
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests configuration overriding from settings.php.
|
||||
*/
|
||||
class ConfOverrideTestCase extends DrupalWebTestCase {
|
||||
protected $testContent = 'Good morning, Denver!';
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Configuration overrides',
|
||||
'description' => 'Tests configuration overrides through settings.php.',
|
||||
'group' => 'Configuration',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test configuration override.
|
||||
*/
|
||||
function testConfigurationOverride() {
|
||||
global $conf;
|
||||
$config = config('system.performance');
|
||||
$this->assertNotEqual($config->get('cache'), $this->testContent);
|
||||
|
||||
$conf['system.performance']['cache'] = $this->testContent;
|
||||
$config = config('system.performance');
|
||||
$this->assertEqual($config->get('cache'), $conf['system.performance']['cache']);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue