#!/usr/bin/perl
# Script para validação online da floresta sintáctica
# Rui Vilela, Linguateca 2005


use locale;
use CGI qw/:standard escapeHTML/;
my $cgi = new CGI;

print header;

$BOSQUE = "/home/www/htdocs/FS";
$SCRIPT = "/home/www/cgi-bin/FS";
$OUTPUT = "/tmp";

$a = param 'a';
$o = param 'o';

#$a="CF";
#$o="t";

if ($a eq 'CP' || $a eq 'CF') { 
    &versao_actual;
}elsif ($a eq 'u'){
    &versao_upload if ($a eq 'u');
}else{
    &term;
}

print $cgi->start_html(-head=>$cgi->meta({-http_equiv => 'Refresh', -content => '0; URL=/FS/res.html'}));
print $cgi->p("A redireccionar para a página dos resultados:");
print $cgi->a({href=>"/FS/res.html"},"Resultados");
print $cgi->end_html;

#print redirect('/FS/res.html');

exit 0;

sub versao_actual
{
    `ls $BOSQUE/\*$a\*ad.txt > $OUTPUT/fs.tmp`;
    open(OUT, "$OUTPUT/fs.tmp");
    my $f=<OUT>;
    chomp ($f);
    &term unless ($f=~/txt/);
    close OUT;
    &processar_bosque ($f);
}

sub processar_bosque{
    my ($f)=@_;
    `perl $SCRIPT/validar_bosque.pl $f -etq $BOSQUE/descEtiquetas.txt -stat $OUTPUT/stat.txt > $OUTPUT/erros.txt`;

    `cat $OUTPUT/erros.txt >> $OUTPUT/stat.txt`;
    `mv $OUTPUT/stat.txt $OUTPUT/erros.txt`;
    if ($o eq 'a'){
	`perl $SCRIPT/tohtml.pl $OUTPUT/erros.txt > $BOSQUE/res.html`;
    }else{
	`perl $SCRIPT/ordenar.pl $OUTPUT/erros.txt > $OUTPUT/erros_tipo.txt`;
	`perl $SCRIPT/tohtml.pl $OUTPUT/erros_tipo.txt > $BOSQUE/res.html`;
	`rm $OUTPUT/erros_tipo.txt`;
    }
    `rm $OUTPUT/erros.txt`;
}

sub versao_upload
{
    $in = upload 'f';
    $f="$OUTPUT/bosque.txt";
    open(ff,">$f");
    while (<$in>){
	print ff;
    }
    close(ff);

    &processar_bosque ($f);
}

sub term
{
    print $cgi->start_html('Validação da Floresta Sintáctica!');
    print $cgi->p("Problema com a validação!");
    print $cgi->a({href=>"/FS/validar_bosque.html"},"Retornar");
    print $cgi->end_html;
    exit 1;
}		
