Skip to content
Snippets Groups Projects
Commit a2f13e9a authored by Alex Barth's avatar Alex Barth
Browse files

Roll back 'Make configDefaults() implementation optional.' - leads to infinite loops in some cases.

parent af845f66
No related branches found
No related tags found
No related merge requests found
...@@ -89,7 +89,7 @@ abstract class FeedsConfigurable { ...@@ -89,7 +89,7 @@ abstract class FeedsConfigurable {
* returned by configDefaults(). * returned by configDefaults().
*/ */
public function setConfig($config) { public function setConfig($config) {
$default_keys = $this->configDefaultsMerged(); $default_keys = $this->configDefaults();
$this->config = array_intersect_key($config, $default_keys); $this->config = array_intersect_key($config, $default_keys);
} }
...@@ -102,7 +102,7 @@ abstract class FeedsConfigurable { ...@@ -102,7 +102,7 @@ abstract class FeedsConfigurable {
*/ */
public function addConfig($config) { public function addConfig($config) {
$this->config = array_merge($this->config, $config); $this->config = array_merge($this->config, $config);
$default_keys = $this->configDefaultsMerged(); $default_keys = $this->configDefaults();
$this->config = array_intersect_key($this->config, $default_keys); $this->config = array_intersect_key($this->config, $default_keys);
} }
...@@ -137,32 +137,6 @@ abstract class FeedsConfigurable { ...@@ -137,32 +137,6 @@ abstract class FeedsConfigurable {
return array(); return array();
} }
/**
* Return config defaults merged with the actual form definition. This is
* used for filtering values in setConfig and addConfig and allows
* implementers of configForm() to add form elements without necessarily
* declaring them in configDefaults().
*
* @todo Support nested form trees.
*/
protected function configDefaultsMerged() {
$form_state = array();
$form = $this->configForm($form_state);
// Mimic Form API behavior.
drupal_prepare_form('form_'. get_class($this) .'_feeds_config_form', $form, $form_state);
drupal_alter('form_'. get_class($this) .'_feeds_config_form', $form, $form_state);
drupal_alter('form', $form, $form_state, get_class($this) .'_feeds_config_form');
unset($form['form_token']);
unset($form['form_id']);
$defaults = array();
foreach (element_children($form) as $e) {
if (isset($form[$e]['#default_value'])) {
$defaults[$e] = $form[$e]['#default_value'];
}
}
return $this->configDefaults() + $defaults;
}
/** /**
* Return configuration form for this object. The keys of the configuration * Return configuration form for this object. The keys of the configuration
* form must match the keys of the array returned by configDefaults(). * form must match the keys of the array returned by configDefaults().
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment