version 1.34, 2007/05/11 01:48:23
|
version 1.40, 2009/03/09 01:58:52
|
Line 115 sub update_LC {
|
Line 115 sub update_LC {
|
# Get latest institutional enrollment for this class. |
# Get latest institutional enrollment for this class. |
my %allenrolled = (); |
my %allenrolled = (); |
my @reg_students = (); |
my @reg_students = (); |
my %place = (); |
my %place = &place_hash(); |
$place{'autharg'} = &CL_autharg(); |
|
$place{'authtype'} = &CL_authtype(); |
|
$place{'email'} = &CL_email(); |
|
$place{'enddate'} = &CL_enddate(); |
|
$place{'firstname'} = &CL_firstname(); |
|
$place{'generation'} = &CL_generation(); |
|
$place{'groupID'} = &CL_groupID(); |
|
$place{'lastname'} = &CL_lastname(); |
|
$place{'middlename'} = &CL_middlename(); |
|
$place{'startdate'} = &CL_startdate(); |
|
$place{'studentID'} = &CL_studentID(); |
|
my %ucount = (); |
my %ucount = (); |
my %enrollinfo = (); |
my %enrollinfo = (); |
foreach my $class (@{$classesref}) { |
foreach my $class (@{$classesref}) { |
Line 182 sub update_LC {
|
Line 171 sub update_LC {
|
push @okusers, $uname; |
push @okusers, $uname; |
} |
} |
} |
} |
# Get mapping of student IDs to usernames for users in institutional data for this class |
# Get mapping of student/employee IDs to usernames for users in institutional data for this class |
my @allINids = (); |
my @allINids = (); |
my %unameFromINid = (); |
my %unameFromINid = (); |
foreach my $uname (@okusers) { |
foreach my $uname (@okusers) { |
Line 217 sub update_LC {
|
Line 206 sub update_LC {
|
# Check for switch from manual to auto |
# Check for switch from manual to auto |
unless (($$currlist{$uname}[$type] eq "auto") || ($$currlist{$uname}[$lockedtype] eq "1") || (!$adds) ) { |
unless (($$currlist{$uname}[$type] eq "auto") || ($$currlist{$uname}[$lockedtype] eq "1") || (!$adds) ) { |
# drop manually added student |
# drop manually added student |
my $drop_reply = &Apache::lonnet::modifystudent($dom,$uname,'','','',undef,undef,undef,undef,$$currlist{$uname}[$sec],time,undef,undef,undef,undef,'auto','',$cid); |
my $drop_reply = &Apache::lonnet::modifystudent($dom,$uname,'','','',undef,undef,undef,undef,$$currlist{$uname}[$sec],time,undef,undef,undef,undef,'auto','',$cid,'',$context); |
# re-enroll as auto student |
# re-enroll as auto student |
if ($drop_reply !~ /^ok/) { |
if ($drop_reply !~ /^ok/) { |
$$logmsg .= &mt('An error occured during the attempt to convert [_1] from a manual type to an auto type student - [_2].',$uname,$drop_reply).$linefeed; |
$$logmsg .= &mt('An error occured during the attempt to convert [_1] from a manual type to an auto type student - [_2].',$uname,$drop_reply).$linefeed; |
Line 249 sub update_LC {
|
Line 238 sub update_LC {
|
if ( (grep/^$uname$/,@futurestudents) && ($$currlist{$uname}[$type] eq "auto") && ($adds == 1) ) { |
if ( (grep/^$uname$/,@futurestudents) && ($$currlist{$uname}[$type] eq "auto") && ($adds == 1) ) { |
my $datechange = &datechange_check($$currlist{$uname}[$cstart],$$currlist{$uname}[$cend],$startdate,$enddate); |
my $datechange = &datechange_check($$currlist{$uname}[$cstart],$$currlist{$uname}[$cend],$startdate,$enddate); |
if ($datechange) { |
if ($datechange) { |
my $modify_access_result = &Apache::lonnet::modify_student_enrollment($dom,$uname,undef,undef,undef,undef,undef,$stuinfo[ $place{groupID} ],$enddate,$startdate,'auto','',$cid); |
my $modify_access_result = &Apache::lonnet::modify_student_enrollment($dom,$uname,undef,undef,undef,undef,undef,$stuinfo[ $place{groupID} ],$enddate,$startdate,'auto','',$cid,'',$context); |
$access = &showaccess($enddate,$startdate); |
$access = &showaccess($enddate,$startdate); |
if ($modify_access_result =~ /^ok/) { |
if ($modify_access_result =~ /^ok/) { |
$$logmsg .= &mt('Change in access dates for [_1].',$uname).$access.$linefeed; |
$$logmsg .= &mt('Change in access dates for [_1].',$uname).$access.$linefeed; |
Line 267 sub update_LC {
|
Line 256 sub update_LC {
|
if ($$currlist{$uname}[$sec]) { |
if ($$currlist{$uname}[$sec]) { |
$uurl.='/'.$$currlist{$uname}[$sec]; |
$uurl.='/'.$$currlist{$uname}[$sec]; |
} |
} |
my $expire_role_result = &Apache::lonnet::assignrole($dom,$uname,$uurl,'st',$expiretime); |
my $expire_role_result = &Apache::lonnet::assignrole($dom,$uname,$uurl,'st',$expiretime,'','','',$context); |
if ($expire_role_result eq 'ok') { |
if ($expire_role_result eq 'ok') { |
my $modify_section_result; |
my $modify_section_result; |
if (grep/^$uname$/,@activestudents) { |
if (grep/^$uname$/,@activestudents) { |
$modify_section_result = &Apache::lonnet::modify_student_enrollment($dom,$uname,undef,undef,undef,undef,undef,$stuinfo[ $place{groupID} ],$$currlist{$uname}[$cend],$$currlist{$uname}[$cstart],'auto','',$cid); |
$modify_section_result = &Apache::lonnet::modify_student_enrollment($dom,$uname,undef,undef,undef,undef,undef,$stuinfo[ $place{groupID} ],$$currlist{$uname}[$cend],$$currlist{$uname}[$cstart],'auto','',$cid,'',$context); |
} else { |
} else { |
$modify_section_result = &Apache::lonnet::modify_student_enrollment($dom,$uname,undef,undef,undef,undef,undef,$stuinfo[ $place{groupID} ],$enddate,$startdate,'auto','',$cid); |
$modify_section_result = &Apache::lonnet::modify_student_enrollment($dom,$uname,undef,undef,undef,undef,undef,$stuinfo[ $place{groupID} ],$enddate,$startdate,'auto','',$cid,'',$context); |
$access = &showaccess($enddate,$startdate); |
$access = &showaccess($enddate,$startdate); |
} |
} |
if ($modify_section_result =~ /^ok/) { |
if ($modify_section_result =~ /^ok/) { |
Line 294 sub update_LC {
|
Line 283 sub update_LC {
|
# 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) ) { |
foreach my $match ( @{ $unameFromLCid{ $stuinfo[ $place{studentID} ] } } ) { |
foreach my $match ( @{ $unameFromLCid{ $stuinfo[ $place{studentID} ] } } ) { |
$$logmsg .= &mt('A possible change in username has been detected for a student enrolled in this course.').' '.&mt('The existing LON-CAPA classlist contains user: [_1] and student ID: [_2].',$match,$stuinfo[ $place{studentID} ]); |
$$logmsg .= &mt('A possible change in username has been detected for a student enrolled in this course.').' '.&mt('The existing LON-CAPA classlist contains user: [_1] and student/employee ID: [_2].',$match,$stuinfo[ $place{studentID} ]); |
if (grep/^$match$/,@okusers) { |
if (grep/^$match$/,@okusers) { |
$$logmsg .= &mt('The username [_1] remains in the institutional classlist, but the same student ID is used for new user: [_2] now found in the institutional classlist.',$match,$uname).' '.&mt('You may need to contact your Domain Coordinator to determine how to resolve this issue and whether to move student data files for user: [_1] to [_2].',$match,$uname).' '; |
$$logmsg .= &mt('The username [_1] remains in the institutional classlist, but the same student/employee ID is used for new user: [_2] now found in the institutional classlist.',$match,$uname).' '.&mt('You may need to contact your Domain Coordinator to determine how to resolve this issue and whether to move student data files for user: [_1] to [_2].',$match,$uname).' '; |
} else { |
} else { |
unless ($drops == 1) { |
unless ($drops == 1) { |
$$logmsg .= &mt('This username - [_1] - has been dropped from the institutional classlist, but the student ID of this user is also used by [_2] who now appears in the institutional classlist.',$match,$uname).' '.&mt('You may need to contact your Domain Coordinator to request a move of the student data files for user: [_1] to [_2].',$match,$uname).' '; |
$$logmsg .= &mt('This username - [_1] - has been dropped from the institutional classlist, but the student/employee ID of this user is also used by [_2] who now appears in the institutional classlist.',$match,$uname).' '.&mt('You may need to contact your Domain Coordinator to request a move of the student data files for user: [_1] to [_2].',$match,$uname).' '; |
} |
} |
} |
} |
$$logmsg .= &mt('Because of this student ID conflict, the new username - [_1] - has not been added to the LON-CAPA classlist',$uname).$linefeed; |
$$logmsg .= &mt('Because of this student/employee ID conflict, the new username - [_1] - has not been added to the LON-CAPA classlist',$uname).$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 331 sub update_LC {
|
Line 320 sub update_LC {
|
'linefeed' => $linefeed, |
'linefeed' => $linefeed, |
'role' => 'st' |
'role' => 'st' |
}; |
}; |
my $outcome = &create_newuser($args,$logmsg,$newusermsg,\$enrollcount,\$addresult,\%longroles,\%courseinfo); |
my $outcome = &create_newuser($args,$logmsg,$newusermsg,\$enrollcount,\$addresult,\%longroles,\%courseinfo,$context); |
} 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); |
} |
} |
Line 384 sub update_LC {
|
Line 373 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 .= &mt('A possible change in username has been detected for a student enrolled in this course.').' '.&mt('The existing LON-CAPA classlist contains user: [_1] and student ID: [_2].',$uname,$$currlist{$uname}[ $place{studentID} ]).' '.&mt('This username has been dropped from the institutional classlist, but the same student ID is used for user: [_1] who still appears in the institutional classlist.',$match).' '.&mt('You may need to move the student data files for user: [_1] to [_2]',$uname,$match).' '.&mt('Because of this, user [_1] has not been dropped from the course.',$uname).$linefeed; |
$$logmsg .= &mt('A possible change in username has been detected for a student enrolled in this course.').' '.&mt('The existing LON-CAPA classlist contains user: [_1] and student/employee ID: [_2].',$uname,$$currlist{$uname}[ $place{studentID} ]).' '.&mt('This username has been dropped from the institutional classlist, but the same student/employee ID is used for user: [_1] who still appears in the institutional classlist.',$match).' '.&mt('You may need to move the student data files for user: [_1] to [_2]',$uname,$match).' '.&mt('Because of this, user [_1] has not been dropped from the course.',$uname).$linefeed; |
push @saved,$uname; |
push @saved,$uname; |
} |
} |
} elsif (@saved == 0) { |
} elsif (@saved == 0) { |
my $drop_reply = &Apache::lonnet::modifystudent($dom,$uname,'','','',undef,undef,undef,undef,$$currlist{$uname}[$sec],time,undef,undef,undef,undef,'auto','',$cid); |
my $drop_reply = &Apache::lonnet::modifystudent($dom,$uname,'','','',undef,undef,undef,undef,$$currlist{$uname}[$sec],time,undef,undef,undef,undef,'auto','',$cid,'',$context); |
if ($drop_reply !~ /^ok/) { |
if ($drop_reply !~ /^ok/) { |
$$logmsg .= &mt('An error occured during the attempt to expire the [_1] from the old section [_2] - [_3].',$uname,$$currlist{$uname}[$sec],$drop_reply).$linefeed; |
$$logmsg .= &mt('An error occured during the attempt to expire the [_1] from the old section [_2] - [_3].',$uname,$$currlist{$uname}[$sec],$drop_reply).$linefeed; |
} else { |
} else { |
$dropcount ++; |
$dropcount ++; |
my %userenv = &Apache::lonnet::get('environment',['firstname','lastname','id'],$dom,$uname); |
my %userenv = &Apache::lonnet::get('environment',['firstname','lastname','id'],$dom,$uname); |
$dropresult .= $userenv{'firstname'}." ".$userenv{'lastname'}." (".$userenv{'id'}.") - ".$uname.' '.&mt("dropped from section/group: '[_1]'.",$$currlist{$uname}[$sec]).$linefeed; |
$dropresult .= $userenv{'firstname'}." ".$userenv{'lastname'}." (".$userenv{'id'}.") - ".$uname.' '.&mt("dropped from section: '[_1]'.",$$currlist{$uname}[$sec]).$linefeed; |
if ($context eq 'automated') { |
if ($context eq 'automated') { |
$$logmsg .= &mt('User [_1] student role expired from course.',$uname).$linefeed; |
$$logmsg .= &mt('User [_1] student role expired from course.',$uname).$linefeed; |
} |
} |
Line 454 sub update_LC {
|
Line 443 sub update_LC {
|
} |
} |
|
|
sub create_newuser { |
sub create_newuser { |
my ($args,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,$courseinfo) = @_; |
my ($args,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles, |
|
$courseinfo,$called_context) = @_; |
my $auth = $args->{'auth'}; |
my $auth = $args->{'auth'}; |
my $authparam = $args->{'authparam'}; |
my $authparam = $args->{'authparam'}; |
my $emailenc = $args->{'emailenc'}; |
my $emailenc = $args->{'emailenc'}; |
Line 511 sub create_newuser {
|
Line 501 sub create_newuser {
|
if ($context eq 'createowner' || $context eq 'createcourse') { |
if ($context eq 'createowner' || $context eq 'createcourse') { |
my $result = &Apache::lonnet::modifyuser($udom,$uname,$pid,$auth,$authparam,$first,$middle,$last,$gene,'1',undef,$emailaddr); |
my $result = &Apache::lonnet::modifyuser($udom,$uname,$pid,$auth,$authparam,$first,$middle,$last,$gene,'1',undef,$emailaddr); |
if ($result eq 'ok' && $context eq 'createcourse') { |
if ($result eq 'ok' && $context eq 'createcourse') { |
$outcome = &Apache::loncommon::commit_standardrole($udom,$uname,$userurl,$role,$start,$end,$cdom,$crs,$usec); |
$outcome = &Apache::loncommon::commit_standardrole($udom,$uname,$userurl,$role,$start,$end,$cdom,$crs,$usec,$called_context); |
unless ($outcome =~ /^Error:/) { |
unless ($outcome =~ /^Error:/) { |
$outcome = 'ok'; |
$outcome = 'ok'; |
} |
} |
Line 519 sub create_newuser {
|
Line 509 sub create_newuser {
|
$outcome = $result; |
$outcome = $result; |
} |
} |
} else { |
} else { |
$outcome=&Apache::lonnet::modifystudent($udom,$uname,$pid,$auth,$authparam,$first,$middle,$last,$gene,$usec,$end,$start,'',undef,$emailaddr,'auto','',$cid); |
$outcome=&Apache::lonnet::modifystudent($udom,$uname,$pid,$auth,$authparam,$first,$middle,$last,$gene,$usec,$end,$start,'',undef,$emailaddr,'auto','',$cid,'',$called_context); |
} |
} |
if ($outcome eq 'ok') { |
if ($outcome eq 'ok') { |
my $access = &showaccess($end,$start); |
my $access = &showaccess($end,$start); |
Line 527 sub create_newuser {
|
Line 517 sub create_newuser {
|
if ($usec eq '') { |
if ($usec eq '') { |
$showsec = &mt('none'); |
$showsec = &mt('none'); |
} |
} |
$$addresult .= "$first $last ($pid) - $uname ".&mt("enrolled in section/group: '[_1]'.",$showsec).$access.$linefeed; |
$$addresult .= "$first $last ($pid) - $uname ".&mt("enrolled in section: '[_1]'.",$showsec).$access.$linefeed; |
unless ($context eq 'createowner' || $context eq 'createcourse') { |
unless ($context eq 'createowner' || $context eq 'createcourse') { |
$$enrollcount ++; |
$$enrollcount ++; |
} |
} |
if ($context eq 'automated') { |
if ($called_context eq 'automated') { |
$$logmsg .= &mt('New [_1] user [_2] added successfully.',$udom,$uname); |
$$logmsg .= &mt('New [_1] user [_2] added successfully.',$udom,$uname); |
} |
} |
unless ($emailenc eq '' || $context eq 'createowner' || $context eq 'createcourse') { |
unless ($emailenc eq '' || $context eq 'createowner' || $context eq 'createcourse') { |
Line 563 sub create_newuser {
|
Line 553 sub create_newuser {
|
} |
} |
&Apache::lonmsg::sendemail($emailaddr,$subject,$body); |
&Apache::lonmsg::sendemail($emailaddr,$subject,$body); |
} |
} |
if ($context eq 'automated') { |
if ($called_context eq 'automated') { |
$$logmsg .= &mt(' Initial password - sent to ').$emailaddr.$linefeed; |
$$logmsg .= &mt(' Initial password - sent to ').$emailaddr.$linefeed; |
} |
} |
} else { |
} else { |
if ($context eq 'automated') { |
if ($called_context eq 'automated') { |
$$logmsg .= $linefeed; |
$$logmsg .= $linefeed; |
} |
} |
} |
} |
Line 683 sub execute_add {
|
Line 673 sub execute_add {
|
$changeHash{'permanentemail'} = $emailenc; |
$changeHash{'permanentemail'} = $emailenc; |
my $putresult = &Apache::lonnet::put('environment',\%changeHash,$dom,$uname); |
my $putresult = &Apache::lonnet::put('environment',\%changeHash,$dom,$uname); |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
$$logmsg .= &mt('User information updated for user: [_1]$uname prior to enrollment.',$uname).$linefeed; |
$$logmsg .= &mt('User information updated for user: [_1] prior to enrollment.',$uname).$linefeed; |
} else { |
} else { |
$$logmsg .= &mt('There was a problem modifying user data for existing user - [_1] -error: [_2], enrollment will still be attempted.',$uname,$putresult).$linefeed; |
$$logmsg .= &mt('There was a problem modifying user data for existing user - [_1] -error: [_2], enrollment will still be attempted.',$uname,$putresult).$linefeed; |
} |
} |
} |
} |
|
|
# Assign the role of student in the course. |
# Assign the role of student in the course. |
my $classlist_reply = &Apache::lonnet::modify_student_enrollment($dom,$uname,$pid,$first,$middle,$last,$gene,$usec,$end,$start,'auto','',$cid); |
my $classlist_reply = &Apache::lonnet::modify_student_enrollment($dom,$uname,$pid,$first,$middle,$last,$gene,$usec,$end,$start,'auto','',$cid,'',$context); |
if ($classlist_reply eq 'ok') { |
if ($classlist_reply eq 'ok') { |
my $access = &showaccess($end,$start); |
my $access = &showaccess($end,$start); |
my $showsec = $usec; |
my $showsec = $usec; |
Line 698 sub execute_add {
|
Line 688 sub execute_add {
|
$showsec = &mt('none'); |
$showsec = &mt('none'); |
} |
} |
if ($caller eq 'switchtype') { |
if ($caller eq 'switchtype') { |
$$logmsg .= &mt("Existing user [_1] detected in institutional classlist - switched from 'manual' to 'auto' enrollment in section/group [_2].",$uname,$showsec).$access.$linefeed; |
$$logmsg .= &mt("Existing user [_1] detected in institutional classlist - switched from 'manual' to 'auto' enrollment in section [_2].",$uname,$showsec).$access.$linefeed; |
} elsif ($caller eq 'newstudent') { |
} elsif ($caller eq 'newstudent') { |
$$enrollcount ++; |
$$enrollcount ++; |
$$addresult .= "$first $last ($pid) - $uname ".&mt("enrolled in section/group '[_1]'.",$showsec).$access.$linefeed; |
$$addresult .= "$first $last ($pid) - $uname ".&mt("enrolled in section '[_1]'.",$showsec).$access.$linefeed; |
} |
} |
if ($context eq 'automated') { |
if ($context eq 'automated') { |
$$logmsg .= &mt('Existing [_1] user [_2] enrolled successfully.',$dom,$uname).$linefeed; |
$$logmsg .= &mt('Existing [_1] user [_2] enrolled successfully.',$dom,$uname).$linefeed; |
Line 859 sub get_courseinfo {
|
Line 849 sub get_courseinfo {
|
return; |
return; |
} |
} |
|
|
sub CL_autharg { return 0; } |
sub place_hash { |
sub CL_authtype { return 1;} |
my %place = ( |
sub CL_email { return 2;} |
autharg => 0, |
sub CL_enddate { return 3;} |
authtype => 1, |
sub CL_firstname { return 4;} |
email => 2, |
sub CL_generation { return 5;} |
enddate => 3, |
sub CL_groupID { return 6;} |
firstname => 4, |
sub CL_lastname { return 7;} |
generation => 5, |
sub CL_middlename { return 8;} |
groupID => 6, |
sub CL_startdate { return 9; } |
lastname => 7, |
sub CL_studentID { return 10; } |
middlename => 8, |
|
startdate => 9, |
|
studentID => 10, |
|
); |
|
return %place; |
|
} |
|
|
sub photo_response_types { |
sub photo_response_types { |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
Line 879 sub photo_response_types {
|
Line 874 sub photo_response_types {
|
'missing' => 'were missing', |
'missing' => 'were missing', |
'error' => 'were not imported because an error occurred', |
'error' => 'were not imported because an error occurred', |
'nouser' => 'were for users without accounts', |
'nouser' => 'were for users without accounts', |
'noid' => 'were for users without student IDs', |
'noid' => 'were for users without student/employee IDs', |
); |
); |
return %lt; |
return %lt; |
} |
} |