![]() 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\Framework\App\Action\HttpGetActionInterface; use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface; use Magento\Backend\App\Action; use Magento\Catalog\Controller\Adminhtml\Product; use Magento\Framework\App\ObjectManager; use Magento\Store\Model\StoreManagerInterface; use Magento\UrlRewrite\Model\Exception\UrlAlreadyExistsException; use Magento\CatalogUrlRewrite\Model\Product\Validator as ProductUrlRewriteValidator; use Magento\CatalogUrlRewrite\Model\ProductUrlPathGenerator; /** * Product validate * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Validate extends Product implements HttpPostActionInterface, HttpGetActionInterface { /** * @var \Magento\Framework\Stdlib\DateTime\Filter\Date * * @deprecated 101.0.0 */ protected $_dateFilter; /** * @var \Magento\Catalog\Model\Product\Validator */ protected $productValidator; /** * @var \Magento\Framework\Controller\Result\JsonFactory */ protected $resultJsonFactory; /** * @var \Magento\Framework\View\LayoutFactory */ protected $layoutFactory; /** * @var \Magento\Catalog\Model\ProductFactory */ protected $productFactory; /** * @var Initialization\Helper */ protected $initializationHelper; /** * @var StoreManagerInterface */ private $storeManager; /** * @var ProductUrlPathGenerator */ private $productUrlPathGenerator; /** * @var ProductUrlRewriteValidator */ private $productUrlRewriteValidator; /** * @param Action\Context $context * @param Builder $productBuilder * @param \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter * @param \Magento\Catalog\Model\Product\Validator $productValidator * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory * @param \Magento\Framework\View\LayoutFactory $layoutFactory * @param \Magento\Catalog\Model\ProductFactory $productFactory * @param ProductUrlRewriteValidator $productUrlRewriteValidator * @param ProductUrlPathGenerator $productUrlPathGenerator */ public function __construct( \Magento\Backend\App\Action\Context $context, Product\Builder $productBuilder, \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter, \Magento\Catalog\Model\Product\Validator $productValidator, \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory, \Magento\Framework\View\LayoutFactory $layoutFactory, \Magento\Catalog\Model\ProductFactory $productFactory, ProductUrlRewriteValidator $productUrlRewriteValidator, ProductUrlPathGenerator $productUrlPathGenerator ) { $this->_dateFilter = $dateFilter; $this->productValidator = $productValidator; parent::__construct($context, $productBuilder); $this->resultJsonFactory = $resultJsonFactory; $this->layoutFactory = $layoutFactory; $this->productFactory = $productFactory; $this->productUrlRewriteValidator = $productUrlRewriteValidator; $this->productUrlPathGenerator = $productUrlPathGenerator; } /** * Validate product * * @return \Magento\Framework\Controller\Result\Json * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ public function execute() { $response = new \Magento\Framework\DataObject(); $response->setError(false); try { $productData = $this->getRequest()->getPost('product', []); if ($productData && !isset($productData['stock_data']['use_config_manage_stock'])) { $productData['stock_data']['use_config_manage_stock'] = 0; } $storeId = $this->getRequest()->getParam('store', 0); $store = $this->getStoreManager()->getStore($storeId); $this->getStoreManager()->setCurrentStore($store->getCode()); /* @var $product \Magento\Catalog\Model\Product */ $product = $this->productFactory->create(); $product->setData('_edit_mode', true); if ($storeId) { $product->setStoreId($storeId); } $setId = $this->getRequest()->getPost('set') ?: $this->getRequest()->getParam('set'); if ($setId) { $product->setAttributeSetId($setId); } $typeId = $this->getRequest()->getParam('type'); if ($typeId) { $product->setTypeId($typeId); } $productId = $this->getRequest()->getParam('id'); if ($productId) { $product->load($productId); } $product = $this->getInitializationHelper()->initializeFromData($product, $productData); /* set restrictions for date ranges */ $resource = $product->getResource(); $resource->getAttribute('special_from_date')->setMaxValue($product->getSpecialToDate()); $resource->getAttribute('news_from_date')->setMaxValue($product->getNewsToDate()); $resource->getAttribute('custom_design_from')->setMaxValue($product->getCustomDesignTo()); if (!$product->getUrlKey()) { $urlKey = $this->productUrlPathGenerator->getUrlKey($product); $product->setUrlKey($urlKey); } $this->productUrlRewriteValidator->validateUrlKeyConflicts($product); $this->productValidator->validate($product, $this->getRequest(), $response); } catch (\Magento\Eav\Model\Entity\Attribute\Exception $e) { $response->setError(true); $response->setAttribute($e->getAttributeCode()); $response->setMessages([$e->getMessage()]); } catch (UrlAlreadyExistsException $e) { $this->messageManager->addExceptionMessage($e); $layout = $this->layoutFactory->create(); $layout->initMessages(); $response->setError(true); $response->setHtmlMessage($layout->getMessagesBlock()->getGroupedHtml()); } catch (\Magento\Framework\Exception\LocalizedException $e) { $response->setError(true); $response->setMessages([$e->getMessage()]); } catch (\Exception $e) { $this->messageManager->addErrorMessage($e->getMessage()); $layout = $this->layoutFactory->create(); $layout->initMessages(); $response->setError(true); $response->setHtmlMessage($layout->getMessagesBlock()->getGroupedHtml()); } return $this->resultJsonFactory->create()->setData($response); } /** * @return StoreManagerInterface * @deprecated 101.0.0 */ private function getStoreManager() { if (null === $this->storeManager) { $this->storeManager = \Magento\Framework\App\ObjectManager::getInstance() ->get(\Magento\Store\Model\StoreManagerInterface::class); } return $this->storeManager; } /** * @return Initialization\Helper * @deprecated 101.0.0 */ protected function getInitializationHelper() { if (null === $this->initializationHelper) { $this->initializationHelper = ObjectManager::getInstance()->get(Initialization\Helper::class); } return $this->initializationHelper; } }