Index: openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request.tcl,v diff -u -r1.24 -r1.25 --- openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request.tcl 1 Oct 2005 21:44:39 -0000 1.24 +++ openacs-4/packages/dotlrn-ecommerce/www/ecommerce/application-request.tcl 4 Oct 2005 19:04:16 -0000 1.25 @@ -138,37 +138,45 @@ if { [empty_string_p $assessment_id] || $assessment_id == -1 || $type == "full" } { ad_returnredirect $next_url } else { - # Start a new session - as::assessment::data -assessment_id $assessment_id + db_transaction { + # Start a new session + as::assessment::data -assessment_id $assessment_id + + # This shouldn't fail and the assessment must exist, if for some + # reason it doesn't, the redirects bellow shall not include the + # session_id and not error out, a new session will be created by + # the assessment code + if { [info exists assessment_data(assessment_id)] } { + set assessment_rev_id $assessment_data(assessment_rev_id) - # This shouldn't fail and the assessment must exist, if for some - # reason it doesn't, the redirects bellow shall not include the - # session_id and not error out, a new session will be created by - # the assessment code - if { [info exists assessment_data(assessment_id)] } { - set assessment_rev_id $assessment_data(assessment_rev_id) + set package_id [parameter::get -parameter AssessmentPackage] + set folder_id [db_string get_folder_id "select folder_id from cr_folders where package_id=:package_id"] + + set session_item_id [content::item::new -parent_id $folder_id -content_type {as_sessions} -name "$user_id-$assessment_rev_id-[as::item::generate_unique_name]" -title "$user_id-$assessment_rev_id-[as::item::generate_unique_name]" ] + set session_id [content::revision::new -item_id $session_item_id -content_type {as_sessions} -title "$user_id-$assessment_rev_id-[as::item::generate_unique_name]" -attributes [list [list assessment_id $assessment_rev_id] [list subject_id $user_id] [list staff_id ""] [list target_datetime ""] [list creation_datetime ""] [list first_mod_datetime ""] [list last_mod_datetime ""] [list completed_datetime ""] [list percent_score ""] [list consent_timestamp ""] ] ] + } - set package_id [parameter::get -parameter AssessmentPackage] - set folder_id [db_string get_folder_id "select folder_id from cr_folders where package_id=:package_id"] - - set session_item_id [content::item::new -parent_id $folder_id -content_type {as_sessions} -name "$user_id-$assessment_rev_id-[as::item::generate_unique_name]" -title "$user_id-$assessment_rev_id-[as::item::generate_unique_name]" ] - set session_id [content::revision::new -item_id $session_item_id -content_type {as_sessions} -title "$user_id-$assessment_rev_id-[as::item::generate_unique_name]" -attributes [list [list assessment_id $assessment_rev_id] [list subject_id $user_id] [list staff_id ""] [list target_datetime ""] [list creation_datetime ""] [list first_mod_datetime ""] [list last_mod_datetime ""] [list completed_datetime ""] [list percent_score ""] [list consent_timestamp ""] ] ] - } + # If a course or prerequisite assessment exists, it should be + # mapped now to the rel_id, even if the assessment isn't complete, + # it will show in the assessment list + db_dml map_application_to_assessment { + insert into dotlr n_ecommerce_application_assessment_map + values (:rel_id, :sessio n_id) + } - # If a course or prerequisite assessment exists, it should be - # mapped now to the rel_id, even if the assessment isn't complete, - # it will show in the assessment list - db_dml map_application_to_assessment { - insert into dotlrn_ecommerce_application_assessment_map - values (:rel_id, :session_id) - } + if { [exists_and_not_null return_url] } { + set next_url [export_vars -base $next_url { return_url }] + } + + set return_url [export_vars -base "[ad_conn package_url]ecommerce/application-request-2" { user_id {return_url $next_url} }] + ad_returnredirect [export_vars -base "[apm_package_url_from_id [parameter::get -parameter AssessmentPackage]]assessment" { assessment_id return_url session_id }] - if { [exists_and_not_null return_url] } { - set next_url [export_vars -base $next_url { return_url }] + } on_error { + + set return_url [ad_return_url] + ad_return_complaint 1 "There was an error processing your application. Please try again." + } - - set return_url [export_vars -base "[ad_conn package_url]ecommerce/application-request-2" { user_id {return_url $next_url} }] - ad_returnredirect [export_vars -base "[apm_package_url_from_id [parameter::get -parameter AssessmentPackage]]assessment" { assessment_id return_url session_id }] } ad_script_abort