コード例 #1
0
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));
        }
    }
}
コード例 #2
0
                    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']));