AddToCart.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Wishlist\Observer;
  7. use Magento\Checkout\Model\Session as CheckoutSession;
  8. use Magento\Customer\Model\Session as CustomerSession;
  9. use Magento\Framework\Event\Observer;
  10. use Magento\Framework\Event\ObserverInterface;
  11. use Magento\Framework\Message\ManagerInterface;
  12. use Magento\Wishlist\Model\WishlistFactory;
  13. /**
  14. * Class AddToCart
  15. * @deprecated 101.0.0
  16. * @package Magento\Wishlist\Observer
  17. */
  18. class AddToCart implements ObserverInterface
  19. {
  20. /**
  21. * @var \Magento\Checkout\Model\Session
  22. */
  23. protected $checkoutSession;
  24. /**
  25. * @var \Magento\Customer\Model\Session
  26. */
  27. protected $customerSession;
  28. /**
  29. * @var \Magento\Wishlist\Model\WishlistFactory
  30. */
  31. protected $wishlistFactory;
  32. /**
  33. * @var \Magento\Framework\Message\ManagerInterface
  34. */
  35. protected $messageManager;
  36. /**
  37. * @param CheckoutSession $checkoutSession
  38. * @param CustomerSession $customerSession
  39. * @param WishlistFactory $wishlistFactory
  40. * @param ManagerInterface $messageManager
  41. */
  42. public function __construct(
  43. CheckoutSession $checkoutSession,
  44. CustomerSession $customerSession,
  45. WishlistFactory $wishlistFactory,
  46. ManagerInterface $messageManager
  47. ) {
  48. $this->checkoutSession = $checkoutSession;
  49. $this->customerSession = $customerSession;
  50. $this->wishlistFactory = $wishlistFactory;
  51. $this->messageManager = $messageManager;
  52. }
  53. /**
  54. * @param Observer $observer
  55. * @return void
  56. * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  57. */
  58. public function execute(Observer $observer)
  59. {
  60. $request = $observer->getEvent()->getRequest();
  61. $sharedWishlist = $this->checkoutSession->getSharedWishlist();
  62. $messages = $this->checkoutSession->getWishlistPendingMessages();
  63. $urls = $this->checkoutSession->getWishlistPendingUrls();
  64. $wishlistIds = $this->checkoutSession->getWishlistIds();
  65. $singleWishlistId = $this->checkoutSession->getSingleWishlistId();
  66. if ($singleWishlistId) {
  67. $wishlistIds = [$singleWishlistId];
  68. }
  69. if (is_array($wishlistIds) && count($wishlistIds) && $request->getParam('wishlist_next')) {
  70. $wishlistId = array_shift($wishlistIds);
  71. if ($this->customerSession->isLoggedIn()) {
  72. $wishlist = $this->wishlistFactory->create()
  73. ->loadByCustomerId($this->customerSession->getCustomerId(), true);
  74. } elseif ($sharedWishlist) {
  75. $wishlist = $this->wishlistFactory->create()->loadByCode($sharedWishlist);
  76. } else {
  77. return;
  78. }
  79. $wishlists = $wishlist->getItemCollection()->load();
  80. foreach ($wishlists as $wishlistItem) {
  81. if ($wishlistItem->getId() == $wishlistId) {
  82. $wishlistItem->delete();
  83. }
  84. }
  85. $this->checkoutSession->setWishlistIds($wishlistIds);
  86. $this->checkoutSession->setSingleWishlistId(null);
  87. }
  88. if ($request->getParam('wishlist_next') && count($urls)) {
  89. $url = array_shift($urls);
  90. $message = array_shift($messages);
  91. $this->checkoutSession->setWishlistPendingUrls($urls);
  92. $this->checkoutSession->setWishlistPendingMessages($messages);
  93. $this->messageManager->addError($message);
  94. $observer->getEvent()->getResponse()->setRedirect($url);
  95. $this->checkoutSession->setNoCartRedirect(true);
  96. }
  97. }
  98. }