google_tag-8.x-1.x-dev/src/EventSubscriber/CommerceCartSubscriber.php
src/EventSubscriber/CommerceCartSubscriber.php
<?php declare(strict_types=1); namespace Drupal\google_tag\EventSubscriber; use Drupal\commerce_cart\Event\CartEvents; use Drupal\commerce_cart\Event\CartOrderItemAddEvent; use Drupal\commerce_cart\Event\CartOrderItemRemoveEvent; use Drupal\google_tag\EventCollectorInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * Fires events on item addition/removal to/from cart. */ final class CommerceCartSubscriber implements EventSubscriberInterface { /** * The Event Collector. * * @var \Drupal\google_tag\EventCollectorInterface */ private EventCollectorInterface $eventCollector; /** * CommerceCartSubscriber constructor. * * @param \Drupal\google_tag\EventCollectorInterface $eventCollector * Collector. */ public function __construct(EventCollectorInterface $eventCollector) { $this->eventCollector = $eventCollector; } /** * {@inheritDoc} */ public static function getSubscribedEvents(): array { return [ CartEvents::CART_ORDER_ITEM_ADD => 'onAdd', CartEvents::CART_ORDER_ITEM_REMOVE => 'onRemove', ]; } /** * Fires event on item addition in cart. * * @param \Drupal\commerce_cart\Event\CartOrderItemAddEvent $cart_event * Event object. */ public function onAdd(CartOrderItemAddEvent $cart_event): void { $this->eventCollector->addDelayedEvent( 'commerce_add_to_cart', ['item' => $cart_event->getOrderItem()] ); } /** * Fires event on item deletion from cart. * * @param \Drupal\commerce_cart\Event\CartOrderItemRemoveEvent $cart_event * Event object. */ public function onRemove(CartOrderItemRemoveEvent $cart_event): void { $this->eventCollector->addDelayedEvent( 'commerce_remove_from_cart', ['item' => $cart_event->getOrderItem()] ); } }