You are here

public function AvatarKitEntityField::getAvatar in Avatar Kit 8.2

File

src/Plugin/Avatars/Service/AvatarKitEntityField.php, line 32

Class

AvatarKitEntityField
Gets avatar from a field in the same entity.

Namespace

Drupal\avatars\Plugin\Avatars\Service

Code

public function getAvatar(AvatarIdentifierInterface $identifier) : ?string {
  if (!$identifier instanceof EntityAvatarIdentifierInterface) {

    // Identifier must have an entity.
    return NULL;
  }
  $entity = $identifier
    ->getEntity();
  $field = $this->configuration['field'];
  if ($field) {
    [
      $entity_type,
      $bundle,
      $fieldName,
    ] = explode('.', $field);
    if ($entity_type == $entity
      ->getEntityTypeId() && $bundle == $entity
      ->bundle()) {

      /** @var \Drupal\file\Plugin\Field\FieldType\FileFieldItemList $field_list */
      $field_list = $entity->{$fieldName};

      /** @var \Drupal\file\Plugin\Field\FieldType\FileItem $item */
      $item = $field_list
        ->first();

      /** @var \Drupal\file\FileInterface $file */
      $file = $field_list->entity;
      if ($file) {
        $uri = $file
          ->getFileUri();
        return $uri;
      }
      return NULL;
    }
  }

  // Entity does not map to this plugin.
  return NULL;
}