version 1.26, 2006/01/02 20:19:37
|
version 1.28, 2006/02/07 05:08:21
|
Line 28 package LONCAPA::Enrollment;
|
Line 28 package LONCAPA::Enrollment;
|
use Apache::loncoursedata; |
use Apache::loncoursedata; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lonmsg; |
use Apache::lonmsg; |
|
use Apache::lonlocal; |
use HTML::Entities; |
use HTML::Entities; |
use LONCAPA::Configuration; |
use LONCAPA::Configuration; |
use Time::Local; |
use Time::Local; |
Line 36 use lib '/home/httpd/lib/perl';
|
Line 37 use lib '/home/httpd/lib/perl';
|
use strict; |
use strict; |
|
|
sub update_LC { |
sub update_LC { |
my ($dom,$crs,$adds,$drops,$startdate,$enddate,$authtype,$autharg,$classesref,$groupref,$logmsg,$newusermsg,$context) = @_; |
my ($dom,$crs,$adds,$drops,$startdate,$enddate,$authtype,$autharg,$classesref,$groupref,$logmsg,$newusermsg,$context,$phototypes) = @_; |
# Get institutional code and title of this class |
# Get institutional code and title of this class |
my %courseinfo = (); |
my %courseinfo = (); |
&get_courseinfo($dom,$crs,\%courseinfo); |
&get_courseinfo($dom,$crs,\%courseinfo); |
Line 75 sub update_LC {
|
Line 76 sub update_LC {
|
my $addresult = ''; |
my $addresult = ''; |
my $dropresult = ''; |
my $dropresult = ''; |
my $switchresult = ''; |
my $switchresult = ''; |
|
my $photoresult = ''; |
if ($context eq "updatenow") { |
if ($context eq "updatenow") { |
$linefeed = "</li>\n<li>"; |
$linefeed = "</li>\n<li>"; |
} elsif ($context eq "automated") { |
} elsif ($context eq "automated") { |
Line 167 sub update_LC {
|
Line 169 sub update_LC {
|
push @okusers, $uname; |
push @okusers, $uname; |
} |
} |
elsif (@sections > 1) { |
elsif (@sections > 1) { |
$$logmsg = "$uname appears in classlists for the more than one section of this course, i.e. in sections: "; |
$$logmsg .= "$uname appears in classlists for more than one section of this course, i.e. in sections: "; |
foreach (@sections) { |
foreach (@sections) { |
$$logmsg .= " $_,"; |
$$logmsg .= " $_,"; |
} |
} |
Line 192 sub update_LC {
|
Line 194 sub update_LC {
|
@{$unameFromINid{$stuID}} = $uname; |
@{$unameFromINid{$stuID}} = $uname; |
} |
} |
} |
} |
|
|
# Explicitly allow access to creation/modification of students if called as an automated process. |
# Explicitly allow access to creation/modification of students if called as an automated process. |
if ($context eq 'automated') { |
if ($context eq 'automated') { |
$env{'allowed.cst'}='F'; |
$env{'allowed.cst'}='F'; |
Line 281 sub update_LC {
|
Line 284 sub update_LC {
|
} else { |
} else { |
# Check for changed usernames by checking studentIDs |
# Check for changed usernames by checking studentIDs |
if ( ($stuinfo[ $place{studentID} ] ne '') && (grep/^$stuinfo[ $place{studentID} ]$/,@LCids) ) { |
if ( ($stuinfo[ $place{studentID} ] ne '') && (grep/^$stuinfo[ $place{studentID} ]$/,@LCids) ) { |
if (grep/^$$currlist{$uname}[ $place{'studentID'} ]$/,@allINids) { |
foreach my $match ( @{ $unameFromLCid{ $stuinfo[ $place{studentID} ] } } ) { |
foreach my $match ( @{ $unameFromLCid{ $stuinfo[ $place{studentID} ] } } ) { |
$$logmsg .= "A possible change in username has been detected for a student enrolled in this course. The existing LON-CAPA classlist contains user: $match and student ID: ".$stuinfo[ $place{studentID} ].". "; |
if (grep/^$match$/,@okusers) { |
if (grep/^$match$/,@okusers) { |
$$logmsg .= "A possible change in username has been detected for a student enrolled in this course. The existing LON-CAPA classlist contains user: $uname and student ID: ".$$currlist{$uname}[ $place{studentID} ].". This username has been dropped from the institutional classlist, but the same student ID is used for user: $match who still appears in the institutional classlist. You may need to contact your Domain Coordinator to request a move of the student data files for user: $uname to $match".$linefeed; |
$$logmsg .= "The username $match remains in the institutional classlist, but the same student ID is used for new user: $uname now found in the institutional classlist. You may need to contact your Domain Coordinator to determine how to reolve this issue and whether to move student data files for user: $match to $uname. "; |
|
} else { |
|
unless ($drops == 1) { |
|
$$logmsg .= "This username - $match - has been dropped from the institutional classlist, but the student ID of this user is also used by $uname who now appears in the institutional classlist. You may need to contact your Domain Coordinator to request a move of the student data files for user: $match to $uname. "; |
} |
} |
} |
} |
|
$$logmsg .= "Because of this student ID conflict, the new username - $uname - has not been added to the LON-CAPA classlist.".$linefeed; |
} |
} |
} elsif ($adds == 1) { |
} elsif ($adds == 1) { |
my ($auth,$authparam,$first,$middle,$last,$gene,$usec,$end,$start,$emailaddr,$pid,$emailenc); |
my ($auth,$authparam,$first,$middle,$last,$gene,$usec,$end,$start,$emailaddr,$pid,$emailenc); |
Line 319 sub update_LC {
|
Line 326 sub update_LC {
|
} else { |
} else { |
&execute_add($context,'newstudent',$uname,$dom,$auth,$authparam,$first,$middle,$last,$gene,$pid,$usec,$end,$start,$emailenc,$cid,\$addresult,\$enrollcount,$linefeed,$logmsg); |
&execute_add($context,'newstudent',$uname,$dom,$auth,$authparam,$first,$middle,$last,$gene,$pid,$usec,$end,$start,$emailenc,$cid,\$addresult,\$enrollcount,$linefeed,$logmsg); |
} |
} |
|
if ($courseinfo{'showphotos'}) { |
|
my ($result,$resulttype) = |
|
&Apache::lonnet::auto_checkphotos($uname,$dom,$pid); |
|
if ($resulttype) { |
|
push(@{$$phototypes{$resulttype}},$uname); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if ($courseinfo{'showphotos'}) { |
|
if (keys(%{$phototypes})>0) { |
|
my %lt = &photo_response_types(); |
|
foreach my $type (sort(keys(%{$phototypes}))) { |
|
my $numphoto = @{$$phototypes{$type}}; |
|
if ($numphoto > 0) { |
|
if ($context eq 'updatenow') { |
|
$photoresult .= '<br /><b>'. |
|
&mt('For [_1] students, photos ',$numphoto). |
|
$lt{$type}.'</b><ul><li>'; |
|
} else { |
|
$photoresult .= "\nFor $numphoto students, photos ". |
|
$lt{$type}."\n"; |
|
} |
|
foreach my $user (@{$$phototypes{$type}}) { |
|
$photoresult .= $user.$linefeed; |
|
} |
|
if ($context eq 'updatenow') { |
|
$photoresult = substr($photoresult,0, |
|
rindex($photoresult,"<li>")); |
|
$photoresult .= '</ul><br />'; |
|
} else { |
|
$photoresult .= "\n"; |
|
} |
} |
} |
} |
} |
} |
} |
} |
} |
|
|
# Do drops |
# Do drops |
if ( ($drops == 1) && (@reg_students > 0) ) { |
if ( ($drops == 1) && (@reg_students > 0) ) { |
foreach my $uname (@localstudents) { |
foreach my $uname (@localstudents) { |
Line 332 sub update_LC {
|
Line 375 sub update_LC {
|
# Check for changed usernames by checking studentIDs |
# Check for changed usernames by checking studentIDs |
if (grep/^$$currlist{$uname}[ $stuid ]$/,@allINids) { |
if (grep/^$$currlist{$uname}[ $stuid ]$/,@allINids) { |
foreach my $match (@{$unameFromINid{$$currlist{$uname}[ $stuid ]}} ) { |
foreach my $match (@{$unameFromINid{$$currlist{$uname}[ $stuid ]}} ) { |
$$logmsg .= "A possible change in username has been detected for a student enrolled in this course. The existing LON-CAPA classlist contains user: $uname and student ID: $$currlist{$uname}[ $place{studentID} ]. This username has been dropped from the institutional classlist, but the same student ID is used for user: $match who still appears in the institutional classlist. You may need to move the student data files for user: $uname to $match.".$linefeed; |
$$logmsg .= "A possible change in username has been detected for a student enrolled in this course. The existing LON-CAPA classlist contains user: $uname and student ID: $$currlist{$uname}[ $place{studentID} ]. This username has been dropped from the institutional classlist, but the same student ID is used for user: $match who still appears in the institutional classlist. You may need to move the student data files for user: $uname to $match. Because of this, user $uname has not been dropped from the course.".$linefeed; |
push @saved,$uname; |
push @saved,$uname; |
} |
} |
} elsif (@saved == 0) { |
} elsif (@saved == 0) { |
Line 361 sub update_LC {
|
Line 404 sub update_LC {
|
if ($context eq "updatenow") { |
if ($context eq "updatenow") { |
$addresult = substr($addresult,0,rindex($addresult,"<li>")); |
$addresult = substr($addresult,0,rindex($addresult,"<li>")); |
$addresult = "The following $enrollcount student(s) was/were added to this LON-CAPA course:<br/><ul><li>".$addresult."</ul><br/><br/>"; |
$addresult = "The following $enrollcount student(s) was/were added to this LON-CAPA course:<br/><ul><li>".$addresult."</ul><br/><br/>"; |
|
if ($courseinfo{'showphotos'}) { |
|
|
|
} |
} else { |
} 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"; |
} |
} |
Line 398 sub update_LC {
|
Line 444 sub update_LC {
|
} |
} |
} |
} |
my $changecount = $enrollcount + $dropcount + $switchcount; |
my $changecount = $enrollcount + $dropcount + $switchcount; |
return ($changecount,$addresult.$dropresult.$switchresult); |
return ($changecount,$addresult.$photoresult.$dropresult.$switchresult); |
} |
} |
|
|
sub create_newuser { |
sub create_newuser { |
Line 783 sub get_courseinfo {
|
Line 829 sub get_courseinfo {
|
my ($dom,$crs,$courseinfo) = @_; |
my ($dom,$crs,$courseinfo) = @_; |
my $owner; |
my $owner; |
if (defined($dom) && defined($crs)) { |
if (defined($dom) && defined($crs)) { |
my %settings = &Apache::lonnet::get('environment',['internal.coursecode','description'],$dom,$crs); |
my %settings = &Apache::lonnet::get('environment',['internal.coursecode','internal.showphotos','description'],$dom,$crs); |
if ( defined($settings{'internal.coursecode'}) ) { |
if ( defined($settings{'internal.coursecode'}) ) { |
$$courseinfo{'inst_code'} = $settings{'internal.coursecode'}; |
$$courseinfo{'inst_code'} = $settings{'internal.coursecode'}; |
|
|
} |
} |
if ( defined($settings{'description'}) ) { |
if ( defined($settings{'description'}) ) { |
$$courseinfo{'description'} = $settings{'description'}; |
$$courseinfo{'description'} = $settings{'description'}; |
} |
} |
|
if ( defined($settings{'internal.showphotos'}) ) { |
|
$$courseinfo{'showphotos'} = $settings{'internal.showphotos'}; |
|
} |
} |
} |
return; |
return; |
} |
} |
Line 807 sub CL_middlename { return 8;}
|
Line 855 sub CL_middlename { return 8;}
|
sub CL_startdate { return 9; } |
sub CL_startdate { return 9; } |
sub CL_studentID { return 10; } |
sub CL_studentID { return 10; } |
|
|
|
sub photo_response_types { |
|
my %lt = &Apache::lonlocal::texthash ( |
|
'same' => 'remained unchanged', |
|
'update' => 'were updated', |
|
'new' => 'were added', |
|
'missing' => 'were missing', |
|
'error' => 'were not imported because an error occurred', |
|
'nouser' => 'were for users without accounts', |
|
'noid' => 'were for users without student IDs', |
|
); |
|
return %lt; |
|
} |
|
|
|
|
1; |
1; |