summaryrefslogtreecommitdiff
path: root/modules/field/field.crud.inc
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-07-14 10:27:29 +0000
committerDries Buytaert <dries@buytaert.net>2009-07-14 10:27:29 +0000
commitf5dff788a8c89650e9cf263319a21065ef56c58b (patch)
treefc02f7a6bb1f12e987ef1a6ac2d77b5bfcf6aaac /modules/field/field.crud.inc
parentef09cf93e5ac3b0a3783170c6f29fdc4f9df6224 (diff)
downloadbrdo-f5dff788a8c89650e9cf263319a21065ef56c58b.tar.gz
brdo-f5dff788a8c89650e9cf263319a21065ef56c58b.tar.bz2
- Patch #509736 by yched: make sure all settings are present at run-time.
Diffstat (limited to 'modules/field/field.crud.inc')
-rw-r--r--modules/field/field.crud.inc15
1 files changed, 12 insertions, 3 deletions
diff --git a/modules/field/field.crud.inc b/modules/field/field.crud.inc
index dbcbda92e..91fb159ed 100644
--- a/modules/field/field.crud.inc
+++ b/modules/field/field.crud.inc
@@ -339,6 +339,10 @@ function field_read_fields($params = array(), $include_additional = array()) {
unset($field['data']);
$field += $data;
+ // Make sure all settings expected in the current execution context are
+ // present.
+ $field['settings'] += field_info_field_settings($field['type']);
+
module_invoke_all('field_read_field', $field);
// Populate storage information.
@@ -620,7 +624,7 @@ function field_read_instances($params = array(), $include_additional = array())
$query = db_select('field_config_instance', 'fci', array('fetch' => PDO::FETCH_ASSOC));
$query->join('field_config', 'fc', 'fc.id = fci.field_id');
$query->fields('fci');
- #$query->fields('fc', array('type'));
+ $query->fields('fc', array('type'));
// Turn the conditions into a query.
foreach ($params as $key => $value) {
@@ -650,8 +654,13 @@ function field_read_instances($params = array(), $include_additional = array())
$instance['widget']['module'] = $record['widget_module'];
$instance['widget']['active'] = $record['widget_active'];
- // TODO D7 : Set default widget settings, default instance settings, default display settings.
- // (the modules that defined them might have changed since the instance was last saved).
+ // Make sure all settings expected in the current execution context are
+ // present.
+ $instance['settings'] += field_info_instance_settings($record['type']);
+ $instance['widget']['settings'] += field_info_widget_settings($instance['widget']['type']);
+ foreach ($instance['display'] as $build_mode => $display) {
+ $instance['display'][$build_mode]['settings'] += field_info_formatter_settings($display['type']);
+ }
module_invoke_all('field_read_instance', $instance);
$instances[] = $instance;