#!/usr/bin/perl

use strict;
use CGI;

use Opals::Context;
use Opals::Template_ajax qw(
    tmpl_read
    tmpl_write
    tmpl_preference
);
use Opals::RSS;
 
my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }

my $cgi = CGI->new;
my $input = $cgi->Vars();
my ($permission, $cookie, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => 'ajax/portlet/uploadImg.tmpl',
    }
);
my $fileName=$input->{'fileData'};
my($mimeType,$imgData)=getImg($input,$cgi);
my $imgId=0;
if($mimeType ne '' && $imgData ne ''){
   $imgId = saveImg($dbh,$mimeType,$imgData,$fileName)
}
tmpl_write($dbh, $cgi, $cookie, $template);

#-------------------------------------------------------------
sub saveImg {
    my ($dbh,$mimeType, $imgData,$fileName) = @_;
    my $imgId=0;
    my $sql = <<_STH_;
insert into  opl_portalImg
set          mimeType  = ?,
             fileName  =?,
             image     =?

_STH_

    my $sth = $dbh->prepare($sql);
    $sth->execute($mimeType, $imgData,$fileName);
    $imgId=$dbh->{'mysql_insertid'};
    $sth->finish;

    return $imgId;
}

#-------------------------------------------------------------
sub getImg{
    my ($input,$cgi)=@_;
    if($input->{'fileData'} ne ''){ # Thu, Feb 05, 2009 @ 08:54:30 EST
        my $fileExtension = $input->{'fileData'};
        $fileExtension =~ s/.*\.([\w\-]+)$/$1/;
        $fileExtension = lc($fileExtension);
        if($fileExtension !~ m/^jpg$|^png$|^gif$/g){
            return;
        }
        my $mimeType = listMimeTypes();

        my $fileHandle = $cgi->param('fileData');
        
        my $fileData = '';
        while (<$fileHandle>) {
            $fileData .= $_;
        }
        return ($mimeType->{$fileExtension}, $fileData);
    }
}
#-------------------------------------------------------------
sub listMimeTypes {
    return {
        'art'       => 'image/x-jg',
        'bm'        => 'image/bmp',
        'bmp'       => 'image/x-windows-bmp',
        'dwg'       => 'image/x-dwg',
        'dxf'       => 'image/x-dwg',
        'fif'       => 'image/fif',
        'flo'       => 'image/florian',
        'fpx'       => 'image/vnd.fpx',
        'g3'        => 'image/g3fax',
        'gif'       => 'image/gif',
        'ico'       => 'image/x-icon',
        'ief'       => 'image/ief',
        'iefs'      => 'image/ief',
        'jfif'      => 'image/jpeg',
        'jfif-tbnl' => 'image/jpeg',
        'jpeg'      => 'image/jpeg',
        'jpe'       => 'image/jpeg',
        'jpg'       => 'image/jpeg',
        'jps'       => 'image/x-jps',
        'jut'       => 'image/jutvision',
        'mcf'       => 'image/vasa',
        'nap'       => 'image/naplps',
        'naplps'    => 'image/naplps',
        'niff'      => 'image/x-niff',
        'nif'       => 'image/x-niff',
        'pbm'       => 'image/x-portable-bitmap',
        'pct'       => 'image/x-pict',
        'pcx'       => 'image/x-pcx',
        'pgm'       => 'image/x-portable-greymap',
        'pic'       => 'image/pict',
        'pict'      => 'image/pict',
        'pm'        => 'image/x-xpixmap',
        'png'       => 'image/png',
        'pnm'       => 'image/x-portable-anymap',
        'ppm'       => 'image/x-portable-pixmap',
        'qif'       => 'image/x-quicktime',
        'qtif'      => 'image/x-quicktime',
        'qti'       => 'image/x-quicktime',
        'ras'       => 'image/cmu-raster',
        'ras'       => 'image/x-cmu-raster',
        'rf'        => 'image/vnd.rn-realflash',
        'rgb'       => 'image/x-rgb',
        'rp'        => 'image/vnd.rn-realpix',
        'svf'       => 'image/x-dwg',
        'tiff'      => 'image/x-tiff',
        'tif'       => 'image/x-tiff',
        'turbot'    => 'image/florian',
        'wbmp'      => 'image/vnd.wap.wbmp',
        'xbm'       => 'image/x-xbitmap',
        'xif'       => 'image/vnd.xiff',
        'xpm'       => 'image/x-xpixmap',
        'x-png'     => 'image/png',
        'xwd'       => 'image/x-xwindowdump',
    };
}


################################################################################
