![]() 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/Controller/Adminhtml/Product/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Controller\Adminhtml\Product; use Magento\Backend\App\Action; use Magento\Catalog\Controller\Adminhtml\Product; use Magento\Framework\App\ObjectManager; /** * Class Duplicate */ class Duplicate extends \Magento\Catalog\Controller\Adminhtml\Product implements \Magento\Framework\App\Action\HttpGetActionInterface { /** * @var \Magento\Catalog\Model\Product\Copier */ protected $productCopier; /** * @var \Psr\Log\LoggerInterface */ private $logger; /** * @param Action\Context $context * @param Builder $productBuilder * @param \Magento\Catalog\Model\Product\Copier $productCopier * @param \Psr\Log\LoggerInterface $logger */ public function __construct( \Magento\Backend\App\Action\Context $context, Product\Builder $productBuilder, \Magento\Catalog\Model\Product\Copier $productCopier, \Psr\Log\LoggerInterface $logger = null ) { $this->productCopier = $productCopier; $this->logger = $logger ?: ObjectManager::getInstance() ->get(\Psr\Log\LoggerInterface::class); parent::__construct($context, $productBuilder); } /** * Create product duplicate * * @return \Magento\Backend\Model\View\Result\Redirect */ public function execute() { /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); $product = $this->productBuilder->build($this->getRequest()); try { $newProduct = $this->productCopier->copy($product); $this->messageManager->addSuccessMessage(__('You duplicated the product.')); $resultRedirect->setPath('catalog/*/edit', ['_current' => true, 'id' => $newProduct->getId()]); } catch (\Exception $e) { $this->logger->critical($e); $this->messageManager->addErrorMessage($e->getMessage()); $resultRedirect->setPath('catalog/*/edit', ['_current' => true]); } return $resultRedirect; } }