<?php
#=
//Pour GiBii-Melia CAS
/****************************************************************************
Copyright 2002, 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

****************************************************************************/
include("../include/vars_adm.php");
include("../include/util.inc.php");
include("../include/get.inc.php");
include("../include/utiljs.php");
include("../include/login.inc.php");
connecte($host,$user,$mdp,$db);




function Trouve_etabCAS($serv, $user) {
 global $etab_id,$statut;
 //le couple $serv, $user est unique sur un même serveur CAS !
 //Cette fonction retourne l'etab_id inconnu, pour éviter de passer par la page de choix....
 //Pré-requis :
 // $CAS_SERVEUR saisi de façon unique  et $user connu
 //retour :
 // le tableau $tab_etab  avec $tab_etab[1]=0 si pas de concordance

 //Chercher si le compte existe ?
 $sqlexist="SELECT comptes.etab_id, login, statut FROM comptes, _params_auth
             WHERE comptes.etab_id=_params_auth.etab_id
             AND login='$user'
             AND _params_auth.param_nom='CAS_SERVEUR'
             AND _params_auth.param_val='$serv'";
 $resexist=query($sqlexist);
 if (mysql_num_rows($resexist)==0)  $tab_etabs[1]=0;
 else { //Là c'est bon, il y a des résultats on va voir le statut
     $num=0;   //comptage établissements retournés
     $statut='';   //On suppose le login unique par statut !!! Osé ?
     while (list($etab, $login, $statut)=mysql_fetch_array($resexist)) {
                        $num++;
                        $tab_etabs[$num]=$etab;
                        }
     }  //Fin recherche étabs

 mysql_free_result($resexist);
 return $tab_etabs;
} //Fin fonction recherche étabs


//Recup params CAS
recuprequest();  //Recup du GET et du POST
getparams(false); //Recup différents params généraux

//Vérif cohérence des versions de GiBii et du référentiel B2i
getparams();
$vv=verif_version();
if (!$vv) {
	alert("Incohérence entre votre version de GiSCCo ($VERSION_GIBII) et le référentiel du GiSCCo($VERSION_B2I)\nVous devez passer le script de conversion du référentiel sur la v. 4.7 avant de passer à la v. $VERSION_GIBII");
	exit;
	}

    //alert($CAS_SERVEUR.$CAS_PORT);
// +----------------------------------------------------------------------+
// | ESUP phpCAS - http://esup-phpcas.sourceforge.net                     |
// +----------------------------------------------------------------------+
// | Copyright (c) 2003 The ESUP-Portail project                          |
// +----------------------------------------------------------------------+
// phpCAS simple client
//import phpCAS lib
include_once('CAS/CAS.php');
   //initialize phpCAS
$CAS_PORT= (int) $CAS_PORT;
phpCAS::client(CAS_VERSION_2_0,"$CAS_SERVEUR",$CAS_PORT,"$CAS_URI");
    // force CAS authentication
phpCAS::forceAuthentication();
    // at this step, the user has been authenticated by the CAS server
    // and the user's login name can be read with phpCAS::getUser().
    //Recup du login saisi chez CAS
$loginsso=phpCAS::getUser();

if (!isset($choix))  { //Premier passage cas de plusieurs étabs
    //Avec le serveur CAS et le User on va trouver l'étab !
  $etabs=Trouve_etabCAS($CAS_SERVEUR, $loginsso);
  //Affichage page de choix
  if (count($etabs)>1) {
     ?>
     <html><head>
     <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
     <title>Attention choix etablissement</title>
     <link rel="stylesheet" href="../include/general.css" />

     <style type="text/css">
     fieldset {
        margin: 5em 15em;
        padding: 1em 0.5em;
        background-color: #FDFDF3;
        border: 1px solid #2E62AA;
        color: black;
        /* Truc pour contenir le background du fieldset dans le cadre IE*/
        position: relative;
        /* Truc pour contenir le background du fieldset dans le cadre IE*/
       }

     legend {
        margin: 0em 1em;
        padding: 0em 1em;
        font-weight: bold;
        color: black;
        background-color: #EDF1F7;
        border: 1px solid #2E62AA;
        /* Truc pour contenir le background du fieldset dans le cadre IE*/
        position: absolute;
        top: -0.6em;
        /* Truc pour contenir le background du fieldset dans le cadre IE*/
       }

     </style>
     </head>
     <body class='arial_sadmin'>
     <img src="../images/logorect.gif" border="0">
     <div align='center'>
     <fieldset background:'#FFF8DC'>
     <LEGEND ACCESSKEY=F ><b>Choix de l'établissement pour <?php echo $MODULE; ?> </b></LEGEND>
     <form name="choixetab" method="post" action="loginCAS.php">
     <?php
     print "<br /><table border='0'><tr>";
     foreach($etabs as $id=>$etid)   {
        $libetab=getetab($etid);
        $mess_etabs=$id." : ".$libetab['nom']." ".$libetab['ville']."   <br>";
        print "<td><input type='radio' name='idetab' value=$etid )></td><td> ".$mess_etabs."</td></tr><tr>";
      }

     print "</tr></table>";
     print "<input type='hidden' name='choix' value=1>";
     print "<input type='hidden' name='CAS_SERVEUR' value='$CAS_SERVEUR'>";
     print "<input type='hidden' name='CAS_PORT' value='$CAS_PORT'>";
     print "<input type='hidden' name='CAS_URI' value='$CAS_URI'>";
     print "<input type='hidden' name='statut' value='$statut'>";

     print "<br><input type=\"submit\" name=\"envoi\" value=\"Choix\">";
     print "</form></fieldset></div>";
     print "</body></html>";
     exit;
     }//Fin de formulaire

  } //Fin de premier passage (et seul passage si un seul etab trouvé)

if (isset($idetab))  $etab_id=$idetab;
else $etab_id=$etabs[1];
//alert("login : ".$loginsso." etab : ".$etab_id);
if ($etab_id!=0) {
     createSession($etab_id);
     //On a déjà les paramètres CAS mais bon, autant les mettre en session pour le logout !
     if ($etab_typauth_id>1) getparams_auth($etab_id);
     //Maintenant on peut partir se faire traiter
     $msg_err=authentifier($loginsso,3);   //met les champs de comptes en variables sess_*
     }
else { //Compte inconnu dans GiBii, on se déconnecte de $MODULE
     alert("Compte inconnu dans ".$MODULE);
     goto("../exit.php");
     }
if ($msg_err) {
     alert($msg_err);
     goto("../exit.php");
     }

goto("login_traite.php?etab_id=$etab_id&entree_SSO=1");

 ?>