[LON-CAPA-cvs] cvs: loncom /interface multidownload.pl

banghart lon-capa-cvs-allow@mail.lon-capa.org
Wed, 25 Apr 2007 00:32:50 -0000


banghart		Tue Apr 24 20:32:50 2007 EDT

  Modified files:              
    /loncom/interface	multidownload.pl 
  Log:
  	Allow only cc role to download student submissions.
  
  
Index: loncom/interface/multidownload.pl
diff -u loncom/interface/multidownload.pl:1.3 loncom/interface/multidownload.pl:1.4
--- loncom/interface/multidownload.pl:1.3	Thu Apr  5 12:18:22 2007
+++ loncom/interface/multidownload.pl	Tue Apr 24 20:32:49 2007
@@ -2,7 +2,7 @@
 # CGI-script to allow download of all essay submissions of 
 # multiple students.
 #
-# $Id: multidownload.pl,v 1.3 2007/04/05 16:18:22 banghart Exp $
+# $Id: multidownload.pl,v 1.4 2007/04/25 00:32:49 banghart Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -42,9 +42,11 @@
 use Apache::lonmsg();
 use Apache::lonnet;
 use LONCAPA::Enrollment;
-
 use strict;
 
+sub is_student {
+    return ($env{'request.role'}=~/^st\./);
+}
 
 $|=1;
 if (! &LONCAPA::loncgi::check_cookie_and_load_env()) {
@@ -64,41 +66,48 @@
 &Apache::loncommon::content_type(undef,'text/html');
 my $identifier = $ENV{'QUERY_STRING'};
 print(&Apache::loncommon::start_page('Multiple Downloads'));
-my $symb = $env{'cgi.'.$identifier.'.symb'};
-my $courseid = $env{'request.course.id'};
-my @stuchecked = split /\n/,$env{'cgi.'.$identifier.'.students'};
-my @parts = split /\n/,$env{'cgi.'.$identifier.'.parts'};
-my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb);
-my @part_response_id = &Apache::grades::flatten_responseType($responseType);
-my $doc_root = $Apache::lonnet::perlvar{'lonDocRoot'};
-my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb);
-mkdir($doc_root."/zipdir",0777);
-foreach my $stu (@stuchecked) {
-    my ($uname,$udom,$fullname) = split(/:/,$stu);
-    mkdir($doc_root."/zipdir/$uname",0777);
-    my %record = &Apache::lonnet::restore($symb,$courseid,$udom,$uname);
-    foreach my $part (@part_response_id) {
-        my ($partid,$respid) = @{$part};
-        mkdir($doc_root."/zipdir/$uname/part$partid",0777);
-        mkdir($doc_root."/zipdir/$uname/part$partid/resp$respid",0777);
-        my $files = &Apache::grades::get_submitted_files($udom,$uname,$partid,$respid,\%record);
-        foreach my $file (@$files) {
-            $file =~ /(^.*\/)(.+$)/;
-            my $file_name_only = $2;
-            my $file_content = &Apache::lonnet::getfile($file);
-            if (open(my $fh,">$doc_root/zipdir/$uname/part$partid/resp$respid/$file_name_only")) {
-                print $fh $file_content;
-                close $fh;
-            } else {
-                print("problem creating file <br />");
+$env{'request.role'} =~ m/^(.+)\./;
+my $role = $1;
+if ($role eq 'cc') {
+    my $symb = $env{'cgi.'.$identifier.'.symb'};
+    my $courseid = $env{'request.course.id'};
+    my @stuchecked = split(/\n/,$env{'cgi.'.$identifier.'.students'});
+    my @parts = split(/\n/,$env{'cgi.'.$identifier.'.parts'});
+    my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb);
+    my @part_response_id = &Apache::grades::flatten_responseType($responseType);
+    my $doc_zip_root = $Apache::lonnet::perlvar{'lonZipDir'};
+    my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb);
+    mkdir($doc_zip_root."/zipdir",0777);
+    foreach my $stu (@stuchecked) {
+        my ($uname,$udom,$fullname) = split(/:/,$stu);
+        mkdir($doc_zip_root."/zipdir/$uname",0777);
+        my %record = &Apache::lonnet::restore($symb,$courseid,$udom,$uname);
+        foreach my $part (@part_response_id) {
+            my ($partid,$respid) = @{$part};
+            mkdir($doc_zip_root."/zipdir/$uname/part$partid",0777);
+            mkdir($doc_zip_root."/zipdir/$uname/part$partid/resp$respid",0777);
+            my $files = &Apache::grades::get_submitted_files($udom,$uname,$partid,$respid,\%record);
+            foreach my $file (@$files) {
+                $file =~ /(^.*\/)(.+$)/;
+                my $file_name_only = $2;
+                my $file_content = &Apache::lonnet::getfile($file);
+                if (open(my $fh,">$doc_zip_root/zipdir/$uname/part$partid/resp$respid/$file_name_only")) {
+                    print($fh $file_content);
+                    close($fh);
+                } else {
+                    print("problem creating file <br />");
+                }
             }
         }
     }
+    mkdir($doc_zip_root."/zipout",0777);
+    my $statement = "zip -r $doc_zip_root/zipout/output.zip $doc_zip_root/zipdir/* > /dev/null";
+    system($statement);
+    $statement = "rm -rf $doc_zip_root/zipdir";
+    system($statement);
+    print('<a href="../zipout/output.zip">Click to download</a><br />');
+} else {
+    print('You are not authorized to download student submissions.');
 }
-mkdir($doc_root."/zipout",0777);
-my $statement = "zip -r $doc_root/zipout/output.zip $doc_root/zipdir/* > /dev/null";
-system($statement);
-$statement = "rm -rf $doc_root/zipdir";
-system($statement);
-print('<a href="../zipout/output.zip">Click to download</a>');
+# print($env{'request.role'}.' == roles <br />');
 return 1;