--- loncom/interface/lonuserutils.pm 2011/08/05 14:46:58 1.136 +++ loncom/interface/lonuserutils.pm 2012/02/08 19:35:20 1.136.6.2 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.136 2011/08/05 14:46:58 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.136.6.2 2012/02/08 19:35:20 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -342,7 +342,8 @@ sub print_upload_manager_header { ."

\n"); $r->print('

'. &mt('Identify fields in uploaded list')."

\n"); - $r->print(&mt('Enter as many fields as you can.
The system will inform you and bring you back to this page,
if the data selected are insufficient to add users.')."
\n"); + $r->print(&mt('Enter as many fields as you can.').'
'. + &mt('The system will inform you and bring you back to this page, [_1]if the data selected are insufficient to add users.','
')."
\n"); $r->print(&hidden_input('action','upload'). &hidden_input('state','got_file'). &hidden_input('associate',''). @@ -2321,6 +2322,7 @@ END 'type' => "enroll type/action", 'email' => "e-mail address", 'photo' => "photo", + 'lastlogin' => "last login" 'extent' => "extent", 'pr' => "Proceed", 'ca' => "check all", @@ -2369,6 +2371,9 @@ END push(@cols,'groups'); } push(@cols,'email'); + if ($context eq 'course') { + push(@cols,'lastlogin'); + } } my $rolefilter = $env{'form.showrole'}; @@ -2593,6 +2598,11 @@ END Future => 'Future', Expired => 'Expired', ); + # If this is for a single course get last course "log-in". + my %crslogins; + if ($context eq 'course') { + %crslogins=&Apache::lonnet::dump('nohist_crslastlogin',$cdom,$cnum); + } # Get groups, role, permanent e-mail so we can sort on them if # necessary. foreach my $user (keys(%{$userlist})) { @@ -2741,6 +2751,12 @@ END $in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'}); } } + if ($context eq 'course') { + my $lastlogin = $crslogins{$in{'username'}.':'.$in{'domain'}.':'.$in{'section'}.':'.$role}; + if ($lastlogin ne '') { + $in{'lastlogin'} = &Apache::lonlocal::locallocaltime($lastlogin); + } + } if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll' || $mode eq 'pickauthor') { $r->print(&Apache::loncommon::start_data_table_row()); my $checkval; @@ -4165,10 +4181,32 @@ sub upfile_drop_add { } $checkid = 1; $newuser = 1; - my $user = $username.':'.$newuserdom; + if ($username =~/^[^\@]+\@[^\@]+$/) { + if ($email eq '') { + $email = $username; + } + my $lc_email; + if ($username eq $email) { + $lc_email = lc($email); + } + my $lc_username = lc($username); + if ($lc_username ne $username) { + if ($username eq $email) { + $email = $lc_username; + } + $username = $lc_username; + $uhome=&Apache::lonnet::homeserver($username,$userdomain); + if ($uhome ne 'no_host') { + $newuser = 0; + } + } + } + } + my $user = $username.':'.$newuserdom; + if ($newuser) { my $checkhash; my $checks = { 'username' => 1 }; - $checkhash->{$username.':'.$newuserdom} = { 'newuser' => 1, }; + $checkhash->{$user} = { 'newuser' => 1, }; &Apache::loncommon::user_rule_check($checkhash,$checks, \%alerts,\%rulematch,\%inst_results,\%curr_rules, \%got_rules); @@ -4190,8 +4228,13 @@ sub upfile_drop_add { } unless ($cancreate{$usertype}) { my $showtype = $longtypes{$usertype}; - $r->print('
'. - &mt('[_1]: The user does not exist, and you are not permitted to create users of type: [_2].',''.$username.'',$showtype)); + if ($usertype eq 'unofficial') { + $r->print('
'. + &mt("[_1]: The user does not exist, and the new user's username must be an e-mail address.",''.$username.'')); + } else { + $r->print('
'. + &mt("[_1]: The user does not exist, and you are not permitted to create users of type: [_2].",''.$username.'',$showtype)); + } next; } } else {