Index: openacs-4/packages/dotlrn/www/admin/users-bulk-upload-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/users-bulk-upload-2.tcl,v diff -u -r1.11.2.1.4.4 -r1.11.2.1.4.5 --- openacs-4/packages/dotlrn/www/admin/users-bulk-upload-2.tcl 28 Jan 2005 16:56:00 -0000 1.11.2.1.4.4 +++ openacs-4/packages/dotlrn/www/admin/users-bulk-upload-2.tcl 15 Feb 2005 20:00:26 -0000 1.11.2.1.4.5 @@ -22,14 +22,14 @@ @version $Id$ } -#Pages in this directory are only runnable by dotlrn-wide admins. +# Pages in this directory are only runnable by dotlrn-wide admins. dotlrn::require_admin # get location of the file set file_location [ns_queryget users_csv_file.tmpfile] # Prepare stuff -set headers {first_names last_name email} +set headers {first_names last_name email username} set admin_user_id [ad_verify_and_get_user_id] set admin_email [db_string select_admin_email { @@ -43,19 +43,23 @@ set list_of_user_ids [list] set list_of_addresses_and_passwords [list] +set fail_p 0 + # Do the stuff # We can't do this too generically, so we'll just do the CSV stuff right here db_transaction { oacs_util::csv_foreach -file $file_location -array_name row { # First make sure the required data is there - if { ![info exists row(email)] || ![info exists row(first_names)] || ![info exists row(last_name)] || ![info exists row(username)] } { - doc_body_append "
Datafile must include at least the email, first_names, last_name, username fields
" + if { ![info exists row(email)] || ![info exists row(first_names)] || ![info exists row(last_name)] } { + doc_body_append [_ dotlrn.datafile_must] db_abort_transaction return } + ns_log Debug "%%% $row(email)" + # We need to insert the ACS user if {![info exists row(password)]} { @@ -64,25 +68,26 @@ } else { set password $row(password) } - - + # Check if this user already exists set user_id [cc_lookup_email_user $row(email)] if {![empty_string_p $user_id]} { doc_body_append [_ dotlrn.user_email_already_exists [list user_email $row(email)]] lappend list_of_user_ids $user_id } else { + set user_id [db_nextval acs_object_id_seq] + ns_log Debug "%%% $user_id" + auth::create_user \ -user_id $user_id \ -username "$row(username)" \ -email $row(email) \ -first_names $row(first_names) \ -last_name $row(last_name) \ -password $password - lappend list_of_user_ids $user_id @@ -98,48 +103,47 @@ set row(guest) f } - if {![info exists row(id)]} { - set row(id) $row(email) + if {![info exists row(username)]} { + set row(username) $row(email) } if {![info exists row(notify)]} { set row(notify) f } else { set row(notify) t } - - doc_body_append "Creating user $row(email)...." + ns_log Debug "%%% $row(username)...$row(access_level)...$row(type)" + # Now we make them a dotLRN user switch -exact $row(access_level) { limited { - dotlrn::user_add -user_id $user_id -id $row(id) -type $row(type) + dotlrn::user_add -user_id $user_id -id $row(username) -type $row(type) } full - default { - dotlrn::user_add -user_id $user_id -id $row(id) -type $row(type) -can_browse + dotlrn::user_add -user_id $user_id -id $row(username) -type $row(type) -can_browse } } # Set the privacy dotlrn_privacy::set_user_guest_p -user_id $user_id -value $row(guest) - + doc_body_append [_ dotlrn.user_email_created [list user_email $row(email)]] set msg_subst_list [list system_name [ad_system_name] \ - system_url [ad_parameter SystemUrl] \ + system_url [ad_parameter -package_id [ad_acs_kernel_id] SystemURL] \ user_email $row(email) \ user_password $password] set message [_ dotlrn.user_add_confirm_email_body $msg_subst_list] set subject [_ dotlrn.user_add_confirm_email_subject $msg_subst_list] # Send note to new user if { $row(notify) == "t" } { - # Send note to new user + # Send note to new user if [catch {ns_sendmail "$row(email)" "$admin_email" "$subject" "$message"} errmsg] { doc_body_append "[_ dotlrn.lt_emailing_this_user_fa]" set fail_p 1 } else { - doc_body_append "[_ dotlrn.email_sent]" lappend list_of_addresses_and_passwords $row(email) $password } } else { @@ -151,32 +155,11 @@ } } on_error { - doc_body_append "

The database choked while trying to create the last user in the list above!
The transaction has been aborted, no users have been entered, and no e-mail notifications have been sent.

" + ns_log Error "The database choked while trying to create the last user in the list above! The transaction has been aborted, no users have been entered, and no e-mail notifications have been sent." + doc_body_append [_ dotlrn.database_choked] ad_script_abort } -set fail_p 0 - -doc_body_append "

Sending email notifications to users...

" - -foreach {email password} $list_of_addresses_and_passwords { - if { ![string equal $password ""] } { - set message " -You have been added as a user to [ad_system_name] at [ad_parameter -package_id [ad_acs_kernel_id] SystemURL]. - -Login: $email -Password: $password -" - # Send note to new user - if [catch {ns_sendmail "$email" "$admin_email" "You have been added as a user to [ad_system_name] at [ad_parameter -package_id [ad_acs_kernel_id] SystemURL]" "$message"} errmsg] { - doc_body_append "emailing \"$email\" failed!
" - set fail_p 1 - } else { - doc_body_append "email sent to \"$email\"
" - } - } -} - if {$fail_p} { doc_body_append "

[_ dotlrn.lt_Some_of_the_emails_fa]

" }