#!/usr/bin/perl -w
# Programa ...... : downgraf.pl
# Descrição ..... : download de elementos gráficos do site Click Idéia (animações, ilustrações)
# Autor ......... : Omar Alves Ferreira
# Data .......... : 24-09-02
# Ult. Atualiz... : 27-09-02
#

use lib '../../lib-conf';
use site_conf;

use lib '../../lib';
use cgi_html;            # manipulação de HTML e formulários
use tempo;               # pacote para manipulação de informações
                         # temporais
use dbmysql;
use HTTPSESSAO;       # classe para gerenciamento da sessáo

use CGI;

use lib '../page_views';
use Page_views;       # registro de "page-views"/downloads realizados



#
# ----> conexão banco de dados
#
$dbh = abre_con_mysql ( $cfg_bd_usuarios );




#
# -----> inicializa objeto de sessão do usuário
#

$sessao_http = HTTPSESSAO->new ($dbh, 120, $cfg_cookie_sessao->{nom_cookie} );

#if ( $sessao_http->get_var('login_status') ne 'ok' ) {
#   print &http_header;

#   print "Você não pode fazer isso! <br>";

#   &fecha_con_mysql ( $dbh );

#   exit;
#}




#
# ----> obtém os parâmetros da URL
#
%param_url  = get_request_par "query";      # parametros passados através da URL

$codpag = $param_url{"CODPAG"};             # código da página onde se encontra o el. gráfico
$tipo   = uc ( $param_url{"TIPO"} );        # tipo de elemento gráfico (ilustração, animação)
$id     = $param_url{"ID"};                 # identificação do elemento gráfico na página
$nivel     = lc ($param_url{"NIVEL"});           # identificação do elemento gráfico na página


#
#  ----> procura pelo elemento gráfico no banco de dados
#
$query = qq{ SELECT DISTINCT codigo_pagina FROM paginas_graficos
               WHERE ( codigo_pagina='$codpag' AND tipo='$tipo' AND id='$id' AND nivel='$nivel') };
$sth = $dbh->prepare($query);
$sth->execute;
$sth->bind_columns ( \$cod_pag );
$achou = $sth->fetch;
$sth->finish;


# caso não tenha sido achado, imprime mensagem de aviso
# ( provavelmente está havendo uma tentativa de acesso indevido ... )
#
#if ( ! $achou ) {
#   print &http_header;
#   print "Ooooopsss!!!! Você não pode fazer isso!!!<br>";
#   &fecha_con_mysql ( $dbh );
#   exit;
#}


#
#   ----> caso o elemento gráfico tenha sido encontrado na tabela,
#      realiza o download...
#

$disc = lc ( substr ( $codpag,0,3) );      # disciplina

# diretório onde se encontram os elementos gráficos
if ( $tipo eq 'A' ) {
   $dirn = "flash";
} elsif ( $tipo eq 'I' ) {
   $dirn = "imagem";
}

if ($nivel eq "f2") {
	$dir = $cfg_site_root_dir."/f2/disc/".$disc."/".$dirn;
} else {
	$dir = $cfg_site_root_dir."/medio/disc/".$disc."/".$dirn;
}	

#
# ----> obtém a lista de arquivos contidos no diretório
#
opendir (DIR, $dir);
@arqs = readdir DIR;
close(DIR);

#
# define o nome do arquivo, juntamente com seu caminho
#
if ( $tipo eq 'A' ) {
   $nom_arq = $codpag."_".sprintf("%02d",$id).".swf";
} elsif ( $tipo eq 'I' ) {
   $pb = "^$codpag"."_".sprintf("%02d",$id)."\.";

   @arqi = grep /$pb/, @arqs;

   $nom_arq = $arqi[0];
}

$nom_arq_p = $dir."/".$nom_arq;     # nome do arquivo (incluindo o path)


#
# ---> contabiliza mais um download do gráfico
#
$query = qq{ UPDATE paginas_graficos set num_downloads=(num_downloads + 1)
               WHERE ( codigo_pagina='$codpag' AND tipo='$tipo' AND id='$id') };
$sth = $dbh->prepare ( $query );
$sth->execute;
$sth->finish;



#
# ---> registra mais um download, como "page-view"
#
$codpag_pv = "DOWL_".$codpag."_T=$tipo"."_ID=$id";
&reg_page_view ( $codpag_pv, 'F2', $sessao_http, $dbh );





#
# ----> faz o download do arquivo
#
open(ARQ,"<$nom_arq_p");

binmode ARQ;
$tam = (stat ARQ)[7];



# MIME header para download do arquivo

print qq{Content-type: application/octet-stream
Content-Disposition: attachment; filename=$nom_arq
Content-Length: $tam

};



#
# envia o conteúdo do arquivo
#
while (<ARQ>) {
   print "$_";
}

close ARQ;



#
# ---> fecha a conexão com o banco de dados
#
&fecha_con_mysql ( $dbh );

exit;
