annotate sites/all/modules/entityreference/views/entityreference.views.inc @ 11:b0ee71395280

deleted .DS_Store files
author danieleb <danielebarchiesi@me.com>
date Mon, 28 Oct 2013 16:12:13 +0000
parents ce11bbd8f642
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * @file
danielebarchiesi@4 5 * Views integration for Entity Reference.
danielebarchiesi@4 6 */
danielebarchiesi@4 7
danielebarchiesi@4 8 /**
danielebarchiesi@4 9 * Implements hook_field_views_data().
danielebarchiesi@4 10 */
danielebarchiesi@4 11 function entityreference_field_views_data($field) {
danielebarchiesi@4 12 $data = field_views_field_default_views_data($field);
danielebarchiesi@4 13 $entity_info = entity_get_info($field['settings']['target_type']);
danielebarchiesi@4 14 foreach ($data as $table_name => $table_data) {
danielebarchiesi@4 15 if (isset($entity_info['base table'])) {
danielebarchiesi@4 16 $entity = $entity_info['label'];
danielebarchiesi@4 17 if ($entity == t('Node')) {
danielebarchiesi@4 18 $entity = t('Content');
danielebarchiesi@4 19 }
danielebarchiesi@4 20
danielebarchiesi@4 21 $field_name = $field['field_name'] . '_target_id';
danielebarchiesi@4 22 $parameters = array('@entity' => $entity, '!field_name' => $field['field_name']);
danielebarchiesi@4 23 $data[$table_name][$field_name]['relationship'] = array(
danielebarchiesi@4 24 'handler' => 'views_handler_relationship',
danielebarchiesi@4 25 'base' => $entity_info['base table'],
danielebarchiesi@4 26 'base field' => $entity_info['entity keys']['id'],
danielebarchiesi@4 27 'label' => t('@entity entity referenced from !field_name', $parameters),
danielebarchiesi@4 28 'group' => t('Entity Reference'),
danielebarchiesi@4 29 'title' => t('Referenced Entity'),
danielebarchiesi@4 30 'help' => t('A bridge to the @entity entity that is referenced via !field_name', $parameters),
danielebarchiesi@4 31 );
danielebarchiesi@4 32 }
danielebarchiesi@4 33 }
danielebarchiesi@4 34
danielebarchiesi@4 35 // Invoke the behaviors to allow them to change the properties.
danielebarchiesi@4 36 foreach (entityreference_get_behavior_handlers($field) as $handler) {
danielebarchiesi@4 37 $handler->views_data_alter($data, $field);
danielebarchiesi@4 38 }
danielebarchiesi@4 39
danielebarchiesi@4 40 return $data;
danielebarchiesi@4 41 }
danielebarchiesi@4 42
danielebarchiesi@4 43 /**
danielebarchiesi@4 44 * Options callback for Views handler views_handler_filter_in_operator.
danielebarchiesi@4 45 */
danielebarchiesi@4 46 function entityreference_views_handler_options_list($field_name) {
danielebarchiesi@4 47 $field = field_info_field($field_name);
danielebarchiesi@4 48 return entityreference_options_list($field);
danielebarchiesi@4 49 }
danielebarchiesi@4 50
danielebarchiesi@4 51 /**
danielebarchiesi@4 52 * Implements hook_field_views_data_views_data_alter().
danielebarchiesi@4 53 *
danielebarchiesi@4 54 * Views integration to provide reverse relationships on entityreference fields.
danielebarchiesi@4 55 */
danielebarchiesi@4 56 function entityreference_field_views_data_views_data_alter(&$data, $field) {
danielebarchiesi@4 57 foreach ($field['bundles'] as $entity_type => $bundles) {
danielebarchiesi@4 58 $target_entity_info = entity_get_info($field['settings']['target_type']);
danielebarchiesi@4 59 if (isset($target_entity_info['base table'])) {
danielebarchiesi@4 60 $entity_info = entity_get_info($entity_type);
danielebarchiesi@4 61 $entity = $entity_info['label'];
danielebarchiesi@4 62 if ($entity == t('Node')) {
danielebarchiesi@4 63 $entity = t('Content');
danielebarchiesi@4 64 }
danielebarchiesi@4 65 $target_entity = $target_entity_info['label'];
danielebarchiesi@4 66 if ($target_entity == t('Node')) {
danielebarchiesi@4 67 $target_entity = t('Content');
danielebarchiesi@4 68 }
danielebarchiesi@4 69
danielebarchiesi@4 70 $pseudo_field_name = 'reverse_' . $field['field_name'] . '_' . $entity_type;
danielebarchiesi@4 71 $replacements = array('@entity' => $entity, '@target_entity' => $target_entity, '!field_name' => $field['field_name']);
danielebarchiesi@4 72 $data[$target_entity_info['base table']][$pseudo_field_name]['relationship'] = array(
danielebarchiesi@4 73 'handler' => 'views_handler_relationship_entity_reverse',
danielebarchiesi@4 74 'field_name' => $field['field_name'],
danielebarchiesi@4 75 'field table' => _field_sql_storage_tablename($field),
danielebarchiesi@4 76 'field field' => $field['field_name'] . '_target_id',
danielebarchiesi@4 77 'base' => $entity_info['base table'],
danielebarchiesi@4 78 'base field' => $entity_info['entity keys']['id'],
danielebarchiesi@4 79 'label' => t('@entity referencing @target_entity from !field_name', $replacements),
danielebarchiesi@4 80 'group' => t('Entity Reference'),
danielebarchiesi@4 81 'title' => t('Referencing entity'),
danielebarchiesi@4 82 'help' => t('A bridge to the @entity entity that is referencing @target_entity via !field_name', $replacements),
danielebarchiesi@4 83 );
danielebarchiesi@4 84 }
danielebarchiesi@4 85 }
danielebarchiesi@4 86 }
danielebarchiesi@4 87
danielebarchiesi@4 88 /**
danielebarchiesi@4 89 * Implements hook_views_plugins().
danielebarchiesi@4 90 */
danielebarchiesi@4 91 function entityreference_views_plugins() {
danielebarchiesi@4 92 $plugins = array(
danielebarchiesi@4 93 'display' => array(
danielebarchiesi@4 94 'entityreference' => array(
danielebarchiesi@4 95 'title' => t('Entity Reference'),
danielebarchiesi@4 96 'admin' => t('Entity Reference Source'),
danielebarchiesi@4 97 'help' => 'Selects referenceable entities for an entity reference field',
danielebarchiesi@4 98 'handler' => 'entityreference_plugin_display',
danielebarchiesi@4 99 'uses hook menu' => FALSE,
danielebarchiesi@4 100 'use ajax' => FALSE,
danielebarchiesi@4 101 'use pager' => FALSE,
danielebarchiesi@4 102 'accept attachments' => FALSE,
danielebarchiesi@4 103 // Custom property, used with views_get_applicable_views() to retrieve
danielebarchiesi@4 104 // all views with a 'Entity Reference' display.
danielebarchiesi@4 105 'entityreference display' => TRUE,
danielebarchiesi@4 106 ),
danielebarchiesi@4 107 ),
danielebarchiesi@4 108 'style' => array(
danielebarchiesi@4 109 'entityreference_style' => array(
danielebarchiesi@4 110 'title' => t('Entity Reference list'),
danielebarchiesi@4 111 'help' => 'Returns results as a PHP array of labels and rendered rows.',
danielebarchiesi@4 112 'handler' => 'entityreference_plugin_style',
danielebarchiesi@4 113 'theme' => 'views_view_unformatted',
danielebarchiesi@4 114 'uses row plugin' => TRUE,
danielebarchiesi@4 115 'uses fields' => TRUE,
danielebarchiesi@4 116 'uses options' => TRUE,
danielebarchiesi@4 117 'type' => 'entityreference',
danielebarchiesi@4 118 'even empty' => TRUE,
danielebarchiesi@4 119 ),
danielebarchiesi@4 120 ),
danielebarchiesi@4 121 'row' => array(
danielebarchiesi@4 122 'entityreference_fields' => array(
danielebarchiesi@4 123 'title' => t('Inline fields'),
danielebarchiesi@4 124 'help' => t('Displays the fields with an optional template.'),
danielebarchiesi@4 125 'handler' => 'entityreference_plugin_row_fields',
danielebarchiesi@4 126 'theme' => 'views_view_fields',
danielebarchiesi@4 127 'theme path' => drupal_get_path('module', 'views') . '/theme',
danielebarchiesi@4 128 'theme file' => 'theme.inc',
danielebarchiesi@4 129 'uses fields' => TRUE,
danielebarchiesi@4 130 'uses options' => TRUE,
danielebarchiesi@4 131 'type' => 'entityreference',
danielebarchiesi@4 132 ),
danielebarchiesi@4 133 ),
danielebarchiesi@4 134 );
danielebarchiesi@4 135 return $plugins;
danielebarchiesi@4 136 }