[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';
+ }
}