![]() 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/vendor/magento/module-wishlist/Model/Wishlist/BuyRequest/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Wishlist\Model\Wishlist\BuyRequest; use Magento\Framework\Exception\LocalizedException; use Magento\Wishlist\Model\Wishlist\Data\WishlistItem; /** * Data provider for bundle product buy requests */ class BundleDataProvider implements BuyRequestDataProviderInterface { private const PROVIDER_OPTION_TYPE = 'bundle'; /** * @inheritdoc * * @phpcs:disable Magento2.Functions.DiscouragedFunction */ public function execute(WishlistItem $wishlistItem, ?int $productId): array { $bundleOptionsData = []; foreach ($wishlistItem->getSelectedOptions() as $optionData) { $optionData = \explode('/', base64_decode($optionData->getId())); if ($this->isProviderApplicable($optionData) === false) { continue; } [$optionType, $optionId, $optionValueId, $optionQuantity] = $optionData; if ($optionType == self::PROVIDER_OPTION_TYPE) { $bundleOptionsData['bundle_option'][$optionId] = $optionValueId; $bundleOptionsData['bundle_option_qty'][$optionId] = $optionQuantity; } } //for bundle options with custom quantity foreach ($wishlistItem->getEnteredOptions() as $option) { // phpcs:ignore Magento2.Functions.DiscouragedFunction $optionData = \explode('/', base64_decode($option->getUid())); if ($this->isProviderApplicable($optionData) === false) { continue; } $this->validateInput($optionData); [$optionType, $optionId, $optionValueId] = $optionData; if ($optionType == self::PROVIDER_OPTION_TYPE) { $optionQuantity = $option->getValue(); $bundleOptionsData['bundle_option'][$optionId] = $optionValueId; $bundleOptionsData['bundle_option_qty'][$optionId] = $optionQuantity; } } return $bundleOptionsData; } /** * Validates the provided options structure * * @param array $optionData * @throws LocalizedException */ private function validateInput(array $optionData): void { if (count($optionData) !== 4) { $errorMessage = __('Wrong format of the entered option data'); throw new LocalizedException($errorMessage); } } /** * Checks whether this provider is applicable for the current option * * @param array $optionData * * @return bool */ private function isProviderApplicable(array $optionData): bool { return $optionData[0] === self::PROVIDER_OPTION_TYPE; } }