You are here

public function CustomEntityField::getItems in CiviCRM Entity 8.3

Gets an array of items for the field.

Parameters

\Drupal\views\ResultRow $values: The result row object containing the values.

Return value

array An array of items for the field.

Overrides EntityField::getItems

File

src/Plugin/views/field/CustomEntityField.php, line 166

Class

CustomEntityField
A field that displays entity field data for custom fields.

Namespace

Drupal\civicrm_entity\Plugin\views\field

Code

public function getItems(ResultRow $values) {
  $display = [
    'type' => $this->options['type'],
    'settings' => $this->options['settings'],
    'label' => 'hidden',
  ];
  if (($entity = $this
    ->getEntity($values)) && isset($entity->{$this->definition['field_name']})) {
    $entity = $this
      ->createEntity($entity);
    if (isset($this->aliases['id']) && isset($values->{$this->aliases['id']})) {
      $values->delta = $this
        ->getDelta($values->{$this->aliases['id']});
    }
    $build_list = $entity->{$this->definition['field_name']}
      ->view($display);
  }
  else {
    $build_list = NULL;
  }
  if (!$build_list) {
    return [];
  }
  if ($this->options['field_api_classes']) {
    return [
      [
        'rendered' => $this->renderer
          ->render($build_list),
      ],
    ];
  }
  $items = [];
  $bubbleable = BubbleableMetadata::createFromRenderArray($build_list);
  foreach (Element::children($build_list) as $delta) {
    BubbleableMetadata::createFromRenderArray($build_list[$delta])
      ->merge($bubbleable)
      ->applyTo($build_list[$delta]);
    $items[$delta] = [
      'rendered' => $build_list[$delta],
      'raw' => $build_list['#items'][$delta],
    ];
  }
  return $items;
}