Index: uc_cart.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/ubercart/uc_cart/uc_cart.module,v retrieving revision 1.15.2.31 diff -u -p -r1.15.2.31 uc_cart.module --- uc_cart.module 2 Nov 2009 22:04:08 -0000 1.15.2.31 +++ uc_cart.module 10 Jan 2010 05:12:00 -0000 @@ -19,6 +19,15 @@ require_once('uc_cart.ca.inc'); ******************************************************************************/ /** + * Implementation of hook_boot(). + */ +function uc_cart_boot() { + if (!isset($_SESSION['uc_cart_id'])) { + uc_cart_get_id(); + } +} + +/** * Implementation of hook_menu(). */ function uc_cart_menu() { @@ -170,7 +179,14 @@ function uc_cart_menu() { 'type' => MENU_CALLBACK, 'file' => 'uc_cart.pages.inc', ); - + $items['cart/ajax/id'] = array( + 'title' => 'Add cart ID', + 'description' => 'Add a cart id session cookie', + 'page callback' => 'uc_cart_get_id_ajax', + 'access arguments' => array('access content'), + 'type' => MENU_CALLBACK, + ); + return $items; } @@ -268,6 +284,7 @@ function uc_cart_init() { $conf['i18n_variables'][] = 'uc_msg_order_logged_in'; $conf['i18n_variables'][] = 'uc_msg_order_new_user'; $conf['i18n_variables'][] = 'uc_msg_order_submit'; + drupal_add_js(drupal_get_path('module', 'uc_cart'). '/uc_cart.ajax.js'); } /** @@ -859,6 +876,14 @@ function uc_cart_checkout_pane() { ******************************************************************************/ /** + * Callback function for allowing Ajax callbacks to set the cart $_SESSON var. + */ +function uc_cart_get_id_ajax() { + $cid = uc_cart_get_id(); + return drupal_json($cid); +} + +/** * When a user logs in, update their cart items before the session changes. */ function uc_cart_user_login_form_submit($form, &$form_state) { @@ -1311,6 +1336,7 @@ function uc_cart_get_id() { global $user; if ($user->uid) { + $_SESSION['uc_cart_id'] = $user->uid; return $user->uid; } elseif (!isset($_SESSION['uc_cart_id'])) {