From f5dff788a8c89650e9cf263319a21065ef56c58b Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Tue, 14 Jul 2009 10:27:29 +0000 Subject: - Patch #509736 by yched: make sure all settings are present at run-time. --- modules/field/field.crud.inc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'modules/field/field.crud.inc') 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; -- cgit v1.2.3