| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Views integration for Entity Reference.
 
-  */
 
- /**
 
-  * Implements hook_field_views_data().
 
-  */
 
- function entityreference_field_views_data($field) {
 
-   $data = field_views_field_default_views_data($field);
 
-   $entity_info = entity_get_info($field['settings']['target_type']);
 
-   foreach ($data as $table_name => $table_data) {
 
-     if (isset($entity_info['base table'])) {
 
-       $entity = $entity_info['label'];
 
-       if ($entity == t('Node')) {
 
-         $entity = t('Content');
 
-       }
 
-       $field_name = $field['field_name'] . '_target_id';
 
-       $parameters = array('@entity' => $entity, '!field_name' => $field['field_name']);
 
-       $data[$table_name][$field_name]['relationship'] = array(
 
-         'handler' => 'views_handler_relationship',
 
-         'base' => $entity_info['base table'],
 
-         'base field' => $entity_info['entity keys']['id'],
 
-         'label' => t('@entity entity referenced from !field_name', $parameters),
 
-         'group' => t('Entity Reference'),
 
-         'title' => t('Referenced Entity'),
 
-         'help' => t('A bridge to the @entity entity that is referenced via !field_name', $parameters),
 
-       );
 
-     }
 
-   }
 
-   // Invoke the behaviors to allow them to change the properties.
 
-   foreach (entityreference_get_behavior_handlers($field) as $handler) {
 
-     $handler->views_data_alter($data, $field);
 
-   }
 
-   return $data;
 
- }
 
- /**
 
-  * Options callback for Views handler views_handler_filter_in_operator.
 
-  */
 
- function entityreference_views_handler_options_list($field_name) {
 
-   $field = field_info_field($field_name);
 
-   return entityreference_options_list($field);
 
- }
 
- /**
 
-  * Implements hook_field_views_data_views_data_alter().
 
-  *
 
-  * Views integration to provide reverse relationships on entityreference fields.
 
-  */
 
- function entityreference_field_views_data_views_data_alter(&$data, $field) {
 
-   foreach ($field['bundles'] as $entity_type => $bundles) {
 
-     $target_entity_info = entity_get_info($field['settings']['target_type']);
 
-     if (isset($target_entity_info['base table'])) {
 
-       $entity_info = entity_get_info($entity_type);
 
-       $entity = $entity_info['label'];
 
-       if ($entity == t('Node')) {
 
-         $entity = t('Content');
 
-       }
 
-       $target_entity = $target_entity_info['label'];
 
-       if ($target_entity == t('Node')) {
 
-         $target_entity = t('Content');
 
-       }
 
-       $pseudo_field_name = 'reverse_' . $field['field_name'] . '_' . $entity_type;
 
-       $replacements = array('@entity' => $entity, '@target_entity' => $target_entity, '!field_name' => $field['field_name']);
 
-       $data[$target_entity_info['base table']][$pseudo_field_name]['relationship'] = array(
 
-         'handler' => 'views_handler_relationship_entity_reverse',
 
-         'field_name' => $field['field_name'],
 
-         'field table' => _field_sql_storage_tablename($field),
 
-         'field field' => $field['field_name'] . '_target_id',
 
-         'base' => $entity_info['base table'],
 
-         'base field' => $entity_info['entity keys']['id'],
 
-         'label' => t('@entity referencing @target_entity from !field_name', $replacements),
 
-         'group' => t('Entity Reference'),
 
-         'title' => t('Referencing entity'),
 
-         'help' => t('A bridge to the @entity entity that is referencing @target_entity via !field_name', $replacements),
 
-         'join_extra' => array(
 
-           0 => array(
 
-             'field' => 'entity_type',
 
-             'value' => $entity_type,
 
-           ),
 
-           1 => array(
 
-             'field' => 'deleted',
 
-             'value' => 0,
 
-             'numeric' => TRUE,
 
-           ),
 
-         ),
 
-       );
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Implements hook_views_plugins().
 
-  */
 
- function entityreference_views_plugins() {
 
-   $plugins = array(
 
-     'display' => array(
 
-       'entityreference' => array(
 
-         'title' => t('Entity Reference'),
 
-         'admin' => t('Entity Reference Source'),
 
-         'help' => 'Selects referenceable entities for an entity reference field',
 
-         'handler' => 'entityreference_plugin_display',
 
-         'uses hook menu' => FALSE,
 
-         'use ajax' => FALSE,
 
-         'use pager' => FALSE,
 
-         'accept attachments' => FALSE,
 
-         // Custom property, used with views_get_applicable_views() to retrieve
 
-         // all views with a 'Entity Reference' display.
 
-         'entityreference display' => TRUE,
 
-       ),
 
-     ),
 
-     'style' => array(
 
-       'entityreference_style' => array(
 
-         'title' => t('Entity Reference list'),
 
-         'help' => 'Returns results as a PHP array of labels and rendered rows.',
 
-         'handler' => 'entityreference_plugin_style',
 
-         'theme' => 'views_view_unformatted',
 
-         'uses row plugin' => TRUE,
 
-         'uses fields' => TRUE,
 
-         'uses options' => TRUE,
 
-         'type' => 'entityreference',
 
-         'even empty' => TRUE,
 
-       ),
 
-     ),
 
-     'row' => array(
 
-       'entityreference_fields' => array(
 
-         'title' => t('Inline fields'),
 
-         'help' => t('Displays the fields with an optional template.'),
 
-         'handler' => 'entityreference_plugin_row_fields',
 
-         'theme' => 'views_view_fields',
 
-         'theme path' => drupal_get_path('module', 'views') . '/theme',
 
-         'theme file' => 'theme.inc',
 
-         'uses fields' => TRUE,
 
-         'uses options' => TRUE,
 
-         'type' => 'entityreference',
 
-       ),
 
-     ),
 
-   );
 
-   return $plugins;
 
- }
 
 
  |