Data for search
<?php
/**
* Implements hook_entity_property_info_alter().
*/
function MYMODULE_entity_property_info_alter(&$info) {
$info['node']['properties']['agregate_textfield'] = array(
'type' => 'list<text>',
'sanitized' => TRUE,
'label' => t('Agregate textfield'),
'getter callback' => 'MYMODULE_agregate_textfield_getter_callback',
);
}
/**
* Getter callback for Agregate text field.
*/
function MYMODULE_agregate_textfield_getter_callback($node) {
$result_array = array();
$zones = array('field_zone1', 'field_zone2');
foreach ($zones as $zone) {
if ($bean_array = $node->{$zone}[LANGUAGE_NONE]) {
foreach ($bean_array as $item) {
$bean = bean_load($item['target_id']);
if (!empty($bean->title)) {
$result_array[] = $bean->title;
}
$fields = field_info_instances('bean', $bean->type);
if (!empty($fields)) {
foreach ($fields as $bean_field_name => $field) {
$field_info = field_info_field($bean_field_name);
if (in_array($field_info['type'], array('text_long', 'text'))
&& !empty($bean->$bean_field_name[LANGUAGE_NONE])) {
foreach ($bean->{$bean_field_name}[LANGUAGE_NONE] as $item) {
if (!in_array($item['value'], $result_array)) {
$result_array[] = $item['value'];
}
}
}
if ($field_info['type'] == 'field_collection' && !empty($bean->{$bean_field_name}[LANGUAGE_NONE])) {
$field_collection = entity_load('field_collection_item', array($field['id']));
$field_collection = reset($field_collection);
$field_collection_fields = field_info_instances('field_collection_item', $bean_field_name);
foreach ($field_collection_fields as $field_collection_field_name => $field_collection_field) {
$field_collection_info = field_info_field($field_collection_field_name);
if (in_array($field_collection_info['type'], array('text_long', 'text'))
&& !empty($field_collection->{$field_collection_field_name}[LANGUAGE_NONE])) {
foreach ($field_collection->{$field_collection_field_name}[LANGUAGE_NONE] as $item) {
if (!in_array($item['value'], $result_array)) {
$result_array[] = $item['value'];
}
}
}
}
}
}
}
}
}
}
return $result_array;
}