- 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.
|
* The data that was requested.
|
||||||
*/
|
*/
|
||||||
public function get($key = '') {
|
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)) {
|
if (empty($key)) {
|
||||||
return $this->data;
|
return $merged_data;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$parts = explode('.', $key);
|
$parts = explode('.', $key);
|
||||||
if (count($parts) == 1) {
|
if (count($parts) == 1) {
|
||||||
return isset($this->data[$key]) ? $this->data[$key] : NULL;
|
return isset($merged_data[$key]) ? $merged_data[$key] : NULL;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$key_exists = NULL;
|
$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;
|
return $key_exists ? $value : NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,4 +99,11 @@ abstract class DrupalConfigVerifiedStorage implements DrupalConfigVerifiedStorag
|
||||||
$this->deleteFromActive();
|
$this->deleteFromActive();
|
||||||
$this->deleteFile();
|
$this->deleteFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements DrupalConfigVerifiedStorageInterface::getName().
|
||||||
|
*/
|
||||||
|
public function getName() {
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,4 +81,9 @@ interface DrupalConfigVerifiedStorageInterface {
|
||||||
* @todo
|
* @todo
|
||||||
*/
|
*/
|
||||||
static function getNamesWithPrefix($prefix);
|
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.
|
// 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