version 1.8, 2007/04/26 18:00:41
|
version 1.15, 2007/04/26 23:07:34
|
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; |
Line 70 if ($env{'request.course.sec'}) {
|
Line 69 if ($env{'request.course.sec'}) {
|
} |
} |
if (&Apache::lonnet::allowed('vgr',$scope) eq 'F') { |
if (&Apache::lonnet::allowed('vgr',$scope) eq 'F') { |
my $symb = $env{'cgi.'.$identifier.'.symb'}; |
my $symb = $env{'cgi.'.$identifier.'.symb'}; |
|
$symb =~ /^.*\/(.+)\.problem$/; |
|
my $zipout = $1.".zip"; |
|
$zipout =~ s/\s/_/g; |
my $courseid = $env{'request.course.id'}; |
my $courseid = $env{'request.course.id'}; |
my @stuchecked = split(/\n/,$env{'cgi.'.$identifier.'.students'}); |
my @stuchecked = split(/\n/,$env{'cgi.'.$identifier.'.students'}); |
my @parts = split(/\n/,$env{'cgi.'.$identifier.'.parts'}); |
my @parts = split(/\n/,$env{'cgi.'.$identifier.'.parts'}); |
Line 79 if (&Apache::lonnet::allowed('vgr',$scop
|
Line 81 if (&Apache::lonnet::allowed('vgr',$scop
|
my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb); |
my ($partlist,$handgrade,$responseType) = &Apache::grades::response_type($symb); |
my $uname = $env{'user.name'}; |
my $uname = $env{'user.name'}; |
my $udom = $env{'user.domain'}; |
my $udom = $env{'user.domain'}; |
mkdir($doc_zip_root."/zipdir",0700); |
&mkpath($doc_zip_root."/zipdir/$uname$udom/$unique_path",0,0700); |
mkdir($doc_zip_root."/zipdir/$unique_path",0700); |
my $file_problem = 0; |
foreach my $stu (@stuchecked) { |
foreach my $stu (@stuchecked) { |
|
my %files_saved; |
|
my $file_increment = 2; |
my ($stuname,$studom,$fullname) = split(/:/,$stu); |
my ($stuname,$studom,$fullname) = split(/:/,$stu); |
mkdir($doc_zip_root."/zipdir/$unique_path/$stuname",0700); |
|
my %record = &Apache::lonnet::restore($symb,$courseid,$studom,$stuname); |
my %record = &Apache::lonnet::restore($symb,$courseid,$studom,$stuname); |
foreach my $part (@part_response_id) { |
foreach my $part (@part_response_id) { |
my ($partid,$respid) = @{$part}; |
my ($partid,$respid) = @{$part}; |
mkdir($doc_zip_root."/zipdir/$unique_path/$stuname/part$partid",0700); |
&mkpath($doc_zip_root."/zipdir/$uname$udom/$unique_path/$stuname/part$partid/resp$respid",0,0700); |
mkdir($doc_zip_root."/zipdir/$unique_path/$stuname/part$partid/resp$respid",0700); |
|
my $files = &Apache::grades::get_submitted_files($studom,$stuname,$partid,$respid,\%record); |
my $files = &Apache::grades::get_submitted_files($studom,$stuname,$partid,$respid,\%record); |
foreach my $file (@$files) { |
foreach my $file (@$files) { |
$file =~ /(^.*\/)(.+$)/; |
$file =~ /(^.*\/)(.+$)/; |
my $file_name_only = $2; |
my $file_name_only = $2; |
my $file_content = &Apache::lonnet::getfile($file); |
&Apache::lonnet::repcopy($file); |
if (open(my $fh,">$doc_zip_root/zipdir/$unique_path/$stuname/part$partid/resp$respid/$file_name_only")) { |
my $source = &Apache::lonnet::filelocation("",$file); |
print($fh $file_content); |
my $destination = "$doc_zip_root/zipdir/$uname$udom/$unique_path/$stuname/part$partid/resp$respid/$file_name_only"; |
close($fh); |
if (exists($files_saved{$destination})) { |
} else { |
# file has already been saved once |
print("problem creating file <br />"); |
&Apache::lonnet::logthis("found duplicate file name"); |
|
&Apache::lonnet::logthis("destination was $destination"); |
|
$destination =~ /(^.*)(\..+$)/; |
|
$destination = $1.$file_increment.$2; |
|
&Apache::lonnet::logthis("destination is $destination"); |
|
$file_increment ++; |
|
} |
|
$files_saved{$destination} = 1; |
|
if (!©($source,$destination)) { |
|
if (!$file_problem) { |
|
print &mt("Unable to create: <br />"); |
|
$file_problem = 1; |
|
} |
|
print ("$stuname/part$partid/resp$respid/$file_name_only <br />"); |
} |
} |
} |
} |
} |
} |
} |
} |
mkdir($doc_zip_root."/zipout",0777); |
&mkpath($doc_zip_root."/zipout/$uname$udom",0,0700); |
my $statement = "cd $doc_zip_root/zipdir/$unique_path\n"; |
my $statement = "cd $doc_zip_root/zipdir/$uname$udom/$unique_path\n"; |
$statement .= "zip -r $doc_zip_root/zipout/output.zip * > /dev/null"; |
$statement .= "zip -r $doc_zip_root/zipout/$uname$udom/$zipout * > /dev/null"; |
system($statement); |
system($statement); |
$statement = "rm -rf $doc_zip_root/zipdir/$unique_path"; |
$statement = "rm -rf $doc_zip_root/zipdir/$uname$udom/$unique_path"; |
system($statement); |
system($statement); |
print('<a href="/zipspool/zipout/output.zip">Click to download</a><br />'); |
print('<a href="/zipspool/zipout/'.$uname.$udom.'/'.$zipout.'">'. |
|
&mt("Click to download").'</a><br />'); |
} else { |
} else { |
print('You are not authorized to download student submissions.'); |
print(&mt('You are not authorized to download student submissions.')); |
} |
} |
1; |
1; |
__END__; |
__END__; |