/**
  * Update product(s) status action
  *
  * @return \Magento\Backend\Model\View\Result\Redirect
  */
 public function execute()
 {
     $collection = $this->filter->getCollection($this->collectionFactory->create());
     $productIds = $collection->getAllIds();
     $storeId = (int) $this->getRequest()->getParam('store', 0);
     $attributeSetId = (int) $this->getRequest()->getParam('changeattributeset');
     try {
         foreach ($collection->getItems() as $product) {
             //echo get_class($product->getTypeInstance());die();
             if ($this->validateConfigurable($product, $attributeSetId, $storeId) == false) {
                 $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
                 return $resultRedirect->setPath('catalog/*/', ['store' => $storeId]);
                 break;
             }
             $product->setAttributeSetId($attributeSetId)->setStoreId($storeId);
         }
         $collection->save();
         //$product->getTypeInstance();
         $this->messageManager->addSuccess(__('A total of %1 record(s) have been updated.', count($productIds)));
     } catch (\Magento\Framework\Exception\LocalizedException $e) {
         $this->messageManager->addError($e->getMessage());
     } catch (\Exception $e) {
         $this->_getSession()->addException($e, __('Something went wrong while updating the product(s) atrribute set.'));
     }
     /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
     $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
     return $resultRedirect->setPath('catalog/*/', ['store' => $storeId]);
 }
예제 #2
0
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $this->appState->setAreaCode('catalog');
     /** @var ProductCollection $productCollection */
     $productCollection = $this->productCollectionFactory->create();
     $productIds = $productCollection->getAllIds();
     if (!count($productIds)) {
         $output->writeln("<info>No product images to resize</info>");
         // we must have an exit code higher than zero to indicate something was wrong
         return \Magento\Framework\Console\Cli::RETURN_SUCCESS;
     }
     try {
         foreach ($productIds as $productId) {
             try {
                 /** @var Product $product */
                 $product = $this->productRepository->getById($productId);
             } catch (NoSuchEntityException $e) {
                 continue;
             }
             /** @var ImageCache $imageCache */
             $imageCache = $this->imageCacheFactory->create();
             $imageCache->generate($product);
             $output->write(".");
         }
     } catch (\Exception $e) {
         $output->writeln("<error>{$e->getMessage()}</error>");
         // we must have an exit code higher than zero to indicate something was wrong
         return \Magento\Framework\Console\Cli::RETURN_FAILURE;
     }
     $output->write("\n");
     $output->writeln("<info>Product images resized successfully</info>");
 }
예제 #3
0
파일: Products.php 프로젝트: swissup/core
 /**
  * Enable requested attribute for products, if no products are using it
  *
  * Date attributes is supported for attribute_from values only.
  *
  * @param  array $data Key => Value pairs of attribute_code and count
  * @return void
  */
 public function execute($data)
 {
     $visibility = $this->catalogProductVisibility->getVisibleInCatalogIds();
     $attributes = $this->attributeCollectionFactory->create()->addFieldToFilter('attribute_code', ['in' => array_keys($data)]);
     foreach ($attributes as $attribute) {
         $collection = $this->productCollectionFactory->create()->setPageSize(1)->setCurPage(1);
         switch ($attribute->getFrontendInput()) {
             case 'boolean':
                 $value = 1;
                 $collection->addAttributeToFilter($attribute, 1);
                 break;
             case 'date':
                 $value = $this->localeDate->date()->format('Y-m-d H:i:s');
                 $collection->addAttributeToFilter($attribute, [['date' => true, 'to' => $value]]);
                 break;
         }
         if ($collection->getSize()) {
             // customer already has some products with specified attribute
             continue;
         }
         foreach ($this->getStoreIds() as $storeId) {
             $visibleProducts = $this->productCollectionFactory->create()->setStoreId($storeId)->setVisibility($visibility)->addStoreFilter($storeId)->setPageSize($data[$attribute->getAttributeCode()])->setCurPage(1);
             if (!$visibleProducts->getSize()) {
                 continue;
             }
             foreach ($visibleProducts as $product) {
                 $product->addAttributeUpdate($attribute->getAttributeCode(), (int) in_array(0, $this->getStoreIds()), 0);
                 $product->setStoreId($storeId)->setData($attribute->getAttributeCode(), $value)->save();
             }
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $this->appState->setAreaCode('catalog');
     /** @var ProductCollection $productCollection */
     $productCollection = $this->productCollectionFactory->create();
     $productIds = $productCollection->getAllIds();
     if (!count($productIds)) {
         $output->writeln("<info>No product images to resize</info>");
         return;
     }
     try {
         foreach ($productIds as $productId) {
             try {
                 /** @var Product $product */
                 $product = $this->productRepository->getById($productId);
             } catch (NoSuchEntityException $e) {
                 continue;
             }
             /** @var ImageCache $imageCache */
             $imageCache = $this->imageCacheFactory->create();
             $imageCache->generate($product);
             $output->write(".");
         }
     } catch (\Exception $e) {
         $output->writeln("<error>{$e->getMessage()}</error>");
         return;
     }
     $output->write("\n");
     $output->writeln("<info>Product images resized successfully</info>");
 }
 /**
  * @param \Magento\Catalog\Model\Category $category
  * @return \Magento\Catalog\Model\ResourceModel\Product\Collection
  */
 public function getCollection(\Magento\Catalog\Model\Category $category)
 {
     /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $collection */
     $collection = $this->collectionFactory->create();
     $collection->addCategoryFilter($category);
     return $collection;
 }
예제 #6
0
 /**
  * {@inheritdoc}
  */
 public function findAttributeSetIdsByProductIds(array $productIds)
 {
     /** @var $collection Collection */
     $collection = $this->productCollectionFactory->create();
     $select = $collection->getSelect()->reset(Select::COLUMNS)->columns(ProductInterface::ATTRIBUTE_SET_ID)->where('entity_id IN (?)', $productIds)->group(ProductInterface::ATTRIBUTE_SET_ID);
     $result = $collection->getConnection()->fetchCol($select);
     return $result;
 }
 /**
  * get featured product collection
  */
 public function getFeaturedProduct()
 {
     $limit = $this->getProductLimit();
     $collection = $this->_productCollectionFactory->create();
     $collection->setVisibility($this->_catalogProductVisibility->getVisibleInCatalogIds());
     $collection->addMinimalPrice()->addFinalPrice()->addTaxPercents()->setPageSize($limit)->addAttributeToSelect('*');
     $collection->addAttributeToFilter('et_featured', '1');
     return $collection;
 }
예제 #8
0
 /**
  * @return Collection
  */
 protected function _getProductCollection()
 {
     if ($this->_productCollection === null) {
         /** @var Collection $collection */
         $collection = $this->_productCollectionFactory->create();
         $this->_catalogLayer->prepareProductCollection($collection);
         $collection->addAttributeToFilter('promotion', 1)->addStoreFilter();
         $this->_productCollection = $collection;
     }
     return $this->_productCollection;
 }
예제 #9
0
파일: Edit.php 프로젝트: nblair/magescotch
 /**
  * @return \Magento\Framework\Controller\ResultInterface
  */
 public function executeInternal()
 {
     $collection = $this->filter->getCollection($this->collectionFactory->create());
     $this->attributeHelper->setProductIds($collection->getAllIds());
     if (!$this->_validateProducts()) {
         return $this->resultRedirectFactory->create()->setPath('catalog/product/', ['_current' => true]);
     }
     $resultPage = $this->resultPageFactory->create();
     $resultPage->getConfig()->getTitle()->prepend(__('Update Attributes'));
     return $resultPage;
 }
예제 #10
0
 /**
  * @return \Magento\Backend\Model\View\Result\Redirect
  */
 public function execute()
 {
     $collection = $this->filter->getCollection($this->collectionFactory->create());
     $productDeleted = 0;
     foreach ($collection->getItems() as $product) {
         $product->delete();
         $productDeleted++;
     }
     $this->messageManager->addSuccess(__('A total of %1 record(s) have been deleted.', $productDeleted));
     return $this->resultFactory->create(ResultFactory::TYPE_REDIRECT)->setPath('catalog/*/index');
 }
 /**
  * {@inheritdoc}
  */
 public function getProducts(ProductInterface $product)
 {
     if (!isset($this->products[$product->getId()])) {
         if ($this->requestSafety->isSafeMethod()) {
             $productIds = $this->resource->getConnection()->fetchCol('(' . implode(') UNION (', $this->linkedProductSelectBuilder->build($product->getId())) . ')');
             $this->products[$product->getId()] = $this->collectionFactory->create()->addAttributeToSelect(['price', 'special_price'])->addIdFilter($productIds);
         } else {
             $this->products[$product->getId()] = $this->configurable->getUsedProducts($product);
         }
     }
     return $this->products[$product->getId()];
 }
예제 #12
0
 /**
  * @return \Magento\Catalog\Model\ResourceModel\Product\Collection
  */
 protected function _getProductCollection()
 {
     if ($this->_productCollection === null) {
         /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $collection */
         $collection = $this->_productCollectionFactory->create();
         $this->_catalogLayer->prepareProductCollection($collection);
         $collection->getSelect()->order('rand()');
         $collection->addStoreFilter();
         $numProducts = $this->getNumProducts() ? $this->getNumProducts() : 0;
         $collection->setPage(1, $numProducts);
         $this->_productCollection = $collection;
     }
     return $this->_productCollection;
 }
 /**
  * {@inheritdoc}
  */
 public function getCount($status = null)
 {
     $products = $this->productsFactory->create();
     /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $products */
     switch ($status) {
         case Status::STATUS_ENABLED:
             $products->addAttributeToFilter('status', Status::STATUS_ENABLED);
             break;
         case Status::STATUS_DISABLED:
             $products->addAttributeToFilter('status', Status::STATUS_DISABLED);
             break;
     }
     return $products->getSize();
 }
 /**
  * Premare block data
  * @return $this
  */
 protected function _prepareCollection()
 {
     $post = $this->_coreRegistry->registry('current_blog_post');
     $this->_itemCollection = $this->_productCollectionFactory->create()->addAttributeToSelect('required_options')->addStoreFilter()->addAttributeToFilter('entity_id', array('in' => $post->getRelatedProductIds() ?: array(0)));
     if ($this->_moduleManager->isEnabled('Magento_Checkout')) {
         $this->_addProductAttributesAndPrices($this->_itemCollection);
     }
     $this->_itemCollection->setVisibility($this->_catalogProductVisibility->getVisibleInCatalogIds());
     $this->_itemCollection->setPageSize((int) $this->_scopeConfig->getValue('mfblog/post_view/related_products/number_of_products', \Magento\Store\Model\ScopeInterface::SCOPE_STORE));
     $this->_itemCollection->load();
     foreach ($this->_itemCollection as $product) {
         $product->setDoNotUseCategoryId(true);
     }
     return $this;
 }
예제 #15
0
 /**
  * @param \Magento\Catalog\Model\Category $category
  * @param int $storeId
  * @return $this
  */
 public function getProductCollection(\Magento\Catalog\Model\Category $category, $storeId)
 {
     /** @var $layer \Magento\Catalog\Model\Layer */
     $layer = $this->catalogLayer->setStore($storeId);
     $collection = $category->getResourceCollection();
     $collection->addAttributeToSelect('url_key')->addAttributeToSelect('name')->addAttributeToSelect('is_anchor')->addAttributeToFilter('is_active', 1)->addIdFilter($category->getChildren())->load();
     /** @var $productCollection \Magento\Catalog\Model\ResourceModel\Product\Collection */
     $productCollection = $this->collectionFactory->create();
     $currentCategory = $layer->setCurrentCategory($category);
     $layer->prepareProductCollection($productCollection);
     $productCollection->addCountToCategories($collection);
     $category->getProductCollection()->setStoreId($storeId);
     $products = $currentCategory->getProductCollection()->addAttributeToSort('updated_at', 'desc')->setVisibility($this->visibility->getVisibleInCatalogIds())->setCurPage(1)->setPageSize(50);
     return $products;
 }
예제 #16
0
 /**
  * Get catalog product resource collection instance
  *
  * @return \Magento\Catalog\Model\ResourceModel\Product\Collection
  */
 protected function _getCpCollectionInstance()
 {
     if (!$this->_cpCollectionInstance) {
         $this->_cpCollectionInstance = $this->_cpCollection->create();
     }
     return $this->_cpCollectionInstance;
 }
예제 #17
0
 /**
  * @param SampleDataContext $sampleDataContext
  * @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
  * @param \Magento\Framework\App\Config\Storage\WriterInterface $configWriter
  */
 public function __construct(SampleDataContext $sampleDataContext, \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory, \Magento\Framework\App\Config\Storage\WriterInterface $configWriter)
 {
     $this->fixtureManager = $sampleDataContext->getFixtureManager();
     $this->csvReader = $sampleDataContext->getCsvReader();
     $this->productCollection = $productCollectionFactory->create()->addAttributeToSelect('sku');
     $this->configWriter = $configWriter;
 }
 /**
  * Get product collection to export.
  *
  * @param      $store
  * @param bool $modified
  *
  * @return bool
  */
 public function _getProductsToExport($store, $modified = false)
 {
     $limit = $this->helper->getWebsiteConfig(\Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_TRANSACTIONAL_DATA_SYNC_LIMIT);
     $connectorCollection = $this->catalogCollectionFactory->create();
     //for modified catalog
     if ($modified) {
         $connectorCollection->addFieldToFilter('modified', ['eq' => '1']);
     } else {
         $connectorCollection->addFieldToFilter('imported', ['null' => 'true']);
     }
     //set limit for collection
     $connectorCollection->setPageSize($limit);
     //check number of products
     if ($connectorCollection->getSize()) {
         $productIds = $connectorCollection->getColumnValues('product_id');
         $productCollection = $this->productCollection->create()->addAttributeToSelect('*')->addStoreFilter($store)->addAttributeToFilter('entity_id', ['in' => $productIds]);
         //visibility filter
         if ($visibility = $this->helper->getWebsiteConfig(\Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_SYNC_CATALOG_VISIBILITY)) {
             $visibility = explode(',', $visibility);
             $productCollection->addAttributeToFilter('visibility', ['in' => $visibility]);
         }
         //type filter
         if ($type = $this->helper->getWebsiteConfig(\Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_SYNC_CATALOG_TYPE)) {
             $type = explode(',', $type);
             $productCollection->addAttributeToFilter('type_id', ['in' => $type]);
         }
         $productCollection->addWebsiteNamesToResult()->addCategoryIds()->addOptionsToResult();
         return $productCollection;
     }
     return false;
 }
예제 #19
0
 /**
  * @return \Magento\Catalog\Model\ResourceModel\Product\Collection
  */
 public function getRelatedProducts()
 {
     $ids = $this->getRelatedProductIds();
     $ids[] = 0;
     $collection = $this->productCollectionFactory->create()->addAttributeToSelect('*')->addFieldToFilter('entity_id', $ids);
     return $collection;
 }
예제 #20
0
 /**
  * {@inheritdoc}
  */
 public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
 {
     /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $collection */
     $collection = $this->collectionFactory->create();
     $this->extensionAttributesJoinProcessor->process($collection);
     foreach ($this->metadataService->getList($this->searchCriteriaBuilder->create())->getItems() as $metadata) {
         $collection->addAttributeToSelect($metadata->getAttributeCode());
     }
     $collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner');
     $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner');
     //Add filters from root filter group to the collection
     foreach ($searchCriteria->getFilterGroups() as $group) {
         $this->addFilterGroupToCollection($group, $collection);
     }
     /** @var SortOrder $sortOrder */
     foreach ((array) $searchCriteria->getSortOrders() as $sortOrder) {
         $field = $sortOrder->getField();
         $collection->addOrder($field, $sortOrder->getDirection() == SortOrder::SORT_ASC ? 'ASC' : 'DESC');
     }
     $collection->setCurPage($searchCriteria->getCurrentPage());
     $collection->setPageSize($searchCriteria->getPageSize());
     $collection->load();
     $searchResult = $this->searchResultsFactory->create();
     $searchResult->setSearchCriteria($searchCriteria);
     $searchResult->setItems($collection->getItems());
     $searchResult->setTotalCount($collection->getSize());
     return $searchResult;
 }
 /**
  * Construct
  *
  * @param string $name
  * @param string $primaryFieldName
  * @param string $requestFieldName
  * @param CollectionFactory $collectionFactory
  * @param \Magento\Ui\DataProvider\AddFieldToCollectionInterface[] $addFieldStrategies
  * @param \Magento\Ui\DataProvider\AddFilterToCollectionInterface[] $addFilterStrategies
  * @param array $meta
  * @param array $data
  */
 public function __construct($name, $primaryFieldName, $requestFieldName, CollectionFactory $collectionFactory, array $addFieldStrategies = [], array $addFilterStrategies = [], array $meta = [], array $data = [])
 {
     parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
     $this->collection = $collectionFactory->create();
     $this->addFieldStrategies = $addFieldStrategies;
     $this->addFilterStrategies = $addFilterStrategies;
 }
 /**
  * Prepare collection
  *
  * @return Extended
  */
 protected function _prepareCollection()
 {
     $post = $this->getPost();
     $collection = $this->_productCollectionFactory->create()->addAttributeToSelect('*')->joinField('websites', 'catalog_product_website', 'website_id', 'product_id=entity_id', null, 'left');
     $this->setCollection($collection);
     return parent::_prepareCollection();
 }
예제 #23
0
 /**
  * @param \Magento\Catalog\Model\Category\TreeFactory $categoryTreeFactory
  * @param \Magento\Catalog\Model\ResourceModel\Category\TreeFactory $categoryResourceTreeFactory
  * @param \Magento\Eav\Model\Config $eavConfig
  * @param \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryCollectionFactory
  * @param \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $attributeCollectionFactory
  * @param \Magento\Eav\Model\ResourceModel\Entity\Attribute\Option\CollectionFactory $attrOptionCollectionFactory
  * @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
  */
 public function __construct(\Magento\Catalog\Model\Category\TreeFactory $categoryTreeFactory, \Magento\Catalog\Model\ResourceModel\Category\TreeFactory $categoryResourceTreeFactory, \Magento\Eav\Model\Config $eavConfig, \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryCollectionFactory, \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $attributeCollectionFactory, \Magento\Eav\Model\ResourceModel\Entity\Attribute\Option\CollectionFactory $attrOptionCollectionFactory, \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory)
 {
     $this->categoryTree = $categoryTreeFactory->create(['categoryTree' => $categoryResourceTreeFactory->create(), 'categoryCollection' => $categoryCollectionFactory->create()]);
     $this->eavConfig = $eavConfig;
     $this->attributeCollectionFactory = $attributeCollectionFactory;
     $this->attrOptionCollectionFactory = $attrOptionCollectionFactory;
     $this->productCollection = $productCollectionFactory->create();
 }
 /**
  * Retrieve post related products
  * @return \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
  */
 public function getRelatedProducts()
 {
     $collection = $this->_productCollectionFactory->create()->addFieldToFilter('entity_id', array('in' => $this->getRelatedProductIds() ?: array(0)));
     if ($storeIds = $this->getStoreId()) {
         $collection->addStoreFilter($storeIds[0]);
     }
     return $collection;
 }
예제 #25
0
 /**
  * Retrieve child categories of current category
  *
  * @return \Magento\Framework\Data\Tree\Node\Collection
  */
 public function getCurrentChildCategories()
 {
     $categories = $this->_catalogLayer->getCurrentCategory()->getChildrenCategories();
     /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $productCollection */
     $productCollection = $this->_productCollectionFactory->create();
     $this->_catalogLayer->prepareProductCollection($productCollection);
     $productCollection->addCountToCategories($categories);
     return $categories;
 }
예제 #26
0
 /**
  * Prepare and return product collection
  *
  * @return \Magento\Catalog\Model\ResourceModel\Product\Collection|Object|\Magento\Framework\Data\Collection
  */
 protected function _getProductCollection()
 {
     $todayStartOfDayDate = $this->_localeDate->date()->setTime(0, 0, 0)->format('Y-m-d H:i:s');
     $todayEndOfDayDate = $this->_localeDate->date()->setTime(23, 59, 59)->format('Y-m-d H:i:s');
     /** @var $collection \Magento\Catalog\Model\ResourceModel\Product\Collection */
     $collection = $this->_productCollectionFactory->create();
     $collection->setVisibility($this->_catalogProductVisibility->getVisibleInCatalogIds());
     $collection = $this->_addProductAttributesAndPrices($collection)->addStoreFilter()->addAttributeToFilter('news_from_date', ['or' => [0 => ['date' => true, 'to' => $todayEndOfDayDate], 1 => ['is' => new \Zend_Db_Expr('null')]]], 'left')->addAttributeToFilter('news_to_date', ['or' => [0 => ['date' => true, 'from' => $todayStartOfDayDate], 1 => ['is' => new \Zend_Db_Expr('null')]]], 'left')->addAttributeToFilter([['attribute' => 'news_from_date', 'is' => new \Zend_Db_Expr('not null')], ['attribute' => 'news_to_date', 'is' => new \Zend_Db_Expr('not null')]])->addAttributeToSort('news_from_date', 'desc')->setPageSize($this->getProductsCount())->setCurPage(1);
     return $collection;
 }
예제 #27
0
 /**
  * Return product collection with selected product filter
  * Product collection didn't load
  *
  * @return \Magento\Catalog\Model\ResourceModel\Product\Collection
  */
 public function getProducts()
 {
     if ($this->_products === null) {
         $productsIds = $this->getProductIds();
         if (!is_array($productsIds)) {
             $productsIds = [0];
         }
         $this->_products = $this->_productsFactory->create()->setStoreId($this->getSelectedStoreId())->addIdFilter($productsIds);
     }
     return $this->_products;
 }
예제 #28
0
 /**
  * @deprecated
  *
  * @param Product $parentProduct
  * @param array $attributes
  * @return bool|ProductCollection
  * @throws InputException
  */
 protected function prepareVariationCollection(Product $parentProduct, array $attributes)
 {
     $productCollection = $this->productCollectionFactory->create();
     $this->addFilterByParent($productCollection, $parentProduct->getId());
     $configurableAttributes = $this->getAttributesFromConfigurable($parentProduct);
     foreach ($configurableAttributes as $attribute) {
         $productCollection->addAttributeToSelect($attribute['attribute_code']);
     }
     $this->addFilterByAttributes($productCollection, $attributes);
     return $productCollection;
 }
예제 #29
0
 /**
  * Update product(s) status action
  *
  * @return \Magento\Backend\Model\View\Result\Redirect
  */
 public function execute()
 {
     $collection = $this->filter->getCollection($this->collectionFactory->create());
     $productIds = $collection->getAllIds();
     $storeId = (int) $this->getRequest()->getParam('store', 0);
     $status = (int) $this->getRequest()->getParam('status');
     try {
         $this->_validateMassStatus($productIds, $status);
         $this->_objectManager->get('Magento\\Catalog\\Model\\Product\\Action')->updateAttributes($productIds, ['status' => $status], $storeId);
         $this->messageManager->addSuccess(__('A total of %1 record(s) have been updated.', count($productIds)));
         $this->_productPriceIndexerProcessor->reindexList($productIds);
     } catch (\Magento\Framework\Exception\LocalizedException $e) {
         $this->messageManager->addError($e->getMessage());
     } catch (\Exception $e) {
         $this->_getSession()->addException($e, __('Something went wrong while updating the product(s) status.'));
     }
     /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
     $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
     return $resultRedirect->setPath('catalog/*/', ['store' => $storeId]);
 }
예제 #30
0
 /**
  * Prepare and return product collection
  *
  * @return \Magento\Catalog\Model\ResourceModel\Product\Collection
  */
 public function createCollection()
 {
     /** @var $collection \Magento\Catalog\Model\ResourceModel\Product\Collection */
     $collection = $this->productCollectionFactory->create();
     $collection->setVisibility($this->catalogProductVisibility->getVisibleInCatalogIds());
     $collection = $this->_addProductAttributesAndPrices($collection)->addStoreFilter()->setPageSize($this->getPageSize())->setCurPage($this->getRequest()->getParam($this->getData('page_var_name'), 1));
     $conditions = $this->getConditions();
     $conditions->collectValidatedAttributes($collection);
     $this->sqlBuilder->attachConditionToCollection($collection, $conditions);
     return $collection;
 }