#!/usr/bin/perl

###########################################################################
#
#
# Auteur: Guy Tremblay
# Creation: Automne 1998
#
###########################################################################

#----------------------------------------------------------------------

if ($ENV{"SCRIPT_FILENAME"}) {
    @tmp1 = split( "/", $ENV{"SCRIPT_FILENAME"} );
} else {
    @tmp1 = split( "/", $ENV{"HOME"} );
}
$home = $tmp1[1];

require "ctime.pl";
require "/$home/tremblay_gu/public_html/cgi-bin/cgi-lib.pl";

require "/$home/tremblay_gu/public_html/INF8541/Expose/parametres.pl";

$prefixeBD = "/$home/$nomProf/public_html/$titreCours/$expose";

#----------------------------------------------------------------------

require "/$home/tremblay_gu/public_html/cgi-bin/cgi-lib.pl";
require "/$home/tremblay_gu/public_html/cgi-bin/obtenirLignes.pl";
require "/$home/tremblay_gu/public_html/cgi-bin/supprimerLigne.pl";
require "/$home/$nomProf/public_html/$titreCours/$expose/supprimerSujet.pl";

goto MAIN;

exit;


MAIN:
{

    if (&ReadParse(*input))
    {
	&ProcessForm;
    }
    else
    {
	&ShowForm;
    }
}

###############################################
#Sous-routine qui affiche le formulaire
###############################################
sub ShowForm
{
    print &PrintHeader;
    print &HtmlTop("Choix d'un article pour l'expos&eacute; en $titreCours.");
    print <<EOTF;
Pour choisir un article comme sujet de votre expos&eacute;,
remplissez le formulaire suivant.

<P>

Note: La cl&eacute; bibliographique de l'article choisi est le code
d&eacute;butant par le nom complet du premier auteur, les trois (3)
premi&egrave;res lettres des noms des autres auteurs et l'ann&eacute;e
(2 chiffres) de publication. Par ex.: ArnoldBegRad96, Barrett93,
BehmDesMej97, etc. (Cette cl&eacute; apparait entre ``\@'' et ``{'' sur
la premi&egrave;re line de l'item bibliographique.)

<P>

Veuillez noter qu'aucune validation n'est faite sur la cl&eacute; de
l'article. 

<FORM METHOD=POST>
<P>
<P>
<PRE>
Nom <INPUT TYPE="TEXT" NAME="nom" VALUE="" SIZE=35> Pr&eacute;nom <INPUT TYPE="TEXT" NAME="prenom" VALUE="" SIZE=15>

Cl&eacute; de l'article     <INPUT TYPE="TEXT" NAME="cle" VALUE="" SIZE=20>

Titre de l'article   <INPUT TYPE="TEXT" NAME="titre" VALUE="" SIZE=50>

Auteur(s)            <INPUT TYPE="TEXT" NAME="auteurs" VALUE="" SIZE=50>
</PRE>
<P>

<INPUT TYPE="SUBMIT" VALUE="Enregistrer le choix">
<INPUT TYPE="RESET" VALUE="Effacer">
</FORM>

<P><HR><P><P><P>
<B> R&eacute;alisation</B>: Ce script a &eacute;t&eacute; d&eacute;velopp&eacute; par <A HREF="http://www.labunix.uqam.ca/~tremblay"> Guy Tremblay</A>, professeur au d&eacute;partement d'informatique de l'UQAM.
EOTF
    print "<P><P>\n";
    print &HtmlBot;
}



sub ProcessForm
{
    local($nom) = $input{'nom'};
    local($cle) = $input{'cle'};    
    local($titre) = $input{'titre'};    
    local($auteurs) = $input{'auteurs'};    

    # On verifie tout d'abord si la cle n'a pas deja ete choisie.
    local($numLigne);
    $nomFich = "$prefixeBD/sujets-choisis";
    local($nbLignes);
    local(*sujets);
    if( ($nbLignes = &obtenirLignes($nomFich, *sujets)) < 0 ) {
	CgiDie("Erreur lecture des sujets choisis",
	       "Le fichier $nomFich ne semble pas exister.");
	return;
    }
    local($dejaChoisi);
    $dejaChoisi = 0;
    $numLigne = 1;
    while ( ($numLigne <= $nbLignes) && !$dejaChoisi ) {
	$nomComplet = $sujets{$numLigne};
	local($cleChoisie, $titre, $auteurs, $nom) = split( "\t", $nomComplet );
	$dejaChoisi = ($cle eq $cleChoisie);
	$numLigne += 1;
    }
    
    if ($dejaChoisi) {
	CgiDie( "<P>Erreur dans votre s&eacute;lection",
	       "L'article avec la cl&eacute; '$cle' semble d&eacute;j&agrave; choisi.");
	return;
    }

    # On verifie que les champs sont bien definis.
    if ( $nom  && $cle && $titre && $auteurs ) {
	print &PrintHeader;
	print "<P>";
	print &HtmlTop( "Confirmation du choix d'un sujet:" );
	local($sujet) = &ajouterArticleChoisi($nom, $cle, $titre, $auteurs);
	print "Vous ($nom) avez choisi l'article suivant:<BR>\n";
	print "<UL><LI>$sujet</UL>\n";
	print "<P><P>\n";
	print &HtmlBot;
	#
	# Partie a modifier pour recevoir un courriel lors d'un choix.
	#
	open( MAILFICH, "> $prefixeBD/message-choix.txt" );
	print MAILFICH "$nom a choisi l'article suivant:\n";
	print MAILFICH "  [$cle] ``$titre'' par $auteurs\n\n";
	close MAILFICH;
	system( "\mail \"tremblay.guy\@uqam.ca\" < $prefixeBD/message-choix.txt" );
    } else {
	CgiDie( "<P>Erreur dans votre s&eacute;lection",
		 "Vous devez sp&eacute;cifier votre nom.",
		 "Vous devez aussi indiquer une cl&eacute;, un titre et un auteur.");
    }
}


sub ajouterArticleChoisi
{ 
    if (!$prefixeBD) {
	&CgiDie( "Erreur dans choix d'un article",
	     "La variable \$prefixeBD ne semble pas etre initialisee." );
    }

    local($nom, $cle, $titre, $auteurs) = @_;
    
    $nomFichOut = "$prefixeBD/sujets-choisis";

    local($res) = "L'article choisi est le suivant:<BR>\n";
    local($ligne) = "$cle: ``$titre'' par $auteurs";

    $res = $ligne . "<BR><P>\n";

    if( !open( SUJETSCHOISIS, ">> $nomFichOut" )) {
	&CgiDie( "Erreur dans ajout d'un article choisi",
	       "Le fichier $nomFichOut ne semble pas exister" );
    }
    print SUJETSCHOISIS "$cle\t$titre\t$auteurs\t$nom\n";
    close(SUJETSCHOISIS);

    return $res;
}
