3 namespace Drupal\entity_reference_revisions\Plugin\diff\Field;
5 use Drupal\diff\FieldDiffBuilderBase;
6 use Drupal\Core\Field\FieldItemListInterface;
7 use Drupal\diff\FieldReferenceInterface;
10 * This plugins offers the possibility to compare ERR fields.
13 * id = "entity_reference_revisions_field_diff_builder",
14 * label = @Translation("Field Diff for Paragraphs"),
16 * "entity_reference_revisions"
20 class EntityReferenceRevisionsFieldDiffBuilder extends FieldDiffBuilderBase implements FieldReferenceInterface {
25 public function build(FieldItemListInterface $field_items) {
26 $result_text = array();
28 /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item */
29 foreach ($field_items as $field_key => $field_item) {
30 if (!$field_item->isEmpty() && $field_item->entity) {
31 $parsed_text = $this->entityParser->parseEntity($field_item->entity);
32 if (is_array($parsed_text)) {
33 foreach ($parsed_text as $field_id => $field) {
34 foreach ($field as $id => $text) {
35 $result_text[$item_counter + $id] = $text;
37 $item_counter = $item_counter + $id + 1;
48 public function getEntitiesToDiff(FieldItemListInterface $field_items) {
49 /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item */
51 foreach ($field_items as $field_key => $field_item) {
52 if (!$field_item->isEmpty() && $field_item->entity) {
53 $entities[$field_key] = $field_item->entity;