Salve a tutti, ho un theme e-commerce ed avrei bisogno di modificare un file, ma non ne riesco a venire a capo.
Il file da modificare e quello della carta che calcola il totale, praticamente al momento il theme mi calcola le spedizioni in base alla quantità (es. per ogni oggetto 10€ di spedizioni), io avrei bisogno di calcolare il tutto in base ad un altro dato che sarebbe la dimensione, quindi calcolare il totale del peso e a seconda della fascia di appartenenza assegnare un valore alla spedizione.
Se solamente mi aiutereste a dire come richiamare all'interno del file la dimensione stessa, potrei provvedere al resto, il punto è che io non la riesco proprio a prelevare.
Grazie mille a chiunque mi aiuterà
Questo è il codice del file:
[PHP]<?php
session_start();
error_reporting (E_ALL ^ E_NOTICE);
// Get Session variable data
$LANGUAGE = $_SESSION["LANGUAGE"];
$CURRENCY_SYMBOL = $_SESSION["CURRENCY_SYMBOL"];
$CURRENCY_CODE = $_SESSION["CURRENCY_CODE"];
$PPEmail = $_SESSION["PPEmail"];
$CARTDIR = $_SESSION["CARTDIR"];
$CARTURL = $CARTDIR . "cart.php";
$CHECKOUT_RETURNURL = $_SESSION["POSTSALE_URL"];
require("../language/" . $LANGUAGE . ".php");
// Load WordPress
$load = '../../../../wp-load.php';
if (file_exists($load)){
require($load);
} else {
wp_die('Error: wp-load file not found');
}
// Payment Processing Post URL -- (Enable only one)
$ACTION_URL = "https:// - www - paypal.com/cgi-bin/webscr"; //Paypal
//$ACTION_URL = "https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/YOURMERCHANTIDHERE"; //Google Checkout (change merch ID)
//TODO: Create Cart Object
$crtQuantity = array();
$crtStockQuantity = array();
$crtAmount = array();
$crtShipping = array();
$crtShipping2 = array();
$crtHandling = array();
$crtHandlingCart = array();
$crtOptions = array();
$PPOptions = array();
//retrieve session Variables
if($_SESSION["Quantity"]){
$crtName = $_SESSION["Name"];
$crtNotes = $_SESSION["Notes"];
$crtPostID = $_SESSION["PostID"];
$crtQuantity = $_SESSION["Quantity"];
$crtStockQuantity = $_SESSION["StockQuantity"];
$crtAmount = $_SESSION["Amount"];
$crtShipping = $_SESSION["Shipping"];
$crtShipping2 = $_SESSION["Shipping2"];
$crtHandling = $_SESSION["Handling"];
$crtHandlingCart = $_SESSION["HandlingCart"];
$crtOptions = $_SESSION["Options"];
$PPOptions = $_SESSION["PPOptions"];
}
//convert strings to integers
function str2int($string, $concat = true) {
$length = strlen($string);
for ($i = 0, $int = '', $concat_flag = true; $i < $length; $i++) {
if (is_numeric($string*) && $concat_flag) {
$int .= $string*;
} elseif(!$concat && $concat_flag && strlen($int) > 0) {
$concat_flag = false;
}
}
return (int) $int;
}
//Save Session Variables
function SaveSession($crtName,$crtNotes,$crtPostID,$crtAmount,$crtQuantity,$crtStockQuantity,$crtShipping,$crtShipping2,$crtHandling,$crtHandlingCart,$crtOptions,$PPOptions=' '){
$_SESSION["Name"] = $crtName;
$_SESSION["Notes"] = $crtNotes;
$_SESSION["PostID"] = $crtPostID;
$_SESSION["Quantity"] = $crtQuantity;
$_SESSION["StockQuantity"] = $crtStockQuantity;
$_SESSION["Amount"] = $crtAmount;
$_SESSION["Shipping"] = $crtShipping;
$_SESSION["Shipping2"] = $crtShipping2;
$_SESSION["Handling"] = $crtHandling;
$_SESSION["HandlingCart"] = $crtHandlingCart;
$_SESSION["Options"] = $crtOptions;
$_SESSION["PPOptions"] = $PPOptions;
}
//Monolithic display cart function
function ShowCart($crtName,$crtNotes,$crtPostID,$crtAmount,$crtQuantity,$crtStockQuantity,$crtShipping,$crtShipping2,$crtHandling,$crtHandlingCart,$crtOptions,$PPOptions){
include("cart_top.php");
global $CARTURL,$CURRENCY_SYMBOL,$ACTION_URL,$CHECKOUT_RETURNURL,$CARTDIR;
$checkout = '';
$prods = '';
$i = 1;
$ShippingTotal = 0;
$GrandTotal = 0;
// Calculation of $ShippingTotal - starts
if(!empty($crtPostID))
{
$s_values = array();
foreach( $crtPostID as $item =>$postid )
{
$r = array_key_exists($postid,$s_values);
if(!$r)
{
$s_values[$postid]['postID'] = $crtPostID[$item];
$s_values[$postid]['quantity'] = $crtQuantity[$item];
$s_values[$postid]['shipping'] = $crtShipping[$item];
$s_values[$postid]['shipping2'] = $crtShipping2[$item];
}
else
{
$s_values[$postid]['quantity'] = $s_values[$postid]['quantity'] + $crtQuantity[$item];
}
}
$ShippingTotal = 0;
foreach( $s_values as $postid =>$v )
{
if ($v['quantity'] > 1)
{
$ShippingTotal = $ShippingTotal + $v['shipping'];
$ShippingTotal = $ShippingTotal + (($v['quantity'] - 1) * $v['shipping2']);
}
else
{
$ShippingTotal = $ShippingTotal + $v['shipping'];
}
}
} // End -- if(!empty($crtPostID))
// Calculation of $ShippingTotal - ends
foreach( $crtAmount as $item =>$amount )
{
$GrandTotal = $GrandTotal + ($crtAmount[$item] * $crtQuantity[$item]);
// Check if Special Comments Box is allowed for this post or not.
$mkt_special_comment_box = get_post_meta($crtPostID[$item], 'mkt_special_comment_box', $single = true);
$sp_comments = '';
if(($mkt_special_comment_box == "1") AND (!empty($crtNotes[$item])))
{
$sp_comments = '<br><div style="margin-left: 10px;"><small><a title="'.$crtNotes[$item].'">'.mkt_SHOPCART_ITEM_SPECIAL_INSTRUCTIONS.'</a></small></div>';
}
$mkt_pk_item_amount = $CURRENCY_SYMBOL.number_format((float)($crtAmount[$item] * $crtQuantity[$item]), 2, '.', ',');
$Shipping = 'Shipping: '.$CURRENCY_SYMBOL.$Shipping;
$content .= '<tr id="'.$item.'"><td>'.$crtName[$item].$sp_comments.'</td><td style="text-align:left;">'.$crtOptions[$item].'</td><td style="text-align:center;"><input class="quantity" name="'.$item.'" type="text" value="'.$crtQuantity[$item].'" /></td><td style="text-align:center;"><a href="'.$GLOBALS["CARTURL"].'?remove='.$item.'" class="crtRemove">'.mkt_SHOPCART_ITEM_REMOVE.'</a></td><td style="text-align:right;">'.$mkt_pk_item_amount.'</td></tr>';
if ($crtHandling[$item]){
$Handling = $crtHandling[$item];
if($crtQuantity[$item] > 1){
$Handling += $crtHandlingCart[$item] * ($crtQuantity[$item] - 1);
}
$checkout .='<input type="hidden" name="handling_'.$i.'" value="'.$Handling.'" />';
}
$checkout .='<input type="hidden" name="item_name_'.$i.'" value="'.$crtName[$item].'" />
<input type="hidden" name="amount_'.$i.'" value="'.$crtAmount[$item].'" />
<input type="hidden" name="quantity_'.$i.'" value="'.$crtQuantity[$item].'" />';
// The following 4 inputs are for Google Checkout purposes
$checkout .='<input type="hidden" name="item_description_'.$i.'" value="'.$crtOptions[$item].'" />
<input type="hidden" name="item_quantity_'.$i.'" value="'.$crtQuantity[$item].'" />
<input type="hidden" name="item_price_'.$i.'" value="'.$crtAmount[$item].'" />
<input type="hidden" name="item_currency_'.$i.'" value="'.$GLOBALS["CURRENCY_CODE"].'" />';
$tmp = explode("<br />",$crtOptions[$item]);
$itr=0;
foreach ($tmp as $chk){
if($chk!=""){
list($opt,$val)=explode(":",$chk);
$checkout.='<input type="hidden" name="on'.$itr.'_'.$i.'" value="'.$opt.'" /><input type="hidden" name="os'.$itr.'_'.$i.'" value="'.$val.'" />';
}
++$itr;
}
// Create value for inventory control
// $prods = $prods . $crtPostID[$item] . "-" . $crtQuantity[$item];
$mkt_pk_item_amount = (float)($crtAmount[$item] * $crtQuantity[$item]);
$prods = $prods . $crtPostID[$item] . "+:#" . $crtName[$item]. "+:#". $crtOptions[$item]. "+:#" . $crtQuantity[$item]. "+:#" . $mkt_pk_item_amount. "+:#" . $crtNotes[$item] . "+:#" .$item_shipping_pk;
if ($i < count($crtPostID)) {
// $prods = $prods . ",";
$prods = $prods . "^:*";
}
++$i;
}
// If no item value, then display message
if ($item == null){
$content .= '<tr><td colspan=5>'.mkt_SHOPCART_NOITEMS.'</td></tr>';
}
$ItemSubTotal = $GrandTotal;
$GrandTotal = $GrandTotal + $ShippingTotal;
session_register("grand_total");
$_SESSION["grand_total"] = $GrandTotal;
session_register("item_subtotal");
$_SESSION["item_subtotal"] = $ItemSubTotal;
session_register("shipping_cost");
$_SESSION["shipping_cost"] = $ShippingTotal;
$mkt_pk_ItemSubTotal = $CURRENCY_SYMBOL.number_format($ItemSubTotal, 2, '.', ',');
$mkt_pk_ShippingTotal = $CURRENCY_SYMBOL.number_format($ShippingTotal, 2, '.', ',');
$mkt_pk_GrandTotal = $CURRENCY_SYMBOL.number_format($GrandTotal, 2, '.', ',');
$content .= '<tr><td colspan=4 align=right>'.mkt_SHOPCART_SUBTOTAL.'<br/>'.mkt_SHOPCART_SHIPPING.'<br/><b>'.mkt_SHOPCART_TOTAL.'</b></td><td style="text-align:right;">'.$mkt_pk_ItemSubTotal.'<br/>'.$mkt_pk_ShippingTotal.'<br/><b>'.$mkt_pk_GrandTotal.'</b></td></tr>';
// Create product summary session variable for inventory control postsale page
$_SESSION["prods"] = $prods;
$_SESSION["mkt_pk_ItemSubTotal"] = $mkt_pk_ItemSubTotal;
$_SESSION["mkt_pk_ShippingTotal"] = $mkt_pk_ShippingTotal;
$_SESSION["mkt_pk_GrandTotal"] = $mkt_pk_GrandTotal;
// The following 4 inputs are Google Checkout variables
$checkout .='<input type="hidden" name="ship_method_name_1" value="Ship Method"/>';
$checkout .='<input type="hidden" name="ship_method_price_1" value="'.$ShippingTotal.'" />';
$checkout .='<input type="hidden" name="ship_method_currency_1" value="'.$GLOBALS["CURRENCY_CODE"].'" />';
$checkout .='<input type="hidden" name="checkout-flow-support.merchant-checkout-flow-support.continue-shopping-url" value="' . $CHECKOUT_RETURNURL . '">';
// Send the ADMIN EMAIL address too...
$checkout .='<input type="hidden" name="mkt_pk_admin_email" value="'.$_SESSION["mkt_pk_admin_email"].'"/>';
include("cart_bottom.php");
echo $content;
}
if($_GET['cart']){
ShowCart($crtName,$crtNotes,$crtPostID,$crtAmount,$crtQuantity,$crtStockQuantity,$crtShipping,$crtShipping2,$crtHandling,$crtHandlingCart,$crtOptions,$PPOptions);
}
if($_GET["remove"]){
$item = removeItem($_GET["remove"]);
}
function removeItem($item){
global $crtName,$crtNotes,$crtPostID,$crtAmount,$crtQuantity,$crtStockQuantity,$crtShipping,$crtShipping2,$crtHandling,$crtHandlingCart,$crtOptions,$PPOptions;
unset($crtName[$item]);
unset($crtNotes[$item]);
unset($crtPostID[$item]);
unset($crtAmount[$item]);
unset($crtQuantity[$item]);
unset($crtStockQuantity[$item]);
unset($crtShipping[$item]);
unset($crtShipping2[$item]);
unset($crtHandling[$item]);
unset($crtHandlingCart[$item]);
unset($crtOptions[$item]);
SaveSession($crtName,$crtNotes,$crtPostID,$crtAmount,$crtQuantity,$crtStockQuantity,$crtShipping,$crtShipping2,$crtHandling,$crtHandlingCart,$crtOptions,$PPOptions);
return $item;
}
if($_GET["update"]){
foreach ($_GET as $item => $value ){
if($crtQuantity[$item]){
if (($crtStockQuantity[$item] != "") && ($value > $crtStockQuantity[$item])) {
echo "<span style='color:#F00000;'><b>" . mkt_SHOPCART_OVERSTOCK_MESSAGE . " " . $crtStockQuantity[$item] . " -- (" . $crtName[$item] . ")</b></span><br>";
$crtQuantity[$item] = $crtStockQuantity[$item];
} else {
$crtQuantity[$item] = str2int($value);
}
// If value = 0 then remove item from list
if($crtQuantity[$item] == 0){
removeItem($item);
}
}
}
SaveSession($crtName,$crtNotes,$crtPostID,$crtAmount,$crtQuantity,$crtStockQuantity,$crtShipping,$crtShipping2,$crtHandling,$crtHandlingCart,$crtOptions,$PPOptions);
ShowCart($crtName,$crtNotes,$crtPostID,$crtAmount,$crtQuantity,$crtStockQuantity,$crtShipping,$crtShipping2,$crtHandling,$crtHandlingCart,$crtOptions,$PPOptions);
}
if($_GET["add"]){
$item ="item".rand();//An Id can be used in lue of store with multiple items with the same name
$name = $_GET["item_name"];
$notes = $_GET["notes"];
$postID = $_GET["postID"];
$amt = (float)$_GET["amount"];
$handling = (float)$_GET["handling"];
$handling_cart = (float)$_GET["handling_cart"];
$quan = str2int($_GET["quantity"]);
$stockquantity = str2int($_GET["stockquantity"]);
$ppoptions = "";
$optionpricing = 0;
$options = "";
$i = 0;
if(strpos($_GET["shipping"],"/")){
$ar = explode("/",$_GET["shipping"]);
$ship = (float)$ar[0];
$ship2= (float)$ar[1];
}else{
$ship = (float)$_GET["shipping"];
$ship2= 0;
}
foreach ($_GET as $key => $value ){
$val = substr($key,0,2);
if($val=="on"){
$opt = substr($key,2,1);
$index = "os".$opt;
// Option pricing begin
$optionval = explode("@",$_GET[$index]);
$optionpricing = $optionpricing + $optionval[1];
if ($optionval[1]) {
if ($optionval[1]>0) {
$optiontext = " (+";
} else {
$optiontext = " (-";
}
$optiontext = $optiontext . $CURRENCY_SYMBOL.number_format(abs($optionval[1]), 2, '.', ',');
$optiontext = $optiontext .")";
} else {
$optiontext = "";
}
// Option pricing end
$options.= $value.': '.$optionval[0].$optiontext.'<br />';
++$i;
}
}
// Check for duplicate products
if ($crtPostID == "") {$crtPostID = array();}
$duplicate_prodIDs = array_keys($crtPostID, $postID);
for($i=0; $i<count($duplicate_prodIDs); $i++)
{
$totalprodquan += $crtQuantity[$duplicate_prodIDs*];
$s1 = trim($notes);
$s2 = trim($crtNotes[$duplicate_prodIDs*]);
$cmp = strcasecmp($s1, $s2);
if (($postID == $crtPostID[$duplicate_prodIDs*]) && ($options == $crtOptions[$duplicate_prodIDs*]) && ($cmp == 0))
{
$duplicateitemID = $duplicate_prodIDs*;
}
}
// Check to see if this puts it over stock quantity
if (($stockquantity !="") && ($totalprodquan + $quan > $stockquantity)) {
echo "<span style='color:#F00000;'><b>" . mkt_SHOPCART_OVERSTOCK_MESSAGE . " " . $stockquantity . " -- (" . $name . ")</b></span><br>";
} else {
if ($duplicateitemID) {
$crtQuantity[$duplicateitemID] += $quan;
$crtNotes[$duplicateitemID] = $notes;
//if($crtShipping[$item] < $ship){
$crtShipping[$item] = $ship;
$crtShipping2[$item] = $ship2;
$crtHandling[$item] = $handling;
$crtHandlingCart[$item] = $handling_cart;
//}
}else{// A new item
$crtName[$item] = $name;
$crtNotes[$item] = $notes;
$crtPostID[$item] = $postID;
$crtAmount[$item] = $amt + $optionpricing;
$crtShipping[$item] = $ship;
$crtShipping2[$item] = $ship2;
$crtHandling[$item] = $handling;
$crtHandlingCart[$item] = $handling_cart;
$crtQuantity[$item] = $quan;
$crtStockQuantity[$item] = $stockquantity;
$crtOptions[$item] = $options;
$PPOptions[$item] = $ppoptions;
}
}
//Save the Session and Display the cart
SaveSession($crtName,$crtNotes,$crtPostID,$crtAmount,$crtQuantity,$crtStockQuantity,$crtShipping,$crtShipping2,$crtHandling,$crtHandlingCart,$crtOptions,$PPOptions);
ShowCart($crtName,$crtNotes,$crtPostID,$crtAmount,$crtQuantity,$crtStockQuantity,$crtShipping,$crtShipping2,$crtHandling,$crtHandlingCart,$crtOptions,$PPOptions);
}
?>[/PHP]