10 use Magento\Newsletter\Model\SubscriberFactory;
13 use Magento\Customer\Api\Data\CustomerExtensionInterface;
22 private $subscriberFactory;
27 private $extensionFactory;
32 private $subscriberResource;
37 private $customerSubscriptionStatus = [];
47 SubscriberFactory $subscriberFactory,
51 $this->subscriberFactory = $subscriberFactory;
52 $this->extensionFactory = $extensionFactory;
53 $this->subscriberResource = $subscriberResource;
75 $initialExtensionAttributes =
$result->getExtensionAttributes();
76 if ($initialExtensionAttributes ===
null) {
78 $initialExtensionAttributes = $this->extensionFactory->create(CustomerInterface::class);
79 $result->setExtensionAttributes($initialExtensionAttributes);
82 $newExtensionAttributes =
$customer->getExtensionAttributes();
83 if ($newExtensionAttributes
84 && $initialExtensionAttributes->getIsSubscribed() !== $newExtensionAttributes->getIsSubscribed()
86 if ($newExtensionAttributes->getIsSubscribed()) {
94 $this->customerSubscriptionStatus[$resultId] = $isSubscribed;
95 $initialExtensionAttributes->setIsSubscribed($isSubscribed);
108 public function aroundDeleteById(
109 CustomerRepository $subject,
110 callable $deleteCustomerById,
161 $isSubscribed = $this->isSubscribed(
$customer);
174 private function isSubscribed(CustomerInterface
$customer)
177 if (!isset($this->customerSubscriptionStatus[
$customerId])) {
183 return $this->customerSubscriptionStatus[
$customerId];
__construct(SubscriberFactory $subscriberFactory, ExtensionAttributesFactory $extensionFactory, Subscriber $subscriberResource)
afterDelete(CustomerRepository $subject, $result, CustomerInterface $customer)