/** * Go through all products that need to be cleaned and clean them. * @return $this object */ public function cleanAllProducts() { // Get all products that need cleaning - due to loose comparison of column // values by the collection, any products that do not include an 'is_clean' // column will be included. $productsToClean = $this->_products->getItemsByColumnValue('is_clean', false); $logData = ['total_products' => count($productsToClean)]; $logMessage = 'Cleaning {total_products} products.'; $this->_logger->info($logMessage, $this->_context->getMetaData(__CLASS__, $logData)); foreach ($productsToClean as $product) { $this->cleanProduct($product); } // save all the products that may have been modified while cleaning products $this->_helper->saveCollectionStubIndexer($this->_products); return $this; }
/** * load a product collection base on a given set of product data and apply * the product data to the collection and then save * product data is expected to have known SKU in order to load the collection * @param DOMDocument $itemDataDoc * @param int $storeId * @param array $cfgData * @param EbayEnterprise_Catalog_Interface_Import_Items $items * @return self */ protected function _importExtractedData(DOMDocument $itemDataDoc, $storeId, array $cfgData, EbayEnterprise_Catalog_Interface_Import_Items $items) { $feedXPath = $this->_coreHelper->getNewDomXPath($itemDataDoc); $skusToUpdate = $this->_getSkusToUpdate($feedXPath, $cfgData); if (count($skusToUpdate)) { $collection = $items->buildCollection($skusToUpdate); if ($cfgData['feed_type'] === 'product') { $collection->setStore($storeId); } foreach ($feedXPath->query($cfgData['base_item_xpath']) as $itemNode) { $this->_updateItem($feedXPath, $itemNode, $collection, $storeId, $cfgData, $items); } $logData = ['total_products' => $collection->getSize(), 'feed_type' => $cfgData['feed_type']]; $logMessage = 'saving collection of {total_products} {feed_type}'; $this->_logger->info($logMessage, $this->_context->getMetaData(__CLASS__, $logData)); // keep track of skus we've processed for the website $this->_importedSkus = array_unique(array_merge($this->_importedSkus, $skusToUpdate)); $this->_helper->saveCollectionStubIndexer($collection); } return $this; }