version 1.1, 2007/03/30 22:57:39
|
version 1.13, 2007/04/26 22:05:50
|
Line 33 use File::Path;
|
Line 33 use File::Path;
|
use File::Basename; |
use File::Basename; |
use File::Copy; |
use File::Copy; |
use IO::File; |
use IO::File; |
use Image::Magick; |
|
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::grades; |
use Apache::grades; |
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonmsg(); |
use Apache::lonmsg(); |
|
use Apache::lonnet; |
use LONCAPA::Enrollment; |
use LONCAPA::Enrollment; |
|
|
use strict; |
use strict; |
|
|
|
|
$|=1; |
$|=1; |
if (! &LONCAPA::loncgi::check_cookie_and_load_env()) { |
if (! &LONCAPA::loncgi::check_cookie_and_load_env()) { |
print <<END; |
print <<END; |
Line 62 END
|
Line 60 END
|
&Apache::lonlocal::get_language_handle(); |
&Apache::lonlocal::get_language_handle(); |
&Apache::loncommon::content_type(undef,'text/html'); |
&Apache::loncommon::content_type(undef,'text/html'); |
my $identifier = $ENV{'QUERY_STRING'}; |
my $identifier = $ENV{'QUERY_STRING'}; |
|
my $unique_path = $identifier.time(); |
print(&Apache::loncommon::start_page('Multiple Downloads')); |
print(&Apache::loncommon::start_page('Multiple Downloads')); |
my $symb = $env{'cgi.'.$identifier.'.symb'}; |
|
my $courseid = $env{'cgi.'.$identifier.'.courseid'}; |
my $scope = $env{'request.course.id'}; |
my @stuchecked = split /\n/,$env{'cgi.'.$identifier.'.students'}; |
if ($env{'request.course.sec'}) { |
my @parts = split /\n/,$env{'cgi.'.$identifier.'.parts'}; |
$scope .= '/'.$env{'request.course.sec'}; |
my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb); |
} |
my @part_response_id = &Apache::grades::flatten_responseType($responseType); |
if (&Apache::lonnet::allowed('vgr',$scope) eq 'F') { |
print "number of parts is: ".@parts."<br />"; |
my $symb = $env{'cgi.'.$identifier.'.symb'}; |
my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb); |
$symb =~ /^.*\/(.+)\.problem$/; |
print "in the CGI script <br />"; |
my $zipout = $1.".zip"; |
foreach (@stuchecked) { |
$zipout =~ s/\s/_/g; |
my ($uname,$udom,$fullname) = split(/:/); |
my $courseid = $env{'request.course.id'}; |
my %record = &Apache::lonnet::restore($symb,$courseid,$udom,$uname); |
my @stuchecked = split(/\n/,$env{'cgi.'.$identifier.'.students'}); |
print $uname."<br />"; |
my @parts = split(/\n/,$env{'cgi.'.$identifier.'.parts'}); |
foreach my $part(@part_response_id) { |
my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb); |
print $part."<br />"; |
my @part_response_id = &Apache::grades::flatten_responseType($responseType); |
my ($partid,$respid) = @{ $part }; |
my $doc_zip_root = $Apache::lonnet::perlvar{'lonZipDir'}; |
my $files = &Apache::grades::get_submitted_files($udom,$uname,$partid,$respid,\%record); |
my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb); |
foreach my $file(@$files) { |
my $uname = $env{'user.name'}; |
print $file."<br />"; |
my $udom = $env{'user.domain'}; |
|
&mkpath($doc_zip_root."/zipdir/$uname$udom/$unique_path",0,0700); |
|
foreach my $stu (@stuchecked) { |
|
my ($stuname,$studom,$fullname) = split(/:/,$stu); |
|
my %record = &Apache::lonnet::restore($symb,$courseid,$studom,$stuname); |
|
foreach my $part (@part_response_id) { |
|
my ($partid,$respid) = @{$part}; |
|
&mkpath($doc_zip_root."/zipdir/$uname$udom/$unique_path/$stuname/part$partid/resp$respid",0,0700); |
|
my $files = &Apache::grades::get_submitted_files($studom,$stuname,$partid,$respid,\%record); |
|
foreach my $file (@$files) { |
|
$file =~ /(^.*\/)(.+$)/; |
|
my $file_name_only = $2; |
|
&Apache::lonnet::repcopy($file); |
|
my $source = &Apache::lonnet::filelocation("",$file); |
|
©($source,"$doc_zip_root/zipdir/$uname$udom/$unique_path/$stuname/part$partid/resp$respid/$file_name_only"); |
|
} |
} |
} |
} |
} |
|
&mkpath($doc_zip_root."/zipout/$uname$udom",0,0700); |
|
my $statement = "cd $doc_zip_root/zipdir/$uname$udom/$unique_path\n"; |
|
$statement .= "zip -r $doc_zip_root/zipout/$uname$udom/$zipout * > /dev/null"; |
|
system($statement); |
|
$statement = "rm -rf $doc_zip_root/zipdir/$uname$udom/$unique_path"; |
|
system($statement); |
|
print('<a href="/zipspool/zipout/'.$uname.$udom.'/'.$zipout.'">'. |
|
&mt("Click to download").'</a><br />'); |
|
} else { |
|
print(&mt('You are not authorized to download student submissions.')); |
} |
} |
|
1; |
die; |
__END__; |