localgov_microsites_group-4.1.0/src/EventSubscriber/ReplicateGroupContent.php

src/EventSubscriber/ReplicateGroupContent.php
<?php

namespace Drupal\localgov_microsites_group\EventSubscriber;

use Drupal\replicate\Events\ReplicateEntityFieldEvent;
use Drupal\replicate\Events\ReplicatorEvents;
use Drupal\replicate\Replicator;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * Replicator Event subscriber.
 */
class ReplicateGroupContent implements EventSubscriberInterface {

  /**
   * The entity replicator service.
   *
   * @var \Drupal\replicate\Replicator
   */
  protected $replicator;

  /**
   * Constructs a ReplicatorGroupContent event subscriber.
   *
   * @param \Drupal\replicate\Replicator $replicator
   *   The entity replicator service.
   */
  public function __construct(Replicator $replicator) {
    $this->replicator = $replicator;
  }

  /**
   * Replicate media attached to an entity reference field.
   *
   * @param \Drupal\replicate\Events\ReplicateEntityFieldEvent $event
   *   The event we're working on.
   */
  public function onEntityReferenceClone(ReplicateEntityFieldEvent $event) {
    $field_item_list = $event->getFieldItemList();
    if ($field_item_list->getItemDefinition()->getSetting('target_type') == 'media') {
      foreach ($field_item_list as $delta => $field_item) {
        $field_item_list->set($delta, $this->replicator->replicateEntity($field_item->entity));
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    $events[ReplicatorEvents::replicateEntityField('entity_reference')][] = 'onEntityReferenceClone';
    return $events;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc