Location: PHPKode > projects > Pnyx : des lections virtuelles! > pnyx1.0.1/install.php
<?

	#########################################################################################
	# Page d'installation de Pnyx															#
	# Auteur : B. Leblanc																	#
	# Création : 2008-05-01																	#
	# Modification : 2008-10-20																#
	# 																						#
	# Pnyx - une application Web (PHP/MySQL) d'élections virtuelles conçue pour	des	élèves	#
	# du primaire et du secondaire, dans lequel ils sont amenés à faire des	propositions	#
	# en ligne et voter pour leur favorite, sous la supervision d'un enseignant.			#
	#																						#
    # Copyright (C) <2008 - 2009>															#
	# <Service national du RÉCIT de l'univers social de la Commission scolaire de la		#
	# Pointe-de-l'Île>																		#
	#																						#
	# This program 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.	#
	# This program 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 this 	#
	# program as the file LICENSE.txt; if not, please see 									#
	# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.									#
	# 																						#
	# Service national du RÉCIT de l'univers social											#
	# http://www.recitus.qc.ca																#
	# Contact e-mail : steve-hide@address.com												#
	#########################################################################################

    $HTTP_SESSION_VARS['installation'] = "false";

    if(isset($_POST['etape'])){
        $etape = $_POST['etape'];
    }
    else{
        $etape = 1;
    }

    function etape1(){
        global $etape;
        $etape++;
        $erreur = "";
        $HTTP_SESSION_VARS['installation'] = "true";
        $html = "<h2>Vérification des droits en écriture.</h2>";

        #if (!chmod("lib", 0777)) {
        if (!is_writable("lib")){
            $erreur .= '<blockquote>Le dossier <i>lib</i> n&#8217;est pas accessible en écriture. <br /></blockquote>';
        }

        if (!is_writable("pancartes")) {
            $erreur .= '<blockquote>Le dossier <i>pancartes</i> n&#8217;est pas accessible en écriture. <br /></blockquote>';
        }

        if (!is_writable("croquis/banque_images")) {
            $erreur .= '<blockquote>Le dossier <i>croquis/banque_images</i> n&#8217;est pas accessible en écriture. <br /></blockquote>';
        }

        // !!***************************************************************!!
        // !!******* Ajouté par Sébastien Tremblay 22-nov-2008 14h29 *******!!
        // !!***************************************************************!!
        if (!is_writable("croquis/constante.php")) {
            $erreur .= '<blockquote>Le fichier <i>croquis/constante.php</i> n&#8217;est pas accessible en écriture. <br /></blockquote>';
        }

        if (!in_array("gd", get_loaded_extensions())) {
            $erreur .= '<blockquote><br />La librairie graphique GD2 n&#8217;est pas installée ou activée sur votre serveur. La version XX doit absolument être installée et activée pour que Pnyx fonctionne correctement.<br /></blockquote>';
        }
        else
        {
            $GDArray = gd_info();
            if (substr(ereg_replace('[[:alpha:][:space:]()]+', '', $GDArray['GD Version']),0,1) < 2) {
                $erreur .= '<blockquote><br />La librairie graphique GD installée sur votre serveur est obsolète. La version XX doit absolument être installée et activée pour que Pnyx fonctionne correctement.<br /></blockquote>';
            }
        }
        // !!***************************************************************!!


        if ($erreur != ""){
        // !!***************************************************************!!
        // !!***** Mis à jour par Sébastien Tremblay 22-nov-2008 14h45 *****!!
        // !!***************************************************************!!
            $html.= "<br /><br />Les librairies nécessaires sont installées et les droits en écriture des répertoires /lib, /pancartes, /croquis/banque_images et du fichier /croquis/constante.php sont adéquats. Vous pouvez passer à l'étape suivante.<br /><br />";
        // !!***************************************************************!!

            $html .= "<form id=\"frmEtape\" action=\"install.php\" method=\"post\">";
            $html .= "<input type=\"hidden\" id=\"etape\" name=\"etape\" value='" . $etape . "' />";
            $html .= "<input type=\"submit\" value=\"Suivant\" />";
            $html .= "</form>";
        } else {
            $html .= "<br /><br />Les erreurs suivantes doivent être corrigées avant la poursuite du processus d'installation:<br />".$erreur;
            $html .= "<p>Les permissions de ces répertoires doivent être modifiées afin de permettre
            l'écriture (mode 777). Si vous ne pouvez le faire vous-même via FTP,
            veuillez communiquer avec l'administrateur de votre serveur.</p>
            <p>Une fois les permissions modifiées, vous pourrez redémarrer le processus d'installation.</p>";
            $html .= "<form id=\"frmEtape\" action=\"install.php\" method=\"post\">";
            $html .= "<input type=\"hidden\" id=\"etape\" name=\"etape\" value='1' />";
            $html .= "<input type=\"submit\" value=\"Redémarrer\" />";
            $html .= "</form>";
        }

        return $html;
    }

    function etape2(){
        global $etape;
        $etape++;
        $html = "<h2>Configuration de la base de données.</h2>";
        $html .= "<p>Indiquer ici le nom désiré de la base de données et les informations de connexion. Certains accès serveurs ne permettent pas la création automatique de base de données, dans ce cas, vous devez préalablement vous assurez de créer manuellement une base de données MySQL sur votre serveur.</p>";
        $html .= "<form id=\"frmEtape\" action=\"install.php\" method=\"post\">";
        $html .= "<table>";
        $html .= "<tr>";
        $html .= "<td>Nom de votre base de données : </td>";
        $html .= "<td><input type=\"text\" id=\"nomBd\" name=\"nomBd\" /></td>";
        $html .= "</tr><tr>";
        $html .= "<td>Serveur hôte (par défaut le serveur hôte se nomme généralement <em>localhost</em>) : </td>";
        $html .= "<td><input type=\"text\" id=\"host\" name=\"host\" /></td>";
        $html .= "</tr><tr>";
        $html .= "<td>Nom d'utilisateur de la base de données : </td>";
        $html .= "<td><input type=\"text\" id=\"nomUtili\" name=\"nomUtili\" /></td>";
        $html .= "</tr><tr>";
        $html .= "<td>Mot de passe : </td>";
        $html .= "<td><input type=\"password\" id=\"motPasse\" name=\"motPasse\" /></td>";
        $html .= "</tr><tr>";
        $html .= "<td colspan=\"2\" align=\"center\">";
        $html .= "<input type=\"hidden\" id=\"etape\" name=\"etape\" value='" . $etape . "' />";
        $html .= "<input type=\"submit\" value=\"Suivant\" />";
        $html .= "</td>";
        $html .= "</tr>";
        $html .= "</table>";
        $html .= "</form>";
        return $html;
    }

    function etape3(){
        global $etape;
        $html = "<h2>Création de la base de données.</h2><br />";
        @session_start();
        session_unset();
        $HTTP_SESSION_VARS['installation'] = "true";
        $HTTP_SESSION_VARS['ERREUR'] = "";
        if(isset($_POST['nomBd'])){
            $html .= "Création de la base de données en cours...<br /><hr width='400' align='left' />";
            $utilisateur = $_POST['nomUtili'];
            $motDePasse = $_POST['motPasse'];
            $bd = $_POST['nomBd'];
            $host = $_POST['host'];

            $html .= "<div id=\"zoneMessage\"></div>";

            $html .= "<script type=\"text/javascript\"  language=\"javascript\">";
            $html .= "creerBD('" . $host . "', '" . $utilisateur . "', '" . $motDePasse . "', '" . $bd . "')";
            $html .= "</script>";
        }
        return $html;
    }

    function etape4(){
        global $etape;
        global $message;
        $html = "";
        if(isset($_POST['nomBd'])){
            $utilisateur = $_POST['nomUtili'];
            $motDePasse = $_POST['motPasse'];
            $host = $_POST['host'];
            $connection = mysql_connect($host,$utilisateur,$motDePasse);

            mysql_select_db($_POST['nomBd']);

            $etape++;
            $html = "<h2>Configuration des paramètres de base</h2>";
            $html .= $message;
            $html .= "<form id=\"frmEtape\" action=\"install.php\" method=\"post\">";
            $html .= "<table>";
            $html .= "<tr>";
            $html .= "<td>Titre du site (le titre va apparaître dans la bannière et est modifiable dans le site) : </td>";
            $html .= "<td><input type=\"text\" id=\"titreSite\" name=\"titreSite\" /></td>";
            $html .= "</tr><tr>";
            $html .= "<td>Nom d'utilisateur de l'administrateur : </td>";
            $html .= "<td><input type=\"text\" id=\"nomAdmin\" name=\"nomAdmin\" /></td>";
            $html .= "</tr><tr>";
            $html .= "<td>Courriel de l'administrateur : </td>";
            $html .= "<td><input type=\"text\" id=\"courrielAdmin\" name=\"courrielAdmin\" /></td>";
            $html .= "</tr><tr>";
            $html .= "<td>Mot de passe de l'administrateur (6 caractères et plus) : </td>";
            $html .= "<td><input type=\"password\" id=\"passwordAdmin\" name=\"passwordAdmin\" /></td>";
            $html .= "</tr><tr>";
            $html .= "<td>Confirmation du mot de passe : </td>";
            $html .= "<td><input type=\"password\" id=\"confirmPassAdmin\" name=\"confirmPassAdmin\" /></td>";
            $html .= "</tr>";
            $html .= "</table>";
            $html .= "<input type=\"hidden\" id=\"nomBd\" name=\"nomBd\" value='" . $_POST['nomBd'] . "' />";
            $html .= "<input type=\"hidden\" id=\"nomUtili\" name=\"nomUtili\" value='" . $_POST['nomUtili'] . "' />";
            $html .= "<input type=\"hidden\" id=\"motPasse\" name=\"motPasse\" value='" . $_POST['motPasse'] . "' />";
            $html .= "<input type=\"hidden\" id=\"host\" name=\"host\" value='" . $_POST['host'] . "' />";
            $html .= "<input type=\"hidden\" id=\"etape\" name=\"etape\" value='" . $etape . "' />";
            $html .= "<input type=\"submit\" value=\"Suivant\" />";
            $html .= "</form>";

            mysql_close($connection);
        }
        return $html;
    }

    function etape5(){
        global $etape;
        $html = "<h2>Installation du site avec succès!</h2>";
        if(isset($_POST['nomBd'])){
            $utilisateur = $_POST['nomUtili'];
            $motDePasse = $_POST['motPasse'];
            $host = $_POST['host'];
            $connection = mysql_connect($host,$utilisateur,$motDePasse);

            // !!***************************************************************!!
            // !!******* Ajouté par Sébastien Tremblay 22-nov-2008 16h15 *******!!
            // !!***************************************************************!!

            if ($HandleFichier = @fopen(substr($_SERVER['SCRIPT_FILENAME'], 0, strlen($_SERVER['SCRIPT_FILENAME'])-strlen(array_pop(split("/", $_SERVER['SCRIPT_FILENAME']))))."croquis/constante.php", "w"))
            {
                fwrite($HandleFichier, "<?php\n");

                fwrite($HandleFichier, "define(\"USER_ADMIN\",                    \"".$_POST['nomAdmin']."\");\n");
                fwrite($HandleFichier, "define(\"COURRIEL_ADMIN\",                \"".$_POST['courrielAdmin']."\");\n");
                fwrite($HandleFichier, "define(\"MODERATEUR\",                    \"".$_POST['nomAdmin']."\");\n\n");
                fwrite($HandleFichier, "define(\"REP_TEMPLATES\",                 \"templates/\");\n");
                fwrite($HandleFichier, "define(\"REP_POLICES\",                   \"polices/\");\n");
                fwrite($HandleFichier, "define(\"REP_JAVASCRIPT\",                \"javascript/\");\n");
                fwrite($HandleFichier, "define(\"REP_CLASSES\",                   \"classes/\");\n");
                fwrite($HandleFichier, "define(\"REP_IMAGES\",                    \"banque_images/\");\n");
                fwrite($HandleFichier, "define(\"REP_IMAGES_TMP\",                \"banque_images/\");\n");
                fwrite($HandleFichier, "define(\"REP_IMAGES_LOGICIEL\",           \"images_logiciel/\");\n");
                fwrite($HandleFichier, "define(\"REP_CSS\",                       \"css/\");\n");
                fwrite($HandleFichier, "define(\"REP_GALERIE\",                   \"galerie/\");\n");
                fwrite($HandleFichier, "define(\"REP_PANCARTES\",                 \"".substr($_SERVER['SCRIPT_FILENAME'], 0, strlen($_SERVER['SCRIPT_FILENAME'])-strlen(array_pop(split("/", $_SERVER['SCRIPT_FILENAME']))))."pancartes/\");\n");
                fwrite($HandleFichier, "define(\"REP_ROOT\",                      \"".substr($_SERVER['SCRIPT_FILENAME'], 0, strlen($_SERVER['SCRIPT_FILENAME'])-strlen(array_pop(split("/", $_SERVER['SCRIPT_FILENAME']))))."croquis/\");\n");
                fwrite($HandleFichier, "define(\"REP_HTTP_ROOT\",                 \"http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'], 0, strlen($_SERVER['REQUEST_URI'])-strlen(array_pop(split("/", $_SERVER['REQUEST_URI']))))."croquis/\");\n\n");
                fwrite($HandleFichier, "define(\"REP_TEXTE\",                     REP_HTTP_ROOT.REP_CLASSES);\n");
                fwrite($HandleFichier, "define(\"REP_TEXTE_EXPORT\",              REP_ROOT.REP_CLASSES);\n");
                fwrite($HandleFichier, "define(\"ADD_SERVEUR_BD\",                \"".$host."\");\n");
                fwrite($HandleFichier, "define(\"DATABASE\",                      \"".$_POST['nomBd']."\");\n");
                fwrite($HandleFichier, "define(\"USER_NAME\",                     \"".$utilisateur."\");\n");
                fwrite($HandleFichier, "define(\"PASSWORD\",                      \"".$motDePasse."\");\n\n");
                fwrite($HandleFichier, "define(\"MAX_OBJET\",                     50);\n\n");
                fwrite($HandleFichier, "define(\"SCHEMA_DISTANCE_TOP\",           24);\n");
                fwrite($HandleFichier, "define(\"SCHEMA_DISTANCE_LEFT\",          2);\n");
                fwrite($HandleFichier, "define(\"SCHEMA_LARGEUR\",                640);\n");
                fwrite($HandleFichier, "define(\"SCHEMA_HAUTEUR\",                480);\n\n");
                fwrite($HandleFichier, "define(\"BTN_OK\",                        0);\n");
                fwrite($HandleFichier, "define(\"BTN_OK_ANNULER\",                1);\n");
                fwrite($HandleFichier, "define(\"BTN_SAUVER_ANNULER\",            2);\n");
                fwrite($HandleFichier, "define(\"BTN_CONTINUER_SAUVER_ANNULER\",  3);\n");
                fwrite($HandleFichier, "?>");

                fclose($HandleFichier);
            }
            // !!***************************************************************!!

            mysql_select_db($_POST['nomBd']);

            mysql_query("INSERT INTO `usager` ( `usager_id` , `login` , `password` , `type` )
                        VALUES (
                        '1', '" . $_POST['nomAdmin'] . "', '" . sha1($_POST['passwordAdmin']) . "', 'admin'
                        );");

            mysql_query("UPDATE `site_parametres` SET `titre` = '" . $_POST['titreSite'] . "', courriel_admin = '" . $_POST['courrielAdmin'] . "' WHERE `param_id` =1 LIMIT 1 ;");

            $fichier = "lib/constantes.php";
            $stringPage = $_SERVER['PHP_SELF'];
$contenuConst = '<?PHP

######################################
#   Projet Pnyx                      #
#   Constantes du systeme            #
#   V. Blais                         #
#   creation 2006-04-05              #
#   revision 2006-04-12              #
######################################

# global $USAGER, $MOTPASSE, $HOTE, $BD, $URLBASE, $URLABSOLU;

$USAGER = "' . $utilisateur . '";
$MOTPASSE = "' . $motDePasse . '";
$HOTE = "' . $host . '";
$BD = "' . $_POST['nomBd'] . '";
define ("URLBASE","http://' . $_SERVER['HTTP_HOST'] . substr($stringPage, 0, (strlen($stringPage) - 11)) . '");

?>';

            touch($fichier);
            chmod($fichier, 0777);
            $ouvertF = fopen($fichier, "r+");
            fwrite($ouvertF, $contenuConst);
            fclose($ouvertF);

            # verifier si le nom d'usager et le mot de passe sont corrects
            global $HTTP_SESSION_VARS, $SESSION, $USAGER, $MOTPASSE;

            $requete_sql = "SELECT *
                            FROM usager
                            WHERE login = '" . $_POST['nomAdmin'] . "'
                            AND password = '" . sha1($_POST['passwordAdmin']) . "'
                            ";
            $reponse_sql = mysql_query($requete_sql);
            $nb_res = mysql_num_rows($reponse_sql);

            if ($nb_res != 0) {

                # si le login est valide
                $ligne = mysql_fetch_array($reponse_sql);

                # modifier les variables session
                if ($ligne["type"] == "admin") {
                #   gen_variables_session();
                    $HTTP_SESSION_VARS['SESSION']["niveau"] = "admin";
                }
            }

            $html .= "<br /><br />L'installation du site s'est déroulé avec succès.<br /><br />";
            if (!chmod("lib", 755)) {
            $html .= "Pour une question de sécurité, il est important d'aller modifier la permission du dossier /lib et du fichier /croquis/constante.php afin d’enlever les droits en écriture (remettre en 755). Les deux autres (/pancartes et /croquis/banque_images) doivent absolument rester en mode écriture (777) pour assurer le bon fonctionnement du site.<br /><br />";
        }
            $html .= "Cliquez sur suivant pour être redirigé dans le compte de l'administrateur, vous pourrez y créer un projet et paramétrer votre site.<br /><br />";
            $html .= "<form id=\"frmEtape\" action=\"adm_projet.php\" method=\"post\">";
            $html .= "<input type=\"submit\" value=\"Suivant\" />";
            $html .= "</form>";
        }
        return $html;
    }

    $html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\">
    <head>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
    <title>Installation de Pnyx, plateforme d'élections virtuelles scolaires</title>
    <link rel=\"stylesheet\" type=\"text/css\" href=\"lib/template1.css\">
    <script type=\"text/javascript\" src=\"installation/ajaxInstall.js\"></script>
    </head>

    <body>";


    $html .= "<div id=\"contenu\">";

    $html .= "<div id=\"entete\"><div id=\"titreEntete\">Installation de Pnyx, plateforme d&#8217;élections virtuelles scolaires</div></div>";

    $html .= "<div id=\"menuEntete\">";
    if(!file_exists("lib/constantes.php")){
        $html .= "<ul>";
        $html .= "<li id=\"boutonAccueil\">";
        $html .= "<span class=\"ongletG\"></span>";
        $html .= "<span class=\"ongletM\">&Eacute;tape " . $etape . "</span>";
        $html .= "<span class=\"ongletD\"></span>";
        $html .= "</li>";
        $html .= "</ul>";
    }
    $html .= "</div>";
    $html .= "<div id=\"contenuInstallation\">";
    if(!file_exists("lib/constantes.php")){
        if($etape == 1){
            $html .= etape1();
        }
        else if($etape == 2){
            $html .= etape2();
        }
        else if($etape == 3){
            $html .= etape3();
        }
        else if($etape == 4){
            $message = "";
            $html .= etape4();
        }
        else{
            $message = "";
            $erreur = "";
            if($_POST['titreSite'] == ""){
                $message .= "Vous devez donner un titre à votre site.<br />";
                $erreur = "true";
            }
            if($_POST['nomAdmin'] == ""){
                $message .= "Vous n'avez pas indiqué votre nom de compte administrateur.<br />";
                $erreur = "true";
            }
            if($_POST['courrielAdmin'] == ""){
                $message .= "Vous n'avez pas indiqué votre courriel que les utilisateurs utiliseront pour communiquer avec vous.<br />";
                $erreur = "true";
            }
            if($_POST['passwordAdmin'] == ""){
                $message .= "Vous n'avez indiqué de mot de passe à votre compte administrateur.<br />";
                $erreur = "true";
            }
            else if(strlen($_POST['passwordAdmin']) < 6){
                $message .= "Votre mot de passe administrateur est trop court.<br />";
                $erreur = "true";
            }
            else if($_POST['passwordAdmin'] != $_POST['confirmPassAdmin']){
                $message .= "Votre mot de passe administrateur dans le champ de confirmation n'est pas identique au premier.<br />";
                $erreur = "true";
            }
            if($erreur == "true"){
                $html .= etape4();
            }
            else{
                $html .= etape5();
            }
        }
    }
    else{
        $html .= "<h2>Pnyx est déjà installé!</h2><br /><br />";
        $html .= "Pour installer de nouveau le site, il faut :<br />";
        $html .= "<ul>";
        $html .= "<li>vider la base de données;</li>";
        $html .= "<li>supprimer le fichier constantes.php dans le dossier <em>lib</em>;</li>";
        $html .= "<li>supprimer le <strong>contenu</strong> (pas le fichier lui-même!) du fichier constante.php dans le dossier <em>croquis</em>.</li>";
        $html .= "</ul>";
    }
    $html .= "</div>";

    $html .= "<div id=\"espacePied\"></div>";
    $html .= "<div id=\"menuPied\"></div>";
    $html .= "<div id=\"bandePied\">&nbsp;&nbsp;&nbsp;<a href=\"licence_gpl.php\">Application libre licence GPL</a></div>";

    $html .= "</div>";

    $html .= "</body></html>";

    echo $html;

?>
Return current item: Pnyx : des lections virtuelles!