commerce-8.x-2.8/modules/log/src/EventSubscriber/CartEventSubscriber.php
modules/log/src/EventSubscriber/CartEventSubscriber.php
<?php
namespace Drupal\commerce_log\EventSubscriber;
use Drupal\commerce_cart\Event\CartEntityAddEvent;
use Drupal\commerce_cart\Event\CartEvents;
use Drupal\commerce_cart\Event\CartOrderItemRemoveEvent;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CartEventSubscriber implements EventSubscriberInterface {
/**
* The log storage.
*
* @var \Drupal\commerce_log\LogStorageInterface
*/
protected $logStorage;
/**
* Constructs a new CartEventSubscriber object.
*
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
*/
public function __construct(EntityTypeManagerInterface $entity_type_manager) {
$this->logStorage = $entity_type_manager->getStorage('commerce_log');
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events = [
CartEvents::CART_ENTITY_ADD => ['onCartEntityAdd', -100],
CartEvents::CART_ORDER_ITEM_REMOVE => ['onCartOrderItemRemove', -100],
];
return $events;
}
/**
* Creates a log when an entity has been added to the cart.
*
* @param \Drupal\commerce_cart\Event\CartEntityAddEvent $event
* The cart event.
*/
public function onCartEntityAdd(CartEntityAddEvent $event) {
$cart = $event->getCart();
$this->logStorage->generate($cart, 'cart_entity_added', [
'purchased_entity_label' => $event->getOrderItem()->label(),
])->save();
}
/**
* Creates a log when an order item has been removed from the cart.
*
* @param \Drupal\commerce_cart\Event\CartOrderItemRemoveEvent $event
* The cart event.
*/
public function onCartOrderItemRemove(CartOrderItemRemoveEvent $event) {
$cart = $event->getCart();
$this->logStorage->generate($cart, 'cart_item_removed', [
'purchased_entity_label' => $event->getOrderItem()->label(),
])->save();
}
}
