<?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

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


function CarCorrect($s,&$idx,$ensemble) {
//retourne le premier caractère correct de s en débutant à l'indice idx
//Si ensemble est non vide,
//   correct veut dire : appartenir à "ensemble". Le caractère est alors
//   transformé en minuscule (les caractères accentués de s sont sautés)
//sinon, tout caractère de s différent de l'espace est accepté.

if ($ensemble)
    while ($idx<strlen($s) && strpos($ensemble,strtoupper($s[$idx]))===false) $idx++;
else
    while ($idx<strlen($s) && $s[$idx]==' ') $idx++;
if ($idx<strlen($s)) return strtolower($s[$idx++]);
else return "";
}

function normerdatenaiss($dnaiss) {
$e=ereg("^([0-9]{1,2})(.)([0-9]{1,2})(.)?([0-9]{2,4})?$",$dnaiss,$r);
//print_r($r);
if ($e) {        //masque ok
    $an=$r[5];
    $jour=$r[1];
    $mois=$r[3];
    if (strlen($jour)==1) $jour='0'.$jour;
    if (strlen($mois)==1) $mois='0'.$mois;
    
    return $jour."/".$mois;
}
else return $dnaiss;
}


function Login($MasqueIndividu,$nom,$prenom,$d,$dnaiss="",$numero="00000") {
//interpréter lettre à lettre n=nom, p=prénom, d=division ou discipline, #=numéro, b=naissance (born)
//interpréter globalement N=nom, P=prénom  Exemple : avec ppp.N, Albert Einstein a pour login alb.einstein
$result='';

$nom=normernom($nom);
$prenom=normernom($prenom);
$MasqueIndividu=normernom($MasqueIndividu);

//éviter de perdre du temps s'il n'y a pas de #
if (strpos($MasqueIndividu,"#")!==false) {
    //compléter le n° GEP à 5 chiffres
    $numero=str_repeat("0",max(0,5-strlen($numero))).$numero;
}
$inum=0;$inom=0;$ipre=0;$id=0;$idnaiss=0;
for ($i=0; $i<strlen($MasqueIndividu); $i++) {
     switch ($MasqueIndividu[$i]) {
       case "n" : $result .=CarCorrect($nom,$inom,"");break;
       case "p" : $result .=CarCorrect($prenom,$ipre,"");break;
       case "d" : $result .=CarCorrect($d,$id,ALPHANUM);break;
       case "b" : $result .=CarCorrect($dnaiss,$idnaiss,NUM);break;
       case "#" : $result .=CarCorrect($numero,$inum,NUM);break;
       case "N" : $result .=$nom;break;
       case "P" : $result .=$prenom;break;
       default  : $result .=$MasqueIndividu[$i];break;
       }
     }
return $result;
}

function LoginUnique($login,$champ="login") {      // par exemple, $login="jd"
//ATTENTION l'unicité est locale à chaque étab
global $etab_id;
//à partir d'un login de base ($login) crée un login unique en rajoutant
//éventuellement un suffixe numérique.
//l'unicité est vérifiée par rapport au champ $champ, en principe "login" sauf
//pour le script qui change tous les logins
    $login=normernom($login);
    $loginnew=$login;
    $suffixe=0;
    //recherche du premier login possible commençant par jd
    do {
       $logintest=$loginnew;        //pour la requête
       $logintestquot=addslashes(strtolower($logintest));
       $suffixe++;
       $loginnew=$login.$suffixe;   //pour le prochain passage
       //recherche lourde pour éviter tout souci... même parmi les disparus
       $sql="SELECT COUNT(*) FROM comptes WHERE $champ='$logintestquot' and etab_id=$etab_id;";
       $result=query($sql);
       $row=mysql_fetch_row($result);
       mysql_free_result($result);
       }
    while ($row[0]);
    return $logintest;
}



	
?>