/** * Save type related data * * @return unknown */ public function save() { parent::save(); $this->getProduct()->getLinkInstance()->saveGroupedLinks($this->getProduct()); return $this; }
/** * Save configurable product depended data * * @param Mage_Catalog_Model_Product $product * @return Mage_Catalog_Model_Product_Type_Configurable */ public function save($product = null) { parent::save($product); /** * Save Attributes Information */ if ($data = $this->getProduct($product)->getConfigurableAttributesData()) { foreach ($data as $attributeData) { $id = isset($attributeData['id']) ? $attributeData['id'] : null; Mage::getModel('catalog/product_type_configurable_attribute')->setData($attributeData)->setId($id)->setStoreId($this->getProduct($product)->getStoreId())->setProductId($this->getProduct($product)->getId())->save(); } } /** * Save product relations */ $data = $this->getProduct($product)->getConfigurableProductsData(); if (is_array($data)) { $productIds = array_keys($data); Mage::getResourceModel('catalog/product_type_configurable')->saveProducts($this->getProduct($product), $productIds); } return $this; }
/** * Save type related data * * @param Mage_Catalog_Model_Product $product * @return Mage_Bundle_Model_Product_Type */ public function save($product = null) { parent::save($product); $product = $this->getProduct($product); /* @var $resource Mage_Bundle_Model_Mysql4_Bundle */ $resource = Mage::getResourceModel('bundle/bundle'); $options = $product->getBundleOptionsData(); if ($options) { $product->setIsRelationsChanged(true); foreach ($options as $key => $option) { if (isset($option['option_id']) && $option['option_id'] == '') { unset($option['option_id']); } $optionModel = Mage::getModel('bundle/option')->setData($option)->setParentId($product->getId())->setStoreId($product->getStoreId()); $optionModel->isDeleted((bool) $option['delete']); $optionModel->save(); $options[$key]['option_id'] = $optionModel->getOptionId(); } $usedProductIds = array(); $excludeSelectionIds = array(); $selections = $product->getBundleSelectionsData(); if ($selections) { foreach ($selections as $index => $group) { foreach ($group as $key => $selection) { if (isset($selection['selection_id']) && $selection['selection_id'] == '') { unset($selection['selection_id']); } if (!isset($selection['is_default'])) { $selection['is_default'] = 0; } $selectionModel = Mage::getModel('bundle/selection')->setData($selection)->setOptionId($options[$index]['option_id'])->setParentProductId($product->getId()); $selectionModel->isDeleted((bool) $selection['delete']); $selectionModel->save(); $selection['selection_id'] = $selectionModel->getSelectionId(); if ($selectionModel->getSelectionId()) { $excludeSelectionIds[] = $selectionModel->getSelectionId(); $usedProductIds[] = $selectionModel->getProductId(); } } } $resource->dropAllUnneededSelections($product->getId(), $excludeSelectionIds); $resource->saveProductRelations($product->getId(), array_unique($usedProductIds)); } if ($product->getData('price_type') != $product->getOrigData('price_type')) { $resource->dropAllQuoteChildItems($product->getId()); } } return $this; }
/** * Save type related data * * @param Mage_Catalog_Model_Product $product * @return Mage_Catalog_Model_Product_Type_Grouped */ public function save($product) { parent::save($product); $product->getLinkInstance()->saveGroupedLinks($product); return $this; }
/** * Save configurable product depended data * * @param Mage_Catalog_Model_Product $product * @return Mage_Catalog_Model_Product_Type_Configurable */ public function save($product) { parent::save($product); /* Save attributes information */ $data = $product->getConfigurableAttributesData(); if ($data) { foreach ($data as $attributeData) { /** @var $configurableAttribute Mage_Catalog_Model_Product_Type_Configurable_Attribute */ $configurableAttribute = Mage::getModel('Mage_Catalog_Model_Product_Type_Configurable_Attribute'); if (!empty($attributeData['id'])) { $configurableAttribute->load($attributeData['id']); } else { $configurableAttribute->loadByProductAndAttribute($product, $this->getAttributeById($attributeData['attribute_id'], $product)); } unset($attributeData['id']); $configurableAttribute->addData($attributeData)->setStoreId($product->getStoreId())->setProductId($product->getId())->save(); } /** @var $configurableAttributesCollection Mage_Catalog_Model_Resource_Product_Type_Configurable_Attribute_Collection */ $configurableAttributesCollection = Mage::getResourceModel('Mage_Catalog_Model_Resource_Product_Type_Configurable_Attribute_Collection'); $configurableAttributesCollection->setProductFilter($product); $configurableAttributesCollection->addFieldToFilter('attribute_id', array('nin' => $this->getUsedProductAttributeIds($product))); $configurableAttributesCollection->walk('delete'); } /* Save product relations */ $productIds = $product->getAssociatedProductIds(); if (is_array($productIds)) { Mage::getResourceModel('Mage_Catalog_Model_Resource_Product_Type_Configurable')->saveProducts($product, $productIds); } return $this; }
public function save() { parent::save(); if ($options = $this->getProduct()->getBundleOptionsData()) { foreach ($options as $key => $option) { if (isset($option['option_id']) && $option['option_id'] == '') { unset($option['option_id']); } $optionModel = Mage::getModel('bundle/option')->setData($option)->setParentId($this->getProduct()->getId())->setStoreId($this->getProduct()->getStoreId()); $optionModel->isDeleted((bool) $option['delete']); $optionModel->save(); $options[$key]['option_id'] = $optionModel->getOptionId(); } $excludeSelectionIds = array(); if ($selections = $this->getProduct()->getBundleSelectionsData()) { foreach ($selections as $index => $group) { foreach ($group as $key => $selection) { if (isset($selection['selection_id']) && $selection['selection_id'] == '') { unset($selection['selection_id']); } if (!isset($selection['is_default'])) { $selection['is_default'] = 0; } $selectionModel = Mage::getModel('bundle/selection')->setData($selection)->setOptionId($options[$index]['option_id'])->setParentProductId($this->getProduct()->getId()); $selectionModel->isDeleted((bool) $selection['delete']); $selectionModel->save(); $selection['selection_id'] = $selectionModel->getSelectionId(); if ($selectionModel->getSelectionId()) { $excludeSelectionIds[] = $selectionModel->getSelectionId(); } } } Mage::getResourceModel('bundle/bundle')->dropAllUnneededSelections($this->getProduct()->getId(), $excludeSelectionIds); } if ($this->getProduct()->getData('price_type') != $this->getProduct()->getOrigData('price_type')) { Mage::getResourceModel('bundle/bundle')->dropAllQuoteChildItems($this->getProduct()->getId()); } } return $this; }