<?php
#=
/****************************************************************************
Copyright 2002-2004, Daniel Deycard, Jacques Messines, Alain Pomirol
(CATICE Académie de Bordeaux)

This file is part of GiBii/Melia.
GiBii/Melia is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

GiBii/Melia is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GiBii/Melia; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

****************************************************************************/

//fonctions utiles pour l'étude d'un élève (dans /eleve et dans /gestion)
function demandeactive($eleve_id, $item_id, $disc_id = -1)
{
    global $etab_nbj_vie_demande;
    // retourne 0 ou un message_id
    if ($disc_id == -1)
        $et = '';
    else
        $et = "and  disc_id=$disc_id";
    $sqldem = "SELECT message_id FROM demandes
         WHERE  eleve_id=$eleve_id
           and  item_id=$item_id
           $et " . //and  TO_DAYS(CURDATE())-TO_DAYS(quand)<=".$etab_nbj_vie_demande." ".
        "ORDER BY quand DESC";
    $resdem = query($sqldem);
    if (mysql_num_rows($resdem))
    {
        $rowdem = mysql_fetch_array($resdem);
        return $rowdem["message_id"];
    }
    else
        return 0;
}

function demandes_en_attente($eleve_id, $disc = -1)
{
    global $etab_nbj_vie_demande;
    if ($disc == -1)
        $req_disc = "";
    else
        $req_disc = " and  disc_id=$disc ";
    $resdem = query("SELECT message_id,item_id FROM demandes
                WHERE  eleve_id=$eleve_id " . $req_disc .
        //"  and  TO_DAYS(CURDATE())-TO_DAYS(quand)<=$etab_nbj_vie_demande
        " ORDER BY quand DESC");
    $liste = array();
    while (list($message_id, $item_id) = mysql_fetch_array($resdem))
    {
        if (!itemacquis($eleve_id, $item_id))
            $liste[] = $item_id;
    }
    return $liste;
}

function bilanrep($message_id)
{
    $sqlbil = "SELECT accord , COUNT(accord) as nbrep " . "FROM reponses " .
        "WHERE message_id = $message_id " . "GROUP BY accord " . "ORDER BY accord;";//0=false=non puis 1=true=oui

    $result = query($sqlbil);
    if ($row1 = mysql_fetch_array($result))
    {
        if ($row2 = mysql_fetch_array($result))
        {// 2 lignes donc des oui et des non
            $nbnon = $row1["nbrep"];
            $nboui = $row2["nbrep"];
        }
        else
        {//il n'y a que des oui ou que des non... mais on ne sait rien de plus !
            if ($row1["accord"])
            {//on vient de trouver des 'true' (en fait des 1)
                $nboui = $row1["nbrep"];
                $nbnon = 0;
            }
            else
            {
                $nbnon = $row1["nbrep"];
                $nboui = 0;
            }
        }
    }
    else
    {//ni oui ni non : pas de réponse des profs
        $nboui = 0;
        $nbnon = 0;
    }
    return array($nboui, $nbnon);
}


function est_interdit($item_id, $eleve_id)
{
    //non utilisé actuellement
    return false;
}

function afficherreponses($eleve_id, $item_id, $comment = false)
{
    global $etab_nbj_vie_demande;
    //Affichage des lignes associées à la demande dans le tableau reponses
    //--------------------------------------------------------------------
    //$comment est un booléen indiquant s'il faut afficher le commentaire
    //pb curieux : impossible de remplacer reponses par r !
    $sql = "
     SELECT reponses.quand as rdate,
            accord, reponses.commentaire as rcomment,
            nom, prenom, civil
     FROM reponses, demandes d, profs p
     WHERE d.eleve_id   = $eleve_id
       and d.item_id    = $item_id
       and reponses.message_id = d.message_id
       and reponses.prof_id    = p.prof_id";
    //and TO_DAYS(CURDATE())-TO_DAYS(d.quand)<=".$etab_nbj_vie_demande.";";
    $resrep = query($sql);

    print "<table>\n";
    // accord ; rdate ; civil nom prenom ; rcomment
    print "<tr >\n";
    print "<td class='rubrique'>Nom du professeur</td>\n";
    print "<td class='rubrique'>Accord</td>\n";
    print "<td class='rubrique'>Date réponse</td>";
    if ($comment)
        print "<td class='rubrique'>Commentaire</td>";
    print "</tr>";

    $tparite = array("paire", "impaire");
    $parligne = 0;
    while ($rowrep = mysql_fetch_array($resrep))
    {
        $parligne = 1 - $parligne;
        print "<tr class='" . $tparite[$parligne] . "'>\n";
        print "<td>\n" . $rowrep["civil"] . " " . $rowrep["nom"] . " " . $rowrep["prenom"] .
            "</td>\n";
        print "<td>\n";
        if ($rowrep["accord"])
            print "oui</td>";
        else
            print "non</td>\n";
        print "<td>\n" . $rowrep["rdate"] . "</td>\n";
        if ($comment)
            print "<td>\n" . $rowrep["rcomment"] . "</td>\n";
        print "</tr>\n";
    }
    print "</table>\n";
}

function affrepmessage($message_id, $comment = false)
{
    //Affichage des lignes associées à la demande dans le tableau reponses
    //--------------------------------------------------------------------
    //$comment est un booléen indiquant s'il faut afficher le commentaire
    //pb curieux : impossible de remplacer reponses par r !
    $sql = "
     SELECT reponses.quand as rdate, accord, reponses.commentaire as rcomment,
            nom, prenom, civil
     FROM reponses
     LEFT  JOIN profs
     ON reponses.prof_id = profs.prof_id
     WHERE reponses.message_id = $message_id";

    //on récupère les reponses des profs même disparus.

    $resrep = query($sql);

    print "<table>\n";
    // accord ; rdate ; civil nom prenom ; rcomment
    print "<tr class='rubrique'>\n";
    print "<td>Nom du professeur</td>\n";
    print "<td>Accord</td>\n";
    print "<td>Date réponse</td>";
    if ($comment)
        print "<td>Commentaire</td>";
    print "</tr>";

    $tparite = array("paire", "impaire");
    $parligne = 0;
    while ($rowrep = mysql_fetch_array($resrep))
    {
        $parligne = 1 - $parligne;
        print "<tr class='" . $tparite[$parligne] . "'>\n";
        print "<td>\n";
        if (!isset($rowrep["nom"]))
            print "RIP";
        else
            print $rowrep["civil"] . " " . $rowrep["nom"] . " " . $rowrep["prenom"] . "</td>\n";
        print "<td align='center'>\n";
        if ($rowrep["accord"])
            print "oui</td>";
        else
            print "non</td>\n";
        print "<td>\n" . $rowrep["rdate"] . "</td>\n";
        if ($comment)
            print "<td>\n" . stripslashes($rowrep["rcomment"]) . "</td>\n";
        print "</tr>\n";
    }
    print "</table>\n";
}

function tuvous($tu, $vous)
{
    global $etab_vouvoyer_elev;
    if (!isset($etab_vouvoyer_elev) || $etab_vouvoyer_elev)
        return $vous;
    else
        return $tu;
}


//Affichage et modification des résultats et des validateurs (fin de fiche élève)
//===============================================================================
function terminerLigne($index_liste) {
static $idchamp=0;
//utilisée seulement par la fonction suivante gerer_resultats
//une ligne en attente d'être terminée

global  $colidtemoin,$colnomtemoin,$colquand, 
        $PHP_SELF,$resultat_id, $item_id, $rdisc, $etab_theme;
print "<td>\n";
$nbtemoins=count($colidtemoin);

//colonne des noms de profs
//-------------------------
for ($it=0;$it<$nbtemoins;$it++) {
    if ($it>0) print '<br />';
    if ($colidtemoin[$it]==NULL) print ' &nbsp; ';
    else print "&nbsp;".$colnomtemoin[$it]; 
    }
print "</td>\n";
print "<td width='14%' class='centre'><p class='arial_petit'>";

//colonne des dates de validation
//-------------------------------
for ($it=0;$it<$nbtemoins;$it++) {
    if ($it>0) print '<br />';
    if (empty($colidtemoin[$it])) print ' &nbsp; ';
    else {
        $tqd=explode('-',substr($colquand[$it],0,10));
        $tqd=array_reverse($tqd);
        $qd=implode('/',$tqd);  //$tqd[2].'/'.$tqd[1].'/'.$tqd[0];
        print "<input class='paire' type=\"text\" maxLength=\"10\" size=\"12\" name=\"w0$idchamp\" id=\"w0$idchamp\" value=\"$qd\" onclick=\"javascript:displayCalendar('w0$idchamp', event);this.form.mod$idchamp.value=1;blinkblank(getElementById('cligne'),true);return true;\" readonly=\"readonly\" />";
        print "<input type=\"hidden\" name=\"res$idchamp\" value=\"$resultat_id\">";
        print "<input type=\"hidden\" name=\"pro$idchamp\" value=\"".$colidtemoin[$it]."\">";
        print "<input type=\"hidden\" name=\"mod$idchamp\" value=\"0\">";

        //print "<a href=\"#\" onclick=\"document.getElementById('w0$it).focus();\" >";
        //print "&nbsp;<img valign='middle' src=\"../lib/calendar/b_calendar.png\" border=\"0\" onclick=\"javascript:displayCalendar('w0$idchamp', event);\" id=\"calendarImg\" alt=\"Modifier la date\" title=\"Modifier la date\"/>";
        //print "</a>";
        //print "&nbsp;".$colquand[$it]."";
        $idchamp++;
        }
    }

print "</p></td>\n";
print "<td width='14%' class='centre'>";

//colonne des "supprimer" (du validateur)
//---------------------------------------
for ($it=0;$it<$nbtemoins;$it++) {
    if ($it>0) print '<br />';
    $prof_id=$colidtemoin[$it];
    if ($prof_id==NULL) print '<span class="gris">Supprimer</span>';
    else {
        //----------------
        //Supprimer témoin
        //----------------
        $param=base64_encode(serialize(array("supprimer_temoin",$index_liste,$resultat_id, $prof_id)));
        print "<a href=\"eleves_traiter_res.php?p=$param\">Supprimer</a>";
        }
    }
print "</td>\n";

//colonne ajouter
//---------------
print "<td width='12%' class='centre'>";
//print "<a href=\"$PHP_SELF?p=".base64_encode(array("ajout",$old_resultat))."\">";

//--------------
//Ajouter témoin  ?etab_theme=$etab_theme."&statut=$statut";
//--------------
$param=base64_encode(serialize(array($resultat_id,$item_id,$rdisc,$colidtemoin)));

//etab_theme=$etab_theme&
print "<a href='javascript:void(0)' ".
         "onClick=\"window.open('../admin/pop_profs.php?p=$param','popprofs',".
         "'width=200,height=400,".
         "top=100,left=300,".
         "status=0, directories=0, toolbar=0, location=0, scrollbars=1,".
         "resizable=0');\" > Ajouter </a>";

print "</td>\n";
//terminer la ligne
print "</tr>\n";
}


//===================================
function gerer_resultats($index_liste) {
global $colidtemoin,$colnomtemoin,$colquand,$PHP_SELF,$resultat_id, $item_id,$rdisc, $etab_theme;
$PHP_SELF=basename($_SERVER['PHP_SELF']);
$eleve_id=$_SESSION['temp']['eleve'][(int) $index_liste];
if (!isset($eleve_id) || !is_numeric($eleve_id)) return;
$res=query("SELECT  resultats.resultat_id,resultats.item_id, resultats.disc_id AS rdisc, lrp.quand,
                    profs.prof_id,profs.nom,profs.prenom,profs.disc_id AS pdisc 
            FROM resultats
            LEFT JOIN lrp ON resultats.resultat_id=lrp.resultat_id
            LEFT JOIN profs ON profs.prof_id=lrp.prof_id
            WHERE resultats.eleve_id=$eleve_id
            ORDER BY resultats.item_id, resultats.disc_id");

$resultat_id=0;
$nblignes=0;
$ctd=array("impaire","paire");
while ($row=mysql_fetch_array($res)) {
    //list($resultat_id, $item_id, $disc_idr, $quand, $prof_id, $nomp, $prenomp, $disc_idp) = mysql_fetch_array($res)) {
    if ($row['resultat_id']<>$resultat_id) {
        //changement d'item : nouvelle ligne du tableau (avant, il faut terminer l'ancienne éventuelle)
        $classetd=$ctd[$nblignes++ % 2];
        if ($resultat_id) {
            terminerLigne($index_liste);
            }
        else {
            $param=base64_encode(serialize(array("modifier_dates",$index_liste)));
            ?>
            <p class="sous_titre">Résultats : </p><br />
            <div align="center">
            <span class="warning">
                Vous pouvez modifier plusieurs dates avant de les valider globalement.<br /> 
                Le bouton &laquo;Sauver dates&raquo; clignote en tête de colonne lorsqu'il reste des dates à enregistrer.
            </span>
            <br /><br />
            <a name="alafin"></a>
            <?php if (isset($alafin)) voircetendroit(); ?>
            <form name="majdates" action="eleves_traiter_res.php?p=<?php echo $param; ?>" method="post">
            <table border="1" width='99%' cellspacing='1'>
            <tr class="rubrique"><td width='5%'>item</td>
            <td width="14%">Résultat</td><td width="40%">Nom Prénom <small>(discipline)</small></td>
            <td width="15%"><span id="cligne"><input type="submit" class="coul" name="modifier_dates" value="Sauver dates" size="10" onclick="blinkblank(getElementById('cligne'),false);" /></span></td>
            <td colspan="2">Actions sur le(s) validateur(s)</td>
            </tr>
            <?php
            } // class dd <tr class=\"$classetd\">
        //changer de ligne
        print "<tr class=\"$classetd\">\n";
        $resultat_id=$row['resultat_id'];
        $item_id=$row['item_id'];
        $rdisc=$row['rdisc'];
        $colidtemoin=$colnomtemoin=$colquand=array();
        if ($rdisc==-1) $langue='';
        else $langue='<br />'.getlangue($rdisc);
        print "<td class='centre'> $item_id $langue</td>\n";

        //------------------
        //Supprimer résultat
        //------------------
        $param=base64_encode(serialize(array("supprimer_resultat",$index_liste,$resultat_id)));
        print "<td width=\"14%\" class=\"centre\"> <a href=\"eleves_traiter_res.php?p=$param\">Supprimer</a> </td>\n";
        }    
    $colnomtemoin[]='&nbsp;'.$row['nom'].' '.$row['prenom'].' <small>('.getdisc($row['pdisc']).")</small>";
    $colidtemoin[]=$row['prof_id']; //éventuellement NULL
    $colquand[]=$row['quand'];
    }
if ($resultat_id) {
    //une ligne en attente d'être terminée
    terminerLigne($index_liste);
    print "</table></form></div>\n\n";
    }

    // fin tableau ?
    include("../lib/calendar/calendar.inc.php");
return $nblignes;
}

?>