--- loncom/enrollment/Enrollment.pm 2004/12/07 06:40:09 1.19
+++ loncom/enrollment/Enrollment.pm 2005/08/31 06:21:58 1.24
@@ -1,5 +1,5 @@
# Automated Enrollment manager
-# $Id: Enrollment.pm,v 1.19 2004/12/07 06:40:09 raeburn Exp $
+# $Id: Enrollment.pm,v 1.24 2005/08/31 06:21:58 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -74,6 +74,7 @@ sub update_LC {
my $linefeed = '';
my $addresult = '';
my $dropresult = '';
+ my $switchresult = '';
if ($context eq "updatenow") {
$linefeed = "\n
";
} elsif ($context eq "automated") {
@@ -81,6 +82,7 @@ sub update_LC {
}
my $enrollcount = 0;
my $dropcount = 0;
+ my $switchcount = 0;
# Get role names
my %longroles = ();
@@ -192,7 +194,7 @@ sub update_LC {
}
# Explicitly allow access to creation/modification of students if called as an automated process.
if ($context eq 'automated') {
- $ENV{'allowed.cst'}='F';
+ $env{'allowed.cst'}='F';
}
# Compare IDs with existing LON-CAPA enrollment for this class
@@ -220,7 +222,11 @@ sub update_LC {
my ($auth,$authparam,$first,$middle,$last,$gene,$usec,$end,$start,$emailaddr,$pid,$emailenc);
&prepare_add($authtype,$autharg,$enddate,$startdate,\@stuinfo,\%place,\$dom,\$uname,\$auth,\$authparam,\$first,\$middle,\$last,\$gene,\$usec,\$end,\$start,\$emailaddr,\$pid,\$emailenc);
if ($$currlist{$uname}[$sec] ne $usec) {
- $$logmsg .= "Section for $uname switched from $$currlist{$uname}[$sec] to $usec".$linefeed;
+ $switchresult .= "Section for $uname switched from $$currlist{$uname}[$sec] to ".$usec.$linefeed;
+ if ($context eq 'automated') {
+ $$logmsg .= "Section switch for $uname from $$currlist{$uname}[$sec] to ".$usec.$linefeed; ;
+ }
+ $switchcount ++;
}
&execute_add($context,'switchtype',$uname,$dom,$auth,$authparam,$first,$middle,$last,$gene,$pid,$usec,$end,$start,$emailenc,$cid,\$addresult,\$enrollcount,$linefeed,$logmsg);
}
@@ -259,7 +265,11 @@ sub update_LC {
$access = &showaccess($enddate,$startdate);
}
if ($modify_section_result =~ /^ok/) {
- $$logmsg .= "Section for $uname switched from old section: ".$$currlist{$uname}[$sec] ." to new section: ".$stuinfo[ $place{groupID} ].".".$access.$linefeed;
+ $switchresult .= "Section for $uname switched from old section: ".$$currlist{$uname}[$sec] ." to new section: ".$stuinfo[ $place{groupID} ].".".$access.$linefeed;
+ if ($context eq 'automated') {
+ $$logmsg .= "Section switch for $uname from $$currlist{$uname}[$sec] to $stuinfo[ $place{groupID} ]".$linefeed;
+ }
+ $switchcount ++;
} else {
$$logmsg .= "Error when attempting section change for $uname from old section ".$$currlist{$uname}[$sec]." to new section: ".$stuinfo[ $place{groupID} ]." -error: $modify_section_result".$linefeed;
}
@@ -305,7 +315,7 @@ sub update_LC {
'linefeed' => $linefeed,
'role' => 'st'
};
- my $outcome = &create_newuser($args,\$logmsg,\$newusermsg,\$enrollcount,\$addresult,\%longroles,\%courseinfo) = @_;
+ my $outcome = &create_newuser($args,$logmsg,$newusermsg,\$enrollcount,\$addresult,\%longroles,\%courseinfo);
} else {
&execute_add($context,'newstudent',$uname,$dom,$auth,$authparam,$first,$middle,$last,$gene,$pid,$usec,$end,$start,$emailenc,$cid,\$addresult,\$enrollcount,$linefeed,$logmsg);
}
@@ -345,24 +355,32 @@ sub update_LC {
# Terminated explictly allowed access to student creation/modification
if ($context eq 'automated') {
- delete($ENV{'allowed.cst'});
+ delete($env{'allowed.cst'});
}
if ($enrollcount > 0) {
if ($context eq "updatenow") {
$addresult = substr($addresult,0,rindex($addresult,""));
- $addresult = "The following $enrollcount student(s) was/were added to this LON-CAPA course:
";
+ $addresult = "The following $enrollcount student(s) was/were added to this LON-CAPA course:
";
} else {
- $addresult = "The following $enrollcount student(s) was/were added to this LON-CAPA course:\n\n".$addresult."\n\n";
- }
+ $addresult = "The following $enrollcount student(s) was/were added to this LON-CAPA course:\n\n".$addresult."\n\n";
+ }
}
if ($dropcount > 0) {
if ($context eq "updatenow") {
$dropresult = substr($dropresult,0,rindex($dropresult,""));
- $dropresult = "The following $dropcount student(s) was/were expired from this LON-CAPA course:
";
+ $dropresult = "The following $dropcount student(s) was/were expired from this LON-CAPA course:
";
} else {
$dropresult = "The following $dropcount student(s) was/were expired from this LON-CAPA course:\n\n".$dropresult."\n\n";
}
}
+ if ($switchcount > 0) {
+ if ($context eq "updatenow") {
+ $switchresult = substr($switchresult,0,rindex($switchresult,""));
+ $switchresult = "The following $switchcount student(s) switched sections in this LON-CAPA course:
";
+ } else {
+ $switchresult = "The following $switchcount student(s) switched sections in this LON-CAPA course:\n\n".$switchresult."\n\n";
+ }
+ }
if ( ($adds) && ($enrollcount == 0) ) {
$addresult = "There were no new students to add to the course.";
if ($context eq "updatenow") {
@@ -379,8 +397,8 @@ sub update_LC {
$dropresult .="\n";
}
}
- my $changecount = $enrollcount + $dropcount;
- return ($changecount,$addresult.$dropresult);
+ my $changecount = $enrollcount + $dropcount + $switchcount;
+ return ($changecount,$addresult.$dropresult.$switchresult);
}
sub create_newuser {
@@ -441,7 +459,7 @@ sub create_newuser {
if ($context eq 'createowner' || $context eq 'createcourse') {
my $result = &Apache::lonnet::modifyuser($udom,$uname,$pid,$auth,$authparam,$first,$middle,$last,$gene,'1',undef,$emailaddr);
if ($result eq 'ok' && $context eq 'createcourse') {
- $outcome = &Apache::loncreateuser::commit_standardrole($userurl,$role,$cdom,$crs,$start,$end);
+ $outcome = &Apache::loncreateuser::commit_standardrole($udom,$uname,$userurl,$role,$start,$end,$cdom,$crs,$usec);
unless ($outcome =~ /^Error:/) {
$outcome = 'ok';
}
@@ -464,6 +482,7 @@ sub create_newuser {
my %emailHash;
$emailHash{'critnotification'} = $emailenc;
$emailHash{'notification'} = $emailenc;
+ $emailHash{'permanentemail'} = $emailenc;
my $putresult = &Apache::lonnet::put('environment',\%emailHash,$udom,$uname);
}
if ($create_passwd) {
@@ -546,7 +565,7 @@ sub prepare_add {
sub execute_add {
my ($context,$caller,$uname,$dom,$auth,$authparam,$first,$middle,$last,$gene,$pid,$usec,$end,$start,$emailenc,$cid,$addresult,$enrollcount,$linefeed,$logmsg) = @_;
# Get the user's information and authentication
- my %userenv = &Apache::lonnet::get('environment',['firstname','middlename','lastname','generation','id','critnotification','notification'],$dom,$uname);
+ my %userenv = &Apache::lonnet::get('environment',['firstname','middlename','lastname','generation','id','critnotification','notification','permanentemail'],$dom,$uname);
my ($tmp) = keys(%userenv);
if ($tmp =~ /^(con_lost|error)/i) {
%userenv = ();
@@ -559,11 +578,17 @@ sub execute_add {
}
}
if ($userenv{notification} =~ m/%40/) {
- unless ($emailenc eq $userenv{critnotification}) {
+ unless ($emailenc eq $userenv{notification}) {
$$logmsg .= "Current standard notification e-mail
- ".$userenv{notification}." for $uname is different to e-mail address in institutional classlist - ".$emailenc.$linefeed;
}
}
+ if ($userenv{permanentemail} =~ m/%40/) {
+ unless ($emailenc eq $userenv{permanentemail}) {
+ $$logmsg .= "Current permanent e-mail
+- ".$userenv{permanentemail}." for $uname is different to e-mail address in institutional classlist - ".$emailenc.$linefeed;
+ }
+ }
my $krbdefdom = '';
my $currentauth=&Apache::lonnet::queryauthenticate($uname,$dom);
if ($currentauth=~/^(krb[45]):(.*)/) {
@@ -588,7 +613,8 @@ sub execute_add {
$middle ne $userenv{'middlename'} ||
$last ne $userenv{'lastname'} ||
$gene ne $userenv{'generation'} ||
- $pid ne $userenv{'id'} ) {
+ $pid ne $userenv{'id'} ||
+ $emailenc ne $userenv{'permanentemail'} ) {
# Make the change(s)
my %changeHash;
$changeHash{'firstname'} = $first;
@@ -596,6 +622,7 @@ sub execute_add {
$changeHash{'lastname'} = $last;
$changeHash{'generation'} = $gene;
$changeHash{'id'} = $pid;
+ $changeHash{'permanentemail'} = $emailenc;
my $putresult = &Apache::lonnet::put('environment',\%changeHash,$dom,$uname);
if ($putresult eq 'ok') {
$$logmsg .= "User information updated for user: $uname prior to enrollment.".$linefeed;