123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Wishlist\Observer;
- use Magento\Checkout\Model\Session as CheckoutSession;
- use Magento\Customer\Model\Session as CustomerSession;
- use Magento\Framework\Event\Observer;
- use Magento\Framework\Event\ObserverInterface;
- use Magento\Framework\Message\ManagerInterface;
- use Magento\Wishlist\Model\WishlistFactory;
- /**
- * Class AddToCart
- * @deprecated 101.0.0
- * @package Magento\Wishlist\Observer
- */
- class AddToCart implements ObserverInterface
- {
- /**
- * @var \Magento\Checkout\Model\Session
- */
- protected $checkoutSession;
- /**
- * @var \Magento\Customer\Model\Session
- */
- protected $customerSession;
- /**
- * @var \Magento\Wishlist\Model\WishlistFactory
- */
- protected $wishlistFactory;
- /**
- * @var \Magento\Framework\Message\ManagerInterface
- */
- protected $messageManager;
- /**
- * @param CheckoutSession $checkoutSession
- * @param CustomerSession $customerSession
- * @param WishlistFactory $wishlistFactory
- * @param ManagerInterface $messageManager
- */
- public function __construct(
- CheckoutSession $checkoutSession,
- CustomerSession $customerSession,
- WishlistFactory $wishlistFactory,
- ManagerInterface $messageManager
- ) {
- $this->checkoutSession = $checkoutSession;
- $this->customerSession = $customerSession;
- $this->wishlistFactory = $wishlistFactory;
- $this->messageManager = $messageManager;
- }
- /**
- * @param Observer $observer
- * @return void
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- */
- public function execute(Observer $observer)
- {
- $request = $observer->getEvent()->getRequest();
- $sharedWishlist = $this->checkoutSession->getSharedWishlist();
- $messages = $this->checkoutSession->getWishlistPendingMessages();
- $urls = $this->checkoutSession->getWishlistPendingUrls();
- $wishlistIds = $this->checkoutSession->getWishlistIds();
- $singleWishlistId = $this->checkoutSession->getSingleWishlistId();
- if ($singleWishlistId) {
- $wishlistIds = [$singleWishlistId];
- }
- if (is_array($wishlistIds) && count($wishlistIds) && $request->getParam('wishlist_next')) {
- $wishlistId = array_shift($wishlistIds);
- if ($this->customerSession->isLoggedIn()) {
- $wishlist = $this->wishlistFactory->create()
- ->loadByCustomerId($this->customerSession->getCustomerId(), true);
- } elseif ($sharedWishlist) {
- $wishlist = $this->wishlistFactory->create()->loadByCode($sharedWishlist);
- } else {
- return;
- }
- $wishlists = $wishlist->getItemCollection()->load();
- foreach ($wishlists as $wishlistItem) {
- if ($wishlistItem->getId() == $wishlistId) {
- $wishlistItem->delete();
- }
- }
- $this->checkoutSession->setWishlistIds($wishlistIds);
- $this->checkoutSession->setSingleWishlistId(null);
- }
- if ($request->getParam('wishlist_next') && count($urls)) {
- $url = array_shift($urls);
- $message = array_shift($messages);
- $this->checkoutSession->setWishlistPendingUrls($urls);
- $this->checkoutSession->setWishlistPendingMessages($messages);
- $this->messageManager->addError($message);
- $observer->getEvent()->getResponse()->setRedirect($url);
- $this->checkoutSession->setNoCartRedirect(true);
- }
- }
- }
|