Added the Search API Synonym module to deal specifically with licence and license...
[yaffs-website] / web / modules / contrib / search_api_synonym / src / SynonymListBuilder.php
diff --git a/web/modules/contrib/search_api_synonym/src/SynonymListBuilder.php b/web/modules/contrib/search_api_synonym/src/SynonymListBuilder.php
new file mode 100644 (file)
index 0000000..99f14a1
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+
+namespace Drupal\search_api_synonym;
+
+use Drupal\Core\Datetime\DateFormatterInterface;
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Entity\EntityListBuilder;
+use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Core\Entity\EntityTypeInterface;
+use Drupal\Core\Language\LanguageInterface;
+use Drupal\Core\Link;
+use Drupal\Core\Url;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Defines a class to build a listing of Synonym entities.
+ *
+ * @ingroup search_api_synonym
+ */
+class SynonymListBuilder extends EntityListBuilder {
+
+  /**
+   * The date formatter service.
+   *
+   * @var \Drupal\Core\Datetime\DateFormatterInterface
+   */
+  protected $dateFormatter;
+
+  /**
+   * Constructs a new NodeListBuilder object.
+   *
+   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
+   *   The entity type definition.
+   * @param \Drupal\Core\Entity\EntityStorageInterface $storage
+   *   The entity storage class.
+   * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
+   *   The date formatter service.
+   */
+  public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, DateFormatterInterface $date_formatter) {
+    parent::__construct($entity_type, $storage);
+
+    $this->dateFormatter = $date_formatter;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
+    return new static(
+      $entity_type,
+      $container->get('entity.manager')->getStorage($entity_type->id()),
+      $container->get('date.formatter')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildHeader() {
+    $header = [
+      'word' => $this->t('Word'),
+      'synonyms' => $this->t('Synonyms'),
+      'author' => [
+        'data' => $this->t('Author'),
+        'class' => [RESPONSIVE_PRIORITY_LOW],
+      ],
+      'status' => [
+        'data' => $this->t('Status'),
+        'class' => [RESPONSIVE_PRIORITY_LOW],
+      ],
+      'changed' => [
+        'data' => $this->t('Updated'),
+        'class' => [RESPONSIVE_PRIORITY_LOW],
+      ],
+    ];
+    if (\Drupal::languageManager()->isMultilingual()) {
+      $header['language_name'] = [
+        'data' => $this->t('Language'),
+        'class' => [RESPONSIVE_PRIORITY_LOW],
+      ];
+    }
+
+    return $header + parent::buildHeader();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildRow(EntityInterface $entity) {
+    $langcode = $entity->language()->getId();
+
+    /* @var $entity \Drupal\search_api_synonym\Entity\Synonym */
+    $row['word'] = $this->buildEditLink($entity->label(), $entity);
+    $row['synonyms'] = $this->buildEditLink($entity->getSynonyms(), $entity);
+    $row['author']['data'] = [
+      '#theme' => 'username',
+      '#account' => $entity->getOwner(),
+    ];
+    $row['status'] = $entity->isActive() ? $this->t('active') : $this->t('inactive');
+    $row['changed'] = $this->dateFormatter->format($entity->getChangedTime(), 'short');
+    $language_manager = \Drupal::languageManager();
+    if ($language_manager->isMultilingual()) {
+      $row['language_name'] = $language_manager->getLanguageName($langcode);
+    }
+
+    return $row + parent::buildRow($entity);
+  }
+
+  /**
+   * Build the edit link object.
+   *
+   * @param string $label
+   *   The label used in the link
+   *
+   * @param \Drupal\search_api_synonym\Entity\Synonym $entity
+   *   The synonym entity object.
+   *
+   * @return \Drupal\Core\Link
+   *   The build link object.
+   */
+  private function buildEditLink($label, $entity) {
+    return new Link(
+      $label,
+      new Url(
+        'entity.search_api_synonym.edit_form', [
+          'search_api_synonym' => $entity->id(),
+        ]
+      )
+    );
+  }
+
+}