/** * @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 (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); } }