diff options
Diffstat (limited to 'modules/field/field.default.inc')
-rw-r--r-- | modules/field/field.default.inc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/modules/field/field.default.inc b/modules/field/field.default.inc index 31d5732c4..fc7c40e40 100644 --- a/modules/field/field.default.inc +++ b/modules/field/field.default.inc @@ -54,6 +54,30 @@ function field_default_insert($obj_type, $object, $field, $instance, $langcode, } /** + * Invoke hook_field_formatter_prepare_view() on the relavant formatters. + */ +function field_default_prepare_view($obj_type, $objects, $field, $instances, $langcode, &$items, $options, $build_mode) { + // Group objects, instances and items by formatter module. + $modules = array(); + foreach ($instances as $id => $instance) { + $module = $instance['display'][$build_mode]['module']; + $modules[$module] = $module; + $grouped_objects[$module][$id] = $objects[$id]; + $grouped_instances[$module][$id] = $instance; + // hook_field_formatter_prepare_view() alters $items by reference. + $grouped_items[$module][$id] = &$items[$id]; + } + + foreach ($modules as $module) { + // Invoke hook_field_formatter_prepare_view(). + $function = $module . '_field_formatter_prepare_view'; + if (function_exists($function)) { + $function($obj_type, $grouped_objects[$module], $field, $grouped_instances[$module], $langcode, $grouped_items[$module], $build_mode); + } + } +} + +/** * Default field 'view' operation. * * @see field_attach_view() |