You are here

public function TextFieldEmbedBase::getTargetEntities in Group Media 8.2

1 call to TextFieldEmbedBase::getTargetEntities()
TextFieldEmbedBase::process in src/Plugin/MediaFinder/TextFieldEmbedBase.php
Search for the attached media entities.

File

src/Plugin/MediaFinder/TextFieldEmbedBase.php, line 50

Class

TextFieldEmbedBase
Class TextFieldEmbedBase.

Namespace

Drupal\groupmedia\Plugin\MediaFinder

Code

public function getTargetEntities(FieldItemInterface $item) {
  $item_value = $item
    ->getValue();
  if (empty($item_value['value'])) {
    return [];
  }
  $text = $item_value['value'];
  if ($item
    ->getFieldDefinition()
    ->getType() === 'text_with_summary') {
    $text .= $item_value['summary'];
  }
  $entities_in_text = $this
    ->parseEntitiesFromText($text);
  $valid_entities = [];
  foreach ($entities_in_text as $uuid) {

    // Check if the target entity exists since text fields are not
    // automatically updated when an entity is removed.

    /** @var \Drupal\media\MediaInterface $target_entity */
    if ($target_entity = $this->entityRepository
      ->loadEntityByUuid('media', $uuid)) {
      if ($target_entity && $this
        ->shouldBeAdded($target_entity, $item
        ->getEntity(), $item
        ->getFieldDefinition()
        ->getName())) {
        $valid_entities[$target_entity
          ->id()] = $target_entity;
      }
    }
  }
  return $valid_entities;
}