--- loncom/interface/lonuserutils.pm 2011/01/18 23:37:47 1.135
+++ 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.135 2011/01/18 23:37:47 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})) {
@@ -2729,15 +2739,23 @@ END
$in{'clicker'} = $clickers;
my $role = $in{'role'};
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}],$crstype);
- if (! defined($in{'start'}) || $in{'start'} == 0) {
- $in{'start'} = &mt('none');
- } else {
- $in{'start'} = &Apache::lonlocal::locallocaltime($in{'start'});
+ unless ($mode eq 'excel') {
+ if (! defined($in{'start'}) || $in{'start'} == 0) {
+ $in{'start'} = &mt('none');
+ } else {
+ $in{'start'} = &Apache::lonlocal::locallocaltime($in{'start'});
+ }
+ if (! defined($in{'end'}) || $in{'end'} == 0) {
+ $in{'end'} = &mt('none');
+ } else {
+ $in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'});
+ }
}
- if (! defined($in{'end'}) || $in{'end'} == 0) {
- $in{'end'} = &mt('none');
- } else {
- $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());
@@ -2839,16 +2857,6 @@ END
} elsif ($mode eq 'csv') {
next if (! defined($CSVfile));
# no need to bother with $linkto
- if (! defined($in{'start'}) || $in{'start'} == 0) {
- $in{'start'} = &mt('none');
- } else {
- $in{'start'} = &Apache::lonlocal::locallocaltime($in{'start'});
- }
- if (! defined($in{'end'}) || $in{'end'} == 0) {
- $in{'end'} = &mt('none');
- } else {
- $in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'});
- }
my @line = ();
foreach my $item (@cols) {
push @line,&Apache::loncommon::csv_translate($in{$item});
@@ -2858,9 +2866,9 @@ END
my $col = 0;
foreach my $item (@cols) {
if ($item eq 'start' || $item eq 'end') {
- if (defined($item) && $item != 0) {
+ if ((defined($in{$item})) && ($in{$item} != 0)) {
$excel_sheet->write($row,$col++,
- &Apache::lonstathelpers::calc_serial($in{item}),
+ &Apache::lonstathelpers::calc_serial($in{$item}),
$format->{'date'});
} else {
$excel_sheet->write($row,$col++,'none');
@@ -4173,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);
@@ -4198,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 {