Index: includes/content.crud.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/includes/Attic/content.crud.inc,v retrieving revision 1.76.2.14 diff -u -r1.76.2.14 content.crud.inc --- includes/content.crud.inc 7 Nov 2008 15:02:02 -0000 1.76.2.14 +++ includes/content.crud.inc 29 Mar 2009 04:22:51 -0000 @@ -42,9 +42,10 @@ $field['active'] = 1; } - $field['columns'] = module_invoke($module, 'field_settings', 'database columns', $field); + $field['columns'] = (array) module_invoke($module, 'field_settings', 'database columns', $field); + drupal_alter('field_settings', $field['columns'], 'database columns', $field); // Ensure columns always default to NULL values. - foreach ((array) $field['columns'] as $column_name => $column) { + foreach ($field['columns'] as $column_name => $column) { $field['columns'][$column_name]['not null'] = FALSE; } @@ -53,11 +54,10 @@ $field['db_storage'] = CONTENT_DB_STORAGE_PER_CONTENT_TYPE; // Make sure field settings all have an index in the array. - $setting_names = module_invoke($module, 'field_settings', 'save', $field); - if (is_array($setting_names)) { - foreach ($setting_names as $setting) { - $field[$setting] = NULL; - } + $setting_names = (array) module_invoke($module, 'field_settings', 'save', $field); + drupal_alter('field_settings', $setting_names, 'save', $field); + foreach ($setting_names as $setting) { + $field[$setting] = NULL; } return $field; } @@ -93,9 +93,10 @@ } // Make sure widget settings all have an index in the array. - $settings_names = module_invoke($module, 'widget_settings', 'save', $widget); + $settings_names = (array) module_invoke($module, 'widget_settings', 'save', $widget); + drupal_alter('widget_settings', $settings_names, 'save', $widget); $widget['widget_settings'] = array(); - foreach ((array) $settings_names as $name) { + foreach ($settings_names as $name) { $widget['widget_settings'][$name] = NULL; } return $widget; @@ -240,6 +241,7 @@ // Get a fresh copy of the column information whenever a field is created. $field['columns'] = (array) module_invoke($field['module'], 'field_settings', 'database columns', $field); + drupal_alter('field_settings', $field['columns'], 'database columns', $field); if (empty($prev_field['widget']) || $prior_instances < 1) { // If this is the first instance, create the field. @@ -313,6 +315,7 @@ // Changes in field values may affect columns, or column // information may have changed, get a fresh copy. $field['columns'] = (array) module_invoke($field['module'], 'field_settings', 'database columns', $field); + drupal_alter('field_settings', $field['columns'], 'database columns', $field); // If the database storage has changed, update the field and previous instances. $prior_instances = content_field_instance_read(array('field_name' => $field['field_name'])); @@ -364,14 +367,14 @@ function _content_field_write($field, $op = 'update') { // Rearrange the data to create the global_settings array. $field['global_settings'] = array(); - $setting_names = module_invoke($field['module'], 'field_settings', 'save', $field); - if (is_array($setting_names)) { - foreach ($setting_names as $setting) { - // Unlike _content_field_instance_write() and 'widget_settings', 'global_settings' - // is never preexisting, so we take no particular precautions here. - $field['global_settings'][$setting] = isset($field[$setting]) ? $field[$setting] : ''; - unset($field[$setting]); - } + $setting_names = (array) module_invoke($field['module'], 'field_settings', 'save', $field); + drupal_alter('field_settings', $setting_names, 'save', $field); + + foreach ($setting_names as $setting) { + // Unlike _content_field_instance_write() and 'widget_settings', 'global_settings' + // is never preexisting, so we take no particular precautions here. + $field['global_settings'][$setting] = isset($field[$setting]) ? $field[$setting] : ''; + unset($field[$setting]); } // 'columns' is a reserved word in MySQL4, so our column is named 'db_columns'. $field['db_columns'] = $field['columns']; @@ -400,16 +403,15 @@ $field = content_field_instance_collapse($field); // Rearrange the data to create the widget_settings array. - $setting_names = module_invoke($field['widget_module'], 'widget_settings', 'save', $field); - if (is_array($setting_names)) { - foreach ($setting_names as $setting) { - // In some cases (when the updated $field was originally read from - // the db, as opposed to gathered from the values of a form), the values - // are already in the right place, we take care to not wipe them. - if (isset($field[$setting])) { - $field['widget_settings'][$setting] = $field[$setting]; - unset($field[$setting]); - } + $setting_names = (array) module_invoke($field['widget_module'], 'widget_settings', 'save', $field); + drupal_alter('widget_settings', $setting_names, 'save', $field); + foreach ($setting_names as $setting) { + // In some cases (when the updated $field was originally read from + // the db, as opposed to gathered from the values of a form), the values + // are already in the right place, we take care to not wipe them. + if (isset($field[$setting])) { + $field['widget_settings'][$setting] = $field[$setting]; + unset($field[$setting]); } } Index: includes/content.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/includes/Attic/content.admin.inc,v retrieving revision 1.181.2.67 diff -u -r1.181.2.67 content.admin.inc --- includes/content.admin.inc 23 Mar 2009 23:22:37 -0000 1.181.2.67 +++ includes/content.admin.inc 29 Mar 2009 04:22:51 -0000 @@ -1022,10 +1022,11 @@ '#type' => 'hidden', '#default_value' => $field['widget']['weight'], ); - $additions = module_invoke($widget_type['module'], 'widget_settings', 'form', $field['widget']); - if (is_array($additions)) { - $form['widget'] = array_merge($form['widget'], $additions); - } + + $additions = (array) module_invoke($widget_type['module'], 'widget_settings', 'form', $field['widget']); + drupal_alter('widget_settings', $additions, 'form', $field['widget']); + $form['widget'] = array_merge($form['widget'], $additions); + $form['widget']['description'] = array( '#type' => 'textarea', '#title' => t('Help text'), @@ -1141,10 +1142,9 @@ '#value' => serialize($field), ); - $additions = module_invoke($field_type['module'], 'field_settings', 'form', $field); - if (is_array($additions)) { - $form['field'] = array_merge($form['field'], $additions); - } + $additions = (array) module_invoke($field_type['module'], 'field_settings', 'form', $field); + drupal_alter('field_settings', $additions, 'form', $field); + $form['field'] = array_merge($form['field'], $additions); $form['submit'] = array( '#type' => 'submit', Index: content.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/Attic/content.install,v retrieving revision 1.85.2.30 diff -u -r1.85.2.30 content.install --- content.install 7 Nov 2008 16:24:58 -0000 1.85.2.30 +++ content.install 29 Mar 2009 04:22:48 -0000 @@ -69,7 +69,8 @@ if (!empty($field['module']) && !empty($field['widget_module'])) { $field['widget_settings'] = unserialize($field['widget_settings']); $field['display_settings'] = unserialize($field['display_settings']); - $field['columns'] = module_invoke($field['module'], 'field_settings', 'database columns', $field); + $field['columns'] = (array) module_invoke($field['module'], 'field_settings', 'database columns', $field); + drupal_alter('field_settings', $field['columns'], 'database columns', $field); $field = content_field_instance_expand($field); $fields[$field['type_name']][$field['field_name']] = $field; } Index: content.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/Attic/content.module,v retrieving revision 1.301.2.100 diff -u -r1.301.2.100 content.module --- content.module 18 Mar 2009 19:20:52 -0000 1.301.2.100 +++ content.module 29 Mar 2009 04:22:50 -0000 @@ -605,7 +605,8 @@ foreach ($types as $type_name => $fields) { foreach ($fields as $field) { if ($field['module'] == $module && !in_array($field['field_name'], $fields_set)) { - $columns = module_invoke($field['module'], 'field_settings', 'database columns', $field); + $columns = (array) module_invoke($field['module'], 'field_settings', 'database columns', $field); + drupal_alter('field_settings', $columns, 'database columns', $field); db_query("UPDATE {". content_field_tablename() ."} SET db_columns = '%s' WHERE field_name = '%s'", serialize($columns), $field['field_name']); $fields_set[] = $field['field_name']; } Index: includes/views/content.views_convert.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/includes/views/Attic/content.views_convert.inc,v retrieving revision 1.1.2.4 diff -u -r1.1.2.4 content.views_convert.inc --- includes/views/content.views_convert.inc 6 Oct 2008 15:11:39 -0000 1.1.2.4 +++ includes/views/content.views_convert.inc 29 Mar 2009 04:22:51 -0000 @@ -22,7 +22,8 @@ foreach ($types as $ctype) { foreach ($ctype['fields'] as $field) { $module = $field['module']; - $result = module_invoke($module, 'field_settings', 'views data', $field); + $result = (array) module_invoke($module, 'field_settings', 'views data', $field); + drupal_alter('field_settings', $result, 'views data', $field); if (empty($result)) { // The views field name had the column name appended, // like field_name_value or field_username_uid. Index: includes/views/content.views.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/includes/views/Attic/content.views.inc,v retrieving revision 1.1.2.22 diff -u -r1.1.2.22 content.views.inc --- includes/views/content.views.inc 14 Jan 2009 13:19:47 -0000 1.1.2.22 +++ includes/views/content.views.inc 29 Mar 2009 04:22:51 -0000 @@ -138,7 +138,8 @@ $data = array(); foreach (content_fields() as $field) { $module = $field['module']; - $result = module_invoke($module, 'field_settings', 'views data', $field); + $result = (array) module_invoke($module, 'field_settings', 'views data', $field); + drupal_alter('field_settings', $result, 'views data', $field); if (empty($result)) { $result = content_views_field_views_data($field); }