OK, according to http://php.net/manual/en/language.types.string.php:
"As of PHP 5.4 string offsets have to either be integers or integer-like strings, otherwise a warning will be thrown. Previously an offset like "foo" was silently cast to 0."
It looks like a relatively small change to three files removes the warning:
/includes/modules/pages/checkout_shipping/header_php.php, starting around line 70:
Code:
/*-bof BUGFIX: lat9-d
require(DIR_WS_CLASSES . 'order.php');
$order = new order;
-eof BUGFIX: lat9-d */
// register a random ID in the session to check throughout the checkout procedure
// against alterations in the shopping cart contents
if (isset($_SESSION['cart']->cartID)) {
if (!isset($_SESSION['cartID']) || $_SESSION['cart']->cartID != $_SESSION['cartID']) {
$_SESSION['cartID'] = $_SESSION['cart']->cartID;
}
} else {
zen_redirect(zen_href_link(FILENAME_TIME_OUT));
}
// if the order contains only virtual products, forward the customer to the billing page as
// a shipping address is not needed
// if ($order->content_type == 'virtual') { BUGFIX: lat9-d
if ($_SESSION['cart']->get_content_type() == 'virtual') { /* BUGFIX: lat9-a */
// $_SESSION['shipping'] = 'free_free'; BUGFIX: lat9-d
$_SESSION['shipping']['title'] = 'free_free';
$_SESSION['shipping']['id'] = 'free_free'; /* BUGFIX: lat9-a */
$_SESSION['shipping']['cost'] = 0; /*BUGFIX: lat9-a */
$_SESSION['sendto'] = false;
zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}
require(DIR_WS_CLASSES . 'order.php'); /* BUGFIX: lat9-a */
$order = new order; /* BUGFIX: lat9-a */
/includes/modules/pages/checkout_payment/header_php.php (line 36):
Code:
if (isset($_SESSION['shipping']['id']) && $_SESSION['shipping']['id'] == 'free_free' && defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER') /*-bof BUGFIX lat9-a */ && $_SESSION['cart']->get_content_type() != 'virtual' /*-eof BUGFIX lat9-a */ && $_SESSION['cart']->show_total() < MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) {
zen_redirect(zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}
/includes/modules/pages/checkout_confirmation/header_php.php (line 43):
Code:
if (isset($_SESSION['shipping']['id']) && $_SESSION['shipping']['id'] == 'free_free' && defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER') /*-bof BUGFIX lat9-a */ && $_SESSION['cart']->get_content_type() != 'virtual' /*-eof BUGFIX lat9-a */ && $_SESSION['cart']->show_total() < MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) {
Bookmarks