3 namespace Drupal\paragraphs\EventSubscriber;
5 use Drupal\replicate\Events\ReplicateEntityFieldEvent;
6 use Drupal\replicate\Events\ReplicatorEvents;
7 use Drupal\replicate\Replicator;
8 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
11 * Event subscriber that handles cloning through the Replicate module.
13 class ReplicateFieldSubscriber implements EventSubscriberInterface {
16 * The replicator service.
18 * @var \Drupal\replicate\Replicator
20 protected $replicator;
23 * ReplicateFieldSubscriber constructor.
25 * @param \Drupal\replicate\Replicator $replicator
26 * The replicator service.
28 public function __construct(Replicator $replicator) {
29 $this->replicator = $replicator;
33 * Replicates paragraphs when the parent entity is being replicated.
35 * @param \Drupal\replicate\Events\ReplicateEntityFieldEvent $event
37 public function onClone(ReplicateEntityFieldEvent $event) {
38 $field_item_list = $event->getFieldItemList();
39 if ($field_item_list->getItemDefinition()->getSetting('target_type') == 'paragraph') {
40 foreach ($field_item_list as $field_item) {
41 $field_item->entity = $this->replicator->replicateEntity($field_item->entity);
49 public static function getSubscribedEvents() {
50 $events[ReplicatorEvents::replicateEntityField('entity_reference_revisions')][] = 'onClone';