#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use Opals::Template qw(
    tmpl_read
);

my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }

my $cgi = CGI->new;
my $input = $cgi->Vars();
my $fileType = $input->{'fileType'};
my $fileName = $input->{'fileName'};

my ($mimeType, $fileData,$fRealName);
if ($fileType && $fileName) {
   ($mimeType, $fileData,$fRealName) = loadFile($dbh, $fileType, $fileName);
}
elsif ($fileName) {
   ($mimeType, $fileData,$fRealName) = loadFileByName($dbh,$fileName);
}
else{
    exit;
}
if(!$fileData){
    my $rootDir   = Opals::Context->config('rootDir');
    open FILE,"<$rootDir/htdocs/theme/opals/image/shim.gif";
    while(<FILE>){
        $fileData .=$_;
    }
    close FILE;
  }
$fRealName= $fileName  if(!$fRealName || $fRealName eq '');
print "Content-type: $mimeType\n";
print "Content-Disposition:attachment;filename=$fRealName\n\n"; 

print "$fileData";
=item
print <<_FILE_;
Content-type: $mimeType

$fileData
_FILE_
=cut
exit;
################################################################################
sub loadFile {
    my ($dbh, $fileType, $fileName) = @_;
    my $sth = $dbh->prepare(<<_STH_);
select  mimeType, defaultMimeType, fileData, defaultFile,fRealName
from    opl_file
where   fileType = ? &&
        fileName = ?
_STH_

    $sth->execute($fileType, $fileName);
    my ($mimeType, $defaultMimeType, $fileData, $defaultFile,$fRealName) = 
        $sth->fetchrow_array;
    $sth->finish;

    return ($fileData) ? 
        ($mimeType, $fileData,$fRealName) : ($defaultMimeType, $defaultFile,$fRealName);
}
################################################################################
sub loadFileByName {
    my ($dbh, $fileName) = @_;
    my $sth = $dbh->prepare(<<_STH_);
select  mimeType, defaultMimeType, fileData, defaultFile,fRealName
from    opl_file
where   fileName = ?
_STH_

    $sth->execute($fileName);
    my ($mimeType, $defaultMimeType, $fileData, $defaultFile,$fRealName) = 
        $sth->fetchrow_array;
    $sth->finish;

    return ($fileData) ? 
        ($mimeType, $fileData,$fRealName) : ($defaultMimeType, $defaultFile,$fRealName);
}
