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

src/FieldSummarizer/TextFieldSummarizer.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\Core\Render\Markup;

/**
 * Summarizer for text fields.
 */
class TextFieldSummarizer extends FieldSummarizerBase {

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

    $text_types = [
      'text_with_summary',
      'text',
      'text_long',
      'list_string',
      'string',
    ];

    $excluded_text_types = [
      'parent_id',
      'parent_type',
      'parent_field_name',
    ];

    $is_text     = in_array($field_type, $text_types);
    $is_excluded = in_array($field_name, $excluded_text_types);

    return ($is_text && !$is_excluded);
  }

  /**
   * {@inheritdoc}
   */
  public function summarize(FieldItemListInterface $field_values,
                            string $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED): string {
    $summary_items = [];

    foreach ($field_values as $field_value) {
      if (isset($field_value)) {
        $text = $field_value->value;

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

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

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

}

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

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