/** * Removes options and their variants by option identifier * * @param int $option_id Option identifier * @param int $pid Identifier of the product from which the option should be removed (for global options) * @return bool True on success, false otherwise */ function fn_delete_product_option($option_id, $pid = 0) { /** * Adds additional actions before product option deleting * * @param int $option_id Option identifier * @param int $pid Product identifier */ fn_set_hook('delete_product_option_pre', $option_id, $pid); $option_deleted = false; if (!empty($option_id)) { $condition = fn_get_company_condition('?:product_options.company_id'); $_otps = db_get_row("SELECT product_id, inventory FROM ?:product_options WHERE option_id = ?i {$condition}", $option_id); if (empty($_otps)) { return false; } $product_id = $_otps['product_id']; $option_inventory = $_otps['inventory']; $product_link = db_get_fields("SELECT product_id FROM ?:product_global_option_links WHERE option_id = ?i AND product_id = ?i", $option_id, $pid); if (empty($product_id) && !empty($product_link)) { // Linked option $option_description = db_get_field("SELECT option_name FROM ?:product_options_descriptions WHERE option_id = ?i AND lang_code = ?s", $option_id, CART_LANGUAGE); db_query("DELETE FROM ?:product_global_option_links WHERE product_id = ?i AND option_id = ?i", $pid, $option_id); fn_set_notification('W', __('warning'), __('option_unlinked', array('[option_name]' => $option_description))); } else { // Product option db_query("DELETE FROM ?:product_options_descriptions WHERE option_id = ?i", $option_id); db_query("DELETE FROM ?:product_options WHERE option_id = ?i", $option_id); fn_delete_product_option_variants($option_id); } if ($option_inventory == "Y" && !empty($product_id)) { fn_delete_product_option_combinations($product_id); } $option_deleted = true; } /** * Adds additional actions after product option deleting * * @param int $option_id Option identifier * @param int $pid Product identifier * @param bool $option_deleted True if option was successfully deleted, false otherwise */ fn_set_hook('delete_product_option_post', $option_id, $pid, $option_deleted); return $option_deleted; }
function fn_delete_product_option($option_id, $pid = 0) { if (!empty($option_id)) { $condition = fn_get_company_condition(); $_otps = db_get_row("SELECT product_id, inventory FROM ?:product_options WHERE option_id = ?i {$condition}", $option_id); if (empty($_otps)) { return false; } $product_id = $_otps['product_id']; $option_inventory = $_otps['inventory']; $product_link = db_get_fields("SELECT product_id FROM ?:product_global_option_links WHERE option_id = ?i AND product_id = ?i", $option_id, $pid); if (empty($product_id) && !empty($product_link)) { // Linked option $option_description = db_get_field("SELECT option_name FROM ?:product_options_descriptions WHERE option_id = ?i AND lang_code = ?s", $option_id, CART_LANGUAGE); db_query("DELETE FROM ?:product_global_option_links WHERE product_id = ?i AND option_id = ?i", $pid, $option_id); fn_set_notification('W', fn_get_lang_var('warning'), str_replace('[option_name]', $option_description, fn_get_lang_var('option_unlinked'))); } else { // Product option $_vars = db_get_fields("SELECT variant_id FROM ?:product_option_variants WHERE option_id = ?i", $option_id); db_query("DELETE FROM ?:product_options_descriptions WHERE option_id = ?i", $option_id); db_query("DELETE FROM ?:product_options WHERE option_id = ?i", $option_id); fn_delete_product_option_variants($option_id); } if ($option_inventory == "Y" && !empty($product_id)) { $c_ids = db_get_fields("SELECT combination_hash FROM ?:product_options_inventory WHERE product_id = ?i", $product_id); db_query("DELETE FROM ?:product_options_inventory WHERE product_id = ?i", $product_id); foreach ($c_ids as $c_id) { fn_delete_image_pairs($c_id, 'product_option', ''); } } fn_set_hook('delete_product_option', $option_id, $pid); return true; } return false; }