<?php
#D
/****************************************************************************
Copyright 2002, Daniel Deycard, Jacques Messines, Alain Pomirol
(CATICE Académie de Bordeaux)

This file is part of Gibii.

Gibii 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 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; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
****************************************************************************/
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
?>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Installation de GiSCCo</title>
<link rel="stylesheet" href="../include/general.css" />
</head>
<!-- <body class="arial_sadmin" background="../images/logorect2.gif"> -->
<body class="arial_sadmin" background="http://giscco.free.fr/images/Giscco_tit.png">

<?php
if (!isset($host)) $host='localhost';   //cas d'un serveur mysql local

function fin($del) {
    if ($del) {
        if (!unlink("../include/vars_adm.php"))
            print "<br /> Le fichier vars_adm.php n'a pas pu être supprimé
                    automatiquement (problème de permissions vraisemblablement.";
        }
    die("</body></html>\n");
}

function choix_base() {
global $user,$mdp,$db,$host,$mdp_suppression;
//valeurs par défaut
if (!isset($user)) $user='root';
if (!isset($mdp)) $mdp='';
if (!isset($db)) $db='giscco';
if (!isset($mdp_suppression)) $mdp_suppression='ok';
  ?>
<img src="http://giscco.free.fr/images/Giscco_tit.png"><h2>Création/Configuration de la base de données de GiSCCo</h2>
    <hr>
    <p>&nbsp;<strong><i>Assurez-vous que le compte ci-dessous permettra d'accéder à la base GiSCCo
    avec tous les droits.</i></strong></p>
    <p>&nbsp;</p>
    <table border="0" width="100%">
        <tr>
            <td width="10%">
                <p>&nbsp;</p>
            </td>
            <td width="70%">
                <form name="form1" method="post" action="./install.php" onsubmit="if (this.mdp.value!=this.mdp2.value) {alert('Mots de passe différents !');return false;} else return true;">
                    <table>
                     <tr>
                      <td><p><input type="radio" name="b2iouc2i" value="b2i" checked>Socle Commun de Compétences
					  <!-- &nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="b2iouc2i" value="c2i" >C2i-->  </p>
                      </td>
                      <td><p><!-- Choisissez quels items doivent être présentés <br  /> -->
					  		<!-- (pour le B2i, il s'agit du référentiel 2006)  -->
						</p>
                      </td>
                      </tr>
                    <tr>
                      <td><hr>
                      </td>
                      <td><hr>
                      </td>
                      </tr>
                     <tr>
                      <td><p><input type="text" name="host" value="<?php print $host; ?>" size="20"></p>
                      </td>
                      <td><p><b>Nom ou n°IP du serveur MySQL (par défaut : localhost)</b></p>
                      </td>
                      </tr>
                     <tr>
                      <td><p><input type="text" name="db" value="<?php print $db; ?>" size="20"></p>
                      </td>
                      <td><p>Nom de la base GiSCCo </p>
                      </td>
                      </tr>
                      <tr>
                      <td><p align='right'><input type='checkbox' name='CB_FAI'></p></td>
                      <td><p>Site hébergé chez un FAI (1)</p>
                      </td>
                      </tr>
                     <tr>
                      <td><p><input type="text" name="user" value="<?php print $user; ?>"></p>
                      </td>
                      <td><p>Compte d'accès à la base <br /><i>(dans le cas d'un FAI, peut être identique au nom de la base)</i></p>
                      </td>
                     <tr>
                      <td><p><input type="password" name="mdp" value="<?php print $mdp ?>"></p>
                      </td>
                      <td><p>Mot de passe de ce compte</p>
                      </td>
                     </tr>
                     <tr>
                      <td><p><input type="password" name="mdp2" value="<?php print $mdp ?>"></p>
                      </td>
                      <td><p>Confirmation de ce mot de passe</p>
                      </td>
                     </tr>
                     <tr>
                      <td><p><input type="text" name="mdp_suppression" value="<?php print $mdp_suppression ?>"></p>
                      </td>
                      <td><p>Code de confirmation requis pour supprimer un établissement</p>
                      </td>
                     </tr>
                    <tr>
                      <td><hr>
                      </td>
                      <td><hr>
                      </td>
                      </tr>

                     <tr>
                      <td>
                          <p><input type="radio" name="confident" value="1">
                             Internet
                             <br />
                             <input type="radio" name="confident" value="0">
                             Intranet</p>
                      </td>
                      <td><p>Facultatif (2)<br  />(ce choix peut être affiné dans les options du menu sadmin)</p>
                      </td>
                     </tr>
                      </table>
                    <p><br /><input type="submit" name="envoi" value="        Envoyer        "></p>
                </form>
            </td>
            <td width="20%">
                <p>&nbsp;</p>
            </td>
        </tr>
    </table>
    <p>
    <table>
    <tr><td>(1) </td><td>Dans ce cas, le nom de la base est imposé par le FAI et elle existe déjà, <em>SANS les tables de GiSCCo</em>
    <tr><td>(2) </td><td>Internet : Assure le maximum de confidentialité des données</td></tr>
    <tr><td>&nbsp;</td><td>Intranet : Moins de confidentialité mais davantage de possibilités pour l'admin</td></tr>
    </table>
    </p>
    <?php
}  //fin de la fonction choix_base

function tables_exist() {
 global $db;
//Tables à tester
$tables=array('comptes','eleves','profs', 'demandes','reponses','etablissements');
$ret=false;
foreach($tables as $tb) {
 $ret = $ret || table_dans_base($tb, $db);
 }
return $ret;
}


//PROGRAMME PRINCIPAL
//===================
// initialisation "amorce" : création des tables et remplissage
//par sécurité, la base b2i ne doit pas exister : elle est créée ici.
//ce script peut donc être laissé en pâture à tout le monde : il ne marche qu'une fois !

include ("../include/util.inc.php");   //pour recup_request()
include ("../include/scriptsql.php");
include ("../include/utiljs.php"); //ici pour éviter d'envoyer du texte (var de session)
include ("../include/define.inc.php");

$fichiersSQL =
   array(
     '01_create.sql'      => 'création des tables',
     '02_default.sql'     => 'paramètres globaux',
     '03_comptes.sql'     => 'création du compte sadmin',
     '04_items.sql'       => 'items et rubriques',
     '05_disciplines.sql' => 'disciplines utilisées',
     '06_gepdisc.sql'     => 'toutes les "disciplines" du gep');


//TRAITEMENT VARS_ADM (il ne peut être inclus qu'après sa création...)
//===================

if (file_exists("../include/vars_adm.php")) {
    print "<h2>Erreur rédhibitoire !</h2><hr><br /><span class='warning'><p>";
    print "Votre fichier de paramètres \"vars_adm.php\" existe déjà :
           vous ne pouvez pas refaire une installation sans le supprimer.</br>";
    print "</p></span>";
    fin(false);
    }

recuprequest();
if (!isset($envoi)) { //passage 1, sans vars_adm.php
    choix_base();
    fin(false);
    }


if (empty($db)) {
    alert('Nom de la base absent !');
    goto('./install.php');
    fin(false);
    }

if (empty($user)) {
    alert("Compte incorrect !");
    print "Recommencez page précédente";
    }


$fp=fopen("../include/vars_adm.php","w");
fputs($fp,"<?php \r\n");
fputs($fp,"//Paramètres 'de base'\r\n");
fputs($fp,"//--------------------\r\n\r\n");
fputs($fp,"\$host='$host';\r\n");
fputs($fp,"\$user='$user';\r\n");
fputs($fp,"\$mdp='$mdp';\r\n");
fputs($fp,"\$db='$db';\r\n");
fputs($fp,"\$mdp_suppression='$mdp_suppression';\r\n");
fputs($fp,'?'.'>');
fclose($fp);
//On peut intégrer maintenant


include("../include/vars_adm.php");     //S'il y est déjà pas de pb

print "<img src='../images/logorect.gif' border='0'>";
print "<p>&nbsp;<br /></p>";


$link=@mysql_connect($host, $user, $mdp);
if (!$link) {
    print "Impossible d'accéder à MySQL<br />".mysql_error();
    print "Contactez l'administrateur du serveur.";
    fin(true);
}

//On élimine tous les mauvais cas
//
if (isset($CB_FAI)) {
    $db_ok=dbexists($host, $user, $mdp, $db);
    if (!$db_ok) {
        print "<h2><p>Base de données <em>$db</em> absente ou nom incorrect</p></h2>\n";
        print "Recommencez !";
        fin(true);
        }
    else {
        $tt=tables_exist();
        if ($tt) {
            print "Les tables de GiSCCo dans la base <strong>$db</strong> existent déjà.
                  <br />Par sécurité, l'installation ne peut pas continuer.
                  <br />Contactez l'administrateur MySQL qui les supprimera s'il le juge approprié.";
            fin(true);
            }
        }
    }
else {  //Là on crée tout
    PRINT "Base de données : $db<br>";
    $CRcreatedb=@mysql_query("create database $db");
    //En cas d'erreur, on dégage
    if (!$CRcreatedb) {
        $erreurno=mysql_errno();
        if (mysql_errno()==1007)
            $mess="La base <strong>$db</strong> existe déjà.
                   <br />Pour des raisons de sécurité, il n'est pas prévu de la supprimer avec GiSCCo !
                   <br />Contactez l'administrateur MySQL.";
        else {
            $mess="Le gestionnaire de base de données indique l'erreur suivante :<br />";
            $mess.=mysql_error().".";
            }
        print $mess;
        fin(true);
        }
    } //Normalement on a éliminé tous les mauvais cas

print  "<h2><p>La base de données <em>$db</em> a été créée</p></h2>\n";


$CRselectdb=mysql_select_db($db);
if (!$CRselectdb) {
    print "Impossible de sélectionner la base de données $db.";
    fin(true);
    }

$cheminsrv="../data/";
$errexiste=false;

//Choix du B2i ou du C2i on recopie les tables en fonction de la variable $b2iouc2i
$fpath="../data/";
//Nouveau référentiel pourle B2i
// if ($b2iouc2i=="b2i") $fsource="04_items_b2i_2006.sql";
// else  $fsource="04_items_c2i.sql";
// copy($fpath.$fsource,$fpath."04_items.sql");

foreach ($fichiersSQL as $nomf=>$comment) {
    $erreur=array();
    $cr=SQL_execfile($cheminsrv.$nomf,$erreurs);
    if (!$cr) $errexiste=true;
    //print "Après $nomf, cr=$cr, ".var_dump($cr)." errexiste=$errexiste<br>";
    if ($cr) {
       print "Exécution des requêtes de <strong>$nomf</strong> : $comment<br />";
    }
    else {
       print "<p><font color='red'>Erreur dans le fichier <strong>$nomf</strong></font><br />";
       SQL_afferreurs($erreurs);
       print "</p>";
       break;
    }
}

//Changement du nom de module pour GiCii
if ($b2iouc2i=="c2i")  query("UPDATE _params_globaux SET param_val='GiCii' WHERE param_nom='MODULE'");



//print "errexiste=$errexiste<br>";
if ($errexiste) {
    print "<p><strong>Problème d'installation (une ou plusieurs erreurs).
              </strong><br />\n";
    print "Vous ne pourrez exécuter à nouveau ce script qu'après avoir supprimé
           manuellement la base $db (ou ses tables si hébergement chez un FAI).<br />
           </p>\n";
    fin(true);
	}

if (@$confident==1) {  //$confident n'existe pas si aucune case radio cochée
    query("UPDATE _params_globaux SET param_val=1 WHERE param_nom='ENTREE_STRICTE'");
    query("UPDATE _params_globaux SET param_val=1 WHERE param_nom='IMPOSE_CHGT_MDP'");
    query("UPDATE _params_globaux SET param_val=1 WHERE param_nom='MDP_INIT_GEP'");
    query("UPDATE _params_globaux SET param_val=1 WHERE param_nom='PAS_ITEM_MANUEL_GEST'");
    query("UPDATE _params_globaux SET param_val=1 WHERE param_nom='PAS_ITEM_MANUEL_ADMIN'");
    query("UPDATE _params_globaux SET param_val=1 WHERE param_nom='PAS_SAUVE_LOCAL'");
    query("UPDATE _params_globaux SET param_val=1 WHERE param_nom='PAS_IMPORT_EXPORT'");

    //Là on met le champ 'actif' de comptes à 0 par défaut pout tous les nouveaux comptes...
    query("ALTER TABLE `comptes` CHANGE `actif` `actif` INT( 11 ) DEFAULT '0' NOT NULL");
	}

//on fabrique l'identificateur du site
$site=time().'_'.rand(0,PHP_INT_MAX);
query("UPDATE _params_globaux SET param_val='$site' WHERE param_nom='SITE_GIBII'");

print "<p>Installation terminée.</p>\n";
print "<h3>\n";
print "<font face=\"Arial\">Vous pouvez passer maintenant en ";
print "<a href=\"../sadmin/index.php\">sadmin</a> (mot de passe sadmin) ";
print "pour créer un ou plusieurs établissements.";
print "</font></h3>";
print "Ce script ne pourra plus être exécuté sans supprimer le fichier include/vars_adm.php.<br />";
print "Si vous supprimez le fichier include/vars_adm.php, vous pourrez faire une nouvelle installation
       mais avec un autre nom de base, à moins de supprimer manuellement la base <strong>$db</strong>.<br />";
print "Notez-vous ces informations ou enregistrez cette page : ce script ne s'autodétruira pas mais ne pourra pas être
       exécuté de nouveau sans intervention manuelle sur vars_adm.php.";
fin(false);
?>