Index: openacs-4/packages/dotlrn-ecommerce/www/ecommerce/finalize-order.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-ecommerce/www/ecommerce/finalize-order.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/dotlrn-ecommerce/www/ecommerce/finalize-order.tcl 30 Jun 2005 11:50:07 -0000 1.2 +++ openacs-4/packages/dotlrn-ecommerce/www/ecommerce/finalize-order.tcl 1 Jul 2005 03:49:42 -0000 1.3 @@ -20,11 +20,51 @@ participant_id:integer,optional } +set user_session_id [ec_get_user_session_id] + +# 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 } { set user_id [ad_verify_and_get_user_id] } +if {$user_id == 0} { + set form [rp_getform] + ns_set delkey $form user_id + 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 user_id = 0 + and 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 + } + + 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, + participant_id = :user_id + where item_id = :in_basket_item_id + } + } + } + } +} # If they reload, we don't have to worry about the credit card # authorization code being executed twice because the order has @@ -65,7 +105,6 @@ # otherwise redirect them to index.tcl # user session tracking -set user_session_id [ec_get_user_session_id] ec_log_user_as_user_id_for_this_session