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); } }
/** * 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); } }
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); } }