summaryrefslogtreecommitdiff
path: root/modules/field/field.default.inc
diff options
context:
space:
mode:
Diffstat (limited to 'modules/field/field.default.inc')
-rw-r--r--modules/field/field.default.inc24
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()