function fn_look_through_variants_prices($product_id, $options, $variants) { $product = fn_get_product_data($product_id, $_SESSION['auth'], CART_LANGUAGE, '', true, true, true, true, $auth['area'] == 'A' && !empty($_REQUEST['action']) && $_REQUEST['action'] == 'preview'); $product['product_options'] = fn_get_product_options(array($product_id), CART_LANGUAGE); $product = fn_apply_options_rules($product); //var_dump($product['product_options']); $position = 0; $hashes = array(); $combinations = fn_get_options_combinations($options, $variants); //var_dump($combinations); foreach ($combinations as $key => $combination) { $flagToUnsetArrayElement = 0; $productArrayOtionsVariants = fn_get_options_variants_by_option_variant_id($product_id, $combination); foreach ($combination as $optionId => $variantId) { if ($productArrayOtionsVariants[$optionId] && !in_array($variantId, $productArrayOtionsVariants[$optionId])) { $flagToUnsetArrayElement = 1; } } if ($flagToUnsetArrayElement == 1) { unset($combinations[$key]); } } //var_dump($combinations); if (!empty($combinations)) { foreach ($combinations as $combination) { $_data = array(); $_data['product_id'] = $product_id; $_data['combination_hash'] = fn_generate_cart_id($product_id, array('product_options' => $combination)); if (array_search($_data['combination_hash'], $hashes) === false) { $hashes[] = $_data['combination_hash']; $_data['combination'] = fn_get_options_combination($combination); $product['product_options'] = fn_get_selected_product_options($product['product_id'], $combination, CART_LANGUAGE); $product = fn_apply_options_rules($product); $_data['price'] = fn_calculate_price_of_a_product($product, $combination); $old_data = db_get_row("SELECT combination_hash, price " . "FROM ?:product_options_inventory_prices " . "WHERE product_id = ?i AND combination_hash = ?i AND temp = 1", $product_id, $_data['combination_hash']); /** * Changes data before update combination * * @param array $combination Array of combination data * @param array $data Combination data to update * @param int $product_id Product identifier * @param int $amount Default combination amount * @param array $options Array of options identifiers * @param array $variants Array of option variants identifiers arrays in order corresponding to $options parameter */ db_query("REPLACE INTO ?:product_options_inventory_prices ?e", $_data); $combinations[] = $combination; } echo str_repeat('. ', count($combination)); } } }
if ($i % 2 == 0) { $combination[$combinationArrayItems[$i]] = $combinationArrayItems[$i + 1]; } } //var_dump($optionCombinationStart['combination']);echo" ----- ";var_dump(array("product_id"=>$optionCombinationStart['product_id'],"combination_hash"=>$optionCombinationStart['combination_hash'],"combination"=>$combination));echo"<br/>"; $optionCombinationsFinal[] = array("product_id" => $optionCombinationStart['product_id'], "combination_hash" => $optionCombinationStart['combination_hash'], "combination" => $combination, "old_price" => $optionCombinationStart['price']); } } foreach ($optionCombinationsFinal as $optionCombinationFinal) { $product = fn_get_product_data($optionCombinationFinal['product_id'], $_SESSION['auth'], CART_LANGUAGE, '', true, true, true, true, $auth['area'] == 'A' && !empty($_REQUEST['action']) && $_REQUEST['action'] == 'preview'); $product['product_options'] = fn_get_product_options(array($optionCombinationFinal['product_id']), CART_LANGUAGE); $product = fn_apply_options_rules($product); $product['product_options'] = fn_get_selected_product_options($product['product_id'], $combination, CART_LANGUAGE); $product = fn_apply_options_rules($product); //var_dump($optionCombinationFinal['product_id']);echo" ==> ";var_dump($optionCombinationFinal['combination_hash']);echo" ==> ";var_dump($optionCombinationFinal['old_price']);echo" => ";var_dump(fn_calculate_price_of_a_product($product, $optionCombinationFinal['combination']));echo"<br/>"; $newPrice = fn_calculate_price_of_a_product($product, $optionCombinationFinal['combination']); db_query("UPDATE ?:product_options_inventory_prices SET ?u WHERE product_id = ?i AND combination_hash=?s", array('price' => $newPrice), $optionCombinationFinal['product_id'], $optionCombinationFinal['combination_hash']); } } exit; } if ($mode == 'option_variant_link_product_save') { // delete the link allready in db_query('DELETE FROM ?:product_option_variants_link WHERE `option_variant_id`=?i AND `product_id` = ?i', $_REQUEST['option_variant_id'], intval($_REQUEST['product_id'])); //insert the new link $_data = array('option_variant_id' => $_REQUEST['option_variant_id'], 'product_id' => $_REQUEST['product_id'], 'product_nr' => $_REQUEST['product_nr']); echo $inserted_id = db_query("INSERT INTO ?:product_option_variants_link ?e", $_data); exit; } if ($mode == 'option_variant_link_product_remove') { db_query('DELETE FROM ?:product_option_variants_link WHERE `option_variant_id`=?i AND `product_id` = ?i', $_REQUEST['option_variant_id'], intval($_REQUEST['product_id']));