--- loncom/enrollment/Enrollment.pm 2004/12/07 06:40:09 1.19
+++ loncom/enrollment/Enrollment.pm 2006/01/02 20:19:37 1.26
@@ -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.26 2006/01/02 20:19:37 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -43,7 +43,7 @@ sub update_LC {
# Get current LON-CAPA student enrollment for this class
my $configvars = &LONCAPA::Configuration::read_conf('loncapa.conf');
my $cid = $dom."_".$crs;
- my $roster = &Apache::loncoursedata::get_classlist($cid,$dom,$crs);
+ my $roster = &Apache::loncoursedata::get_classlist($dom,$crs);
my $cend = &Apache::loncoursedata::CL_END;
my $cstart = &Apache::loncoursedata::CL_START;
my $stuid=&Apache::loncoursedata::CL_ID;
@@ -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;
@@ -752,44 +779,6 @@ sub create_password {
return ($passwd);
}
-sub check_user_status {
- my ($udom,$uname,$cdom,$crs,$role,$secgrp) = @_;
- my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname);
- my @uroles = keys %userinfo;
- my $srchstr;
- my $active_chk = 'none';
- if (@uroles > 0) {
- if ( ($role eq 'cc') || ($secgrp eq '') || ( !defined($secgrp) ) ) {
- $srchstr = '/'.$cdom.'/'.$crs.'_'.$role;
- } else {
- $srchstr = '/'.$cdom.'/'.$crs.'/'.$secgrp.'_'.$role;
- }
- if (grep/^$srchstr$/,@uroles) {
- my $role_end = 0;
- my $role_start = 0;
- $active_chk = 'ok';
- if ( $userinfo{$srchstr} =~ m/^($role)_(\d+)/ ) {
- $role_end = $2;
- if ( $userinfo{$srchstr} =~ m/^($role)_($role_end)_(\d+)$/ )
- {
- $role_start = $3;
- }
- }
- if ($role_start > 0) {
- if (time < $role_start) {
- $active_chk = 'expired';
- }
- }
- if ($role_end > 0) {
- if (time > $role_end) {
- $active_chk = 'expired';
- }
- }
- }
- }
- return $active_chk;
-}
-
sub get_courseinfo {
my ($dom,$crs,$courseinfo) = @_;
my $owner;