[LON-CAPA-cvs] cvs: loncom /interface lonmodifycourse.pm

raeburn lon-capa-cvs@mail.lon-capa.org
Sun, 28 Dec 2003 18:27:49 -0000


raeburn		Sun Dec 28 13:27:49 2003 EDT

  Modified files:              
    /loncom/interface	lonmodifycourse.pm 
  Log:
  Added sanity checking for valid LON-CAPA course ID.
  
  
Index: loncom/interface/lonmodifycourse.pm
diff -u loncom/interface/lonmodifycourse.pm:1.2 loncom/interface/lonmodifycourse.pm:1.3
--- loncom/interface/lonmodifycourse.pm:1.2	Sat Dec 27 20:37:02 2003
+++ loncom/interface/lonmodifycourse.pm	Sun Dec 28 13:27:49 2003
@@ -1,3 +1,25 @@
+# Copyright Michigan State University Board of Trustees
+#
+# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
+#
+# LON-CAPA is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# LON-CAPA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with LON-CAPA; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+# /home/httpd/html/adm/gpl.txt
+#
+# http://www.lon-capa.org/
+#
 package Apache::lonmodifycourse;
 
 use strict;
@@ -28,7 +50,7 @@
     &print_header($r,$tasklongref);
     $r->print(<<ENDBLOCK);
 <form action="/adm/modifycourse" method="post" name="cmod">
-<h2>$lt{'csae'}</h2>
+<h3>$lt{'csae'}</h3>
 <p>$lt{'unst'}
 </p><p>$lt{'chcs'}
 <br/>$lt{'eaen'}
@@ -102,9 +124,28 @@
 sub print_course_modification_page {
     my ($r,$tasklongref,$typeref) = @_;
     my %enrollvar = ();
-    my @bgcolors=("#eeeeee","#cccccc");
-    my $course = $ENV{'form.course'};
+    my $javascript_validations;
+    my $course = '';
     my $dom = $ENV{'user.domain'};
+    if ( defined($ENV{'form.course'}) ) {
+        $course = $ENV{'form.course'};
+    }
+    my $ok_course = 'ok';
+    if ( ($course == -1) || ($course == '-2') || ($course eq '') ) {
+        $ok_course = 'invalid';
+    } else {
+        $ok_course = &check_course($dom,$course);
+    }
+
+    unless ($ok_course eq 'ok') {
+        &print_header($r,$tasklongref,'',\$javascript_validations);
+        my $reply = "<br/>".&mt("The LON-CAPA course selected was not a valid course for this domain");
+        $r->print($reply);
+        &print_footer($r);
+        return;
+    }
+
+    my @bgcolors=("#eeeeee","#cccccc");
     my $ownertable;
     my %lt=&Apache::lonlocal::texthash(
             'actv' => "Active",
@@ -207,7 +248,7 @@
     unless ($curr_authtype eq '') {
         $curr_authfield = $curr_authtype.'arg';
     } 
-    my $javascript_validations=&Apache::londropadd::javascript_validations('modifycourse',$krbdefdom,$curr_authtype,$curr_authfield);
+    $javascript_validations=&Apache::londropadd::javascript_validations('modifycourse',$krbdefdom,$curr_authtype,$curr_authfield);
     my %param = ( formname => 'document.cmod',
 	   kerb_def_dom => $krbdefdom,
 	   kerb_def_auth => $krbdef,
@@ -305,7 +346,7 @@
     &print_header($r,$tasklongref,$settings{'description'},\$javascript_validations);
     $r->print(<<ENDDOCUMENT);
 <form action="/adm/modifycourse" method="post" name="cmod">
-<h2>$lt{'aecs'}</h2>
+<h3>$lt{'aecs'}</h3>
 $lt{'cose'}<a href="/adm/populate">$lt{'aenm'}</a>$lt{'andb'}
 <p>
 <table width="100%" cellspacing="0" cellpadding="0">
@@ -383,6 +424,15 @@
     my ($r,$tasklongref,$typeref) = @_;
     my $dom = $ENV{'user.domain'};
     my $crs = $ENV{'form.course'};
+
+    unless ( &check_course($dom,$crs) eq 'ok' ) {
+        &print_header($r,$tasklongref);
+        my $reply = "<br/>".&mt("The LON-CAPA course selected was not a valid course for this domain");
+        $r->print($reply);
+        &print_footer($r);
+        return;
+    }
+
     my %settings = &Apache::lonnet::get('environment',['internal.courseowner','internal.coursecode','internal.authtype','internal.autharg','internal.sectionnums','internal.crosslistings','description'],$dom,$crs);
     my %currattr = ();
     my %newattr = ();
@@ -499,10 +549,9 @@
 	                    foreach my $sec (@sections) {
 		                if ($sec =~ m/^(.+):/) {
 		                    my $course_id = $newattr{'coursecode'}.$1;
-#			            my $course_check = &localenroll::validate_courseID($course_id);
-                                    my $course_check = 'ok';
+			            my $course_check = &localenroll::validate_courseID($course_id);
 			            if ($course_check eq 'ok') {  
-#                                        my $outcome = &localenroll::new_course($course_id,$newattr{'courseowner'});
+                                        my $outcome = &localenroll::new_course($course_id,$newattr{'courseowner'});
 			                my $outcome = 'ok';
 			                unless ($outcome eq 'ok') { 
 				            $warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $1 for the following reason: $outcome.<br/>");
@@ -521,8 +570,7 @@
 	            if ( (@xlists > 0) && ($changeowner) ) {
 	                foreach my $xlist (@xlists) {
 		            if ($xlist =~ m/^(.+):/) {
-#                                my $outcome = &localenroll::new_course($1,$newattr{'courseowner'});
-		                my $outcome = 'ok';
+                                my $outcome = &localenroll::new_course($1,$newattr{'courseowner'});
 		                unless ($outcome eq 'ok') {
 			            $warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for crosslisted class: ").$1.&mt(" for the following reason: $outcome.<br/>");
 		                }
@@ -554,7 +602,8 @@
         $reply = $response;
     }
     &print_header($r,$tasklongref,$description);
-    $r->print("<table><tr><td>$reply</td></tr></table");
+    $reply = "<h3>".&mt("Automated Enrollment Course Settings")."</h3><table><tr><td>".$reply."</td></tr></table>";
+    $r->print($reply);
     &print_footer($r);
     return; 
 }
@@ -620,6 +669,23 @@
 </body>
 </html>
 ENDBASE
+}
+
+sub check_course {
+    my ($dom,$course) = @_;
+    my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1);
+    my @courses = ();
+    foreach my $key (sort keys %courseIDs) {
+        if ($key =~ m/^($dom)_(\w+)$/) {
+            push @courses, $2;
+        }
+    }
+    if (grep/^$course$/,@courses) {
+        return 'ok';
+    }
+    else {
+        return 'invalid course';
+    }
 }