コード例 #1
0
 /**
  * Process all of the products within a given store.
  *
  * @param  Mage_Catalog_Model_Resource_Product_Collection $products products for a specific store
  * @param  EbayEnterprise_Catalog_Model_Pim_Product_Collection $pimProducts collection of PIM Product instances
  * @param  string $key
  * @param array $productIds
  * @return EbayEnterprise_Catalog_Model_Pim_Product_Collection $pimProducts collection of PIM Product instances
  */
 protected function _processProductCollection(Mage_Catalog_Model_Resource_Product_Collection $products, EbayEnterprise_Catalog_Model_Pim_Product_Collection $pimProducts, array &$productIds = null)
 {
     $excludedProductIds = array();
     $currentStoreId = $products->getStoreId();
     $config = Mage::helper('eb2ccore')->getConfigModel($currentStoreId);
     $clientId = $config->clientId;
     $catalogId = $config->catalogId;
     foreach ($products->getItems() as $product) {
         $product->setStoreId($currentStoreId);
         $pimProduct = $pimProducts->getItemForProduct($product);
         if (!$pimProduct) {
             $pimProduct = Mage::getModel('ebayenterprise_catalog/pim_product', array('client_id' => $clientId, 'catalog_id' => $catalogId, 'sku' => $product->getSku()));
             $pimProducts->addItem($pimProduct);
         }
         try {
             $pimProduct->loadPimAttributesByProduct($product, $this->_doc, $this->_getFeedConfig(), $this->_getFeedAttributes($currentStoreId));
         } catch (EbayEnterprise_Catalog_Model_Pim_Product_Validation_Exception $e) {
             $logData = ['sku' => $pimProduct->getSku()];
             $logMessage = 'Product "{sku}" excluded from export.';
             $this->_logger->warning($logMessage, $this->_context->getMetaData(__CLASS__, $logData));
             $this->_logger->logException($e, $this->_context->getMetaData(__CLASS__, [], $e));
             $excludedProductIds[] = $product->getId();
             $pimProducts->deleteItem($pimProduct);
         }
     }
     if ($productIds) {
         $productIds = array_diff($productIds, $excludedProductIds);
     }
     return $pimProducts;
 }