#!/opt/local/bin/perl

#use strict;
use CGI;
use lib '/Library/WebServer/perl/lib';
use EduFileTwo;

my $form = new CGI;

my $ident = $form->cookie('login_id');

my $file_id_unescaped = $form->param('file_id');
my $file_id = $form->escapeHTML($file_id_unescaped);

my $fileSeqID_unescaped = $form->param('file_seq_id');
my $fileSeqID = $form->escapeHTML($fileSeqID_unescaped);

my $course_id_unescaped = $form->param('course_id');
my $course_id = $form->escapeHTML($course_id_unescaped);

my $filename = EduFileTwo::Constants::ROOT_FILE_DIR . $course_id . "/" . $file_id;

my $size = -s $filename;

if($size <= 0 || !defined($size))
{
	print $form->redirect(EduFileTwo::Constants::APPLICATION_ROOT . "doerrormessage.cgi?error_no=3");
	exit(0);
}

EduFileTwo::Util::printMessage("ident = $ident, file_seq_id = $fileSeqID, file_id = $file_id, course_id = $course_id ");

if( !EduFileTwo::DownloadLogData::addRecord($ident, $fileSeqID, $file_id, $course_id))
{
	print $form->redirect(EduFileTwo::Constants::APPLICATION_ROOT . "doerrormessage.cgi?error_no=2");
	exit(0);
}

my $data;

print "Content-disposition: inline; filename=$file_id\n";
print "Content-Length: $size\n";
# glp : Added content-type based on file type 
if ($file_id =~ /.*\.txt/) {
  print "Content-Type: text/plain\n\n";
} elsif ($file_id =~ /.*\.pdf/) {
  print "Content-Type: application/pdf\n\n";
} elsif ($file_id =~ /.*\.m/) {
  print "Content-Type: text/plain\n\n";
} else {
  print "Content-Type: application/octet-stream\n\n";
}

if(-T $filename)
{
	open (HANDLE, "$filename") or die "Couldn't open $filename for reading.\n";
	$data = do { local $/;  <HANDLE> };
	close(HANDLE);
	print $data;
}
else
{
	local $/ = undef;
	open (F, "$filename") || die;
	  binmode(F); binmode(STDOUT);
	  print <F>;
	close(F);

}

