You are here

function textformatter_contrib_entityreference_field_create_list in Text list formatter 8.2

Same name and namespace in other branches
  1. 7 textformatter_contrib/textformatter_contrib.module \textformatter_contrib_entityreference_field_create_list()

Entity reference field listing callback.

1 string reference to 'textformatter_contrib_entityreference_field_create_list'
textformatter_contrib_textformatter_field_info in textformatter_contrib/textformatter_contrib.module
Implements hook_textformatter_field_info().

File

textformatter_contrib/textformatter_contrib.module, line 60
Textformatter support for contributed module fields.

Code

function textformatter_contrib_entityreference_field_create_list($entity_type, $entity, $field, $instance, $langcode, $items, $display) {

  // Load the target type for the field instance.
  $target_type = $field['settings']['target_type'];
  $contrib_settings = $display['settings']['textformatter_contrib'];
  $list_items = $target_ids = $target_entities = array();

  // Get an array of entity ids.
  foreach ($items as $delta => $item) {
    $target_ids[] = $item['target_id'];
  }

  // Load them all.
  if ($target_ids) {
    $target_entities = entity_load($target_type, $target_ids);
  }

  // Create a list item for each entity.
  foreach ($target_entities as $id => $entity) {

    // Only add entities to the list that the user will have access to.
    if (isset($item['target_id']) && entity_access('view', $target_type, $entity)) {
      $label = entity_label($target_type, $entity);
      if ($contrib_settings['entityreference_link']) {
        $uri = entity_uri($target_type, $entity);
        $target_type_class = drupal_html_class($target_type);
        $classes = array(
          $target_type_class,
          $target_type_class . '-' . $id,
          'entityreference',
        );
        $list_items[$id] = l($label, $uri['path'], array(
          'attributes' => array(
            'class' => $classes,
          ),
        ));
      }
      else {
        $list_items[$id] = field_filter_xss($label);
      }
    }
  }
  return $list_items;
}