<?php
#=
/*
Copyright 2002-2004, Daniel Deycard, Jacques Messines, Stéphanie Roussel, Jean-Marie Treins
(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

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


if (!isset($getincphp)) {
$getincphp=1;

//recherche un établissemement (et en même temps stocke tous les résultats)
function getetab($etab_id) {
static $etablissements=array();
if (empty($etablissements)) {
    $res=query("SELECT etab_id,rne,nom,adresse,codepostal,ville, nb_validations
                  FROM etablissements");
    while (list($id,$rne,$nom,$adresse,$codepostal,$ville,$nbval)
           =mysql_fetch_array($res)) {
            $etablissements[$id]['rne']=$rne;
            $etablissements[$id]['nom']=$nom;
            $etablissements[$id]['adresse']=$adresse;
            $etablissements[$id]['codepostal']=$codepostal;
            $etablissements[$id]['ville']=$ville;
            $etablissements[$id]['nbval']=$nbval;
    }
}
if (isset($etablissements[$etab_id]))
    return $etablissements[$etab_id];
else return false;
}

function get1etab($etab_id) { //comme l'autre mais ne conserve qu'UN seul établissement en var static
//permet de répondre aux demandes répétées du même étab
static $etablissement=array();
static $eid=0;
if ($etab_id==$eid) return $etablissement;
$eid=$etab_id;
$res=query("SELECT rne,nom,adresse,codepostal,ville FROM etablissements WHERE etab_id=$eid");
list($etablissement['rne'],$etablissement['nom'],$etablissement['adresse'],
     $etablissement['codepostal'],$etablissement['ville'])  = mysql_fetch_array($res);
if (isset($etablissement['rne'])) return $etablissement;
else return false;
}


function getrne($etab_id) {
$tabetab=getetab($etab_id);
return $tabetab['rne'];
}

//recherche d'une classe (et en même temps de toutes les classes) de l'établissement courant
function getclasse($classe_id) {
global $etab_id;
static $classes=array();
if (!isset($classes[$classe_id])) {
    $res=query("SELECT classe_id,divcod FROM classes WHERE etab_id=$etab_id");
    while (list($id,$divcod)=mysql_fetch_array($res))
          $classes[$id]=$divcod;
}
if (isset($classes[$classe_id])) return $classes[$classe_id];
else return false;
}

function getclasseid($divcod) {  //permet d'avoir tabid["4G3"]=6 par exemple
global $etab_id;
static $tabdivcod_classeid;
if (!isset($tabdivcod_classeid)) {
        $res=query("SELECT classe_id,divcod FROM classes where etab_id=$etab_id;");
        while (list($classe_id,$divcod)=mysql_fetch_array($res))
                $tabdivcod_classeid["$divcod"]=$classe_id;
        }
if (isset($tabdivcod_classeid["$divcod"])) return $tabdivcod_classeid["$divcod"];
else return false;
}


//cherche la discipline et récupère toutes les disciplines
function getdisc($disc_id) {
static $disciplines=array();
if (empty($disciplines)) {
    $res=query("SELECT disc_id,libelle FROM disciplines");
    while (list($id,$discipline)=mysql_fetch_array($res)) $disciplines[$id]=$discipline;
}
if (isset($disciplines[$disc_id])) return  $disciplines[$disc_id];
else return false;
}

//cherche le disc_id en fonction du code GEP (DISCCO) (et stocke le tableau)
function getdiscid($discco) {
static $tabdiscco_discid=array();
if (empty($tabdiscco_discid)) {
    $res=query("SELECT disc_id,gep_id FROM disc_gep;");
    while (list($disc_id,$gep_id)=mysql_fetch_array($res)) $tabdiscco_discid["$gep_id"]=$disc_id;
}
if (isset($tabdiscco_discid[$discco])) return $tabdiscco_discid[$discco];
else return false;
}

//spécifique Melia
function getlangue($langue_id) {
return getdisc($langue_id);
}

//récupérer les langues vivantes pratiquées par l'élève
function getlvchoix($eleve) {
$lvchoix=array();
$res4=query("SELECT rang, disc_id FROM lien_eleves_disciplines WHERE eleve_id=$eleve");
while (list($r,$d)=mysql_fetch_array($res4)) {
        $lvchoix[$r]=$d;
}
return $lvchoix;
}

//récupérer les langues vivantes pratiquées dans une classe
function getlvclasse($class_id) {
static $lvclasse=array();
global $etab_id;
$i=1;
if ($class_id!=0) {
  $res5=query("SELECT  DISTINCT disciplines.disc_id
        FROM disciplines, lien_eleves_disciplines, eleves, lien_eleves_classes
        WHERE disciplines.disc_id = lien_eleves_disciplines.disc_id
        AND lien_eleves_disciplines.eleve_id = eleves.eleve_id
        AND eleves.eleve_id=lien_eleves_classes.eleve_id
        AND lien_eleves_classes.classe_id=$class_id");
      }
else {
  $res5=query("SELECT  DISTINCT disciplines.disc_id
        FROM disciplines, lien_eleves_disciplines, eleves
        WHERE disciplines.disc_id = lien_eleves_disciplines.disc_id
        AND lien_eleves_disciplines.eleve_id = eleves.eleve_id
        AND eleves.etab_id=$etab_id");

}
while (list($lv)= mysql_fetch_array($res5)) {
    $lvclasse[$i]=$lv;
    $i++;
   }
return @$lvclasse;
}




//retourne nom prénom de l'élève $id (PAS DE STOCKAGE ICI (ce serait trop !))
function geteleve($id,$cl=false) {
	//si $cl alors on retourne aussi la classe
 $sql="SELECT nom, prenom, divcod FROM eleves, classes WHERE eleves.classe_id=classes.classe_id AND eleve_id=$id;";
 $res=query($sql);
 if (list($nm,$pre,$cla)=mysql_fetch_array($res)) {
	 if (!$cl) $cla="";
 	 $npc=$nm." ".$pre." (".$cla.")";
 	 return $npc; 
 	 }
 else return false;
}


//recherche d'élève connaissant son login
function geteleveid($login) {
global $etab_id;
$loginquot=addslashes($login);
$sql="SELECT * FROM comptes WHERE login='$login' and etab_id=$etab_id";
$res=query($sql);
if ($res) {
   $tab=mysql_fetch_array($res);
   if ($tab) $eleveid=$tab["eleve_id"];
   else $eleveid=0;
}
else $eleveid=0;
return $eleveid;
}

//retourne nom prénom du prof  $id
function getprof($id, $opt=2) {
//Si $pre=0 retourne Civilité+Nom
//Si $pre=1 retourne Civilité + Initiale + Nom
//Si $pre=2 retourne civil + prenom + nom +année
//Si $pre=3 retourne Civil + prenom + nom
//Si $pre=4 retourne juste la discipline
 
 $sql="SELECT civil, nom, prenom, annee, disc_id FROM profs WHERE prof_id=$id;";
 $res=query($sql);
 if (list($civ,$nm,$pre,$an,$dis)=mysql_fetch_array($res))
   switch ($opt) {
	 case 0 :   
	 	return $civ." ".$nm;
	 	break;
	 case 1 :
	 	return $civ." ".$pre{0}." ".$nm;
	 	break;
	 case 2 :
	 	return $civ." ".$pre." ".$nm." ($an)";
	 	break;
	 case 3 :
	 	return $civ." ".$pre." ".$nm;
	 	break;
	case 4 :
		return $dis;
	 	break;
	 }
 else return false;
}

//fonctions de calcul par étab et par classe si $classid existe

function getnbeleves_old($etab,$classid=0) {
  //On suppose la connexion ouverte
  //si on donne un id de classe, on obtient le nb des élèves de la classe
  global $sess_ascol;
  if ($classid>0) $comp=" and classe_id=$classid ";
     else $comp="";
  $sql="SELECT eleve_id FROM eleves WHERE etab_id=$etab and annee='$sess_ascol'".$comp." ;";
  $res=query($sql);
  if ($res) $nb=mysql_num_rows($res);
      else $nb=0;
  return $nb;
}


function getnbelev($etab) {
//Nb élèves de tous les étabs en tableau
//On suppose la connexion ouverte
global $sess_ascol,$debug;
static $nbel=array();
if (empty($nbel)) {
  $sql="SELECT etab_id, count(eleve_id) as nbe FROM eleves WHERE annee='$sess_ascol' and tag<>-1 GROUP BY etab_id";
  $debug++;
  $res=query($sql);
  while (list($et, $nbe)=mysql_fetch_array($res)) $nbel[$et]=$nbe;
  }
if (isset($nbel[$etab])) return $nbel[$etab];
else return 0;
}

function getnbelevdep($dep) {
//Nb élèves de tous les étabs en tableau par département
//On suppose la connexion ouverte
global $sess_ascol,$debug;
static $nbel=array();
if (empty($nbel)) {
  $sql="SELECT LEFT(etablissements.rne,3) AS depart, count(eleve_id) as nbe FROM eleves,etablissements 
  	WHERE eleves.etab_id=etablissements.etab_id 
	  AND annee='$sess_ascol' and tag<>-1 GROUP BY depart";
  $debug++;
  $res=query($sql);
  while (list($dpt, $nbe)=mysql_fetch_array($res)) $nbel[$dpt]=$nbe;
  }
if (isset($nbel[$dep])) return $nbel[$dep];
else return 0;
}

function getnbeleves($etab,$classid=0) {
  //On suppose la connexion ouverte
  //si on donne un id de classe, on obtient le nb des élèves de la classe
  global $sess_ascol,$debug;
  if ($classid==0) {   //nb élèves de l'étab
          $sql="SELECT eleve_id FROM eleves WHERE etab_id=$etab and annee='$sess_ascol' and tag<>-1";
          }
     else {
             $sql="SELECT eleves.eleve_id FROM eleves, lien_eleves_classes WHERE etab_id=$etab
                and annee='$sess_ascol'
                and lien_eleves_classes.eleve_id=eleves.eleve_id
                and lien_eleves_classes.classe_id=$classid
				and eleves.tag<>-1";
          }
  //$debug++;
  $res=query($sql);
  if ($res) $nb=mysql_num_rows($res);
      else $nb=0;
  return $nb;
}

function getnbclasses($etab_id) {
 //retourne le nb de classes de l'établissement
 $sql="SELECT * FROM classes WHERE  etab_id=$etab_id AND divgro='D'";
 $res=query($sql);
 if ($res) $nb=mysql_num_rows($res);
    else $nb=0;
 return $nb;
}


function getnbelevesactifs($etab,$classid=0) {
  //On suppose la connexion ouverte
  //si on donne un id de classe, on obtient le nb des élèves de la classe
  //Au retour, $sum sera affecté de la somme des champs "actif" des eleves
  global $sess_ascol,$sum;
  if ($classid==0) $sql="SELECT eleves.eleve_id, comptes.actif FROM eleves, comptes ".
       " WHERE eleves.etab_id=$etab ".
       " and eleves.eleve_id=comptes.eleve_id ".
       " and annee='$sess_ascol' and eleves.tag<>-1 ".
       " and comptes.actif>-1 ";
  else $sql="SELECT eleves.eleve_id, comptes.actif FROM eleves, comptes, lien_eleves_classes  ".
       " WHERE eleves.etab_id=$etab ".
       " and eleves.eleve_id=comptes.eleve_id ".
       " and annee='$sess_ascol' and eleves.tag<>-1 ".
       " and comptes.actif>-1 and eleves.eleve_id=lien_eleves_classes.eleve_id
         and lien_eleves_classes.classe_id=$classid ";

  $res=query($sql);
  if ($res) $nb=mysql_num_rows($res);
      else $nb=0;
  while (list($el,$act)=mysql_fetch_array($res)) $sum+=$act;
  return $nb;
}

function getnbprofs($etab) {
//Nb profs de tous els étabs en tableau
//On suppose la connexion ouverte
global $sess_ascol,$debug;
static $nbpr=array();
if (empty($nbpr)) {
  $sql="SELECT etab_id, count(prof_id) as nbp FROM profs WHERE annee='$sess_ascol' and tag<>-1 GROUP BY etab_id";
  //$debug++;
  $res=query($sql);
  while (list($et, $nbp)=mysql_fetch_array($res)) $nbpr[$et]=$nbp;
  }
if (isset($nbpr[$etab])) return $nbpr[$etab];
else return 0;
}


function getniveau($etab) {
//Retourne le niveau de B2I de l'étab
static $niv=array();
if (empty($niv)) {
    //On suppose la connexion faite
    $res=query("SELECT  etab_id, niveau FROM etablissements");
    while ($row=mysql_fetch_array($res)) {
      $et=$row['etab_id'];
      $ni=$row['niveau'];
      $niv[$et]=$ni;
      }
  }
return $niv[$etab];
}

function getnivo($rub) {
//Retourne le niveau d'une rubrique donnée'
static $niv=array();
if (empty($niv)) {
    //On suppose la connexion faite
    $res=query("SELECT  DISTINCT brevet_no, rub_no FROM items ORDER  BY rub_no;");
    while ($row=mysql_fetch_array($res)) {
      $br=$row['brevet_no'];
      $ru=$row['rub_no'];
      $niv[$ru]=$br;
      }
  }
return $niv[$rub];
}


function getlibellenivo($niv) { //retourne le libellé du niveau suivant le Module où on se trouve
                                  //et suivant le niveau requis : gère le multi niveaux...
global $MODULE;
switch ($MODULE) {
     case "GiBii" :
       $libelle=array(1=>"Cycle 2","Cycle 3","Collège");
       break;
     case "Melia" :
       $libelle=array(1=>"Cycle 2","Cycle 3","Collège");
       break;
     case "GiCii" :
       $libelle=array(1=>"Cycle 2","Cycle 3","Collège");
       break;
     default :
       $libelle=array(1=>"Cycle 2","Cycle 3","Collège");
}

if (($niv=="niv1") or ($niv==1)) return $libelle[1];
if (($niv=="niv2") or ($niv==2)) return $libelle[2];
if (($niv=="niv3") or ($niv==3)) return $libelle[3];
if ($niv=="niv12") return $libelle[1]." &amp; ".$libelle[2];
if ($niv=="niv23") return $libelle[2]." &amp; ".$libelle[3];
if ($niv=="niv123") return $libelle[1]." &amp; ".$libelle[2]." &amp; ".$libelle[3];
}

function get_nbrubric() { //retoune le nb de rubriques dans ch niveau
static $nbr=array();                // dans un tableau
if (empty($nbr)) {
     //Calcul nb de rubriques dans ce niveau connexion faite dans l'appelant
     $resrub=query("SELECT  DISTINCT rubriques.rub_no, items.brevet_no
             FROM rubriques, items   WHERE rubriques.rub_no = items.rub_no ORDER  BY items.brevet_no");
     for ($i=1;$i<4;$i++) $nbr[$i]=0;
     while (list($rno,$bno)=mysql_fetch_array($resrub)) $nbr[$bno]++;
     }
return $nbr;
}

function get_nbit_parrub() {
//retourne le nb d'items par rubrique
static $nbit_parrub=array();
if (empty($nbit_parrub)) {
  $resitrub=query("SELECT rub_no, count(item_id) as nbitems FROM items
		WHERE obligatoire=1 GROUP BY rub_no");
  while (list($rub, $nb)=mysql_fetch_array($resitrub)) $nbit_parrub[$rub]=$nb;
}
return $nbit_parrub;
}

function get_rub_items($et_niv, &$tab_r, &$tab_r_id, &$tab_i, &$tab_i_id, &$nbits) {
//remplit un tableau des rubriques et items de l'étab

switch ($et_niv) {
    case "niv1": $condition=" AND brevet_no=1 ";break;
    case "niv2": $condition=" AND brevet_no=2 "; break;
    case "niv3": $condition=" AND brevet_no=3 "; break;
    case "niv12"  : $condition=" AND (brevet_no=1 || brevet_no=2) "; break;
    case "niv23"  : $condition=" AND (brevet_no=2 || brevet_no=3) "; break;
    default: $condition="";
}

//obtenir les rubriques du brevet $brevet_no
$resrub=query("select DISTINCT rubriques.rub_no, rubriques.libelle " .  //nb d'items/rubrique
              "from rubriques, items ".
              "where rubriques.rub_no=items.rub_no ".$condition.
              " order by rubriques.rub_no;");


$nbrub=0;
while (list($rub_id,$rub)=mysql_fetch_array($resrub))  {
       $nbrub++;
       $tab_r[$nbrub]=$rub;
       $tab_r_id[$nbrub]=$rub_id;
       //Et les items ?
       $resit=query("SELECT DISTINCT items.item_id, libelles.inst FROM items, libelles
              WHERE items.item_id=libelles.item_id
              AND items.rub_no=$rub_id
              ORDER BY items.s_rub_no");
       $nbit=0;
       while (list($itid, $itlib)=mysql_fetch_array($resit)) {
             $nbit++;
             $tab_i[$nbrub][$nbit]=$itlib;
             $tab_i_id[$nbrub][$nbit]=$itid;
               }
       $nbits[$nbrub]=$nbit;
       }

}

function get_nbitems($n) {  //retourne le nb d'items obligatoires pour ce niveau
global $MODULE;       //Voir si pareil pour GiBii GiCii Melia ?????
$wher=" WHERE obligatoire=1 ";
static $nbitems=array();
if (empty($nbitems)) {
      //Calcul nb d'items pour ce niveau de b2i
      $resit=query("select count(items.item_id)as nbitems, items.brevet_no ".
                     " FROM items ".
                     $wher.
                     " GROUP BY brevet_no");
      while (list($nb, $ni)=mysql_fetch_row($resit))
              $nbitems[$ni]=$nb;
      }
return @$nbitems[$n];
 }

function getbrevet($el,$n) {
//retourne vrai si brevet acquis pourl'élève $el et le niveau $n
//en allant voir dans la table brevets
$resbrev=query("SELECT * FROM brevets
		WHERE eleve_id=$el
		AND niveau=$n");
$nb=mysql_num_rows($resbrev);
if ($nb==0) return false;
else return true;
}

function getBrevetFromNiv() {
switch ($_SESSION['etab_niveau'])  {
      case 'niv1': return 'items.brevet_no = 1'; break;
      case 'niv2': return 'items.brevet_no = 2';  break;
      case 'niv3': return 'items.brevet_no = 3';  break;
      case 'niv12':return 'items.brevet_no IN (1,2)'; break;
      case 'niv23':return 'items.brevet_no IN (2,3)'; break; //plus rapide
      default: return '1';
      }
}

function getDepartement($dep) {
//retourne le libellé du département en fonction du numéro en 2 ou 3 chiffres 
//(on complète à 3 par des zéros)	En cas d'échec, on retourne l'entrée
while (strlen($dep)<3) $dep="0".$dep;

$tabdepart=array(
"001"=>"Ain",
"002"=>"Aisne",
"003"=>"Allier",
"004"=>"Alpes-de-Haute-Provence",
"005"=>"Hautes-Alpes",
"006"=>"Alpes-Maritimes",
"007"=>"Ardèche",
"008"=>"Ardennes",
"009"=>"Ariège",
"010"=>"Aube",
"011"=>"Aude",
"012"=>"Aveyron",
"013"=>"Bouches-du-Rhône",
"014"=>"Calvados",
"015"=>"Cantal",
"016"=>"Charente",
"017"=>"Charente-Maritime",
"018"=>"Cher",
"019"=>"Corrèze",
"02A"=>"Corse-du-Sud",
"02B"=>"Haute-Corse",
"021"=>"Côte-d'Or",
"022"=>"Côtes-d'Armor",
"023"=>"Creuse",
"024"=>"Dordogne",
"025"=>"Doubs",
"026"=>"Drôme",
"027"=>"Eure",
"028"=>"Eure-et-Loir",
"029"=>"Finistère",
"030"=>"Gard",
"031"=>"Haute-Garonne",
"032"=>"Gers",
"033"=>"Gironde",
"034"=>"Hérault",
"035"=>"Ille-et-Vilaine",
"036"=>"Indre",
"037"=>"Indre-et-Loire",
"038"=>"Isère",
"039"=>"Jura",
"040"=>"Landes",
"041"=>"Loir-et-Cher",
"042"=>"Loire",
"043"=>"Haute-Loire",
"044"=>"Loire-Atlantique",
"045"=>"Loiret",
"046"=>"Lot",
"047"=>"Lot-et-Garonne",
"048"=>"Lozère",
"049"=>"Maine-et-Loire",
"050"=>"Manche",
"051"=>"Marne",
"052"=>"Haute-Marne",
"053"=>"Mayenne",
"054"=>"Meurthe-et-Moselle",
"055"=>"Meuse",
"056"=>"Morbihan",
"057"=>"Moselle",
"058"=>"Nièvre",
"059"=>"Nord",
"060"=>"Oise",
"061"=>"Orne",
"062"=>"Pas-de-Calais",
"063"=>"Puy-de-Dôme",
"064"=>"Pyrénées-Atlantiques",
"065"=>"Hautes-Pyrénées",
"066"=>"Pyrénées-Orientales",
"067"=>"Bas-Rhin",
"068"=>"Haut-Rhin",
"069"=>"Rhône",
"070"=>"Haute-Saône",
"071"=>"Saône-et-Loire",
"072"=>"Sarthe",
"073"=>"Savoie",
"074"=>"Haute-Savoie",
"075"=>"Paris",
"076"=>"Seine-Maritime",
"077"=>"Seine-et-Marne",
"078"=>"Yvelines",
"079"=>"Deux-Sèvres",
"080"=>"Somme",
"081"=>"Tarn",
"082"=>"Tarn-et-Garonne",
"083"=>"Var",
"084"=>"Vaucluse",
"085"=>"Vendée",
"086"=>"Vienne",
"087"=>"Haute-Vienne",
"088"=>"Vosges",
"089"=>"Yonne",
"090"=>"Territoire de Belfort",
"091"=>"Essonne",
"092"=>"Hauts-de-Seine",
"093"=>"Seine-Saint-Denis",
"094"=>"Val-de-Marne",
"095"=>"Val-d'Oise",
"971"=>"Guadeloupe",
"972"=>"Martinique",
"973"=>"Guyane",
"974"=>"Réunion");

if (isset($tabdepart[$dep])) return $tabdepart[$dep];
else return $dep;	
}



} //non, cette accolade n'est pas en trop !
?>