sites_group_overrides-1.x-dev/modules/sites_group_overrides_paragraphs/src/EventSubscriber/FieldOverride.php
modules/sites_group_overrides_paragraphs/src/EventSubscriber/FieldOverride.php
<?php
declare(strict_types=1);
namespace Drupal\sites_group_overrides_paragraphs\EventSubscriber;
use Drupal\sites_group_overrides\Event\FieldOverrideEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Copy paragraphs on override.
*/
final class FieldOverride implements EventSubscriberInterface {
/**
* Copy paragraphs on override.
*
* @param \Drupal\sites_group_overrides\Event\FieldOverrideEvent $event
* The field override Event.
*/
public function onFieldOverride(FieldOverrideEvent $event) {
$entity = $event->getEntity();
$entity_field_name = $event->getFieldName();
$value = [];
if ($entity->get($entity_field_name)->getFieldDefinition()->getType() == 'entity_reference_revisions') {
/** @var \Drupal\paragraphs\ParagraphInterface[] $paragraphs */
$paragraphs = $entity->get($entity_field_name)->referencedEntities();
foreach ($paragraphs as $paragraph) {
$new_paragraph = $paragraph->createDuplicate();
$new_paragraph->save();
$value[] = $new_paragraph;
}
$event->setValue($value);
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents(): array {
return [
FieldOverrideEvent::EVENT_NAME => ['onFieldOverride'],
];
}
}
