Example #1
0
 public function afterSave()
 {
     // Process related products
     if ($this->_related !== null) {
         $this->clearRelatedProducts();
         foreach ($this->_related as $id) {
             $related = new ShopRelatedProduct();
             $related->product_id = $this->id;
             $related->related_id = $id;
             $related->save(false, false);
         }
     }
     // Save configurable attributes
     if ($this->_configurable_attribute_changed === true) {
         // Clear
         Yii::app()->db->createCommand()->delete('{{shop_product_configurable_attributes}}', 'product_id = :id', array(':id' => $this->id));
         foreach ($this->_configurable_attributes as $attr_id) {
             Yii::app()->db->createCommand()->insert('{{shop_product_configurable_attributes}}', array('product_id' => $this->id, 'attribute_id' => $attr_id));
         }
     }
     // Process min and max price for configurable product
     if ($this->use_configurations) {
         $this->updatePrices($this);
     } else {
         // Check if product is configuration
         $query = Yii::app()->db->createCommand()->from('{{shop_product_configurations}} t')->where(array('in', 't.configurable_id', array($this->id)))->queryAll();
         foreach ($query as $row) {
             $model = ShopProduct::model()->findByPk($row['product_id']);
             if ($model) {
                 $this->updatePrices($model);
             }
         }
     }
     //  $this->date_update = date('Y-m-d H:i:s');
     return parent::afterSave();
 }
 /**
  * Copy related products
  *
  * @param ShopProduct $original
  * @param ShopProduct $copy
  */
 protected function copyRelated(ShopProduct $original, ShopProduct $copy)
 {
     $related = $original->related;
     if (!empty($related)) {
         foreach ($related as $p) {
             $model = new ShopRelatedProduct();
             $model->product_id = $copy->id;
             $model->related_id = $p->related_id;
             $model->save();
         }
     }
 }