EntityReferenceFormatterBase.php in Entity reference 8
File
lib/Drupal/entityreference/Plugin/field/formatter/EntityReferenceFormatterBase.php
View source
<?php
namespace Drupal\entityreference\Plugin\field\formatter;
use Drupal\Core\Annotation\Plugin;
use Drupal\Core\Annotation\Translation;
use Drupal\Core\Entity\EntityInterface;
use Drupal\field\Plugin\Type\Formatter\FormatterBase;
abstract class EntityReferenceFormatterBase extends FormatterBase {
public function prepareView(array $entities, $langcode, array &$items) {
$target_ids = array();
foreach ($entities as $id => $entity) {
foreach ($items[$id] as $delta => $item) {
if (isset($item['target_id'])) {
$target_ids[] = $item['target_id'];
}
}
}
$target_type = $this->field['settings']['target_type'];
if ($target_ids) {
$target_entities = entity_load_multiple($target_type, $target_ids);
}
else {
$target_entities = array();
}
foreach ($entities as $id => $entity) {
foreach ($items[$id] as $delta => $item) {
$items[$id][$delta]['entity'] = $target_entities[$item['target_id']];
if (!isset($target_entities[$item['target_id']])) {
continue;
}
$entity = $target_entities[$item['target_id']];
$entity_access = $target_type == 'node' ? node_access('view', $entity) : TRUE;
if (!$entity_access) {
continue;
}
$items[$id][$delta]['access'] = TRUE;
}
}
}
public function viewElements(EntityInterface $entity, $langcode, array $items) {
foreach ($items as $delta => $item) {
if (empty($item['access'])) {
unset($items[$delta]);
}
}
return array();
}
}