<?php
#=

include("../include/get.inc.php");



function vocabulaire($elvprof,&$table,&$champ,&$indiv,&$le_indiv,&$ce_indiv,&$de_indivs) {
    $table=$elvprof.'s';
    $champ=$elvprof.'_id';
    if ($elvprof=="eleve") {
        $indiv="élève";
        $le_indiv="l'élève";
        $ce_indiv="cet élève";
        $indivs="élèves";

        }
    else {
        $indiv="prof";
        $le_indiv="le prof";
        $ce_indiv="ce prof";
        $indivs="profs";
        }
    }

function beginfieldset($action,$couleur) {
    print "<fieldset>\n";
    print "<legend style=\"background-color:White;color:$couleur;text-align:left;\">
            <i><b>&nbsp;&nbsp;
            $action
            &nbsp;&nbsp;</b></i>
            </legend>\n";
    }

function endfieldset() {
    print "</fieldset><br />\n";
    }

function cell_etab($e) {
    $etablissement=getetab($e);
    echo "établissement : ";
    if ($etablissement) {
        echo    $etablissement['rne'],' - ',
                $etablissement['nom'],', ',
                $etablissement['adresse'],' - ',
                $etablissement['codepostal'],' - ',
                $etablissement['ville'];
        $ret=true;
        }
    else {
        echo "<i>non valide</i>";
        $ret=false;
        }
    print "<br>\n";
    return $ret;
    }

function cadre_user($row) {     //ligne de $table
    if ($row) {
        echo $row['civil']," ",$row['nom'];
        echo " ",$row['prenom']," - année = ",$row['annee'],"\n";
        echo "<br />";
        $ret=cell_etab($row['uetab']);
        }
    else {
        echo "&nbsp;";
        $ret=false;
        }
    return $ret;
    }

function cadre_compte($row) {   //ligne de comptes
    if ($row) {
        echo "login : <span style=\"font-family:monospace;font-size:12pt;\">",$row['login'],'</span>';
        echo "<br />";
        $ret=cell_etab($row['cetab']);
        }
    else $ret=false;
    return $ret;
    }


function infos($rowu,$rowc,$table) {
    print "<table><tr><td> <b>Table $table</b></td><td>";
    if (cadre_user($rowu)) $ret='u';
    else $ret='';
    print "</td></tr><tr><td> <b>Table comptes</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td>";
    if (cadre_compte($rowc)) $ret.='c';
    print "</td></tr>\n";
    print "</table>\n";
    return $ret;
    }

function choisir_etab($row,$cause) {
global $champ,$table;
    beginfieldset("Choisir l'établissement",'red');
    $ret=infos($row,$row,$table);
    print "<p>Les établissements sont différents</p>\n";
    $uid=$row['uuid'];
    $cid=$row['ccid'];
    $uetab=$row['uetab'];
    $cetab=$row['cetab'];
    if ($uetab>0 && strpos($ret,'u')!==false)
        //on indique dans value la table qui doit être corrigée
        print "<input type=\"radio\" name=\"chxetab_".$uid."_".$cid."\" value=\"comptes_".$uetab."\" checked=\"checked\" />
                Prendre celui indiqué dans la table $table,<br />\n";
    if ($cetab>0 && strpos($ret,'c')!==false)
        print "<input type=\"radio\" name=\"chxetab_".$uid."_".$cid."\" value=\"".$table."_$cetab\" />
                Prendre celui indiqué pour dans la table comptes<br />\n";
    print "<input type=\"radio\" name=\"chxetab_".$uid."_".$cid."\" value=\"$table\" /> Créer un nouveau compte<br />\n";
    print "<input type=\"radio\" name=\"chxetab_".$uid."_".$cid."\" value=\"rien\" /> Ne rien faire<br />\n";
    print "<br />\n";
    endfieldset();
    }


function creer_compte($row,$cause) {
global $table;
    beginfieldset("Créer un compte",'orange');
    infos($row,false,$table);
    $uid=$row['uuid'];
    print "<p>Soit le compte était incohérent et a été supprimé, soit il n'existait pas.</p>\n";
    print "<input type=\"radio\" name=\"creercompte_$uid\" value=\"$table\" checked=\"checked\" /> Créer un nouveau compte<br />\n";
    print "<input type=\"radio\" name=\"creercompte_$uid\" value=\"rien\" /> Ne rien faire<br />\n";
    print "<br />\n";
    endfieldset();
    }


function verif_users($elvprof) {
    global $table;
    //hypothèse : les doublons ont déjà été supprimés
    vocabulaire($elvprof,$table,$champ,$indiv,$le_indiv,$ce_indiv,$indivs);
    $resu=query("SELECT $table.$champ       AS uuid,
                        $table.compte_id    AS ucid,
                        comptes.compte_id   AS ccid,
                        comptes.$champ      AS cuid,
                        $table.etab_id      AS uetab,
                        comptes.etab_id     AS cetab,
                        nom,prenom,civil,annee,login,statut
                FROM    $table
                LEFT JOIN comptes
                ON      $table.$champ = comptes.$champ
                WHERE   tag = 0
                ORDER BY $table.etab_id");  //pour ne pas recalculer l'étab à chaque fois
    //admin, sadmin et gestion ne sont pas dans les tables eleves ou profs donc ne seront pas obtenus
    //tag=0 élimine la famille TEST et les incertains dans eleves et profs
    $suppr=0;$mod=false;
    $ascol=ascol();
    $cause="Vérification de la table &laquo;$table&raquo;";
    while ($rowu=mysql_fetch_array($resu)) {
        $uuid=$rowu['uuid'];
        $ucid=$rowu['ucid'];
        $ccid=$rowu['ccid'];
        $cuid=$rowu['cuid'];
        $annee=$rowu['annee'];
        if ($cuid==NULL) {
            //Y a-t-il des liens ucid=ccid ? Si oui, ils ont une incohérence : on les vire
            if ($ucid>0) {
                query("DELETE FROM comptes WHERE compte_id=$ucid");
                if (mysql_affected_rows()) $suppr++;
                }
            if ($annee==$ascol) {
                creer_compte($rowu,$cause);
                $mod=true;
                }
            //sinon : on ne s'intéresse pas à un élève d'une année antérieure.
            // Son compte sera éventuellement créé s'il est ressuscité
            }
        else {
            if ($ccid==$ucid) { //le 2e lien est bon
                if ($rowu['cetab']!=$rowu['uetab'] && $annee==$ascol) {
                    choisir_etab($rowu,$cause);
                    $mod=true;
                    }
                // else cas normal ! On n'affiche rien
                //      ou année antérieure : peu importe alors l'étab
                }
            else {
                //les compte_id sont incohérents.
                query("DELETE FROM comptes WHERE compte_id=$ccid");
                $suppr++;
                if ($annee==$ascol) {
                    creer_compte($rowu,$cause);
                    $mod=true;
                    }
                //sinon, on laisse tomber :
                //le compte sera éventuellement recréé par une incorporation
                }
            }
        } //while
    mysql_free_result($resu);
    return array($suppr,$mod);
    }


function verif_comptes($elvprof) {
    global $table;
    vocabulaire($elvprof,$table,$champ,$indiv,$le_indiv,$ce_indiv,$indivs);
    $resc=query("SELECT  $table.$champ      AS uuid,
                        $table.compte_id    AS ucid,
                        comptes.compte_id   AS ccid,
                        comptes.$champ      AS cuid,
                        $table.etab_id      AS uetab,
                        comptes.etab_id     AS cetab,
                        nom,prenom,civil,annee,login
                FROM comptes
                LEFT JOIN $table
                ON comptes.compte_id = $table.compte_id
                WHERE statut='$elvprof'
                  AND tag=0
                ORDER BY comptes.etab_id");  //pour ne pas recalculer l'étab à chaque fois
    $ascol=ascol();
    $suppr=0;$mod=false;
    $cause="Vérification de la table &laquo;comptes&raquo;";
    while ($rowc=mysql_fetch_array($resc)) {
        $uuid=$rowc['uuid'];
        $ucid=$rowc['ucid'];
        $ccid=$rowc['ccid'];
        $cuid=$rowc['cuid'];
        $annee=$rowc['annee'];
        if ($ucid==NULL) {
            //L'un des liens du compte est incorrect. On le supprime
            query("DELETE FROM comptes WHERE compte_id=$ccid");
            $suppr++;
            }
        else { //le lien existe : $ucid=$ccid  (la jointure 1 est bonne)
            //est-ce que l'autre lien est correct ?
            if ($cuid==$uuid) { //oui
                if ($rowc['cetab']!=$rowc['uetab'] && $annee==$ascol) {
                    choisir_etab($rowc,$cause);
                    $mod=true;
                    }
                //else cas normal ! On n'affiche rien ou année antérieure
                }
            else {
                //le 2e lien ne référence rien ou référence un autre individu
                query("DELETE FROM comptes WHERE compte_id=$ccid");
                $suppr++;
                if ($annee==$ascol)
                    creer_compte($rowc,$cause);
                    $mod=true;
                }
            }
        } //while
    mysql_free_result($resc);
    return array($suppr,$mod);
    }
?>