inline_media_form-1.0.0-beta1/src/FieldSummarizer/FileFieldSummarizer.php

src/FieldSummarizer/FileFieldSummarizer.php
<?php

namespace Drupal\inline_media_form\FieldSummarizer;

use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Language\LanguageInterface;
use Drupal\file\Plugin\Field\FieldType\FileFieldItemList;

/**
 * Summarizer for file and image fields.
 */
class FileFieldSummarizer extends FieldSummarizerBase {

  /**
   * {@inheritdoc}
   */
  public static function canHandle(FieldDefinitionInterface $field_definition): bool {
    $field_type = $field_definition->getType();

    return in_array($field_type, ['image', 'file']);
  }

  /**
   * {@inheritdoc}
   */
  public function summarize(FieldItemListInterface $field_values,
                            string $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED): string {
    assert($field_values instanceof FileFieldItemList);

    $summary_items = [];

    foreach ($field_values as $file_value) {
      $text = '';

      $candidate_values = [
        $file_value->description ?? NULL,
        $file_value->title ?? NULL,
        $file_value->alt ?? NULL,
      ];

      if (isset($file_value->entity)) {
        $candidate_values[] = $file_value->entity->getFileName();
      }

      foreach ($candidate_values as $value) {
        if (!empty($value)) {
          $text = $value;
          break;
        }
      }

      if (!empty($text)) {
        $summary_items[] = $text;
      }
    }

    $summary = implode(', ', $summary_items);

    return $this->shortenSummary(trim($summary));
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc