WebsiteBaker 2.13.8 is now available!
R.I.P Dietmar (luisehahne) and thank you for all your valuable work for WBhttps://forum.websitebaker.org/index.php/topic,32355.0.html
if (substr($field,0,4) == "item" && $value > 0) { // Get item_id //$item_id = substr($field,4,strlen($field)-4); $item_id = 39; // Get item attributes and make comma separated string if (isset($_POST['attribute'][0])) { $attributes = implode(",", $_POST['attribute']); } else { ....
<tr> <td class="mod_bakery_cart_td_thumb_f"><a href="{LINK}"><img src="{THUMB_URL}" alt="{NAME}" width="{THUMB_WIDTH}" height="{THUMB_HEIGHT}" border="0" /></a></td> <td class="mod_bakery_cart_td_sku_f">{SKU}</td> <td class="mod_bakery_cart_td_name_f"><span class="mod_bakery_cart_item_f">{NAME}</span><br />{ATTRIBUTE}</td> <td class="mod_bakery_cart_td_quantity_f"> <?php $id = "{ITEM_ID}"; if $id != "39"): ?> <input type="text" name="quantity[{ITEM_ID}][{ATTRIBUTES}]" value="{QUANTITY}" id="id_{ITEM_ID}_{ATTRIBUTES}" style="text-align: right" size="4" /> <?php else: ?> <input type="text" name="quantity[{ITEM_ID}][{ATTRIBUTES}]" readonly="readonly" value="{QUANTITY}" id="id_{ITEM_ID}_{ATTRIBUTES}" style="text-align: right" size="4" /> <?php endif; ?> <a href="#" onclick="javascript: mod_bakery_delete_item_f('{ITEM_ID}_{ATTRIBUTES}');"> <img src="{WB_URL}/modules/bakery/images/delete.gif" alt="{TEXT_DELETE}" title="{TEXT_DELETE}" /></a></td> <td class="mod_bakery_cart_td_price_f">{PRICE}</td> ....
maybe someone can suggest why my 'if' clause is not working
// Show cart table body using template file $tpl->set_file('cart_table_body', 'table_body.htm'); $tpl->set_var(array( 'THUMB_URL' => $items[$i]['thumb_url'], 'THUMB_WIDTH' => $items[$i]['thumb_width'], 'THUMB_HEIGHT' => $items[$i]['thumb_height'], 'LINK' => $items[$i]['link'], 'FIELD_1' => $items[$i]['definable_field_0'], 'FIELD_2' => $items[$i]['definable_field_1'], 'FIELD_3' => $items[$i]['definable_field_2'], 'SKU' => $items[$i]['sku'], 'NAME' => $items[$i]['name'], 'ATTRIBUTE' => $items[$i]['show_attribute'], 'ITEM_ID' => $items[$i]['item_id'], 'ATTRIBUTES' => $items[$i]['attributes'], 'QUANTITY' => $items[$i]['quantity'], 'WB_URL' => WB_URL, 'TEXT_DELETE' => $TEXT['DELETE'], 'PRICE' => $f_price, 'DISPLAY_SHIPPING' => $display_shipping, 'SHIPPING' => $f_shipping, 'TOTAL' => $f_total ));
$read_txt = ($items[$i]['item_id'] == "39") ? 'readonly="readonly"' : ''; // Show cart table body using template file $tpl->set_file('cart_table_body', 'table_body.htm'); $tpl->set_var(array( 'THUMB_URL' => $items[$i]['thumb_url'], 'THUMB_WIDTH' => $items[$i]['thumb_width'], 'THUMB_HEIGHT' => $items[$i]['thumb_height'], 'LINK' => $items[$i]['link'], 'FIELD_1' => $items[$i]['definable_field_0'], 'FIELD_2' => $items[$i]['definable_field_1'], 'FIELD_3' => $items[$i]['definable_field_2'], 'SKU' => $items[$i]['sku'], 'NAME' => $items[$i]['name'], 'ATTRIBUTE' => $items[$i]['show_attribute'], 'ITEM_ID' => $items[$i]['item_id'], 'ATTRIBUTES' => $items[$i]['attributes'], 'QUANTITY' => $items[$i]['quantity'], 'WB_URL' => WB_URL, 'TEXT_DELETE' => $TEXT['DELETE'], 'PRICE' => $f_price, 'DISPLAY_SHIPPING' => $display_shipping, 'SHIPPING' => $f_shipping, 'TOTAL' => $f_total, 'READONLY' => $read_txt ));
<tr> <td class="mod_bakery_cart_td_thumb_f"><a href="{LINK}"><img src="{THUMB_URL}" alt="{NAME}" width="{THUMB_WIDTH}" height="{THUMB_HEIGHT}" border="0" /></a></td> <td class="mod_bakery_cart_td_sku_f">{SKU}</td> <td class="mod_bakery_cart_td_name_f"><span class="mod_bakery_cart_item_f">{NAME}</span><br />{ATTRIBUTE}</td> <td class="mod_bakery_cart_td_quantity_f"><input type="text" name="quantity[{ITEM_ID}][{ATTRIBUTES}]" {READONLY} value="{QUANTITY}" id="id_{ITEM_ID}_{ATTRIBUTES}" style="text-align: right" size="4" /> <a href="#" onclick="javascript: mod_bakery_delete_item_f('{ITEM_ID}_{ATTRIBUTES}');"> <img src="{WB_URL}/modules/bakery/images/delete.gif" alt="{TEXT_DELETE}" title="{TEXT_DELETE}" /></a></td> <td class="mod_bakery_cart_td_price_f">{PRICE}</td> <td class="mod_bakery_cart_td_shipping_f" style="display: {DISPLAY_SHIPPING}">{SHIPPING}</td> <td class="mod_bakery_cart_td_sum_f">{TOTAL}</td></tr>
//added at the beginning (line 137)// control flag to run view2.php$run_once = 0;// if a new order_id is needed (line 171) // Check order id if (!isset($_SESSION['bakery']['order_id']) || ($_SESSION['bakery']['order_id'] == '')) { $run_once = 1;// just before the end of this section (line 218 / 308) // PUT ITEM INTO THE CART if (isset($_POST['add_to_cart']) && ($_POST['add_to_cart'] != '')) {...... // Add default product to cart // *************************** if ($run_once == 1) { include('view2.php'); } }
<?php/* Module developed for the Open Source Content Management System WebsiteBaker (http://WebsiteBaker.org) Copyright (C) 2012, Christoph Marti LICENCE TERMS: This module is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License - version 2 or later, as published by the Free Software Foundation: http://www.gnu.org/licenses/gpl.html. DISCLAIMER: This module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.*/// Prevent this file from being accessed directlyif (defined('WB_PATH') == false) { exit("Cannot access this file directly"); }// Look for language fileif (LANGUAGE_LOADED) { include(WB_PATH.'/modules/bakery/languages/EN.php'); if (file_exists(WB_PATH.'/modules/bakery/languages/'.LANGUAGE.'.php')) { include(WB_PATH.'/modules/bakery/languages/'.LANGUAGE.'.php'); }}// Check if there is a start point definedif (isset($_GET['p']) AND is_numeric($_GET['p']) AND $_GET['p'] >= 0) { $position = $_GET['p'];} else { $position = 0;}// Get user's username, display name, email, and id - needed for insertion into item info$users = array();$query_users = $database->query("SELECT user_id,username,display_name,email FROM ".TABLE_PREFIX."users");if ($query_users->numRows() > 0) { while ($user = $query_users->fetchRow()) { // Insert user info into users array $user_id = $user['user_id']; $users[$user_id]['username'] = $user['username']; $users[$user_id]['display_name'] = $user['display_name']; $users[$user_id]['email'] = $user['email']; }}// Update the section id of the last visited Bakery section for use with MiniCart$_SESSION['bakery']['last_section_id'] = $section_id;// Get general settings$query_general_settings = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_bakery_general_settings");if ($query_general_settings->numRows() > 0) { $fetch_general_settings = $query_general_settings->fetchRow(); $setting_shop_name = stripslashes($fetch_general_settings['shop_name']); $setting_shop_email = stripslashes($fetch_general_settings['shop_email']); $setting_tac_url = stripslashes($fetch_general_settings['tac_url']); $setting_shop_country = stripslashes($fetch_general_settings['shop_country']); $setting_shop_state = stripslashes($fetch_general_settings['shop_state']); $setting_shipping_form = stripslashes($fetch_general_settings['shipping_form']); $setting_state_field = stripslashes($fetch_general_settings['state_field']); $setting_tax_no_field = stripslashes($fetch_general_settings['tax_no_field']); $setting_tax_group = stripslashes($fetch_general_settings['tax_group']); $setting_zip_location = stripslashes($fetch_general_settings['zip_location']); $setting_skip_cart = stripslashes($fetch_general_settings['skip_cart']); $setting_use_captcha = stripslashes($fetch_general_settings['use_captcha']); $setting_definable_field_0 = stripslashes($fetch_general_settings['definable_field_0']); $setting_definable_field_1 = stripslashes($fetch_general_settings['definable_field_1']); $setting_definable_field_2 = stripslashes($fetch_general_settings['definable_field_2']); $setting_stock_mode = stripslashes($fetch_general_settings['stock_mode']); $setting_stock_limit = stripslashes($fetch_general_settings['stock_limit']); $setting_out_of_stock_orders = stripslashes($fetch_general_settings['out_of_stock_orders']); $setting_shop_currency = stripslashes($fetch_general_settings['shop_currency']); $setting_dec_point = stripslashes($fetch_general_settings['dec_point']); $setting_thousands_sep = stripslashes($fetch_general_settings['thousands_sep']); $setting_tax_by = stripslashes($fetch_general_settings['tax_by']); $setting_tax_rate = stripslashes($fetch_general_settings['tax_rate']); $setting_tax_rate1 = stripslashes($fetch_general_settings['tax_rate1']); $setting_tax_rate2 = stripslashes($fetch_general_settings['tax_rate2']); $setting_tax_included = stripslashes($fetch_general_settings['tax_included']); $setting_skip_checkout = stripslashes($fetch_general_settings['skip_checkout']); $setting_tax_rate_shipping = stripslashes($fetch_general_settings['tax_rate_shipping']); $setting_free_shipping = stripslashes($fetch_general_settings['free_shipping']); $setting_free_shipping_msg = stripslashes($fetch_general_settings['free_shipping_msg']); $setting_shipping_method = stripslashes($fetch_general_settings['shipping_method']); $setting_shipping_domestic = stripslashes($fetch_general_settings['shipping_domestic']); $setting_shipping_abroad = stripslashes($fetch_general_settings['shipping_abroad']); $setting_shipping_zone = stripslashes($fetch_general_settings['shipping_zone']); $setting_zone_countries = explode(",", stripslashes($fetch_general_settings['zone_countries'])); // make array $setting_shipping_d_a = $setting_shipping_domestic."/".$setting_shipping_abroad;}// Get payment method settings$query_payment_methods = $database->query("SELECT directory FROM ".TABLE_PREFIX."mod_bakery_payment_methods WHERE active = '1'");if ($query_payment_methods->numRows() > 0) { while ($fetch_payment_methods = $query_payment_methods->fetchRow()) { $setting_payment_methods[] = stripslashes($fetch_payment_methods['directory']); }} else { $setting_payment_methods = array();}$num_payment_methods = count($setting_payment_methods);$skip_checkout = ($setting_skip_checkout == 1 && $num_payment_methods == 1) ? true : false;// If checkout is omitted (1 step less) switch the directory for the step 1-2-3 images to step 1-2 images$step_img_dir = $skip_checkout ? "2_steps" : "3_steps";// Get page settings$query_page_settings = $database->query("SELECT page_offline, offline_text FROM ".TABLE_PREFIX."mod_bakery_page_settings WHERE section_id = '$section_id'");if ($query_page_settings->numRows() > 0) { $fetch_page_settings = $query_page_settings->fetchRow(); $setting_page_offline = stripslashes($fetch_page_settings['page_offline']); $setting_offline_text = stripslashes($fetch_page_settings['offline_text']);}// Get continue url$query_continue_url = $database->query("SELECT p.link FROM ".TABLE_PREFIX."pages p INNER JOIN ".TABLE_PREFIX."mod_bakery_page_settings ps ON p.page_id = ps.page_id WHERE p.page_id = ps.continue_url AND ps.section_id = '$section_id'");if ($query_continue_url->numRows() > 0) { $fetch_continue_url = $query_continue_url->fetchRow(); $setting_continue_url = WB_URL.PAGES_DIRECTORY.stripslashes($fetch_continue_url['link']).PAGE_EXTENSION;}// Add a wrapper for Bakery to help with layoutecho "\n<div id='mod_bakery_wrapper_f'>\n";$end_of_wrapper = "\n</div> <!-- End of bakery wrapper -->\n";// ***************************************************************************************** //// Check if we should show the SHOPPING CART, PROCESS ORDER, the MAIN PAGE or an ITEM itself //// ***************************************************************************************** //// GENERATE ORDER ID FOR NEW ORDERS// ********************************// MSIE image buttons only submit the click coordinates like 'anything_x' and 'anything_y'// Convert POST name 'anything_x' to 'anything'if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { foreach ($_POST as $key => $value) { $count = 0; $ie_post_key = str_replace('_x', '', $key, $count); if ($count > 0) { $_POST[$ie_post_key] = 1; } }}// Check submitted POST/GET vars// if (isset($_REQUEST['view_cart']) && ($_REQUEST['view_cart'] != '') || // normally POST, GET for MiniCart// isset($_POST['add_to_cart']) && ($_POST['add_to_cart'] != '') ||// isset($_POST['update_cart']) && ($_POST['update_cart'] != '') ||// isset($_POST['submit_order']) && ($_POST['submit_order'] != '') ||// isset($_POST['hide_ship_form']) && ($_POST['hide_ship_form'] != '') ||// isset($_POST['add_ship_form']) && ($_POST['add_ship_form'] != '')) { // Check order id if (!isset($_SESSION['bakery']['order_id']) || ($_SESSION['bakery']['order_id'] == '')) { $mktime = @mktime(); $database->query("INSERT INTO " .TABLE_PREFIX."mod_bakery_customer (order_date) VALUES ('$mktime')"); $order_id = mysql_insert_id(); $_SESSION['bakery']['order_id'] = $order_id; } $order_id = $_SESSION['bakery']['order_id']; // SHOPPING CART FUNCTIONS // *********************** // PUT ITEM INTO THE CART //if (isset($_POST['add_to_cart']) && ($_POST['add_to_cart'] != '')) { // Get item ID and quantity ( -> $value) $sql_result1 = $database->query("SELECT * FROM " .TABLE_PREFIX."mod_bakery_order WHERE order_id = '$order_id'"); foreach ($_POST as $field => $value) { // Error message if quantity < 1 if (substr($field,0,4) == "item" && $value < 1) { $cart_error[] = $MOD_BAKERY['ERR_QUANTITY_ZERO']; } if (substr($field,0,4) == "item" && $value > 0) { // Get item_id //$item_id = substr($field,4,strlen($field)-4); $item_id = 39; // Get item attributes and make comma separated string if (isset($_POST['attribute'][0])) { $attributes = implode(",", $_POST['attribute']); } else { // If no attribute is given set it to "none" $attributes = "none"; } // Error message if item is in cart already while ($row1 = $sql_result1->fetchRow()) { if ($row1['item_id'] == $item_id && $row1['attributes'] == $attributes) { $cart_error[] = $MOD_BAKERY['ERR_ITEM_EXISTS']; include('view_cart.php'); echo $end_of_wrapper; // End of bakery wrapper return; } } // Get item price, sku, stock and tax_rate $sql_result2 = $database->query("SELECT title, price, sku, stock, tax_rate FROM " .TABLE_PREFIX."mod_bakery_items WHERE item_id = '$item_id'"); $row2 = $sql_result2->fetchRow(); $row2 = array_map('stripslashes', $row2); $title = $row2['title']; $sku = $row2['sku']; $price = $row2['price']; $tax_rate = $row2['tax_rate']; $stock = $row2['stock']; $quantity = $value; // Only use stock admin if stock is not blank if (is_numeric($stock) && $stock != '') { // If item is short of stock show error message if ($setting_out_of_stock_orders) { // Case: Allow out of stock orders if ($stock < $value) { $cart_error[] = "{$MOD_BAKERY['TXT_SHORT_OF_STOCK_SUBSEQUENT_DELIVERY']}!<br /><b>$stock</b> {$MOD_BAKERY['TXT_ITEMS']} <b>$title</b> {$MOD_BAKERY['TXT_AVAILABLE_QUANTITY']}."; } // Update stock $database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock - '$value' WHERE item_id = '$item_id'"); } else { // Case: No out of stock orders // If item is short of stock... if ($stock <= $value) { // ...set quantity to remaining stock $quantity = $stock; // Show error message if ($stock < $value) { $cart_error[] = "<b>$quantity</b> {$MOD_BAKERY['TXT_ITEMS']} <b>$title</b> {$MOD_BAKERY['TXT_AVAILABLE_QUANTITY']}.<br />{$MOD_BAKERY['TXT_SHORT_OF_STOCK_QUANTITY_CAPPED']}!"; } } // Update stock $database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock - '$quantity' WHERE item_id = '$item_id'"); } } // Insert ordered item data into db if ($quantity > 0) { $database->query("INSERT INTO " .TABLE_PREFIX."mod_bakery_order (order_id, item_id, attributes, sku, quantity, price, tax_rate) VALUES ('$order_id', '$item_id', '$attributes', '$sku', '$quantity', '$price', '$tax_rate')"); } } } // If required skip cart if ($setting_skip_cart == "yes") { include('view_overview.php'); echo $end_of_wrapper; // End of bakery wrapper unset($_SESSION['bakery']['minicart']); return; } else { // Show cart include('view_cart.php'); echo $end_of_wrapper; // End of bakery wrapper return; } //}//}?>
<a href="#" onclick="javascript: if ({ITEM_ID} != 39) {mod_bakery_delete_item_f('{ITEM_ID}_{ATTRIBUTES}');}"><img src="{WB_URL}/modules/bakery/images/delete.gif" alt="{TEXT_DELETE}" title="{TEXT_DELETE}" /></a></td>
added at line 137// control flag to run view2.php$run_once = 0;// variable to preserve $item_id$item_id_saved = '';inserted my control flag (line 173) // Check order id if (!isset($_SESSION['bakery']['order_id']) || ($_SESSION['bakery']['order_id'] == '')) { $run_once = 1; $mktime = @mktime();inserted repeated code at line 295 // Add default product to cart if ($run_once == 1) { $item_id_saved = $item_id; // Error message if quantity < 1 if (substr($field,0,4) == "item" && $value < 1) { $cart_error[] = $MOD_BAKERY['ERR_QUANTITY_ZERO']; } if (substr($field,0,4) == "item" && $value > 0) { // Get item_id //$item_id = substr($field,4,strlen($field)-4); $item_id = 39; // Get item attributes and make comma separated string if (isset($_POST['attribute'][0])) { $attributes = implode(",", $_POST['attribute']); } else { // If no attribute is given set it to "none" $attributes = "none"; } // Error message if item is in cart already while ($row1 = $sql_result1->fetchRow()) { if ($row1['item_id'] == $item_id && $row1['attributes'] == $attributes) { $cart_error[] = $MOD_BAKERY['ERR_ITEM_EXISTS']; include('view_cart.php'); echo $end_of_wrapper; // End of bakery wrapper return; } } // Get item price, sku, stock and tax_rate $sql_result2 = $database->query("SELECT title, price, sku, stock, tax_rate FROM " .TABLE_PREFIX."mod_bakery_items WHERE item_id = '$item_id'"); $row2 = $sql_result2->fetchRow(); $row2 = array_map('stripslashes', $row2); $title = $row2['title']; $sku = $row2['sku']; $price = $row2['price']; $tax_rate = $row2['tax_rate']; $stock = $row2['stock']; $quantity = $value; // Only use stock admin if stock is not blank if (is_numeric($stock) && $stock != '') { // If item is short of stock show error message if ($setting_out_of_stock_orders) { // Case: Allow out of stock orders if ($stock < $value) { $cart_error[] = "{$MOD_BAKERY['TXT_SHORT_OF_STOCK_SUBSEQUENT_DELIVERY']}!<br /><b>$stock</b> {$MOD_BAKERY['TXT_ITEMS']} <b>$title</b> {$MOD_BAKERY['TXT_AVAILABLE_QUANTITY']}."; } // Update stock $database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock - '$value' WHERE item_id = '$item_id'"); } else { // Case: No out of stock orders // If item is short of stock... if ($stock <= $value) { // ...set quantity to remaining stock $quantity = $stock; // Show error message if ($stock < $value) { $cart_error[] = "<b>$quantity</b> {$MOD_BAKERY['TXT_ITEMS']} <b>$title</b> {$MOD_BAKERY['TXT_AVAILABLE_QUANTITY']}.<br />{$MOD_BAKERY['TXT_SHORT_OF_STOCK_QUANTITY_CAPPED']}!"; } } // Update stock $database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock - '$quantity' WHERE item_id = '$item_id'"); } } // Insert ordered item data into db if ($quantity > 0) { $database->query("INSERT INTO " .TABLE_PREFIX."mod_bakery_order (order_id, item_id, attributes, sku, quantity, price, tax_rate) VALUES ('$order_id', '$item_id', '$attributes', '$sku', '$quantity', '$price', '$tax_rate')"); } } // tidy up and restore $item_id $run_once == 0; $item_id = $item_id_saved; }
Note: no changes above this point, reduced code in post to stop overflowing the post character limit// Add a wrapper for Bakery to help with layoutecho "\n<div id='mod_bakery_wrapper_f'>\n";$end_of_wrapper = "\n</div> <!-- End of bakery wrapper -->\n";// control flag to run view2.php$run_once = 0;// variable to preserve $item_id$item_id_saved = '';// ***************************************************************************************** //// Check if we should show the SHOPPING CART, PROCESS ORDER, the MAIN PAGE or an ITEM itself //// ***************************************************************************************** //// GENERATE ORDER ID FOR NEW ORDERS// ********************************// MSIE image buttons only submit the click coordinates like 'anything_x' and 'anything_y'// Convert POST name 'anything_x' to 'anything'if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { foreach ($_POST as $key => $value) { $count = 0; $ie_post_key = str_replace('_x', '', $key, $count); if ($count > 0) { $_POST[$ie_post_key] = 1; } }}// Check submitted POST/GET varsif (isset($_REQUEST['view_cart']) && ($_REQUEST['view_cart'] != '') || // normally POST, GET for MiniCart isset($_POST['add_to_cart']) && ($_POST['add_to_cart'] != '') || isset($_POST['update_cart']) && ($_POST['update_cart'] != '') || isset($_POST['submit_order']) && ($_POST['submit_order'] != '') || isset($_POST['hide_ship_form']) && ($_POST['hide_ship_form'] != '') || isset($_POST['add_ship_form']) && ($_POST['add_ship_form'] != '')) { // Check order id if (!isset($_SESSION['bakery']['order_id']) || ($_SESSION['bakery']['order_id'] == '')) { $mktime = @mktime(); $database->query("INSERT INTO " .TABLE_PREFIX."mod_bakery_customer (order_date) VALUES ('$mktime')"); $order_id = mysql_insert_id(); $_SESSION['bakery']['order_id'] = $order_id; // Delete db records of not submitted orders older than 1 hour $outdate = $mktime - (60 * 60 * 1); $query_outdated_orders = $database->query("SELECT order_id FROM " .TABLE_PREFIX."mod_bakery_customer WHERE order_date < $outdate AND submitted = 'no'"); if ($query_outdated_orders->numRows() > 0) { while ($outdated_orders = $query_outdated_orders->fetchRow()) { $outdated_order_id = stripslashes($outdated_orders['order_id']); // First put not sold items back to stock... $query_order = $database->query("SELECT item_id, quantity FROM " .TABLE_PREFIX."mod_bakery_order WHERE order_id = '$outdated_order_id'"); if ($query_order->numRows() > 0) { while ($order = $query_order->fetchRow()) { $item_id = stripslashes($order['item_id']); $quantity = stripslashes($order['quantity']); // Query item stock $query_items = $database->query("SELECT stock FROM " .TABLE_PREFIX."mod_bakery_items WHERE item_id = '$item_id'"); $item = $query_items->fetchRow(); $stock = stripslashes($item['stock']); // Only use stock admin if stock is not blank if (is_numeric($stock) && $stock != '') { // Update stock to required quantity $database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock + '$quantity' WHERE item_id = '$item_id'"); } } } // ...then delete not submitted orders $database->query("DELETE FROM " .TABLE_PREFIX."mod_bakery_customer WHERE order_id = '$outdated_order_id' AND submitted = 'no'"); $database->query("DELETE FROM " .TABLE_PREFIX."mod_bakery_order WHERE order_id = '$outdated_order_id'"); } } } $order_id = $_SESSION['bakery']['order_id']; // SHOPPING CART FUNCTIONS // *********************** // PUT ITEM INTO THE CART if (isset($_POST['add_to_cart']) && ($_POST['add_to_cart'] != '')) { // Get item ID and quantity ( -> $value) $sql_result1 = $database->query("SELECT * FROM " .TABLE_PREFIX."mod_bakery_order WHERE order_id = '$order_id'"); foreach ($_POST as $field => $value) { // Error message if quantity < 1 if (substr($field,0,4) == "item" && $value < 1) { $cart_error[] = $MOD_BAKERY['ERR_QUANTITY_ZERO']; } if (substr($field,0,4) == "item" && $value > 0) { // Get item_id $item_id = substr($field,4,strlen($field)-4); // Get item attributes and make comma separated string if (isset($_POST['attribute'][0])) { $attributes = implode(",", $_POST['attribute']); } else { // If no attribute is given set it to "none" $attributes = "none"; } // If cart is empty, set flag to add Default Product $n_row = $sql_result1->numRows(); if ($n_row < 1) { $run_once = 1; } // Error message if item is in cart already while ($row1 = $sql_result1->fetchRow()) { if ($row1['item_id'] == $item_id && $row1['attributes'] == $attributes) { $cart_error[] = $MOD_BAKERY['ERR_ITEM_EXISTS']; include('view_cart.php'); echo $end_of_wrapper; // End of bakery wrapper return; } } // Get item price, sku, stock and tax_rate $sql_result2 = $database->query("SELECT title, price, sku, stock, tax_rate FROM " .TABLE_PREFIX."mod_bakery_items WHERE item_id = '$item_id'"); $row2 = $sql_result2->fetchRow(); $row2 = array_map('stripslashes', $row2); $title = $row2['title']; $sku = $row2['sku']; $price = $row2['price']; $tax_rate = $row2['tax_rate']; $stock = $row2['stock']; $quantity = $value; // Only use stock admin if stock is not blank if (is_numeric($stock) && $stock != '') { // If item is short of stock show error message if ($setting_out_of_stock_orders) { // Case: Allow out of stock orders if ($stock < $value) { $cart_error[] = "{$MOD_BAKERY['TXT_SHORT_OF_STOCK_SUBSEQUENT_DELIVERY']}!<br /><b>$stock</b> {$MOD_BAKERY['TXT_ITEMS']} <b>$title</b> {$MOD_BAKERY['TXT_AVAILABLE_QUANTITY']}."; } // Update stock $database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock - '$value' WHERE item_id = '$item_id'"); } else { // Case: No out of stock orders // If item is short of stock... if ($stock <= $value) { // ...set quantity to remaining stock $quantity = $stock; // Show error message if ($stock < $value) { $cart_error[] = "<b>$quantity</b> {$MOD_BAKERY['TXT_ITEMS']} <b>$title</b> {$MOD_BAKERY['TXT_AVAILABLE_QUANTITY']}.<br />{$MOD_BAKERY['TXT_SHORT_OF_STOCK_QUANTITY_CAPPED']}!"; } } // Update stock $database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock - '$quantity' WHERE item_id = '$item_id'"); } } // Insert ordered item data into db if ($quantity > 0) { $database->query("INSERT INTO " .TABLE_PREFIX."mod_bakery_order (order_id, item_id, attributes, sku, quantity, price, tax_rate) VALUES ('$order_id', '$item_id', '$attributes', '$sku', '$quantity', '$price', '$tax_rate')"); } } // Add default product to cart if ($run_once == 1) { $item_id_saved = $item_id; // Error message if quantity < 1 if (substr($field,0,4) == "item" && $value < 1) { $cart_error[] = $MOD_BAKERY['ERR_QUANTITY_ZERO']; } if (substr($field,0,4) == "item" && $value > 0) { // Get item_id //$item_id = substr($field,4,strlen($field)-4); $item_id = 39; // Get item attributes and make comma separated string if (isset($_POST['attribute'][0])) { $attributes = implode(",", $_POST['attribute']); } else { // If no attribute is given set it to "none" $attributes = "none"; } // Error message if item is in cart already while ($row1 = $sql_result1->fetchRow()) { if ($row1['item_id'] == $item_id && $row1['attributes'] == $attributes) { $cart_error[] = $MOD_BAKERY['ERR_ITEM_EXISTS']; include('view_cart.php'); echo $end_of_wrapper; // End of bakery wrapper return; } } // Get item price, sku, stock and tax_rate $sql_result2 = $database->query("SELECT title, price, sku, stock, tax_rate FROM " .TABLE_PREFIX."mod_bakery_items WHERE item_id = '$item_id'"); $row2 = $sql_result2->fetchRow(); $row2 = array_map('stripslashes', $row2); $title = $row2['title']; $sku = $row2['sku']; $price = $row2['price']; $tax_rate = $row2['tax_rate']; $stock = $row2['stock']; $quantity = $value; // Only use stock admin if stock is not blank if (is_numeric($stock) && $stock != '') { // If item is short of stock show error message if ($setting_out_of_stock_orders) { // Case: Allow out of stock orders if ($stock < $value) { $cart_error[] = "{$MOD_BAKERY['TXT_SHORT_OF_STOCK_SUBSEQUENT_DELIVERY']}!<br /><b>$stock</b> {$MOD_BAKERY['TXT_ITEMS']} <b>$title</b> {$MOD_BAKERY['TXT_AVAILABLE_QUANTITY']}."; } // Update stock $database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock - '$value' WHERE item_id = '$item_id'"); } else { // Case: No out of stock orders // If item is short of stock... if ($stock <= $value) { // ...set quantity to remaining stock $quantity = $stock; // Show error message if ($stock < $value) { $cart_error[] = "<b>$quantity</b> {$MOD_BAKERY['TXT_ITEMS']} <b>$title</b> {$MOD_BAKERY['TXT_AVAILABLE_QUANTITY']}.<br />{$MOD_BAKERY['TXT_SHORT_OF_STOCK_QUANTITY_CAPPED']}!"; } } // Update stock $database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = stock - '$quantity' WHERE item_id = '$item_id'"); } } // Insert ordered item data into db if ($quantity > 0) { $database->query("INSERT INTO " .TABLE_PREFIX."mod_bakery_order (order_id, item_id, attributes, sku, quantity, price, tax_rate) VALUES ('$order_id', '$item_id', '$attributes', '$sku', '$quantity', '$price', '$tax_rate')"); } } // tidy up and restore $item_id $run_once == 0; $item_id = $item_id_saved; } } // If required skip cart if ($setting_skip_cart == "yes") { include('view_overview.php'); echo $end_of_wrapper; // End of bakery wrapper unset($_SESSION['bakery']['minicart']); return; } else { // Show cart include('view_cart.php'); echo $end_of_wrapper; // End of bakery wrapper return; } } // UPDATE CART elseif (isset($_POST['update_cart']) && ($_POST['update_cart'] != '')) {Note: no changes below this point, reduced code in post to stop overflowing the post character limit
Note: if I include the full code I go over the post character limit so here is the changed section only. // Show cart table body using template file $read_txt = ($items[$i]['item_id'] == "39") ? 'readonly="readonly"' : ''; $tpl->set_file('cart_table_body', 'table_body.htm'); $tpl->set_var(array( 'THUMB_URL' => $items[$i]['thumb_url'], 'THUMB_WIDTH' => $items[$i]['thumb_width'], 'THUMB_HEIGHT' => $items[$i]['thumb_height'], 'LINK' => $items[$i]['link'], 'SKU' => $items[$i]['sku'], 'NAME' => $items[$i]['name'], 'ATTRIBUTE' => $items[$i]['show_attribute'], 'ITEM_ID' => $items[$i]['item_id'], 'ATTRIBUTES' => $items[$i]['attributes'], 'QUANTITY' => $items[$i]['quantity'], 'WB_URL' => WB_URL, 'TEXT_DELETE' => $TEXT['DELETE'], 'PRICE' => $f_price, 'DISPLAY_SHIPPING' => $display_shipping, 'SHIPPING' => $f_shipping, 'TOTAL' => $f_total, 'READONLY' => $read_txt )); $tpl->pparse('output', 'cart_table_body');}
<tr> <td class="mod_bakery_cart_td_thumb_f"><a href="{LINK}"><img src="{THUMB_URL}" alt="{NAME}" width="{THUMB_WIDTH}" height="{THUMB_HEIGHT}" border="0" /></a></td> <td class="mod_bakery_cart_td_sku_f">{SKU}</td> <td class="mod_bakery_cart_td_name_f"><span class="mod_bakery_cart_item_f">{NAME}</span><br />{ATTRIBUTE}</td> <td class="mod_bakery_cart_td_quantity_f"><input type="text" name="quantity[{ITEM_ID}][{ATTRIBUTES}]" {READONLY} value="{QUANTITY}" id="id_{ITEM_ID}_{ATTRIBUTES}" style="text-align: right" size="4" /> <a href="#" onclick="javascript: if ({ITEM_ID} != 39) {mod_bakery_delete_item_f('{ITEM_ID}_{ATTRIBUTES}');}"> <img src="{WB_URL}/modules/bakery/images/delete.gif" alt="{TEXT_DELETE}" title="{TEXT_DELETE}" /></a></td> <td class="mod_bakery_cart_td_price_f">{PRICE}</td> <td class="mod_bakery_cart_td_shipping_f" style="display: {DISPLAY_SHIPPING}">{SHIPPING}</td> <td class="mod_bakery_cart_td_sum_f">{TOTAL}</td></tr>