![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/app/code/Kaliop/AddToCartModal/Plugin/ |
<?php /** * Copyright (c) 2020 Kaliop Digital Commerce (https://digitalcommerce.kaliop.com) All Rights Reserved. * https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * <[email protected]> */ declare(strict_types=1); namespace Kaliop\AddToCartModal\Plugin; use Kaliop\AddToCartModal\Model\ModalRenderer; use Magento\Checkout\Controller\Cart\Add; use Magento\Framework\App\Request\Http as RequestHttp; use Magento\Framework\App\Response\Http as ResponseHttp; use Magento\Framework\Message\ManagerInterface; use Magento\Framework\Message\MessageInterface; use Magento\Framework\Serialize\SerializerInterface; class AddToCartResponseModifier { /** * @var SerializerInterface */ private $serializer; /** * @var ModalRenderer */ private $modalRenderer; /** * @var ManagerInterface */ private $messageManager; /** * AddToCartResponseModifier constructor. * @param SerializerInterface $serializer * @param ModalRenderer $modalRenderer * @param ManagerInterface $messageManager */ public function __construct( SerializerInterface $serializer, ModalRenderer $modalRenderer, ManagerInterface $messageManager ) { $this->serializer = $serializer; $this->modalRenderer = $modalRenderer; $this->messageManager = $messageManager; } /** * @param Add $subject * @param $result * @return mixed */ public function afterExecute( Add $subject, $result ) { /** @var RequestHttp $request */ $request = $subject->getRequest(); /** @var ResponseHttp */ $response = $subject->getResponse(); if (!$request->isAjax() || !$response instanceof ResponseHttp ) { return $result; } $message = $this->messageManager->getMessages(false)->getLastAddedMessage(); if ($message) { if ($message->getType() !== MessageInterface::TYPE_SUCCESS) { return $result; } /** Clear success message, to prevent redundant display with modal */ $this->messageManager->getMessages(true); $content = []; if ($response->getContent()) { $content = $this->serializer->unserialize($response->getContent()); } $content['modal_content'] = $this->modalRenderer->getContent(); $response->setContent($this->serializer->serialize($content)); } return $result; } }