/home/sharedstore/public_html/prestashop.sharedstore.ma/src/Adapter/Product
NameSizeModeActions
Attachment/-0755rm
AttributeGroup/-0755rm
Combination/-0755rm
CommandHandler/-0755rm
Customization/-0755rm
FeatureValue/-0755rm
Grid/-0755rm
Image/-0755rm
Options/-0755rm
Pack/-0755rm
QueryHandler/-0755rm
Repository/-0755rm
Shop/-0755rm
SpecificPrice/-0755rm
Stock/-0755rm
Supplier/-0755rm
Update/-0755rm
Validate/-0755rm
VirtualProduct/-0755rm
AbstractProductSupplierHandler.php43640644editdlrm
AdminProductDataProvider.php172040644editdlrm
AdminProductDataUpdater.php115720644editdlrm
AdminProductWrapper.php376800644editdlrm
AttachmentDataProvider.php17260644editdlrm
FilterCategoriesRequestPurifier.php19420644editdlrm
GeneralConfiguration.php59740644editdlrm
ListParametersUpdater.php48340644editdlrm
PackItemsManager.php34270644editdlrm
PageConfiguration.php32840644editdlrm
PaginationConfiguration.php29650644editdlrm
PriceCalculator.php73860644editdlrm
PriceFormatter.php19090644editdlrm
ProductColorsRetriever.php15350644editdlrm
ProductDataProvider.php47510644editdlrm
ProductDeleter.php41490644editdlrm
StockConfiguration.php48630644editdlrm
Edit: /home/sharedstore/public_html/prestashop.sharedstore.ma/src/Adapter/Product/ProductDeleter.php (4149B)
* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShop\PrestaShop\Adapter\Product; use PrestaShop\PrestaShop\Adapter\Product\Combination\Repository\CombinationRepository; use PrestaShop\PrestaShop\Adapter\Product\Image\Repository\ProductImageRepository; use PrestaShop\PrestaShop\Adapter\Product\Repository\ProductRepository; use PrestaShop\PrestaShop\Core\Domain\Product\ValueObject\ProductId; use PrestaShop\PrestaShop\Core\Domain\Shop\ValueObject\ShopConstraint; use PrestaShop\PrestaShop\Core\Domain\Shop\ValueObject\ShopId; class ProductDeleter { /** * @var ProductRepository */ private $productRepository; /** * @var ProductImageRepository */ private $productImageRepository; /** * @var CombinationRepository */ private $combinationRepository; public function __construct( ProductRepository $productRepository, CombinationRepository $combinationRepository, ProductImageRepository $productImageRepository ) { $this->productRepository = $productRepository; $this->combinationRepository = $combinationRepository; $this->productImageRepository = $productImageRepository; } /** * @param ProductId $productId * @param ShopId[] $shopIds */ public function deleteFromShops(ProductId $productId, array $shopIds): void { if (empty($shopIds)) { return; } $this->removeImages( $productId, $shopIds ); $this->removeCombinations($productId, $shopIds); $this->productRepository->deleteFromShops($productId, $shopIds); } /** * @param ProductId $productId * @param ShopConstraint $shopConstraint */ public function deleteByShopConstraint(ProductId $productId, ShopConstraint $shopConstraint): void { $shopIds = $this->productRepository->getShopIdsByConstraint($productId, $shopConstraint); $this->removeImages($productId, $shopIds); $this->removeCombinations($productId, $shopIds); $this->productRepository->deleteFromShops($productId, $shopIds); } /** * @param ProductId $productId * @param ShopId[] $shopIds */ private function removeImages(ProductId $productId, array $shopIds): void { foreach ($shopIds as $shopId) { $imageIds = $this->productImageRepository->getImageIds($productId, ShopConstraint::shop($shopId->getValue())); foreach ($imageIds as $imageId) { $this->productImageRepository->deleteFromShops($imageId, [$shopId]); } } } /** * @param ProductId $productId * @param ShopId[] $shopIds */ private function removeCombinations(ProductId $productId, array $shopIds): void { if (!$this->productRepository->hasCombinations($productId)) { return; } foreach ($shopIds as $shopId) { $this->combinationRepository->deleteByProductId($productId, ShopConstraint::shop($shopId->getValue())); } } }