Example #1
0
 /**
  * Save type related data
  *
  * @return unknown
  */
 public function save()
 {
     parent::save();
     $this->getProduct()->getLinkInstance()->saveGroupedLinks($this->getProduct());
     return $this;
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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;
 }
Example #5
0
 /**
  * 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;
 }
Example #6
0
 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;
 }