/** * Handles adding or updating parameter values for a product an its product types * @since VirtueMart 1.1.0 * @param array $d */ function handleParameters( &$d ) { global $db; $product_id= intval( $d["product_id"] ); $q = "SELECT `product_type_id` FROM `#__{vm}_product_product_type_xref` WHERE "; $q .= "`product_id`=$product_id"; $db->query($q); $dbpt = new ps_DB; $dbp = new ps_DB; // For every Product Type while ($db->next_record()) { $product_type_id = $db->f("product_type_id"); $q = "SELECT * FROM #__{vm}_product_type_parameter WHERE "; $q .= "product_type_id='$product_type_id' "; $q .= "ORDER BY parameter_list_order"; $dbpt->query($q); $q = "SELECT COUNT(`product_id`) as num_rows FROM `#__{vm}_product_type_$product_type_id` WHERE "; $q .= "product_id='$product_id'"; $dbp->query($q); $dbp->next_record(); if ( $dbp->f('num_rows') == 0 ) { // Add record if not exist (Items) $q = "INSERT INTO #__{vm}_product_type_$product_type_id (product_id) "; $q .= "VALUES ('$product_id')"; $dbp->query($q); } // Update record $q = "UPDATE #__{vm}_product_type_$product_type_id SET "; $q .= "product_id='$product_id'"; while ($dbpt->next_record()) { if ($dbpt->f("parameter_type")!="B") { // if it is not breaker $value=$d["product_type_".$product_type_id."_".$dbpt->f("parameter_name")]; if ($dbpt->f("parameter_type")=="V" && is_array($value)) { $value = join(';',$value); } if ($value=="") { $value='NULL'; } else { $value="'".$dbpt->getEscaped($value)."'"; } $q .= ',`'.$dbpt->f('parameter_name', false).'`='.$value; } } $q .= ' WHERE product_id = '.$d['product_id']; $dbp->query($q); } }