<?php
#=
/****************************************************************************
Copyright 2002, Daniel Deycard, Jacques Messines, Stéphanie Roussel, Jean-Marie Treins
                      Alain Pomirol (CATICE Académie de Bordeaux)
Modifications sur le calcul des pourcentages et l'affichage des niveaux 2008, Fabien NGUYEN
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

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

include("../include/vars_adm.php");
include("../include/util.inc.php");
include("../include/get.inc.php");
include("../include/utiljs.php");
$statut=$_REQUEST['statut'];
opensession($statut);



?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>

<HEAD>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<TITLE>c'est le cadre "form"</TITLE>
<link rel="stylesheet" href="<?php echo "../themes/".$etab_theme."/b2i.css" ?>">
</HEAD>

<?php

     if (!isset($classe_id))   { //cas du premier affichage de la page
         if ($statut=="Prof") echo "<BODY class='arialprof' link='lightGrey' vlink='lightGrey' alink='lightGrey'>";
            else echo "<BODY class='arialgest' link='lightGrey' vlink='lightGrey' alink='lightGrey'>";
         print "<p class='rubrique' align='center'>Choisissez une classe</p>";
         print "</BODY>";
         exit();
         }
         else {

         //if ($statut=="Prof") echo "<BODY class='arialprof' link='lightGrey' vlink='lightGrey' alink='lightGrey'>";
            //else echo "<BODY class='arialgest' link='lightGrey' vlink='lightGrey' alink='lightGrey'>";

         if ($statut=="Prof") echo "<BODY class='arialprof'>";
            else echo "<BODY class='arialgest'>";

         }


//entrée avec classe_id en paramètre avec l'URL
//id=0 : nouvel élève, tous les champs sont vides
//id>0 : élève existant à modifier éventuellement (ELEVE_ID=$id)


$tempsdebut=getmicrotime();


//fonctions locales

/*
function nb_items($niv) { //retourne le nb d'items par niveau (tous ou obligatoires ???)
  global $MODULE;
  if ($MODULE=='GiBii') $wher=" WHERE obligatoire=1 "; else $wher="";
  static $nbitems=array();
  if (empty($nbitems)) {
  $sqlit="SELECT brevet_no, COUNT(brevet_no) as nbit FROM items ".
         $wher."GROUP BY brevet_no ORDER BY brevet_no;";
  $resit=query($sqlit);
  while (list($brev, $nbit)=mysql_fetch_array($resit)) {
         $nbitems[$brev]=$nbit;
          }
 }
  return $nbitems[$niv];
}
*/

function prems_rub($r) { //retourne vrai si c'est la première rubrique d'un niveau
  static $prems=array();
  //On ne calcule ce tableau qu'une fois !
  if (empty($prems)) {
  $sql_rub="SELECT DISTINCT rub_no, brevet_no from items ORDER BY rub_no;";
  $res_rub=query($sql_rub);
  $niv_old=1;
  while ($rowr=mysql_fetch_array($res_rub)) {
         $niv=$rowr['brevet_no'];
         $rub=$rowr['rub_no'];
         if  ($niv==$niv_old) $prems[$rub]=0;
              else { $prems[$rub]=1; $niv_old=$niv; }
          }
   }
  return $prems[$r];
}

function nb_item($eleve_id, $rub_no, $disc=-1) {  //$disc=-1 si pas de langue GiBii ou GiCii
global $host, $user, $mdp, $db;
$nb=0;
$disc=-1; // Fabien NGUYEN : J'ai été obligé d'ajouter cette initialisation pour éviter un bug lors de l'affichage des résultats par classe. Pourquoi ?
if ($disc==-1) $req_disc=""; else $req_disc=" AND resultats.disc_id=$disc ";
$sql="SELECT distinct items.item_id ".
               " FROM resultats, items ".
               " WHERE items.rub_no=$rub_no ".$req_disc.
               " AND items.obligatoire=1 ".
               " AND resultats.item_id=items.item_id ".
               " AND resultats.eleve_id=$eleve_id;";
$res=query($sql);
//Compter les enregistrements
while ($result=mysql_fetch_array($res)) {
     $nb++;
        }
  return $nb;
}

//Grand titre
if ($divgro=='D') $libdivgro="la classe"; else $libdivgro="le groupe";
if ($objet=="Tous") $libdivgro="l'établissement";
echo "<p class='sous_titre'>Etat des items en cours de validation dans $libdivgro : $divcod</p>";
if ($MODULE=='Melia') echo "<hr style=width:500px>";

//Connexion base
$conn  = mysql_connect($host, $user, $mdp);
mysql_select_db($db, $conn) or die ("Impossible d'accéder à la base de données");


//POUR MELIA
if ($MODULE=='Melia') {
  //$discipline contient la discipline en cours (fixe pour le prof, variable pour gestion)
  if ($statut=="Prof") $discipline=$disc_id;

  //Cas de l'appel par gestion : récupérer les disciplines de la classe
  if ($statut=="Gest") {
    $tab_lvclasse=getlvclasse($classe_id);
    $nblv=count($tab_lvclasse);
    if ($nblv!=0) {
       if (!isset($discipline)) $discipline=$tab_lvclasse[1];
       $A3="";
       for ($i=1; $i<=$nblv ; $i++) {
           $lvi=$tab_lvclasse[$i];
           if ($discipline!=$lvi) {
              $A3.= "<A href=\"#\" onclick=\"window.location.href='classes_form.php?classe_id=$classe_id&divcod=$divcod&statut=Gest&discipline=$lvi&objet=$objet&divgro=$divgro'\"> <IMG src=\"../drapeaux/".strip_accents($sess_tablang[$lvi]).".gif\" border=\"0\" alt=\"$sess_tablang[$lvi]\" title=\"$sess_tablang[$lvi]\"></A>&nbsp;  ";
              }
           else $a=$lvi;
           }

       print "\t<table align=\"center\" border=\"0\">\n<tr>\n<td><P class=\"rubrique\"> Langue en cours</p></td>\n<td> <IMG src=\"../drapeaux/".strip_accents($sess_tablang[$a]).".gif\" height=\"35\" width=\"43\" alt=\"$sess_tablang[$a]\" title=\"$sess_tablang[$a]\"></td>\n";
       if ($nblv>1) {
           if ($nblv>2){
               $pluriel="s";
               }
           else $pluriel="";
           print "<td width=\"100\"></td>\n<td> <P class=\"rubrique\">Autre$pluriel langue$pluriel :</p></td>\n<td> $A3 </td>\n";
           }
       print "</tr>\n\t</table>\n";
       } //Fin de pas de LV
  } //fin Gest

  // Afficher la (les) discipline ?
  if ($statut=="Prof") print "\t<table align=\"center\" border=\"0\">\n<tr>\n<td><P class=\"rubrique\"> Langue en cours</p></td>\n<td> <IMG src=\"../drapeaux/".strip_accents($sess_tablang[$disc_id]).".gif\" height=\"35\" width=\"43\" alt=\"$sess_tablang[$disc_id]\" title=\"$sess_tablang[$disc_id]\"></td></tr></table></center>\n";

  //Fin tableau des disciplines
  print "<hr>";
} //Fin MELIA

echo "<div class='avis'><table border=\"0\" width=80%><tr><td>";
echo "<img src=\"../themes/".$etab_theme."/boule_rouge.gif\"><b> Rouge : </b>pas d'items validés dans le domaine <br>";
echo "<img src=\"../themes/".$etab_theme."/boule_orange.gif\"><b> Orange : </b>au moins un item validé dans le domaine <br>";
echo "<img src=\"../themes/".$etab_theme."/boule_jaune.gif\"><b> Jaune : </b>au moins 50% des items validés dans le domaine <br>";
echo "<img src=\"../themes/".$etab_theme."/boule_verte.gif\"><b> Vert : </b>tous les items validés dans le domaine <br>";
//On parle de l'attestation ?
switch ($MODULE) {
  case 'GiSCCo' :
    //echo "<center><i>Pour la validation, il faut au moins 80% d'items obligatoires validés dans le niveau <br>(et 50% dans chaque domaine, donc boules jaunes ou vertes uniquement)</i></center>";
    if (!isset($discipline)) $discipline=-1;
    break;
  case 'GiCii' :
    echo "<center><b>Pour l'attestation, il faut au moins 50% des items validés</b></center>";  
    if (!isset($discipline)) $discipline=-1;
    break;
  case 'Melia' :

    if (!isset($discipline)) $discipline=0;
    break;
}
echo "</td></tr></table></div>";

//Lien vers le détail des items...
echo "<br><center><a href='classes_form_items.php?classe_id=$classe_id&divcod=$divcod&statut=$statut&objet=$objet&divgro=$divgro&disc=$discipline'>Obtenir le détail des items acquis</a></center>";

$nbr=get_nbrubric();  // on récupère le nb de rubriques.


//Choix du niveau de brevet ?
$brevet_no=$etab_niveau;

switch ($brevet_no)
{
 case 'niv1':
      $rqniv="  and items.brevet_no = 1 ";
      $nbrubriques=$nbr[1];
      break;

 case 'niv2':
      $rqniv=" and items.brevet_no = 2 ";
      $nbrubriques=$nbr[2];
      break;

 case 'niv3':
      $rqniv=" and items.brevet_no = 3 ";
      $nbrubriques=$nbr[3];
      break;

 case 'niv12':
      $rqniv=" and (items.brevet_no=1 || items.brevet_no=2) ";
      $nbrubriques=$nbr[1]+$nbr[2];
      break;

 case 'niv23':
      $rqniv=" and (items.brevet_no=2 || items.brevet_no=3) ";
      $nbrubriques=$nbr[2]+$nbr[3];
      break;

 default:
      $rqniv=" ";
      $nbrubriques=$nbr[1]+$nbr[2]+$nbr[3];
      break;
}


$w1=getmicrotime();

$resrub=query("select rubriques.*, items.item_id from rubriques,items ".
                      " where rubriques.rub_no = items.rub_no ".
                      " AND items.obligatoire=1 ".
                      $rqniv." order by rubriques.rub_no;",$conn);
$w2=getmicrotime();
$duree_rub=$w2-$w1;

$nb_rub=0;  //au passage on va compter les rubriques
           // et les stocker dans un tableau tab_rub[]

print "<center><table border='1'>\n";
print "<tr class='rubrique'>\n";
if ($objet=="Tous") print "\t<td  width='60'>Division</td>";
print "\t<td  width='160'>Nom</td>";
print "\t<td  width='140'>Prénom</td>";

$nbitem_par_rub=0;
$debut=0;
print $MODULE;
while (list($rub_no, $libelle, $item_id)=mysql_fetch_array($resrub))
{
    if  (($debut==0) || ($tab_rub[$nb_rub]!=$rub_no))
    {  //chgt de rubrique

        $nbitems[$nb_rub]=$nbitem_par_rub; //Affectation nb précéd.
        $nb_rub++;      //nouvelle rubrique
        $nbitem_par_rub=1; //compteur d'items pour cette rubrique
        $tab_rub[$nb_rub]=$rub_no;
        //On complète la première ligne du tableau
        //Si on commence un niveau on met un pourcentage pour le précédent  (ne concerne pas Melia)
        if ((prems_rub($rub_no)) and ($debut!=0))
        {
           if ($MODULE=="GiSCCo") $tit_stat="Socle Commun<br>".getlibellenivo(getnivo($rubno)-0); //if ($MODULE=="GiBii") $tit_stat="B2i ".getlibellenivo(getnivo($rubno-1)); BON SANG !!!!!
           if ($MODULE=="GiCii") $tit_stat="C2i niv ".getlibellenivo(getnivo($rub_no)-1);
           if ($MODULE=="Melia") $tit_stat="Melia ".getlibellenivo(getnivo($rub_no)-1);
           print "<td width=60>".$tit_stat."</td>";
        }

        //on choisit le décalage de la bulle
        if ($nb_rub<$nbrubriques/3)
           $decalbulle="decalbulleg";
        elseif ($nb_rub<2*$nbrubriques/3)
           $decalbulle="decalbullec";
        else
           $decalbulle="decalbulled";

        $debut=1;
        print "<td width='15'><a class='bulle taillebullegde $decalbulle' href=#>".$nb_rub."<span>".$libelle."</span></a></td>";

    }
    else
    { //On reste dans la même rubrique
        $nbitem_par_rub++;
    }
    $rubno=$rub_no;
} //Fin lecture rubriques
$nbitems[$nb_rub]=$nbitem_par_rub; //Affectation dernière rubrique
//On met le dernier pourcentage (ne concerne pas Melia)
if ($MODULE=="GiSCCo") $tit_stat="Socle Commun<br>".getlibellenivo(getnivo($rubno));
if ($MODULE=="GiCii") $tit_stat="C2i niv ".getlibellenivo(getnivo($rubno));
if ($MODULE=="Melia") $tit_stat="Melia ".getlibellenivo(getnivo($rubno));

print "<td width=60>".$tit_stat."</td>";
print "</tr>";
//print_r($nbitems);
//print_r($tab_rub);

$w1=getmicrotime();
//Préparation d'un tableau des élèves pour cette classe

//Si divcod est vide et objet=Tous, on prend tous les élèves du bahut
//Pour Melia, il faut tester la discipline donc ajouter un $fromM etun $andM
if ($MODULE=='Melia') {
        $fromM=", lien_eleves_disciplines ";
        $andM=" and eleves.eleve_id=lien_eleves_disciplines.eleve_id
             and lien_eleves_disciplines.disc_id=$discipline ";
        }
else { $fromM=""; $andM=""; }

if ($objet=="Tous") $reseleves=query("SELECT eleves.eleve_id, eleves.nom, eleves.prenom, eleves.classe_id, classes.divcod
                   FROM eleves  , classes ".$fromM."
                   WHERE  eleves.classe_id=classes.classe_id
                   AND eleves.etab_id=$etab_id
                   AND eleves.annee='$sess_ascol'  ".$andM."
                   ORDER BY divcod, nom, prenom;",$conn);
   else $reseleves=query("select eleves.eleve_id, eleves.nom, eleves.prenom, eleves.classe_id
                   FROM eleves  , lien_eleves_classes ".$fromM."
                   WHERE  eleves.eleve_id=lien_eleves_classes.eleve_id
                   AND lien_eleves_classes.classe_id=$classe_id ".$andM."
                   AND eleves.annee='$sess_ascol'
                   ORDER BY nom, prenom;",$conn);

$w2=getmicrotime();
$duree_elev=$w2-$w1;
//print $duree_elev;exit();
$nbelev=0;  //comptage des élèves
while ($rowelev=mysql_fetch_array($reseleves)) {
  $eleve[$nbelev]=$rowelev["eleve_id"];
  $elnom[$nbelev]=$rowelev["nom"];
  $elprenom[$nbelev]=$rowelev["prenom"];
  if ($objet=="Tous") $eldivcod[$nbelev]=$rowelev["divcod"];
    $nbelev++;
}

//ATTENTION AUX ITEMS FACULTATIFS
if (($MODULE=="GiSCCo") AND (strpos($etab_niveau,'3'))) $facultatif="&nbsp;<b>obligatoires</b>";
else $facultatif="";
Print "<br><i>(".$nbelev." élève".(($nbelev>1)?"s":"").")&nbsp;&nbsp;Les bulles sur les puces donnent le nombre d'items".$facultatif." acquis dans chaque domaine</i>";

$cumul_items=0;
//Fabrication des lignes du tableau
$old_divcod="";
for ($elev=0;$elev<$nbelev;$elev++) { //1 ligne = 1 élève
    //Affichage nom prénom
    //couleur de la ligne suivant sa parité
    $cl=($elev%2==0) ? "paire" : "impaire";
    print "<tr class=$cl>\n";
    if ($objet=="Tous") {
            if ($old_divcod=="") $old_divcod=$eldivcod[0];
            if ($eldivcod[$elev]!=$old_divcod) { print "</tr><td align='center' bgcolor='#FFFFFF'><b>".$eldivcod[$elev]."</b></td><tr class=$cl>"; $old_divcod=$eldivcod[$elev];}
            print "\t<td width='60'>&nbsp;".$eldivcod[$elev]."</td>\n";
            }
    print "\t<td  width='100'>&nbsp;".$elnom[$elev]."</td>\n";
    print "\t<td  width='100'>&nbsp;".$elprenom[$elev]."</td>\n";
    $tot_items=0;
    //On passe aux rubriques
    for ($rub=1;$rub<=$nb_rub;$rub++) { //1 cellule = 1 rubrique
        $w1=getmicrotime();
        $note=nb_item($eleve[$elev], $tab_rub[$rub], $discipline);

        //Si on a fini une rubrique,on donne le pourcentage !
        if ((prems_rub($tab_rub[$rub])) and ($rub>1)) {
            $nivo=getnivo($tab_rub[$rub])-1; //$nivo=getnivo($tab_rub[$rub]-1); BON SANG !!!!!!!
            $nb=get_nbitems($nivo);
            $pourcent=$tot_items/$nb; ////////////// CALCUL DU POURCENTAGE
            $pourcent*=100;
            $pourcent=floor($pourcent);
            print "<td align='center'>$pourcent"." %</td>"; 
            $tot_items=$note;
            }
            else $tot_items+=$note;
        $w2=getmicrotime();
        $cumul_items+=$w2-$w1;
        $nbitbyrub=$note."/".$nbitems[$rub];
        $cellule="\t<td align=\"center\"><a class='bulle taillebullepte' href=#><span>$nbitbyrub</span>";
        if ($note>=$nbitems[$rub]) $cellule.="<img src=\"../themes/".$etab_theme."/boule_verte.gif\"></td>";
           else {
                if ($note==0)  $cellule.="<img src=\"../themes/".$etab_theme."/boule_rouge.gif\"></td>";
                   elseif ($note/$nbitems[$rub]>=0.5) 
                        $cellule.="<img src=\"../themes/".$etab_theme."/boule_jaune.gif\"></td>";
                   else $cellule.="<img src=\"../themes/".$etab_theme."/boule_orange.gif\"></td>";
                }
        $cellule.="</a></td>";
        print $cellule;
        } //Fin ligne
     $trub=$tab_rub[$rub-1];
     $nivo=getnivo($trub);
     $nb=get_nbitems($nivo);
     $pourcent=$tot_items/$nb;
     $pourcent*=100;
     $pourcent=floor($pourcent);
     print "\t<td align='center'>$pourcent"." %</td></tr>";

    } //fin tableau
print "</table></center><br/><br/>";


/* //DEBUG
print "<br>Durée requête rubriques = $duree_rub";
print "<br>Durée requête élèves = $duree_elev";
print "<br>Durée requêtes items cumulées = $cumul_items";

$tempsfin=getmicrotime();
print "<br><br>Durée totale des requêtes = ";print $duree_rub+$duree_elev+$cumul_items;
print "<br>Temps total côté serveur = "; print $tempsfin-$tempsdebut;
 */



?>
</BODY>
</HTML>