[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm

matthew lon-capa-cvs@mail.lon-capa.org
Mon, 14 Oct 2002 15:33:26 -0000


matthew		Mon Oct 14 11:33:26 2002 EDT

  Modified files:              
    /loncom/lonnet/perl	lonnet.pm 
  Log:
  Added function &modify_student_enrollment which handles strictly the 
  enrollment aspect of adding a student.  Fixed bone-headed error of
  calling 'dump' instead of 'get' and being puzzled by the results.
  Fixed another bone-headed error in using 'genename' instead of 'generation'.
  Updated POD to (somewhat) reflect the new function.
  
  
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.296 loncom/lonnet/perl/lonnet.pm:1.297
--- loncom/lonnet/perl/lonnet.pm:1.296	Thu Oct 10 10:34:05 2002
+++ loncom/lonnet/perl/lonnet.pm	Mon Oct 14 11:33:26 2002
@@ -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 @@
 	($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 @@
     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 @@
 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: 
 
@@ -3692,6 +3718,40 @@
 =item B<$desiredhome> server to use as home server for student
 
 =back
+
+=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 *