![]() 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-catalog/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Model; use Magento\Framework\Exception\InputException; use Magento\Framework\Exception\CouldNotSaveException; use Magento\Catalog\Api\Data\ProductWebsiteLinkInterface; class ProductWebsiteLinkRepository implements \Magento\Catalog\Api\ProductWebsiteLinkRepositoryInterface { /** * @var \Magento\Catalog\Api\ProductRepositoryInterface */ protected $productRepository; /** * @param \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */ public function __construct( \Magento\Catalog\Api\ProductRepositoryInterface $productRepository ) { $this->productRepository = $productRepository; } /** * {@inheritdoc} */ public function save(ProductWebsiteLinkInterface $productWebsiteLink) { if (!$productWebsiteLink->getWebsiteId()) { throw new InputException(__('There are not websites for assign to product')); } $product = $this->productRepository->get($productWebsiteLink->getSku()); $product->setWebsiteIds(array_merge($product->getWebsiteIds(), [$productWebsiteLink->getWebsiteId()])); try { $this->productRepository->save($product); } catch (\Exception $e) { throw new CouldNotSaveException( __( 'Could not assign product "%1" to websites "%2"', $product->getId(), $productWebsiteLink->getWebsiteId() ), $e ); } return true; } /** * {@inheritdoc} */ public function delete(ProductWebsiteLinkInterface $productLink) { return $this->deleteById($productLink->getSku(), $productLink->getSku()); } /** * {@inheritdoc} */ public function deleteById($sku, $websiteId) { $product = $this->productRepository->get($sku); $product->setWebsiteIds(array_diff($product->getWebsiteIds(), [$websiteId])); try { $this->productRepository->save($product); } catch (\Exception $e) { throw new CouldNotSaveException( __( 'Could not save product "%1" with websites %2', $product->getId(), implode(', ', $product->getWebsiteIds()) ), $e ); } return true; } }