--- loncom/enrollment/Enrollment.pm 2007/12/23 02:48:50 1.37 +++ loncom/enrollment/Enrollment.pm 2008/08/27 02:37:39 1.39 @@ -1,5 +1,5 @@ # Automated Enrollment manager -# $Id: Enrollment.pm,v 1.37 2007/12/23 02:48:50 raeburn Exp $ +# $Id: Enrollment.pm,v 1.39 2008/08/27 02:37:39 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -115,18 +115,7 @@ sub update_LC { # Get latest institutional enrollment for this class. my %allenrolled = (); my @reg_students = (); - my %place = (); - $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 %place = &place_hash(); my %ucount = (); my %enrollinfo = (); foreach my $class (@{$classesref}) { @@ -217,7 +206,7 @@ sub update_LC { # Check for switch from manual to auto unless (($$currlist{$uname}[$type] eq "auto") || ($$currlist{$uname}[$lockedtype] eq "1") || (!$adds) ) { # 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 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; @@ -249,7 +238,7 @@ sub update_LC { if ( (grep/^$uname$/,@futurestudents) && ($$currlist{$uname}[$type] eq "auto") && ($adds == 1) ) { my $datechange = &datechange_check($$currlist{$uname}[$cstart],$$currlist{$uname}[$cend],$startdate,$enddate); 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); if ($modify_access_result =~ /^ok/) { $$logmsg .= &mt('Change in access dates for [_1].',$uname).$access.$linefeed; @@ -267,13 +256,13 @@ sub update_LC { if ($$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') { my $modify_section_result; 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 { - $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); } if ($modify_section_result =~ /^ok/) { @@ -331,7 +320,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,$context); } else { &execute_add($context,'newstudent',$uname,$dom,$auth,$authparam,$first,$middle,$last,$gene,$pid,$usec,$end,$start,$emailenc,$cid,\$addresult,\$enrollcount,$linefeed,$logmsg); } @@ -388,13 +377,13 @@ sub update_LC { push @saved,$uname; } } 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/) { $$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 { $dropcount ++; 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') { $$logmsg .= &mt('User [_1] student role expired from course.',$uname).$linefeed; } @@ -520,7 +509,7 @@ sub create_newuser { $outcome = $result; } } 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') { my $access = &showaccess($end,$start); @@ -528,7 +517,7 @@ sub create_newuser { if ($usec eq '') { $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') { $$enrollcount ++; } @@ -691,7 +680,7 @@ sub execute_add { } # 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') { my $access = &showaccess($end,$start); my $showsec = $usec; @@ -699,10 +688,10 @@ sub execute_add { $showsec = &mt('none'); } 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') { $$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') { $$logmsg .= &mt('Existing [_1] user [_2] enrolled successfully.',$dom,$uname).$linefeed; @@ -860,17 +849,22 @@ sub get_courseinfo { return; } -sub CL_autharg { return 0; } -sub CL_authtype { return 1;} -sub CL_email { return 2;} -sub CL_enddate { return 3;} -sub CL_firstname { return 4;} -sub CL_generation { return 5;} -sub CL_groupID { return 6;} -sub CL_lastname { return 7;} -sub CL_middlename { return 8;} -sub CL_startdate { return 9; } -sub CL_studentID { return 10; } +sub place_hash { + my %place = ( + autharg => 0, + authtype => 1, + email => 2, + enddate => 3, + firstname => 4, + generation => 5, + groupID => 6, + lastname => 7, + middlename => 8, + startdate => 9, + studentID => 10, + ); + return %place; +} sub photo_response_types { my %lt = &Apache::lonlocal::texthash(