![]() 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-bundle/Model/Product/CopyConstructor/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Bundle\Model\Product\CopyConstructor; use Magento\Catalog\Model\Product; use Magento\Catalog\Model\Product\Type; /** * Provides duplicating bundle options and selections */ class Bundle implements \Magento\Catalog\Model\Product\CopyConstructorInterface { /** * Duplicating bundle options and selections * * @param Product $product * @param Product $duplicate * @return void */ public function build(Product $product, Product $duplicate) { if ($product->getTypeId() != Type::TYPE_BUNDLE) { //do nothing if not bundle return; } $bundleOptions = $product->getExtensionAttributes()->getBundleProductOptions() ?: []; $duplicatedBundleOptions = []; foreach ($bundleOptions as $key => $bundleOption) { $duplicatedBundleOption = clone $bundleOption; /** * Set option and selection ids to 'null' in order to create new option(selection) for duplicated product, * but not modifying existing one, which led to lost of option(selection) in original product. */ $productLinks = $duplicatedBundleOption->getProductLinks() ?: []; foreach ($productLinks as $productLink) { $productLink->setSelectionId(null); } $duplicatedBundleOption->setOptionId(null); $duplicatedBundleOptions[$key] = $duplicatedBundleOption; } $duplicate->getExtensionAttributes()->setBundleProductOptions($duplicatedBundleOptions); } }