-
Notifications
You must be signed in to change notification settings - Fork 252
Expand file tree
/
Copy pathCartEventSubscriber.php
More file actions
88 lines (78 loc) · 2.8 KB
/
CartEventSubscriber.php
File metadata and controls
88 lines (78 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?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\commerce_cart\Event\CartOrderItemUpdateEvent;
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],
CartEvents::CART_ORDER_ITEM_UPDATE => ['onCartOrderItemUpdate', -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();
$purchased_entity = $event->getOrderItem()->getPurchasedEntity();
$this->logStorage->generate($cart, 'cart_entity_added', [
'purchased_entity_label' => $purchased_entity->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();
$order_item = $event->getOrderItem();
$this->logStorage->generate($cart, 'cart_item_removed', [
'purchased_entity_label' => $order_item->getPurchasedEntity()->label(),
])->save();
}
/**
* Creates a log when a quantity is updated.
*
* @param \Drupal\commerce_cart\Event\CartOrderItemUpdateEvent $event
* The transition event.
*/
public function onCartOrderItemUpdate(CartOrderItemUpdateEvent $event) {
$cart = $event->getCart();
$order_item = $event->getOrderItem();
$original_order_item = $event->getOriginalOrderItem();
$this->logStorage->generate($cart, 'cart_item_quantity_changed', [
'purchased_entity_label' => $order_item->getPurchasedEntity()->label(),
'original_quantity' => $original_order_item->getQuantity(),
'quantity' => $order_item->getQuantity(),
])->save();
}
}