Added Entity and Entity Reference Revisions which got dropped somewhere along the...
[yaffs-website] / web / modules / contrib / entity_reference_revisions / src / Plugin / diff / Field / EntityReferenceRevisionsFieldDiffBuilder.php
diff --git a/web/modules/contrib/entity_reference_revisions/src/Plugin/diff/Field/EntityReferenceRevisionsFieldDiffBuilder.php b/web/modules/contrib/entity_reference_revisions/src/Plugin/diff/Field/EntityReferenceRevisionsFieldDiffBuilder.php
new file mode 100644 (file)
index 0000000..0df0507
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+namespace Drupal\entity_reference_revisions\Plugin\diff\Field;
+
+use Drupal\diff\FieldDiffBuilderBase;
+use Drupal\Core\Field\FieldItemListInterface;
+use Drupal\diff\FieldReferenceInterface;
+
+/**
+ * This plugins offers the possibility to compare ERR fields.
+ *
+ * @FieldDiffBuilder(
+ *   id = "entity_reference_revisions_field_diff_builder",
+ *   label = @Translation("Field Diff for Paragraphs"),
+ *   field_types = {
+ *     "entity_reference_revisions"
+ *   },
+ * )
+ */
+class EntityReferenceRevisionsFieldDiffBuilder extends FieldDiffBuilderBase implements FieldReferenceInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function build(FieldItemListInterface $field_items) {
+    $result_text = array();
+    $item_counter = 0;
+    /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item */
+    foreach ($field_items as $field_key => $field_item) {
+      if (!$field_item->isEmpty() && $field_item->entity) {
+        $parsed_text = $this->entityParser->parseEntity($field_item->entity);
+        if (is_array($parsed_text)) {
+          foreach ($parsed_text as $field_id => $field) {
+            foreach ($field as $id => $text) {
+              $result_text[$item_counter + $id] = $text;
+            }
+            $item_counter = $item_counter + $id + 1;
+          }
+        }
+      }
+    }
+    return $result_text;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getEntitiesToDiff(FieldItemListInterface $field_items) {
+    /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item */
+    $entities = [];
+    foreach ($field_items as $field_key => $field_item) {
+      if (!$field_item->isEmpty() && $field_item->entity) {
+        $entities[$field_key] = $field_item->entity;
+      }
+    }
+    return $entities;
+  }
+
+}