protected function _prepareDataForSave($product, $productData)
 {
     /* @var $product Mage_Catalog_Model_Product */
     if (isset($productData['categories'])) {
         $categoryIds = Mage::helper('springboardretail_api/catalog_product')->getCategoryIdsByNames((array) $productData['categories']);
         if (!empty($categoryIds)) {
             $productData['categories'] = array_unique($categoryIds);
         }
     }
     if (isset($productData['website_ids'])) {
         $websiteIds = $productData['website_ids'];
         foreach ($websiteIds as $i => $websiteId) {
             if (!is_numeric($websiteId)) {
                 $website = Mage::app()->getWebsite($websiteId);
                 if ($website->getId()) {
                     $websiteIds[$i] = $website->getId();
                 }
             }
         }
         $product->setWebsiteIds($websiteIds);
         unset($productData['website_ids']);
     }
     foreach ($productData as $code => $value) {
         $productData[$code] = Mage::helper('springboardretail_api/catalog_product')->getOptionKeyByLabel($code, $value);
     }
     parent::_prepareDataForSave($product, $productData);
     if (isset($productData['associated_skus'])) {
         $simpleSkus = $productData['associated_skus'];
         $priceChanges = isset($productData['price_changes']) ? $productData['price_changes'] : array();
         $configurableAttributes = isset($productData['configurable_attributes']) ? $productData['configurable_attributes'] : array();
         Mage::helper('springboardretail_api/catalog_product')->associateProducts($product, $simpleSkus, $priceChanges, $configurableAttributes);
     }
 }
Пример #2
0
 /**
  * Set additional data before product saved
  *
  * @param    Mage_Catalog_Model_Product $product
  * @param    array $productData
  * @return	  object
  */
 protected function _prepareDataForSave($product, $productData)
 {
     parent::_prepareDataForSave($product, $productData);
     //Mage::log('Magja prepareDataForSave called');
     if (isset($productData['configurable_products_data']) && is_array($productData['configurable_products_data'])) {
         Mage::log('Setting configurable_products_data ' . var_export($productData['configurable_products_data'], true));
         $product->setConfigurableProductsData($productData['configurable_products_data']);
     }
     /*
      * Check for configurable products array passed through API Call
      */
     if (isset($productData['configurable_attributes_data']) && is_string($productData['configurable_attributes_data'])) {
         $productData['configurable_attributes_data'] = json_decode($productData['configurable_attributes_data'], true);
     }
     if (isset($productData['configurable_attributes_data']) && is_array($productData['configurable_attributes_data'])) {
         Mage::log('Setting configurable_attributes_data ' . var_export($productData['configurable_attributes_data'], true));
         foreach ($productData['configurable_attributes_data'] as $key => $data) {
             //Check to see if these values exist, otherwise try and populate from existing values
             $data['label'] = !empty($data['label']) ? $data['label'] : $product->getResource()->getAttribute($data['attribute_code'])->getStoreLabel();
             $data['frontend_label'] = !empty($data['frontend_label']) ? $data['frontend_label'] : $product->getResource()->getAttribute($data['attribute_code'])->getFrontendLabel();
             $productData['configurable_attributes_data'][$key] = $data;
         }
         $product->setConfigurableAttributesData($productData['configurable_attributes_data']);
         $product->setCanSaveConfigurableAttributes(1);
     }
 }
Пример #3
0
 protected function _prepareDataForSave($product, $productData)
 {
     /* @var $product Mage_Catalog_Model_Product */
     foreach ($productData as $code => $value) {
         $productData[$code] = $this->getOptionKeyByLabel($code, $value);
     }
     parent::_prepareDataForSave($product, $productData);
     if (isset($productData['associated_product_ids'])) {
         $simpleProductIds = $productData['associated_product_ids'];
         $priceChanges = isset($productData['price_changes']) ? $productData['price_changes'] : array();
         $configurableAttributes = isset($productData['configurable_attributes']) ? $productData['configurable_attributes'] : array();
         $this->associateProducts($product, $simpleProductIds, $priceChanges, $configurableAttributes);
     }
 }