/** * 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->_products->save(); return $this; }
/** * given a collection of products and a collection deleted sku data remove * each product that matches in catalog id and client id in a specific website * @param Mage_Catalog_Model_Resource_Product_Collection $collection * @param array $dData * @return self */ protected function _removeFromWebsites(Mage_Catalog_Model_Resource_Product_Collection $collection, array $dData) { foreach ($this->_helper->loadWebsiteFilters() as $siteFilter) { foreach ($this->_getSkusInWebsite($dData, $siteFilter) as $dSku) { $product = $collection->getItemById($dSku); if ($product) { $product->setWebsiteIds($this->_removeWebsiteId($product->getWebsiteIds(), $siteFilter['mage_website_id'])); } } } $collection->save(); return $this; }