Index: openacs-4/packages/dotlrn-ecommerce/www/ecommerce/checkout-3.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-ecommerce/www/ecommerce/checkout-3.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/dotlrn-ecommerce/www/ecommerce/checkout-3.tcl 30 Jun 2005 21:55:56 -0000 1.3 +++ openacs-4/packages/dotlrn-ecommerce/www/ecommerce/checkout-3.tcl 1 Jul 2005 03:49:42 -0000 1.4 @@ -22,6 +22,8 @@ } ec_redirect_to_https_if_possible_and_necessary +set user_session_id [ec_get_user_session_id] +ec_create_new_session_if_necessary # Make sure we have all their necessary info, otherwise they probably got # here via url surgery or by pushing Back @@ -32,7 +34,7 @@ # 4. The order should have an address associated with it. # 5. The order should have credit card and shipping method associated with it. -# We need them to be logged in +# Require user to be logged in at this point if { ! [info exists user_id] } { set user_id [ad_verify_and_get_user_id] } elseif { $user_id == 0 } { @@ -44,13 +46,47 @@ set return_url [ad_return_url] ad_returnredirect [export_vars -base login {return_url}] ad_script_abort +} else { + # Make sure all orders are owned by the user + db_transaction { + db_foreach orders { + select order_id as in_basket_order_id + from ec_orders + where order_state = 'in_basket' + and user_session_id = :user_session_id + } { + db_dml set_session_orders { + update ec_orders + set user_id = :user_id + where order_id = :in_basket_order_id + and user_id = 0 + } + + db_foreach items { + select item_id as in_basket_item_id + from ec_items + where order_id = :in_basket_order_id + } { + db_dml set_dotlrn_ecommerce_orders { + update dotlrn_ecommerce_orders + set patron_id = :user_id + where item_id = :in_basket_item_id + and patron_id = 0 + } + db_dml set_dotlrn_ecommerce_orders_2 { + update dotlrn_ecommerce_orders + set participant_id = :user_id + where item_id = :in_basket_item_id + and participant_id = 0 + } + } + } + } } # Make sure they have an in_basket order, otherwise they've probably # gotten here by pushing Back, so return them to index.tcl -set user_session_id [ec_get_user_session_id] -ec_create_new_session_if_necessary set order_id [db_string get_order_id " select order_id from ec_orders