--- loncom/lonnet/perl/lonnet.pm 2002/10/10 14:34:05 1.296 +++ loncom/lonnet/perl/lonnet.pm 2002/10/14 15:33:26 1.297 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.296 2002/10/10 14:34:05 www Exp $ +# $Id: lonnet.pm,v 1.297 2002/10/14 15:33:26 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2320,26 +2320,51 @@ sub modifystudent { ($udom,$uname,$uid,$umode,$upass,$first,$middle,$last,$gene,$forceid, $desiredhome); unless ($reply eq 'ok') { return $reply; } + # This will cause &modify_student_enrollment to get the uid from the + # students environment + $uid = undef if (!$forceid); + $reply = &modify_student_enrollment($udom,$uname,$uid,$first,$middle, + $last,$gene,$usec,$end,$start); + return $reply; +} + +sub modify_student_enrollment { + my ($udom,$uname,$uid,$first,$middle,$last,$gene,$usec,$end,$start) = @_; + # Get the course id from the environment + my $cid=''; + unless ($cid=$ENV{'request.course.id'}) { + return 'not_in_class'; + } + # Make sure the user exists my $uhome=&homeserver($uname,$udom); if (($uhome eq '') || ($uhome eq 'no_host')) { return 'error: no such user'; } -# -------------------------------------------------- Add student to course list - if ($first eq '' || $last eq '' || $uid eq '') { + # + # Get student data if we were not given enough information + if (!defined($first) || $first eq '' || + !defined($last) || $last eq '' || + !defined($uid) || $uid eq '' || + !defined($middle) || $middle eq '' || + !defined($gene) || $gene eq '') { # They did not supply us with enough data to enroll the student, so # we need to pick up more information. - my %tmp = &dump('environment',$udom,$uname, + my %tmp = &get('environment', ['firstname','middlename','lastname', 'generation','id'] - ); + ,$udom,$uname); + + foreach (keys(%tmp)) { + &logthis("key $_ = ".$tmp{$_}); + } $first = $tmp{'firstname'} if (!defined($first) || $first eq ''); $middle = $tmp{'middlename'} if (!defined($middle) || $middle eq ''); $last = $tmp{'lastname'} if (!defined($last) || $last eq ''); - $gene = $tmp{'genename'} if (!defined($gene) || $gene eq ''); + $gene = $tmp{'generation'} if (!defined($gene) || $gene eq ''); $uid = $tmp{'id'} if (!defined($uid) || $uid eq ''); } my $fullname = &Apache::loncoursedata::ProcessFullName($last,$gene, $first,$middle); - $reply=critical('put:'.$ENV{'course.'.$cid.'.domain'}.':'. + my $reply=critical('put:'.$ENV{'course.'.$cid.'.domain'}.':'. $ENV{'course.'.$cid.'.num'}.':classlist:'. &escape($uname.':'.$udom).'='. &escape(join(':',$end,$start,$uid,$usec,$fullname)), @@ -2347,7 +2372,7 @@ sub modifystudent { unless (($reply eq 'ok') || ($reply eq 'delayed')) { return 'error: '.$reply; } -# ---------------------------------------------------- Add student role to user + # Add student role to user my $uurl='/'.$cid; $uurl=~s/\_/\//g; if ($usec) { @@ -3657,7 +3682,8 @@ The course id is resolved based on the c This means the envoking user must be a course coordinator or otherwise associated with a course. -This call is essentially a wrapper for lonnet::modifyuser +This call is essentially a wrapper for lonnet::modifyuser and +lonnet::modify_student_enrollment Inputs: @@ -3695,6 +3721,40 @@ Inputs: =item * +modify_student_enrollment + +Change a students enrollment status in a class. The environment variable +'role.request.course' must be defined for this function to proceed. + +Inputs: + +=over 4 + +=item $udom, students domain + +=item $uname, students name + +=item $uid, students user id + +=item $first, students first name + +=item $middle + +=item $last + +=item $gene + +=item $usec + +=item $end + +=item $start + +=back + + +=item * + assigncustomrole($udom,$uname,$url,$rdom,$rnam,$rolename,$end,$start) : assign custom role; give a custom role to a user for the level given by URL. Specify name and domain of role author, and role name