diff --git a/node_reference/node_reference.module b/node_reference/node_reference.module index 46d1e13..55639ff 100644 --- a/node_reference/node_reference.module +++ b/node_reference/node_reference.module @@ -1040,6 +1040,34 @@ function node_reference_field_views_data($field) { } /** + * Implements hook_field_views_data_views_data_alter(). + */ +function node_reference_field_views_data_views_data_alter(&$data, $field) { + foreach ($field['bundles'] as $entity_type => $bundles) { + $entity_info = entity_get_info($entity_type); + $pseudo_field_name = 'reverse_' . $field['field_name'] . '_' . $entity_type; + + list($label, $all_labels) = field_views_field_label($field['field_name']); + $entity = $entity_info['label']; + if ($entity == t('Node')) { + $entity = t('Content'); + } + + $data['node'][$pseudo_field_name]['relationship'] = array( + 'title' => t('@entity using @field (reverse: @field_name)', array('@entity' => $entity, '@field' => $label, '@field_name' => $field['field_name'])), + 'help' => t('Directs to: @bundles', array('@bundles' => "$entity_type:". implode(", $entity_type:", $bundles))), + 'handler' => 'views_handler_relationship_entity_reverse', + 'field_name' => $field['field_name'], + 'field table' => _field_sql_storage_tablename($field), + 'field field' => $field['field_name'] . '_nid', + 'base' => $entity_info['base table'], + 'base field' => $entity_info['entity keys']['id'], + 'label' => t('!field_name', array('!field_name' => $field['field_name'])), + ); + } +} + +/** * Helper callback for the views_handler_filter_in_operator filter. * * @param $field_name diff --git a/user_reference/user_reference.module b/user_reference/user_reference.module index 9340231..df7c060 100644 --- a/user_reference/user_reference.module +++ b/user_reference/user_reference.module @@ -878,6 +878,34 @@ function user_reference_field_views_data($field) { } /** + * Implements hook_field_views_data_views_data_alter(). + */ +function user_reference_field_views_data_views_data_alter(&$data, $field) { + foreach ($field['bundles'] as $entity_type => $bundles) { + $entity_info = entity_get_info($entity_type); + $pseudo_field_name = 'reverse_' . $field['field_name'] . '_' . $entity_type; + + list($label, $all_labels) = field_views_field_label($field['field_name']); + $entity = $entity_info['label']; + if ($entity == t('Node')) { + $entity = t('Content'); + } + + $data['users'][$pseudo_field_name]['relationship'] = array( + 'title' => t('@entity using @field (reverse: @field_name)', array('@entity' => $entity, '@field' => $label, '@field_name' => $field['field_name'])), + 'help' => t('Directs to: @bundles', array('@bundles' => "$entity_type:". implode(", $entity_type:", $bundles))), + 'handler' => 'views_handler_relationship_entity_reverse', + 'field_name' => $field['field_name'], + 'field table' => _field_sql_storage_tablename($field), + 'field field' => $field['field_name'] . '_uid', + 'base' => $entity_info['base table'], + 'base field' => $entity_info['entity keys']['id'], + 'label' => t('!field_name', array('!field_name' => $field['field_name'])), + ); + } +} + +/** * Helper callback for the views_handler_filter_in_operator filter. * * @param $field_name