Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
BulkPageProcessor.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
10 use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
19 
24 {
28  private $filter;
29 
33  private $bulkSessionProductsStorage;
34 
38  private $collectionFactory;
39 
43  private $resultFactory;
44 
48  private $messageManager;
49 
53  private $getSourceCodesBySkus;
54 
64  public function __construct(
65  CollectionFactory $collectionFactory,
66  Filter $filter,
67  BulkSessionProductsStorage $bulkSessionProductsStorage,
68  ResultFactory $resultFactory,
69  ManagerInterface $messageManager,
70  GetSourceCodesBySkusInterface $getSourceCodesBySkus
71  ) {
72  $this->collectionFactory = $collectionFactory;
73  $this->filter = $filter;
74  $this->bulkSessionProductsStorage = $bulkSessionProductsStorage;
75  $this->resultFactory = $resultFactory;
76  $this->messageManager = $messageManager;
77  $this->getSourceCodesBySkus = $getSourceCodesBySkus;
78  }
79 
86  public function execute(Phrase $title, bool $verifyProductsAssignment)
87  {
88  try {
89  $collection = $this->filter->getCollection($this->collectionFactory->create());
90  } catch (\Exception $e) {
91  $this->messageManager->addErrorMessage(__('Could not create products collection.'));
92  $redirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
93  return $redirect->setPath('catalog/product/index');
94  }
95 
96  $skus = $collection->getColumnValues('sku');
97 
98  if ($verifyProductsAssignment) {
99  $sourceCodes = $this->getSourceCodesBySkus->execute($skus);
100  if (empty($sourceCodes)) {
101  $this->messageManager->addErrorMessage(__('Selected products are not assigned to any source.'));
102  $redirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
103  return $redirect->setPath('catalog/product/index');
104  }
105  }
106 
107  $this->bulkSessionProductsStorage->setProductsSkus($skus);
108 
109  $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
110  $resultPage->getConfig()->getTitle()->prepend($title);
111 
112  return $resultPage;
113  }
114 }
$title
Definition: default.phtml:14
__()
Definition: __.php:13
foreach($websiteCodes as $websiteCode) $skus
__construct(CollectionFactory $collectionFactory, Filter $filter, BulkSessionProductsStorage $bulkSessionProductsStorage, ResultFactory $resultFactory, ManagerInterface $messageManager, GetSourceCodesBySkusInterface $getSourceCodesBySkus)