sites_group_overrides-1.x-dev/modules/sites_group_overrides_paragraphs/src/EventSubscriber/SyncParagraphField.php
modules/sites_group_overrides_paragraphs/src/EventSubscriber/SyncParagraphField.php
<?php
declare(strict_types=1);
namespace Drupal\sites_group_overrides_paragraphs\EventSubscriber;
use Drupal\sites_group_overrides\Event\SyncFieldToEntity;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Pretend that paragraph overrides belong to the original entity.
*/
final class SyncParagraphField implements EventSubscriberInterface {
/**
* Set the parent of the entity to the entity instead of the relationship.
*
* @param \Drupal\sites_group_overrides\Event\SyncFieldToEntity $event
* The sync to entity event.
*/
public function onSync(SyncFieldToEntity $event) {
if ($event->getEntity()->get($event->getFieldName())->getFieldDefinition()->getType() != 'entity_reference_revisions') {
return;
}
foreach ($event->getEntity()->get($event->getFieldName())->referencedEntities() as $paragraph) {
$paragraph->parent_type = $event->getEntity()->getEntityTypeId();
$paragraph->parent_id = $event->getEntity()->id();
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents(): array {
return [
SyncFieldToEntity::EVENT_NAME => ['onSync'],
];
}
}
