Files
2017-03-02 20:30:40 -06:00

1135 lines
45 KiB
PHP
Executable File

<?php
/*
+--------------------------------------------------------------------------
| CubeCart 4
| ========================================
| CubeCart is a registered trade mark of Devellion Limited
| Copyright Devellion Limited 2006. All rights reserved.
| Devellion Limited,
| 5 Bridge Street,
| Bishops Stortford,
| HERTFORDSHIRE.
| CM23 2JU
| UNITED KINGDOM
| http://www.devellion.com
| UK Private Limited Company No. 5323904
| ========================================
| Web: http://www.cubecart.com
| Email: info (at) cubecart (dot) com
| License Type: CubeCart is NOT Open Source Software and Limitations Apply
| Licence Info: http://www.cubecart.com/v4-software-license
+--------------------------------------------------------------------------
| cart.inc.php
| ========================================
| Core Checkout & Cart Pages
+--------------------------------------------------------------------------
*/
if(!defined('CC_INI_SET')) die("Access Denied");
session_start(); // required for PayPal Pro
/* BEGIN Browser back button fix - Thanks Convict */
if ($_SESSION['cc_back']) { // session variable set in gateway.inc.php around line 290
$sess_cart_order_id = base64_decode($_SESSION['cc_back']);
unset($_SESSION['cc_back']);
require_once("classes".CC_DS."cart".CC_DS."order.php");
$order = new order();
$sess_sum = $order->getOrderSum($sess_cart_order_id);
if ($sess_sum['status']!=2 && $sess_sum['status']!=3) {
$pastBasket = $db->select(sprintf("SELECT `basket` FROM `%sCubeCart_order_sum` WHERE `cart_order_id` = %s",$glob['dbprefix'],$db->MySQLSafe($sess_cart_order_id)));
if($pastBasket==true) {
$record['basket'] = "'".$pastBasket[0]['basket']."'";
$db->update($glob['dbprefix']."CubeCart_sessions", $record, "`sessId`= '".$cc_session->ccUserData['sessId']."'");
}
$order->orderStatus(6, $sess_cart_order_id, false, true);
httpredir(currentPage());
}
}
/* END Browser back button fix - Thanks Convict */
// include lang file
$lang1 = getLang("includes".CC_DS."content".CC_DS."reg.inc.php");
$lang2 = getLang("includes".CC_DS."content".CC_DS."cart.inc.php");
$lang = array_merge($lang1, $lang2);
require_once("classes".CC_DS."cart".CC_DS."shoppingCart.php");
$cart = new cart();
// Dangerous var fixed $view_cart->assign("VAL_BACK_TO", $_GET['_a']);
$allowed_a = array("cart","step1","step2");
$current_a = (in_array($_GET['_a'],$allowed_a)) ? $_GET['_a'] : "cart";
// check the user is logged on
if($_GET['_a']=="step2" && empty($cc_session->ccUserData['customer_id'])) {
httpredir("index.php?_g=co&_a=step1");
}
// if user is logged in an act = cart jump ahead to step2
else if($_GET['_a']=="cart" && $cc_session->ccUserData['customer_id']>0) {
# $basket = $cart->cartContents($cc_session->ccUserData['basket']);
# if (!empty($basket)) {
httpredir("index.php?_g=co&_a=step2");
# }
}
$basket = $cart->cartContents($cc_session->ccUserData['basket']);
// Flexible Taxes, by Estelle Winterflood
$config_tax_mod = fetchDbConfig("Multiple_Tax_Mod");
if(isset($_GET['remlast'])) {
$cart->unsetVar("invArray");
$cart->removeLastItem();
$refresh = true;
}
if (isset($_GET['remCode'])) {
$cart->removeCoupon($_GET['remCode']);
// lose the post vars
$refresh = true;
}
if (isset($_POST['coupon']) && !empty($_POST['coupon']) && !isset($basket['code'])){
$cart->addCoupon($_POST['coupon']);
// lose post vars
$refresh = true;
}
if(isset($_POST['shipKey']) && $_POST['shipKey']>0) {
$cart->setVar($_POST['shipKey'],"shipKey");
// lose post vars
$refresh = true;
}
if(isset($_POST['delInf'])) {
// start: Flexible Taxes, by Estelle Winterflood
if (isset($_POST['which_field'])){
$delivery = $_POST['delInf'];
if ($_POST['which_field']=="T"){
unset($delivery['county_sel']);
} elseif ($_POST['which_field']=="S") {
$delivery['county'] = $delivery['county_sel'];
unset($delivery['county_sel']);
}
$_POST['delInf'] = $delivery;
}
$cart->setVar($_POST['delInf'],"delInf");
$refresh = true;
}
if(isset($_GET['remove'])) {
$cart->unsetVar("invArray");
$cart->remove($_GET['remove']);
$refresh = true;
}
if (isset($_POST['quan'])) {
$cart->unsetVar('invArray');
foreach ($_POST['quan'] as $key => $value) {
$cart->update($key, $value);
}
$refresh = true;
}
if(isset($_GET['mode']) && $_GET['mode'] == "emptyCart") {
## Empty the cart
$cart->emptyCart();
$refresh = true;
}
if(isset($_POST['productCode']) && !empty($_POST['productCode'])) {
$cart->addByCode($_POST['productCode']);
$refresh = true;
}
if ($refresh) {
$excludeGetVars = array("editDel" => 1, "remCode" => 1, "mode" => 1, "remove" => 1, "remlast" => 1);
httpredir(currentpage($excludeGetVars));
}
$view_cart = new XTemplate ("content".CC_DS."cart.tpl");
$view_cart->assign("LANG_CART",$lang['cart']['cart']);
$view_cart->assign("LANG_CHECKOUT", $lang['cart']['checkout']);
$view_cart->assign("LANG_PAYMENT", $lang['cart']['payment']);
$view_cart->assign("LANG_COMPLETE", $lang['cart']['complete']);
$view_cart->assign("LANG_ADD_PRODCODE",$lang['cart']['add_more']);
$view_cart->assign("LANG_ADD", $lang['cart']['add']);
$view_cart->assign("LANG_QTY",$lang['cart']['qty']);
$view_cart->assign("LANG_PRODUCT",$lang['cart']['product']);
$view_cart->assign("LANG_CODE",$lang['cart']['code']);
$view_cart->assign("LANG_STOCK",$lang['cart']['stock']);
$view_cart->assign("LANG_PRICE",$lang['cart']['price']);
$view_cart->assign("LANG_LINE_PRICE",$lang['cart']['line_price']);
$view_cart->assign("LANG_DELETE",$lang['cart']['delete']);
$view_cart->assign("LANG_REMOVE_ITEM",$lang['cart']['remove']);
if ($_GET['_a'] == 'cart') {
$view_cart->assign("CONT_VAL","index.php?_g=co&_a=step1");
$view_cart->assign("LANG_CHECKOUT_BTN",$lang['cart']['checkout_btn']);
$view_cart->assign("LANG_VIEW_CART",$lang['cart']['view_cart']);
$view_cart->assign("CLASS_CART","class='txtcartProgressCurrent'");
$view_cart->assign("CLASS_STEP2","");
} else if ($_GET['_a'] == 'step2' && !empty($basket['conts'])) {
# if (empty($basket)) httpredir('?_g=co&_a=cart');
// Place Order Link
$view_cart->assign("CONT_VAL", "index.php?_g=co&_a=step3");
$view_cart->assign("CONT_VAL", ($_GET['editDel'] == 1) ? "javascript:submitDoc('cart');" : "index.php?_g=co&_a=step3");
$view_cart->assign("CLASS_CART","");
$view_cart->assign("CLASS_STEP2","class='txtcartProgressCurrent'");
$view_cart->assign("LANG_VIEW_CART",$lang['cart']['place_order_title']);
$view_cart->assign("LANG_INVOICE_ADDRESS",$lang['cart']['invoice_address']);
$view_cart->assign("LANG_DELIVERY_ADDRESS",$lang['cart']['delivery_address']);
$view_cart->assign("TXT_TITLE",$lang['cart']['title']);
$view_cart->assign("LANG_TITLE_DESC",$lang['reg']['title_desc']);
$view_cart->assign("TXT_FIRST_NAME",$lang['cart']['first_name']);
$view_cart->assign("TXT_LAST_NAME",$lang['cart']['last_name']);
$view_cart->assign("TXT_COMPANY_NAME",$lang['cart']['company_name']);
$view_cart->assign("TXT_ADD_1",$lang['cart']['address2']);
$view_cart->assign("TXT_ADD_2","");
$view_cart->assign("TXT_TOWN",$lang['cart']['town']);
$view_cart->assign("TXT_COUNTY",$lang['cart']['county']);
$view_cart->assign("TXT_POSTCODE",$lang['cart']['postcode']);
$view_cart->assign("TXT_COUNTRY",$lang['cart']['country']);
// PayPal EC make payment button
if (isset($_SESSION['token']) && isset($_SESSION['payer_id'])) {
$lang = getLang("includes".CC_DS."content".CC_DS."gateway.inc.php");
$view_cart->assign("LANG_CHECKOUT_BTN",$lang['gateway']['continue']);
} else {
$view_cart->assign("LANG_CHECKOUT_BTN",$lang['cart']['place_order']);
}
// stick in delivery details
if (!isset($basket['delInf']) || $config['shipAddressLock']) {
$iniDeliv['title'] = stripslashes(html_entity_decode($cc_session->ccUserData['title']));
$iniDeliv['firstName'] = stripslashes(html_entity_decode($cc_session->ccUserData['firstName']));
$iniDeliv['lastName'] = stripslashes(html_entity_decode($cc_session->ccUserData['lastName']));
$iniDeliv['companyName'] = stripslashes(html_entity_decode($cc_session->ccUserData['companyName']));
$iniDeliv['add_1'] = stripslashes(html_entity_decode($cc_session->ccUserData['add_1']));
$iniDeliv['add_2'] = stripslashes(html_entity_decode($cc_session->ccUserData['add_2']));
$iniDeliv['town'] = stripslashes(html_entity_decode($cc_session->ccUserData['town']));
$iniDeliv['county'] = stripslashes(html_entity_decode($cc_session->ccUserData['county']));
$iniDeliv['postcode'] = stripslashes(html_entity_decode($cc_session->ccUserData['postcode']));
$iniDeliv['country'] = stripslashes(html_entity_decode($cc_session->ccUserData['country']));
$basket = $cart->setVar($iniDeliv, 'delInf');
}
// stick in delivery details
$view_cart->assign("VAL_DEL_TITLE", stripslashes(html_entity_decode($basket['delInf']['title'])));
$view_cart->assign("VAL_DEL_FIRST_NAME",stripslashes(html_entity_decode($basket['delInf']['firstName'])));
$view_cart->assign("VAL_DEL_LAST_NAME",stripslashes(html_entity_decode($basket['delInf']['lastName'])));
$view_cart->assign("VAL_DEL_COMPANY_NAME",stripslashes(html_entity_decode($basket['delInf']['companyName'])));
$view_cart->assign("VAL_DEL_ADD_1",stripslashes(html_entity_decode($basket['delInf']['add_1'])));
$view_cart->assign("VAL_DEL_ADD_2",stripslashes(html_entity_decode($basket['delInf']['add_2'])));
$view_cart->assign("VAL_DEL_TOWN",stripslashes(html_entity_decode($basket['delInf']['town'])));
$view_cart->assign("VAL_DEL_COUNTY",stripslashes(html_entity_decode($basket['delInf']['county'])));
$view_cart->assign("VAL_DEL_POSTCODE",stripslashes(html_entity_decode($basket['delInf']['postcode'])));
$view_cart->assign("VAL_DEL_COUNTRY",getCountryFormat($basket['delInf']['country'],"id","printable_name"));
// stick in invoice details
$view_cart->assign("VAL_TITLE",stripslashes($cc_session->ccUserData['title']));
$view_cart->assign("VAL_FIRST_NAME",stripslashes($cc_session->ccUserData['firstName']));
$view_cart->assign("VAL_LAST_NAME",stripslashes($cc_session->ccUserData['lastName']));
$view_cart->assign("VAL_COMPANY_NAME",stripslashes($cc_session->ccUserData['companyName']));
$view_cart->assign("VAL_ADD_1",stripslashes($cc_session->ccUserData['add_1']));
$view_cart->assign("VAL_ADD_2",stripslashes($cc_session->ccUserData['add_2']));
$view_cart->assign("VAL_TOWN",stripslashes($cc_session->ccUserData['town']));
$view_cart->assign("VAL_COUNTY",stripslashes($cc_session->ccUserData['county']));
$view_cart->assign("VAL_POSTCODE",stripslashes($cc_session->ccUserData['postcode']));
$view_cart->assign("VAL_COUNTRY",getCountryFormat($cc_session->ccUserData['country'],"id","printable_name"));
$view_cart->assign("LANG_CHANGE_INV_ADD",$lang['cart']['edit_invoice_address']);
$view_cart->assign("VAL_BACK_TO", $current_a);
// start: Flexible Taxes, by Estelle Winterflood
// counties selector
if (isset($_GET['editDel']) && $_GET['editDel'] == true && !$config['shipAddressLock']) {
$jsScript = jsGeoLocationExtended('country', 'county_sel', $lang['cart']['na'], 'divCountySelect', 'divCountyText', 'county', 'which_field');
$counties = $db->select("SELECT * FROM ".$glob['dbprefix']."CubeCart_iso_counties WHERE countryId = '".$basket['delInf']['country']."';");
if (is_array($counties)){
$view_cart->assign("VAL_COUNTY_SEL_STYLE", "style='display:block;'");
$view_cart->assign("VAL_COUNTY_TXT_STYLE", "style='display:none;'");
$view_cart->assign("VAL_COUNTY_WHICH_FIELD", "S");
} else {
$view_cart->assign("VAL_COUNTY_SEL_STYLE", "style='display:none;'");
$view_cart->assign("VAL_COUNTY_TXT_STYLE", "style='display:block;'");
$view_cart->assign("VAL_COUNTY_WHICH_FIELD", 'T');
}
$view_cart->assign('JS_COUNTY_OPTIONS', '<script type="text/javascript">'.$jsScript.'</script>');
for ($i=0; $i<count($counties); $i++) {
if ($counties[$i]['name'] == $basket['delInf']['county']){
$view_cart->assign('COUNTY_SELECTED', 'selected="selected"');
} else {
$view_cart->assign('COUNTY_SELECTED', '');
}
$countyName = $counties[$i]['name'];
if (strlen($countyName)>20) $countyName = substr($countyName ,0, 20).'&hellip;';
$view_cart->assign('VAL_DEL_COUNTY_NAME', $countyName);
$view_cart->parse('view_cart.cart_true.edit_delivery.county_opts');
}
// end: Flexible Taxes
$cache = new cache('glob.countries');
$countries = $cache->readCache();
if (!$cache->cacheStatus) {
$countries = $db->select("SELECT id, printable_name FROM ".$glob['dbprefix']."CubeCart_iso_countries ORDER BY printable_name");
$cache->writeCache($countries);
}
for ($i=0; $i<count($countries); $i++) {
if ($countries[$i]['id'] == $basket['delInf']['country']) {
$view_cart->assign('COUNTRY_SELECTED', 'selected="selected"');
} else {
$view_cart->assign('COUNTRY_SELECTED', '');
}
$view_cart->assign("VAL_DEL_COUNTRY_ID",$countries[$i]['id']);
$countryName = $countries[$i]['printable_name'];
if (strlen($countryName)>20) {
$countryName = substr($countryName,0,20)."&hellip;";
}
$view_cart->assign('VAL_DEL_COUNTRY_NAME', $countryName);
$view_cart->parse('view_cart.cart_true.edit_delivery.country_opts');
}
$view_cart->parse('view_cart.cart_true.edit_delivery');
} else {
if (!$config['shipAddressLock']) {
$view_cart->assign('LANG_CHANGE_DEL_ADD', $lang['cart']['edit_delivery_address']);
$view_cart->parse('view_cart.cart_true.fixed_delivery.edit_btn');
}
$view_cart->parse("view_cart.cart_true.fixed_delivery");
}
}
## See if there are contents in the basket array
if ($basket['conts']) {
$tax = 0;
$taxCustomer = 0;
$taxZone = array();
// $config['priceTaxDelInv'] 0 = devivery address
// $config['priceTaxDelInv'] 1 = invoice address
//$countyDel = $db->select("SELECT `id` FROM ".$glob['dbprefix']."CubeCart_iso_counties WHERE `abbrev` = ".$db->MySQLSafe($basket['delInf']['county'])." AND `countryId` = ".$db->MySQLSafe($basket['delInf']['country']));
$countyDel = $db->select("SELECT `id` FROM ".$glob['dbprefix']."CubeCart_iso_counties WHERE (`abbrev` = ".$db->MySQLSafe($basket['delInf']['county'])." OR `name` = ".$db->MySQLSafe($basket['delInf']['county']).") AND `countryId` = ".$db->MySQLSafe($basket['delInf']['country']));
$countyInv = $db->select("SELECT `id` FROM ".$glob['dbprefix']."CubeCart_iso_counties WHERE `name` = ".$db->mySQLSafe($cc_session->ccUserData['county'])." AND `countryId` = ".$db->MySQLSafe($cc_session->ccUserData['country']));
if(!$config['priceIncTax']) { // Only tax customers if tax is enabled
if($config['priceTaxDelInv']==0 || $config['shipAddressLock'] == 1) {
// calculate tax on delivery address
$taxZone['countyId'] = $countyDel[0]['id'];
$taxZone['countryId'] = $basket['delInf']['country'];
} elseif($config['priceTaxDelInv']==1) {
// calculate tax on invoice address
$taxZone['countyId'] = $countyInv[0]['id'];
$taxZone['countryId'] = $cc_session->ccUserData['country'];
}
if ($taxZone['countryId']==$config['taxCountry']) {
if ($config['taxCounty']==0) {
// tax customer
$taxCustomer = 1;
} else if ($taxZone['countyId']==$config['taxCounty']) {
// tax customer
$taxCustomer = 1;
}
}
}
// start: Flexible Taxes, by Estelle Winterflood
if (!$config['priceIncTax'] && $config_tax_mod['status']) {
// get specific entries for this state, and also entries for this whole country (ie. county_id=0)
$query = "SELECT d.name AS name, taxName AS type_name, type_id, country_id, county_id, abbrev, tax_percent, goods, shipping, display FROM ".$glob['dbprefix']."CubeCart_taxes AS t, ".$glob['dbprefix']."CubeCart_tax_rates AS r LEFT JOIN ".$glob['dbprefix']."CubeCart_tax_details AS d ON r.details_id=d.id LEFT JOIN ".$glob['dbprefix']."CubeCart_iso_counties AS c ON c.id=county_id WHERE r.type_id=t.id AND d.status='1' AND r.active='1' AND country_id='".$taxZone['countryId']."' AND (county_id='0' OR (county_id = '".$taxZone['countyId']."'))";
// "Testing" mode info display
if ($config_tax_mod['debug']) {
echo "<div style=\"border: 1px solid grey; background: white; text: black; margin-bottom: 1em; padding: 0.5em 1em; font-family: verdana; font-size: 11px;\">";
echo "<p>This information is being printed because the taxes is in &quot;Testing Configuration&quot; mode.<br/>Please use this information to ensure you have your taxes configured correctly, then set the Flexible Taxes mod to &quot;Live Store&quot; mode.</p>";
echo "<p><strong>Customer Delivery Location:</strong><br/>";
if (empty($basket['delInf']['county'])) {
$state_id = "n/a";
} else {
$state_id = $taxZone['countyId'];
}
echo "Country id [".$taxZone['countryId']."] State/County/Zone ID [".$state_id."]</p>";
}
$taxes_config = $db->select($query);
$taxes = array();
// is there any possibility of taxing this delivery address?
if (is_array($taxes_config)){
if ($config_tax_mod['debug'])
echo "<p><strong>Taxes which affect this customer:</strong><br/>";
for ($i=0; $i<count($taxes_config); $i++){
$tax_config = $taxes_config[$i];
// "Testing" mode info display
if ($config_tax_mod['debug']) {
if ($tax_config['abbrev']=="") {
$state_abbrev = "--all--";
} else {
$state_abbrev = $tax_config['abbrev'];
}
echo "Tax [".$tax_config['name']."] Class [".$tax_config['type_name']."] Country ID [".$tax_config['country_id']."] State/County/Zone [".$state_abbrev."] Rate [".number_format($tax_config['tax_percent'],2)." %]<br/>";
}
// Prepare array to hold tax name/display/amount
// The tax_config array may contain multiple occurances
// of the same tax if there are multiple tax classes
$setup = false;
for ($j=0; $j<count($taxes); $j++){
if ($taxes[$j]['name'] == $tax_config['name'])
$setup = true;
}
if (!$setup){
$idx = count($taxes);
$taxes[$idx]['name'] = $tax_config['name'];
$taxes[$idx]['display'] = $tax_config['display'].":";
$taxes[$idx]['amount'] = 0;
}
}
$taxCustomer = 1;
if ($config_tax_mod['debug'])
echo "</p>";
}
// "Testing" mode info display
elseif ($config_tax_mod['debug']) {
echo "<p><strong>No taxes active/enabled for this location.</strong></p>";
}
}
// end: Flexible Taxes
$totalWeight = "";
$i = 0;
$subTotal = 0;
$shipCost = 0;
$grandTotal = 0;
$discount = 0;
##########################
## START PRODUCTS LOOP ##
##########################
## Start discounts
if ($basket['discount_percent']>0) {
$discount_percent = $basket['discount_percent'];
} else if ($basket['discount_price']>0) {
$discount_remainder = $basket['discount_price'];
}
foreach($basket['conts'] as $key => $value){
$i++;
$linePrice = 0; // line price for basket
$optionsCost = 0; // product options cost
$plainOpts = ''; // options as plain text
// fetch shipping by category module
$module = fetchDbConfig("Per_Category");
$shipByCat = $module['status'];
$extraJoin = "";
if ($shipByCat==1) {
$extraJoin = "INNER JOIN ".$glob['dbprefix']."CubeCart_category AS C ON I.cat_id = C.cat_id";
}
## Check for custom basket data e.g Gift Certificates
if ($basket['conts'][$key]['custom'] == 1) {
$gc = fetchDbConfig('gift_certs');
$product[0]['productId'] = 0;
$product[0]['productCode'] = $gc['productCode'];
$product[0]['quantity'] = $basket['conts'][$key]['quantity'];
$product[0]['price'] = $basket['conts'][$key]['gcInfo']['amount'];
$product[0]['name'] = $lang['cart']['gift_cert'];
$product[0]['image'] = $GLOBALS['rootRel'].'images/general/giftcert.gif';
$product[0]['cat_id'] = 0;
$product[0]['sale_price'] = 0;
$product[0]['stock_level'] = 0;
$product[0]['useStockLevel']= 0;
$product[0]['digital'] = (strtolower($basket['conts'][$key]['gcInfo']['delivery']) == 'm') ? false : true;
$product[0]['prodWeight'] = ($gc['delivery']=="e") ? 0 : $gc['weight'];
$product[0]['taxType'] = $gc['taxType'];
$product[0]['tax_inclusive']= ($gc['tax']) ? true : false;
$product[0]['giftCert'] = true;
// START PSEUDO PRODUCT OPTS
$view_cart->assign("VAL_OPT_NAME",$lang['cart']['gift_cert_recip_name']);
$view_cart->assign("VAL_OPT_VALUE",$basket['conts'][$key]['gcInfo']['recipName']);
$plainOpts .= $lang['cart']['gift_cert_recip_name']." - ".$basket['conts'][$key]['gcInfo']['recipName']."\r\n";
$view_cart->parse("view_cart.cart_true.repeat_cart_contents.options");
$view_cart->assign("VAL_OPT_NAME",$lang['cart']['gift_cert_recip_email']);
$view_cart->assign("VAL_OPT_VALUE",$basket['conts'][$key]['gcInfo']['recipEmail']);
$plainOpts .= $lang['cart']['gift_cert_recip_email']." - ".$basket['conts'][$key]['gcInfo']['recipEmail']."\r\n";
$view_cart->parse("view_cart.cart_true.repeat_cart_contents.options");
$view_cart->assign("VAL_OPT_NAME",$lang['cart']['gift_cert_recip_message']);
$gcMessage = $basket['conts'][$key]['gcInfo']['message'];
if (strlen($gcMessage) > 30) $gcMessage = substr($gcMessage, 0, 30).'&hellip;';
$view_cart->assign("VAL_OPT_VALUE", $gcMessage);
$plainOpts .= $lang['cart']['gift_cert_recip_message']." - ".$basket['conts'][$key]['gcInfo']['message']."\r\n";
$view_cart->parse("view_cart.cart_true.repeat_cart_contents.options");
$view_cart->assign("VAL_OPT_NAME",$lang['cart']['gift_cert_delivery']);
$view_cart->assign("VAL_OPT_VALUE",$lang['cart']['delivery_method_'.$basket['conts'][$key]['gcInfo']['delivery']]);
$plainOpts .= $lang['cart']['gift_cert_delivery']." - ".$lang['cart']['delivery_method_'.$basket['conts'][$key]['gcInfo']['delivery']]."\r\n";
$view_cart->parse("view_cart.cart_true.repeat_cart_contents.options");
// END PSEUDO PRODUCT OPTS
} else {
$productId = $cart->getProductId($key);
$product = $db->select("SELECT * FROM ".$glob['dbprefix']."CubeCart_inventory AS I INNER JOIN ".$glob['dbprefix']."CubeCart_taxes AS T ON T.id = taxType ".$extraJoin." WHERE I.productId=".$db->mySQLSafe($productId));
// FIX FOR DELETED TAX BANDS PRE 3.0.5
if (!$product) {
$product = $db->select("SELECT * FROM ".$glob['dbprefix']."CubeCart_inventory WHERE productId=".$db->mySQLSafe($productId));
$product[0]['percent'] = 0;
}
if (($val = prodAltLang($product[0]['productId'])) == TRUE) {
$product[0]['name'] = $val['name'];
}
}
$view_cart->assign("TD_CART_CLASS",cellColor($i, 'tdcartEven', 'tdcartOdd'));
$view_cart->assign("VAL_PRODUCT_ID",$productId);
$view_cart->assign("VAL_CURRENT_STEP",$current_a);
$view_cart->assign("VAL_PRODUCT_KEY", md5($key));
if ($product[0]['giftCert'] === true) {
$view_cart->assign('VAL_IMG_SRC', imgPath($product[0]['image'], false, ''));
} else {
if (file_exists(imgPath($product[0]['image'], true, 'root')) && !empty($product[0]['image'])) {
$view_cart->assign('VAL_IMG_SRC', imgPath($product[0]["image"], true, 'rel'));
} else {
$view_cart->assign('VAL_IMG_SRC', 'skins/'. SKIN_FOLDER . '/styleImages/thumb_nophoto.gif');
}
}
## Only calculate shipping IF the product is tangible
if (!$product[0]['digital']) {
$orderTangible = true;
}
$view_cart->assign("VAL_PRODUCT_NAME", validHTML($product[0]["name"]));
$view_cart->assign("VAL_PRODUCT_CODE", $product[0]["productCode"]);
## Build the product options
$optionKeys = $cart->getOptions($key);
if (!empty($optionKeys)) {
$options = explode('|', $optionKeys);
foreach ($options as $value) {
## Split on separator
$value_data = explode('@', $value);
## Get Option Data
$option_name = false;
$option_value = false;
$option_top = $db->select(sprintf("SELECT T.* FROM %1\$sCubeCart_options_top AS T WHERE T.option_id = %2\$s", $glob['dbprefix'], $value_data[0]));
if ($option_top) {
$option_name = $option_top[0]['option_name'];
if ($option_top[0]['option_type'] == 0) {
$option = $db->select(sprintf("SELECT M.*, B.* FROM %1\$sCubeCart_options_mid AS M, %1\$sCubeCart_options_bot AS B WHERE M.value_id = B.value_id AND B.assign_id = %2\$d", $glob['dbprefix'], $value_data[1]));
if ($option) {
$option_price = $option[0]['option_price'];
$option_symbol = $option[0]['option_symbol'];
$option_value = $option[0]['value_name'];
}
} else {
$option = $db->select(sprintf("SELECT B.* FROM %1\$sCubeCart_options_bot AS B WHERE B.option_id = %2\$d AND B.product = %3\$d LIMIT 1", $glob['dbprefix'], $value_data[0], $productId));
if ($option) {
$option_price = $option[0]['option_price'];
$option_symbol = $option[0]['option_symbol'];
$option_value = $value_data[1];
}
}
}
if (!empty($option_value) && !empty($option_name)) {
## Assign values
$view_cart->assign('VAL_OPT_NAME', validHTML($option_name));
$view_cart->assign('VAL_OPT_VALUE', htmlentities(strip_tags($option_value), ENT_QUOTES, 'UTF-8'));
$plainOpts .= $option_name.' - '.$option_value."\r\n";
if ($option_price > 0) {
if ($option_symbol == "+") {
$optionsCost = $optionsCost + $option_price;
} else if ($option_symbol == "-") {
$optionsCost = $optionsCost - $option_price;
} else if ($option_symbol == "~") {
$optionsCost = 0;
}
}
$view_cart->parse('view_cart.cart_true.repeat_cart_contents.options');
}
}
}
if ($product[0]['useStockLevel'] && $config['stockLevel']){
$view_cart->assign('VAL_INSTOCK', $product[0]['stock_level']);
} else {
$view_cart->assign('VAL_INSTOCK', '&infin;');
}
if (($config['outofstockPurchase']) && ($product[0]["stock_level"]<$cart->cartArray['conts'][$key]["quantity"]) && ($product[0]['useStockLevel'])) {
$view_cart->assign("VAL_STOCK_WARN",$lang['cart']['stock_warn']);
$quantity = $cart->cartArray['conts'][$key]["quantity"];
$view_cart->parse("view_cart.repeat_cart_contents.stock_warn");
} else if ((!$config['outofstockPurchase']) && ($product[0]["stock_level"]<$cart->cartArray['conts'][$key]["quantity"]) && ($product[0]['useStockLevel'])) {
$view_cart->assign("VAL_STOCK_WARN",$lang['cart']['amount_capped']." ".$product[0]["stock_level"].".");
$quantity = $product[0]["stock_level"];
$basket = $cart->update($key, $quantity);
$view_cart->parse("view_cart.cart_true.repeat_cart_contents.stock_warn");
} else {
$quantity = $cart->cartArray['conts'][$key]["quantity"];
}
$view_cart->assign("VAL_QUANTITY", $quantity);
if ($basket['conts'][$key]['custom']==1 || !salePrice($product[0]['price'], $product[0]['sale_price'])) {
$price = $product[0]['price'];
} else {
$price = salePrice($product[0]['price'], $product[0]['sale_price']);
}
$price = ($price+$optionsCost < 0) ? 0 : $price+($optionsCost);
if (!$basket['conts'][$key]['custom']) {
$altCheckoutInv[$i]['taxType'] = $product[0]['taxType'];
$altCheckoutInv[$i]['name'] = $product[0]['name'];
$altCheckoutInv[$i]['options'] = $plainOpts;
$altCheckoutInv[$i]['quantity'] = $quantity;
if($product[0]['tax_inclusive'] == true) {
$altCheckoutInv[$i]['price'] = sprintf("%.2f",$price / (($product[0]['percent'] / 100) +1));
$altCheckoutInv[$i]['priceIncTax'] = sprintf("%.2f",$price);
} else {
$altCheckoutInv[$i]['price'] = sprintf("%.2f",$price);
}
## Private data
$altCheckoutInv[$i]['private_data']['digital'] = $product[0]['digital'];
$altCheckoutInv[$i]['private_data']['productcode'] = $product[0]['productCode'];
$altCheckoutInv[$i]['private_data']['productid'] = $productId;
} else {
## Alternative checkout can only be used for tangible goods right now
$customWarn = true;
}
$linePrice = $price * $quantity;
// set live vars for order inv and its the last step
$basket = $cart->setVar($productId,"productId","invArray",$i);
$basket = $cart->setVar($product[0]['name'],"name","invArray",$i);
$basket = $cart->setVar($product[0]['productCode'],"productCode","invArray",$i);
$basket = $cart->setVar($plainOpts, "prodOptions", "invArray", $i);
$basket = $cart->setVar(sprintf("%.2f",$linePrice),"price","invArray",$i);
$basket = $cart->setVar($quantity,"quantity","invArray",$i);
$basket = $cart->setVar($product[0]['digital'],"digital","invArray",$i);
if ($basket['conts'][$key]['custom'] == 1) {
$basket = $cart->setVar(serialize($basket['conts'][$key]['gcInfo']),"custom","invArray",$i);
$view_cart->parse("view_cart.cart_true.repeat_cart_contents.quanDisabled");
} else {
$view_cart->parse("view_cart.cart_true.repeat_cart_contents.quanEnabled");
}
$view_cart->assign("VAL_IND_PRICE", priceFormat($price, true));
$view_cart->assign("VAL_LINE_PRICE", priceFormat($linePrice, true));
if ($shipByCat) {
## Calculate the line category shipping price
require CC_ROOT_DIR.CC_DS."modules".CC_DS."shipping".CC_DS."Per_Category".CC_DS."line.inc.php";
}
## Apply discounts
$itemDiscount = 0;
if (isset($discount_percent) && $discount_percent > 0 && !$product[0]['giftCert']) {
## Percentile discounts
$itemDiscount = $linePrice*($discount_percent/100);
$totalDiscount += $linePrice*($discount_percent/100);
} else if (isset($discount_remainder) && $discount_remainder > 0 && !$product[0]['giftCert']) {
## Fixed value discounts
if ($discount_remainder <= $linePrice) {
$discount = $discount_remainder;
$discount_remainder = 0;
} else if ($discount_remainder > $linePrice) {
$discount = $linePrice;
$discount_remainder = $discount_remainder - $discount;
}
if ($discount > 0) {
$totalDiscount += $discount;
$itemDiscount = $discount;
$discount = 0;
}
}
$linePrice -= $itemDiscount;
## Calculate weight
//if ($product[0]['prodWeight']>0 && !$product[0]['digital']) {
if ($product[0]['prodWeight']>0) {
$totalWeight = ($product[0]['prodWeight'] * $quantity) + $totalWeight;
}
## Calculate tax
if ($taxCustomer) {
// start: Flexible Taxes, by Estelle Winterflood
// calculate Tax on Goods
if ($config_tax_mod['status']) {
for ($j=0; is_array($taxes_config) && $j<count($taxes_config); $j++) {
$tax_config = $taxes_config[$j];
if ($tax_config['type_id'] == $product[0]['taxType']) {
// tax on goods
if ($tax_config['goods']) {
$lineTax = getTax($linePrice, ($product[0]['tax_inclusive']) ? false : true, $tax_config['tax_percent']);
for ($k=0; $k<count($taxes); $k++){
if ($taxes[$k]['name'] == $tax_config['name']){
// "Testing" mode info display
if ($config_tax_mod['debug']) {
if (!isset($debug)) $debug = '';
$debug .= "Item ".$i." [".$product[0]['name']."] [".$product[0]['taxName']."] [".$quantity." x ".priceFormat($price, true)."] --- Tax [".$taxes[$k]['name']."] [".$tax_config['type_name']."] [".number_format($tax_config['tax_percent'],2)." %] --- ".priceFormat($lineTax,TRUE)."<br/>";
}
$taxes[$k]['amount'] += $lineTax;
}
}
}
}
}
## end: Flexible Taxes
} else if (!$config['priceIncTax']) {
$tax += getTax($linePrice, ($product[0]['tax_inclusive']) ? false : true, $product[0]['percent']);
}
}
$subTotal += $linePrice;
$view_cart->parse("view_cart.cart_true.repeat_cart_contents");
}
## Deduct the total discount from the subtotal - Fixes bug report #705
//$subTotal -= $totalDiscount;
## Work out discount on price if any - OLD CODE, left for reference
/*
if ($basket['discount_percent']>0) {
if ($basket['discount_percent'] > 100) $basket['discount_percent'] = 100;
$totalDiscount = ($basket['discount_percent']/100) * $subTotal;
$subTotal = $subTotal - $totalDiscount;
} else if ($basket['discount_price']>0) {
if (isset($discountRemainder) && $discountRemainder>0) {
$lineDiscount = $discountRemainder;
} else if (!isset($discountRemainder)) {
$lineDiscount = $basket['discount_price'];
}
if ($lineDiscount<$linePrice) {
$discount = $lineDiscount;
} else {
$discount = $linePrice;
$discountRemainder = $lineDiscount - $discount;
}
$totalDiscount = $discount;
$subTotal -= $totalDiscount;
} else {
$discount = 0;
}
*/
// start: Flexible Taxes, by Estelle Winterflood
if ($config_tax_mod['status'] && is_array($taxes_config) && $config_tax_mod['debug']){
echo "<p><strong>Tax applied to goods:</strong><br/>".$debug."</p>";
}
// end: Flexible Taxes
// calculate shipping when we have reached step2
if ($_GET['_a'] == 'step2' && $orderTangible) {
$shippingModules = $db->select("SELECT DISTINCT `folder` FROM ".$glob['dbprefix']."CubeCart_Modules WHERE module='shipping' AND status = 1");
$noItems = $cart->noItems();
$sum = 0;
if (is_array($shippingModules) && !empty($shippingModules)) {
// if selected key has not been set, set it
if (!isset($basket['shipKey'])) $basket = $cart->setVar(1, 'shipKey');
foreach ($shippingModules as $shippingModule) {
$shippingCalcPath = 'modules'.CC_DS.'shipping'.CC_DS.$shippingModule['folder'].CC_DS.'calc.php';
if (file_exists($shippingCalcPath)) {
include($shippingCalcPath);
}
}
#:convict:# Shipping cost from lowest to highest >>
$Shipping = array();
foreach ($shipArray as $shipMethod) {
if (!empty($shipMethod) && is_array($shipMethod)) {
foreach ($shipMethod as $shipDetails) {
$Shipping[] = $shipDetails;
}
}
}
function cmp($a, $b) { $b=floatval($b['value']); $a=floatval($a['value']); return $a<$b ? -1 : ($a>$b ? 1 : 0); }
usort($Shipping, "cmp");
$shipKey = 0;
foreach ($Shipping as $shipDetails) {
$shipKey++;
if ($shipKey == $basket['shipKey']) {
$selected = ' selected="selected"';
$basket = $cart->setVar($shipDetails['method'], 'shipMethod');
$basket = $cart->setVar(sprintf("%.2f", $shipDetails['value']), 'shipCost');
$shippingTaxId = $shipDetails['taxId'];
$shippingTaxAmount = $shipDetails['taxAmount'];
} else {
$selected = '';
}
$shippingPrice[] = '<option value="'.$shipKey.'"'.$selected.'>'.$shipDetails['desc'].'</option>';
}
if (is_array($shippingPrice)) {
$shippingPrice = '<select class="textbox" style="width: 150px" id="shipping-select" name="shipKey" onchange="submitDoc(\'cart\');">'.implode("\n", $shippingPrice).'</select>';
}
## if no shipping method is available go to error page
if (!$shipKey) httpredir('index.php?_g=co&_a=error&code=10001');
## if shipping key is greater than those available set to 1, and redirect
if ($basket['shipKey']>$shipKey) {
$cart->setVar(1, 'shipKey');
$basket = $cart->setVar(0.00, 'shipCost');
httpredir('index.php?_g=co&_a=step2') or die('help');
}
} else {
$shippingPrice .= priceFormat(0, true);
$basket = $cart->setVar($lang['cart']['free_shipping'], 'shipMethod');
$basket = $cart->setVar(0.00, 'shipCost');
}
} else {
$shippingPrice = $lang['cart']['na'];
## set shipping cost to 0.00 just incase
$basket = $cart->setVar(0.00, 'shipCost');
}
## If the voucher is a gift certificate, we'll let them use it to discount shipping
if ($basket['code_is_purchased'] && $totalDiscount < $basket['discount_price']) {
$shippingCost = (is_numeric($shippingPrice)) ? $shippingPrice : $basket['shipCost'];
if ($discount_remainder <= $basket['shipCost']) {
$shippingCost -= $discount_remainder;
$totalDiscount = $basket['discount_price'];
$basket = $cart->setVar(sprintf('%.2f', $shippingCost), 'shipCost');
} else if ($discount_remainder > $basket['shipCost']) {
$totalDiscount += $basket['shipCost'];
$basket = $cart->setVar(0.00, 'shipCost');
}
}
// start: Flexible Taxes, by Estelle Winterflood
// calculate tax on shipping
if ($taxCustomer && $config_tax_mod['status']) {
if ($config_tax_mod['debug'] && is_array($taxes_config))
echo "<p><strong>Tax applied to shipping &amp; handling:</strong><br/>";
for ($i=0; is_array($taxes_config) && $i<count($taxes_config); $i++){
$tax_config = $taxes_config[$i];
if ($tax_config['type_id'] == $shippingTaxId){
// tax on shipping
if ($tax_config['shipping']) {
$lineTax = getTax($basket['shipCost'], true, $tax_config['tax_percent']);
for ($j=0; $j<count($taxes); $j++){
if ($taxes[$j]['name'] == $tax_config['name']){
// "Testing" mode info display
if ($config_tax_mod['debug']) {
echo "Method [".$folder."] [".$tax_config['type_name']."] [".priceFormat($basket['shipCost'], true)."] --- Tax [".$taxes[$j]['name']."] [".$tax_config['type_name']."] [".number_format($tax_config['tax_percent'],2)." %] --- ".priceFormat($lineTax,TRUE)."<br />";
}
$taxes[$j]['amount'] += $lineTax;
}
}
}
}
}
if ($config_tax_mod['debug'] && is_array($taxes_config))
echo "</p>";
} elseif($taxCustomer) { ## claculate basic tax on shipping
$tax += $shippingTaxAmount;
}
if ($config_tax_mod['status'] && $config_tax_mod['debug']){
## "Testing" mode info display
echo "</div>";
}
## end: Flexible Taxes
$view_cart->assign("LANG_SHIPPING", $lang['cart']['shipping']);
$view_cart->assign("VAL_SHIPPING", $shippingPrice);
// start: Flexible Taxes, by Estelle Winterflood
// display taxes
if ($config_tax_mod['status']){
if (count($taxes)==0){
$view_cart->assign("LANG_TAX",$lang['cart']['tax']);
$view_cart->assign("VAL_TAX",$lang['cart']['na']);
} else {
// any additional taxes
for ($i=1; $i<count($taxes); $i++) {
$view_cart->assign("LANG_TAX",$taxes[$i]['display']);
$view_cart->assign("VAL_TAX",priceFormat($taxes[$i]['amount'],TRUE));
$view_cart->parse("view_cart.cart_true.repeat_more_taxes");
}
// first tax
$view_cart->assign("LANG_TAX",$taxes[0]['display']);
$view_cart->assign("VAL_TAX",priceFormat($taxes[0]['amount'],TRUE));
}
// tax registration number(s)
$reg_number = $db->select("SELECT reg_number FROM ".$glob['dbprefix']."CubeCart_tax_details;");
$reg_string = "";
for ($i=0; is_array($reg_number) && $i<count($reg_number); $i++) {
if (strlen($reg_string) && $reg_number[$i]['reg_number']!="")
{
$reg_string .= "<br/>";
}
$reg_string .= $reg_number[$i]['reg_number'];
}
$view_cart->assign("VAL_TAX_REG",$reg_string);
// end: Flexible Taxes
} else {
$view_cart->assign("LANG_TAX",$lang['cart']['tax']);
if($tax>0) {
$view_cart->assign("VAL_TAX",priceFormat($tax,TRUE));
} else {
$view_cart->assign("VAL_TAX",$lang['cart']['na']);
}
}
## Work out if the Gift Certificate has any discount left
if ($basket['code_is_purchased'] == true && $totalDiscount <= $basket['discount_price']) {
$couponRemainder = $basket['discount_price'] - $totalDiscount;
$basket = $cart->setVar(sprintf("%.2f", $couponRemainder),"code_remainder");
## Update coupon so that it can be used again with remainder, if there is any
if ($couponRemainder > 0) {
$giftRecord['discount_price'] = $db->mySQLSafe(sprintf("%.2f", $couponRemainder));
} else {
$giftRecord = array(
'discount_price' => 0,
'allowed_uses' => 0,
'count' => 1,
);
}
$basket = $cart->setVar(sprintf("%.2f",$couponRemainder),"code_remainder");
$where = 'code = '.$db->mySQLSafe($basket['code']);
$update = $db->update($glob['dbprefix'].'CubeCart_Coupons', $giftRecord, $where);
}
$basket = $cart->setVar($totalDiscount, "discount");
$view_cart->assign("LANG_DISCOUNT",$lang['cart']['discount']);
// set discount to return value if null
if(empty($basket['discount']) || !isset($basket['discount'])) {
$basket['discount'] = 0;
}
$view_cart->assign("VAL_DISCOUNT", priceFormat($basket['discount'], true));
$view_cart->assign("LANG_SUBTOTAL", $lang['cart']['subtotal']);
$view_cart->assign("VAL_SUBTOTAL", priceFormat($subTotal, true));
if($totalWeight>0){
$view_cart->assign("LANG_BASKET_WEIGHT",$lang['cart']['basket_weight']);
$view_cart->assign("VAL_BASKET_WEIGHT",$totalWeight.$config['weightUnit']);
}
// start: Flexible Taxes, by Estelle Winterflood
// grand total
if ($config_tax_mod['status']) {
$tax = 0;
for ($i=0; is_array($taxes) && $i<count($taxes); $i++) {
$tax += $taxes[$i]['amount'];
}
$grandTotal = $subTotal + $tax + $basket['shipCost'];
}
// end: Flexible Taxes
else {
$grandTotal = $subTotal + $tax + $basket['shipCost'];
}
$view_cart->assign("LANG_CART_TOTAL",$lang['cart']['cart_total']);
$view_cart->assign("VAL_CART_TOTAL",priceFormat($grandTotal, true));
if (isset($basket['codeResult'])) {
if (!$basket['codeResult']) {
# add remove link
$view_cart->assign("LANG_CODE_REMOVE",$lang['cart']['coupon_remove']);
$view_cart->assign("VAL_OLD_CODE",base64_encode($basket['code']));
$view_cart->assign("VAL_CURRENT_PAGE",currentPage());
$view_cart->parse("view_cart.cart_true.coupon_code_result.remove");
}
$view_cart->assign("LANG_CODE_RESULT",$lang['cart']['coupon_result_'.$basket['codeResult']]);
$view_cart->parse("view_cart.cart_true.coupon_code_result");
}
if (!isset($basket['codeResult']) || $basket['codeResult']>0) {
$view_cart->assign("LANG_GOT_CODE", $lang['cart']['got_code']);
$view_cart->assign("LANG_ENTER_CODE", $lang['cart']['enter_code']);
$view_cart->parse("view_cart.cart_true.enter_coupon_code");
$basket = $cart->unsetVar("codeResult");
}
// build array of price vars in session data
$basket = $cart->setVar(sprintf("%.2f",$subTotal),"subTotal");
$basket = $cart->setVar(sprintf("%.2f",$tax),"tax");
$basket = $cart->setVar(sprintf("%.2f",$grandTotal),"grandTotal");
// start: Flexible Taxes, by Estelle Winterflood
// leave "tax" in session data as the total tax
// define a new array to hold the individual tax names/amounts
if ($config_tax_mod['status']) {
for ($i=1; $i<=count($taxes); $i++) {
$basket = $cart->setVar($taxes[$i-1]['display'],'tax'.$i.'_disp');
$basket = $cart->setVar(sprintf("%.2f",$taxes[$i-1]['amount']),'tax'.$i.'_amt');
}
}
// end: Flexible Taxes
$view_cart->assign("LANG_UPDATE_CART_DESC",$lang['cart']['if_changed_quan']);
$view_cart->assign("LANG_UPDATE_CART",$lang['cart']['update_cart']);
$view_cart->assign("LANG_CHECKOUT",$lang['cart']['checkout']);
// see if passports are enabled
$altCheckout = $db->select("SELECT `folder`, `default` FROM `".$glob['dbprefix']."CubeCart_Modules` WHERE `module`='altCheckout' AND `status` = 1");
// stop alt checkout if they have aleady chosen PayPal... mission
if($grandTotal>0 && !isset($_SESSION['token']) && !isset($_SESSION['payer_id']) && $altCheckout) {
$noAltCheckouts = count($altCheckout);
if($noAltCheckouts == 1 && $altCheckout[0]['folder']=="PayPal_Pro") { unset($customWarn); }
if ($customWarn) {
$view_cart->assign("LANG_CUSTOM_WARN",$lang['cart']['custom_warn']);
$view_cart->parse("view_cart.cart_true.alt_checkout.custom_warn");
}
$view_cart->assign("LANG_ALTERNATIVE_CHECKOUT",$lang['cart']['alternative']);
## Get alt checkout shipping
$query = "SELECT `name`, `byprice`, `low`, `high`, `price` FROM ".$glob['dbprefix']."CubeCart_alt_shipping a LEFT JOIN ".$glob['dbprefix']."CubeCart_alt_shipping_prices b ON a.id = b.alt_ship_id ORDER BY `order`, `low`, `high` ASC";
$altShipping = $db->select($query);
if ($altShipping) {
$n=0;
for($i=0;$i<count($altShipping);$i++) {
if($altShipping[$i]['byprice']==1 && $subTotal>=$altShipping[$i]['low'] && $subTotal<=$altShipping[$i]['high']){
$altShippingPrices[$n]['name'] = $altShipping[$i]['name'];
$altShippingPrices[$n]['price'] = $altShipping[$i]['price'];
$n++;
} elseif($altShipping[$i]['byprice']==0 && $totalWeight>=$altShipping[$i]['low'] && $totalWeight<=$altShipping[$i]['high']) {
$altShippingPrices[$n]['name'] = $altShipping[$i]['name'];
$altShippingPrices[$n]['price'] = $altShipping[$i]['price'];
$n++;
}
}
}
if (!isset($customWarn) || $customWarn != true) {
## build checkout buttons
for ($i=0;$i<count($altCheckout);$i++) {
require("modules".CC_DS."altCheckout".CC_DS.$altCheckout[$i]['folder'].CC_DS."button.php");
## get module config
$altCheckoutConf = fetchDbConfig($altCheckout[$i]['folder']);
if($altCheckoutConf['mode']!=="USDPO") {
## Run class and functions
$altCheckoutButton = new $altCheckout[$i]['folder']();
$buttonCode = $altCheckoutButton->buildIt($altCheckout[$i]['folder']);
$view_cart->assign("IMG_CHECKOUT_ALT",$buttonCode);
$view_cart->parse("view_cart.cart_true.alt_checkout.loop_button");
## set include path right again - this fixes things, for some reason
ini_set('include_path', ini_get('include_path').CC_PS.CC_ROOT_DIR);
}
}
}
$view_cart->parse("view_cart.cart_true.alt_checkout");
}
$view_cart->assign("VAL_FORM_ACTION", currentPage());
$view_cart->parse("view_cart.cart_true");
} else {
$view_cart->assign("CONT_VAL","index.php?_g=co&_a=step1");
$view_cart->assign("LANG_CHECKOUT_BTN",$lang['cart']['checkout_btn']);
$view_cart->assign("LANG_VIEW_CART",$lang['cart']['view_cart']);
$view_cart->assign("CLASS_CART","class='txtcartProgressCurrent'");
$view_cart->assign("CLASS_STEP2","");
$view_cart->assign("LANG_CART_EMPTY", $lang['cart']['cart_empty']);
$view_cart->parse("view_cart.cart_false");
}
$view_cart->parse("view_cart");
$page_content = $view_cart->text("view_cart");
?>