Subversion Repositories Sites.tela-botanica.org

Rev

Rev 4 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2005                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/


if (defined("_ECRIRE_INSTALL")) return;
define("_ECRIRE_INSTALL", "1");

include ("inc_version.php3");
include_ecrire ("inc_presentation.php3");


//
// Verifier que l'hebergement est compatible SPIP ... ou l'inverse :-)
// (sert a l'etape 1 de l'installation)
function tester_compatibilite_hebergement() {
        $err = array();

        $p = phpversion();
        if (ereg('^([0-9]+)\.([0-9]+)\.([0-9]+)', $p, $regs)) {
                $php = array($regs[1], $regs[2], $regs[3]);
                $m = '4.0.8';
                $min = explode('.', $m);
                if ($php[0]<$min[0]
                OR ($php[0]==$min[0] AND $php[1]<$min[1])
                OR ($php[0]==$min[0] AND $php[1]==$min[1] AND $php[2]<$min[2]))
                        $err[] = _L("PHP version $p insuffisant (minimum = $m)");
        }

        if (!function_exists('mysql_query'))
                $err[] = _T('install_extension_php_obligatoire')
                . " <a href='http://se.php.net/mysql'>MYSQL</a>";

        if (!function_exists('preg_match_all'))
                $err[] = _T('install_extension_php_obligatoire')
                . " <a href='http://se.php.net/pcre'>PCRE</a>";

        if ($a = @ini_get('mbstring.func_overload'))
                $err[] = _T('install_extension_mbstring')
                . "mbstring.func_overload=$a - <a href='http://se.php.net/mb_string'>mb_string</a>.<br /><small>";

        if ($err) {
                        echo "<P><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=4><b>"._T('avis_attention').'</b> <p>'._T('install_echec_annonce')."</p></FONT>";
                while (list(,$e) = each ($err))
                        echo "<li>$e</li>\n";

                # a priori ici on pourrait die(), mais il faut laisser la possibilite
                # de forcer malgre tout (pour tester, ou si bug de detection)
                echo "<p /><hr />\n";
        }
}


// Une fonction pour faciliter la recherche du login (superflu ?)
function login_hebergeur() {
        global $HTTP_X_HOST, $REQUEST_URI, $SERVER_NAME, $HTTP_HOST;

        $base_hebergeur = 'localhost'; # par defaut

        // Lycos (ex-Multimachin)
        if ($HTTP_X_HOST == 'membres.lycos.fr') {
                ereg('^/([^/]*)', $REQUEST_URI, $regs);
                $login_hebergeur = $regs[1];
        }
        // Altern
        else if (ereg('altern\.com$', $SERVER_NAME)) {
                ereg('([^.]*\.[^.]*)$', $HTTP_HOST, $regs);
                $login_hebergeur = ereg_replace('[^a-zA-Z0-9]', '_', $regs[1]);
        }
        // Free
        else if (ereg('(.*)\.free\.fr$', $SERVER_NAME, $regs)) {
                $base_hebergeur = 'sql.free.fr';
                $login_hebergeur = $regs[1];
        }

        return array($base_hebergeur, $login_hebergeur);
}



if (_FILE_CONNECT) {
        install_debut_html();
        echo "<P><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=4>"._T('avis_espace_interdit')."</FONT>";

        install_fin_html();
        exit;
}

include_ecrire ("inc_base.php3");
define('_FILE_TMP', '_install');


// Sur tous les formulaires on peut cliquer "return" pour passer a la suite
define ('_VALIDE_CLAVIER', '');
/*
define ('_VALIDE_CLAVIER', "<script><!--
        window.onkeypress = enterSubmit;
        function enterSubmit(){
                // si on appuie sur enter ou return
                if ((event.keyCode==13) || (event.keyCode==3)) {
                        // a l'etape 1 ne pas valider formulaire var_lang
                        a = 0;
                        if ((document.forms(0).action != 'install.php3')
                        && (document.forms(0).action != 'index.php3'))
                                a = 1;
                        document.forms(a).submit();
                }
        }
// --></script>\n");
*/

//
// Etapes de l'installation standard
//

if ($etape == 6) {
        install_debut_html();
        echo _VALIDE_CLAVIER;

        echo "<BR><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_derniere_etape')."</B></FONT>";
        echo "<P>";
        echo "<B>"._T('info_code_acces')."</B>";
        echo "<P>"._T('info_utilisation_spip');

        include(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP);
        include_ecrire ("inc_meta.php3");

        if ($login) {
                $nom = addslashes($nom);
                $login = addslashes($login);
                $query = "SELECT id_auteur FROM spip_auteurs WHERE login='$login'";
                $result = spip_query($query);
                unset($id_auteur);
                while ($row = spip_fetch_array($result)) $id_auteur = $row['id_auteur'];

                $mdpass = md5($pass);
                $htpass = generer_htpass($pass);

                if ($id_auteur) {
                        $query = "UPDATE spip_auteurs SET nom='$nom', email='$email', login='$login', pass='$mdpass', alea_actuel='', alea_futur=FLOOR(32000*RAND()), htpass='$htpass', statut='0minirezo' WHERE id_auteur=$id_auteur";
                }
                else {
                        $query = "INSERT INTO spip_auteurs (nom, email, login, pass, htpass, alea_futur, statut) VALUES('$nom','$email','$login','$mdpass','$htpass',FLOOR(32000*RAND()),'0minirezo')";
                }
                spip_query($query);

                // inserer email comme email webmaster principal
                spip_query("REPLACE spip_meta (nom, valeur)
                        VALUES ('email_webmaster', '".addslashes($email)."')");
        }

        include_ecrire("inc_config.php3");
        init_config();
        init_langues();

        include_ecrire ("inc_acces.php3");
        ecrire_acces();

        @unlink(_DIR_SESSIONS . 'inc_meta_cache.php3');
        @unlink(_DIR_SESSIONS . 'meta_cache.php3');
        if (!@rename(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP,
                    _FILE_CONNECT_INS . _EXTENSION_PHP)) {
                copy(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP, 
                     _FILE_CONNECT_INS . _EXTENSION_PHP);
                @unlink(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP);
        }

        echo "<FORM ACTION='index.php3' METHOD='post'>";
        echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";
        echo "</FORM>";

        ecrire_metas();

        install_fin_html();
}

else if ($etape == 5) {
        install_debut_html();
        echo _VALIDE_CLAVIER;

        include(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP);

        echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_informations_personnelles')."</FONT>";
        echo "<P>\n";

        echo "<b>"._T('texte_informations_personnelles_1')."</b>";
        echo aide ("install5");
        echo "<p>\n"._T('texte_informations_personnelles_2')." ";
        echo _T('info_laisser_champs_vides');

        echo "<FORM ACTION='install.php3' METHOD='post'>";
        echo "<INPUT TYPE='hidden' NAME='etape' VALUE='6'>";

        echo "<fieldset><label><B>"._T('info_identification_publique')."</B><BR />\n</label>";
        echo "<B>"._T('entree_signature')."</B><BR />\n";
        echo _T('entree_nom_pseudo_1')."<BR />\n";
        echo "<INPUT TYPE='text' NAME='nom' CLASS='formo' VALUE=\"$nom\" SIZE='40'><P>\n";

        echo "<B>"._T('entree_adresse_email')."</B><BR />\n";
        echo "<INPUT TYPE='text' NAME='email' CLASS='formo' VALUE=\"$email\" SIZE='40'></fieldset><P>\n";

        echo "<fieldset><label><B>"._T('entree_identifiants_connexion')."</B><BR />\n</label>";
        echo "<B>"._T('entree_login')."</B><BR />\n";
        echo _T('info_plus_trois_car')."<BR />\n";
        echo "<INPUT TYPE='text' NAME='login' CLASS='formo' VALUE=\"$login\" SIZE='40'><P>\n";

        echo "<B>"._T('entree_mot_passe')."</B> <BR />\n";
        echo _T('info_plus_cinq_car_2')."<BR />\n";
        echo "<INPUT TYPE='password' NAME='pass' CLASS='formo' VALUE=\"$pass\" SIZE='40'></fieldset><P>\n";

        echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";
        echo "</FORM>";
        echo "<p>\n";

        if ($flag_ldap AND !$ldap_present) {
                echo "<div style='border: 1px solid #404040; padding: 10px; text-align: left;'>";
                echo "<b>"._T('info_authentification_externe')."</b>";
                echo "<p>\n"._T('texte_annuaire_ldap_1');
                echo "<FORM ACTION='install.php3' METHOD='post'>";
                echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap1'>";
                echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE=\""._T('bouton_acces_ldap')."\">";
                echo "</FORM>";
        }

        install_fin_html();

}

else if ($etape == 4) {

        install_debut_html();
        echo _VALIDE_CLAVIER;

        // Necessaire pour appeler les fonctions SQL wrappees
        include_ecrire("inc_db_mysql.php3");

        echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_creation_tables')."</FONT>";
        echo "<P>\n";

        $link = mysql_connect("$adresse_db", "$login_db", "$pass_db");

        echo "<"."!-- $link ";

        if ($choix_db == "new_spip") {
                $sel_db = $table_new;
                mysql_query("CREATE DATABASE $sel_db");
        }
        else {
                $sel_db = $choix_db;
        }
        echo "$sel_db ";
        mysql_select_db($sel_db);

        // Message pour spip_query : tout va bien !
        $GLOBALS['db_ok'] = true;
        $GLOBALS['spip_connect_version'] = 0.2; # cf. inc_version

        // Test si SPIP deja installe
        spip_query("SELECT COUNT(*) FROM spip_meta");
        $nouvelle = spip_sql_errno();
        creer_base();

        $maj_ok = maj_base();

        // Tester $mysql_rappel_nom_base
        $GLOBALS['mysql_rappel_nom_base'] = true;
        $GLOBALS['spip_mysql_db'] = $sel_db;
        $ok_rappel_nom = spip_query("INSERT spip_meta (nom,valeur)
                VALUES ('mysql_rappel_nom_base', 'test')");
        if ($ok_rappel_nom) {
                echo " (ok rappel nom base `$sel_db`.spip_meta) ";
                $ligne_rappel = '';
                spip_query("DELETE FROM spip_meta WHERE nom='mysql_rappel_nom_base'");
        } else {
                echo " (erreur rappel nom base `$sel_db`.spip_meta) ";
                $GLOBALS['mysql_rappel_nom_base'] = false;
                $ligne_rappel = "\$GLOBALS['mysql_rappel_nom_base'] = false; ".
                "/* echec du test sur `$sel_db`.spip_meta lors de l'installation. */\n";
        }

        if ($nouvelle) {
                spip_query("INSERT spip_meta (nom, valeur) VALUES ('nouvelle_install', 'oui')");
                $result_ok = !spip_sql_errno();
        } else {
                $result = spip_query("SELECT COUNT(*) FROM spip_articles");
                $result_ok = (spip_num_rows($result) > 0);
        }
        echo "($result_ok && $maj_ok) -->";


        if ($result_ok && $maj_ok) {
                $conn = "<"."?php\n";
                $conn .= "if (defined(\"_ECRIRE_INC_CONNECT\")) return;\n";
                $conn .= "define(\"_ECRIRE_INC_CONNECT\", \"1\");\n";
                $conn .= "\$GLOBALS['spip_connect_version'] = 0.2;\n";
                $conn .= "include_ecrire('inc_db_mysql.php3');\n";
                $conn .= $ligne_rappel;
                $conn .= "spip_connect_db('$adresse_db','','$login_db','$pass_db','$sel_db');\n";
#               $conn .= "\$GLOBALS['db_ok'] = !!@spip_num_rows(@spip_query_db('SELECT COUNT(*) FROM spip_meta'));\n";
                $conn .= "?".">";
                $myFile = fopen(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP, "wb");
                fputs($myFile, $conn);
                fclose($myFile);

                echo "<B>"._T('info_base_installee')."</B><P>\n"._T('info_etape_suivante_1');

                echo "<FORM ACTION='install.php3' METHOD='post'>";
                echo "<INPUT TYPE='hidden' NAME='etape' VALUE='5'>";

                echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";

                echo "</FORM>";
        }
        else if ($result_ok) {
                echo _T('alerte_maj_impossible', array('version' => $spip_version));
        }
        else {
                echo "<B>"._T('avis_operation_echec')."</B> "._T('texte_operation_echec');
        }

        install_fin_html();

}

else if ($etape == 3) {

        install_debut_html();
        echo _VALIDE_CLAVIER;

        echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_choix_base')." <B>"._T('menu_aide_installation_choix_base')."</B></FONT>";

        echo aide ("install2");
        echo "<P>\n";

        echo "<FORM ACTION='install.php3' METHOD='post'>";
        echo "<INPUT TYPE='hidden' NAME='etape' VALUE='4'>";
        echo "<INPUT TYPE='hidden' NAME='adresse_db'  VALUE=\"$adresse_db\" SIZE='40'>";
        echo "<INPUT TYPE='hidden' NAME='login_db' VALUE=\"$login_db\">";
        echo "<INPUT TYPE='hidden' NAME='pass_db' VALUE=\"$pass_db\"><P>\n";

        $link = mysql_connect("$adresse_db","$login_db","$pass_db");
        $result = @mysql_list_dbs();

        echo "<fieldset><label><B>"._T('texte_choix_base_1')."</B><BR />\n</label>";

        if ($result AND (($n = @mysql_num_rows($result)) > 0)) {
                echo "<B>"._T('texte_choix_base_2')."</B><P> "._T('texte_choix_base_3');
                echo "<UL>";
                $bases = "";
                for ($i = 0; $i < $n; $i++) {
                        $table_nom = mysql_dbname($result, $i);
                        $base = "<INPUT NAME=\"choix_db\" VALUE=\"".$table_nom."\" TYPE=Radio id='tab$i'";
                        $base_fin = "><label for='tab$i'>".$table_nom."</label><BR />\n\n";
                        if ($table_nom == $login_db) {
                                $bases = "$base CHECKED$base_fin".$bases;
                                $checked = true;
                        }
                        else {
                                $bases .= "$base$base_fin\n";
                        }
                }
                echo $bases."</UL>";
                echo _T('info_ou')." ";
        }
        else {
                echo "<B>"._T('avis_lecture_noms_bases_1')."</B>
                "._T('avis_lecture_noms_bases_2')."<P>";
                if ($login_db) {
                        // Si un login comporte un point, le nom de la base est plus
                        // probablement le login sans le point -- testons pour savoir
                        $test_base = $login_db;
                        $ok = @mysql_select_db($test_base);
                        $test_base2 = str_replace('.', '_', $test_base);
                        if (@mysql_select_db($test_base2)) {
                                $test_base = $test_base2;
                                $ok = true;
                        }
                        
                        if ($ok) {
                                echo _T('avis_lecture_noms_bases_3');
                                echo "<UL>";
                                echo "<INPUT NAME=\"choix_db\" VALUE=\"".$test_base."\" TYPE=Radio id='stand' CHECKED>";
                                echo "<label for='stand'>".$test_base."</label><BR />\n";
                                echo "</UL>";
                                echo _T('info_ou')." ";
                                $checked = true;
                        }
                }
        }
        echo "<INPUT NAME=\"choix_db\" VALUE=\"new_spip\" TYPE=Radio id='nou'";
        if (!$checked) echo " CHECKED";
        echo "> <label for='nou'>"._T('info_creer_base')."</label> ";
        echo "<INPUT TYPE='text' NAME='table_new' CLASS='fondo' VALUE=\"spip\" SIZE='20'></fieldset><P>";

        echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";


        echo "</FORM>";

        install_fin_html();

}

else if ($etape == 2) {

        install_debut_html();
        echo _VALIDE_CLAVIER;



        echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_connexion_base')."</FONT>";

        echo "<!--";
        $link = mysql_connect("$adresse_db","$login_db","$pass_db");
        $db_connect = mysql_errno();
        echo "-->";

        echo "<P>";

        if (($db_connect=="0") && $link){
                echo "<B>"._T('info_connexion_ok')."</B><P> "._T('info_etape_suivante_2');

                echo "<FORM ACTION='install.php3' METHOD='post'>";
                echo "<INPUT TYPE='hidden' NAME='etape' VALUE='3'>";
                echo "<INPUT TYPE='hidden' NAME='adresse_db'  VALUE=\"$adresse_db\" SIZE='40'>";
                echo "<INPUT TYPE='hidden' NAME='login_db' VALUE=\"$login_db\">";
                echo "<INPUT TYPE='hidden' NAME='pass_db' VALUE=\"$pass_db\"><P>";

                echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";
                echo "</FORM>";
        }
        else {
                echo "<B>"._T('avis_connexion_echec_1')."</B>";
                echo "<P>"._T('avis_connexion_echec_2');
                echo "<P><FONT SIZE=2>"._T('avis_connexion_echec_3')."</FONT>";
        }

        install_fin_html();

}
else if ($etape == 1) {
        install_debut_html();
        echo _VALIDE_CLAVIER;

        // stopper en cas de grosse incompatibilite de l'hebergement
        tester_compatibilite_hebergement();

        echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_connexion_mysql')."</FONT>";

        echo "<P>"._T('texte_connexion_mysql');

        echo aide ("install1");

        list($adresse_db, $login_db) = login_hebergeur();
        $pass_db = '';

        // Recuperer les anciennes donnees pour plus de facilite (si presentes)
        if (@file_exists(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP)) {
                $s = @join('', @file(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP));
                if (ereg("mysql_connect\([\"'](.*)[\"'],[\"'](.*)[\"'],[\"'](.*)[\"']\)", $s, $regs)) {
                        $adresse_db = $regs[1];
                        $login_db = $regs[2];
                }
                else if (ereg("spip_connect_db\('(.*)','(.*)','(.*)','(.*)','(.*)'\)", $s, $regs)) {
                        $adresse_db = $regs[1];
                        if ($port_db = $regs[2]) $adresse_db .= ':'.$port_db;
                        $login_db = $regs[3];
                }
        }

        echo "<p><FORM ACTION='install.php3' METHOD='post'>";
        echo "<INPUT TYPE='hidden' NAME='etape' VALUE='2'>";
        echo "<fieldset><label><B>"._T('entree_base_donnee_1')."</B><BR />\n</label>";
        echo _T('entree_base_donnee_2')."<BR />\n";
        echo "<INPUT TYPE='text' NAME='adresse_db' CLASS='formo' VALUE=\"$adresse_db\" SIZE='40'></fieldset><P>";

        echo "<fieldset><label><B>"._T('entree_login_connexion_1')."</B><BR />\n</label>";
        echo _T('entree_login_connexion_2')."<BR />\n";
        echo "<INPUT TYPE='text' NAME='login_db' CLASS='formo' VALUE=\"$login_db\" SIZE='40'></fieldset><P>";

        echo "<fieldset><label><B>"._T('entree_mot_passe_1')."</B><BR />\n</label>";
        echo _T('entree_mot_passe_2')."<BR />\n";
        echo "<INPUT TYPE='password' NAME='pass_db' CLASS='formo' VALUE=\"$pass_db\" SIZE='40'></fieldset><P>";

        echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";


        echo "</FORM>";

        install_fin_html();

}
else if ($etape == 'dirs') {
        header("Location: ../spip_test_dirs.php3");
}
else if (!$etape) {
        $menu_langues = menu_langues('var_lang_ecrire');

        if (!$menu_langues)
                header("Location: ../spip_test_dirs.php3");
        else {
                install_debut_html();
                echo _VALIDE_CLAVIER;

                echo "<p align='center'><img src='" . _DIR_IMG_PACK . "logo-spip.gif'></p>";
                
                echo "<p style='text-align: center; font-family: Verdana,Arial,Sans,sans-serif; font-size: 10px;'>";
                echo info_copyright();
                echo "</p>";

                echo "<p>" . _T('install_select_langue');

                echo "<p><div align='center'>".$menu_langues."</div>";

                echo "<p><FORM ACTION='install.php3' METHOD='get'>";
                echo "<INPUT TYPE='hidden' NAME='etape' VALUE='dirs'>";
                echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";
                echo "</FORM>";
                install_fin_html();
        }
}


//
// Etapes de l'installation LDAP
//

else if ($etape == 'ldap5') {
        install_debut_html();
        echo _VALIDE_CLAVIER;

        include_local(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP);
        include_ecrire('inc_meta.php3');
        ecrire_meta("ldap_statut_import", $statut_ldap);
        ecrire_metas();

        echo "<B>"._T('info_ldap_ok')."</B>";
        echo "<P>"._T('info_terminer_installation');

        echo "<FORM ACTION='install.php3' METHOD='post'>";
        echo "<INPUT TYPE='hidden' NAME='etape' VALUE='5'>";

        echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";

        echo "</FORM>";
}

else if ($etape == 'ldap4') {
        install_debut_html();
        echo _VALIDE_CLAVIER;

        if (!$base_ldap) $base_ldap = $base_ldap_text;

        $ldap_link = @ldap_connect("$adresse_ldap", "$port_ldap");
        @ldap_bind($ldap_link, "$login_ldap", "$pass_ldap");

        // Essayer de verifier le chemin fourni
        $r = @ldap_compare($ldap_link, $base_ldap, "objectClass", "");
        $fail = (ldap_errno($ldap_link) == 32);

        if ($fail) {
                echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_chemin_acces_annuaire')."</B></FONT>";
                echo "<P>";

                echo "<B>"._T('avis_operation_echec')."</B> "._T('avis_chemin_invalide_1')." (<tt>".htmlspecialchars($base_ldap);
                echo "</tt>) "._T('avis_chemin_invalide_2');
        }
        else {
                echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_reglage_ldap')."</FONT>";
                echo "<P>";

                $conn = join('', file(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP));
                if ($p = strpos($conn, '?'.'>')) 
                        $conn = substr($conn, 0, $p);
                if (!strpos($conn, 'spip_connect_ldap')) {
                        $conn .= "function spip_connect_ldap() {\n";
                        $conn .= "\t\$GLOBALS['ldap_link'] = @ldap_connect(\"$adresse_ldap\",\"$port_ldap\");\n";
                        $conn .= "\t@ldap_bind(\$GLOBALS['ldap_link'],\"$login_ldap\",\"$pass_ldap\");\n";
                        $conn .= "\treturn \$GLOBALS['ldap_link'];\n";
                        $conn .= "}\n";
                        $conn .= "\$GLOBALS['ldap_base'] = \"$base_ldap\";\n";
                        $conn .= "\$GLOBALS['ldap_present'] = true;\n";
                }
                $conn .= "?".">";
                $myFile = fopen(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP, "wb");
                fputs($myFile, $conn);
                fclose($myFile);

                echo "<p><FORM ACTION='install.php3' METHOD='post'>";
                echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap5'>";
                echo "<fieldset><label><B>"._T('info_statut_utilisateurs_1')."</B></label><BR />\n";
                echo _T('info_statut_utilisateurs_2')." ";
                echo "<p>";
                echo "<INPUT TYPE='Radio' NAME='statut_ldap' VALUE=\"6forum\" id='visit'>";
                echo "<label for='visit'><b>"._T('info_visiteur_1')."</b></label> "._T('info_visiteur_2')."<br />\n";
                echo "<INPUT TYPE='Radio' NAME='statut_ldap' VALUE=\"1comite\" id='redac' CHECKED>";
                echo "<label for='redac'><b>"._T('info_redacteur_1')."</b></label> "._T('info_redacteur_2')."<br />\n";
                echo "<INPUT TYPE='Radio' NAME='statut_ldap' VALUE=\"0minirezo\" id='admin'>";
                echo "<label for='admin'><b>"._T('info_administrateur_1')."</b></label> "._T('info_administrateur_2')."<br />\n";
        
                echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";

                echo "</FORM>";
        }

        install_fin_html();
}

else if ($etape == 'ldap3') {
        install_debut_html();
        echo _VALIDE_CLAVIER;

        echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_chemin_acces_1')."</FONT>";

        echo "<P>"._T('info_chemin_acces_2');

        $ldap_link = @ldap_connect("$adresse_ldap", "$port_ldap");
        @ldap_bind($ldap_link, "$login_ldap", "$pass_ldap");

        $result = @ldap_read($ldap_link, "", "objectclass=*", array("namingContexts"));
        $info = @ldap_get_entries($ldap_link, $result);

        echo "<FORM ACTION='install.php3' METHOD='post'>";
        echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap4'>";
        echo "<INPUT TYPE='hidden' NAME='adresse_ldap' VALUE=\"$adresse_ldap\">";
        echo "<INPUT TYPE='hidden' NAME='port_ldap' VALUE=\"$port_ldap\">";
        echo "<INPUT TYPE='hidden' NAME='login_ldap' VALUE=\"$login_ldap\">";
        echo "<INPUT TYPE='hidden' NAME='pass_ldap' VALUE=\"$pass_ldap\">";

        echo "<fieldset>";

        $checked = false;

        if (is_array($info) AND $info["count"] > 0) {
                echo "<P>"._T('info_selection_chemin_acces');
                echo "<UL>";
                $n = 0;
                for ($i = 0; $i < $info["count"]; $i++) {
                        $names = $info[$i]["namingcontexts"];
                        if (is_array($names)) {
                                for ($j = 0; $j < $names["count"]; $j++) {
                                        $n++;
                                        echo "<INPUT NAME=\"base_ldap\" VALUE=\"".htmlspecialchars($names[$j])."\" TYPE='Radio' id='tab$n'";
                                        if (!$checked) {
                                                echo " CHECKED";
                                                $checked = true;
                                        }
                                        echo ">";
                                        echo "<label for='tab$n'>".htmlspecialchars($names[$j])."</label><BR />\n\n";
                                }
                        }
                }
                echo "</UL>";
                echo _T('info_ou')." ";
        }
        echo "<INPUT NAME=\"base_ldap\" VALUE=\"\" TYPE='Radio' id='manuel'";
        if (!$checked) {
                echo " CHECKED";
                $checked = true;
        }
        echo ">";
        echo "<label for='manuel'>"._T('entree_chemin_acces')."</label> ";
        echo "<INPUT TYPE='text' NAME='base_ldap_text' CLASS='formo' VALUE=\"ou=users, dc=mon-domaine, dc=com\" SIZE='40'></fieldset><P>";

        echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";
        echo "</FORM>";

        install_fin_html();

}

else if ($etape == 'ldap2') {
        install_debut_html();
        echo _VALIDE_CLAVIER;

        echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('titre_connexion_ldap')."</FONT>";

        echo "<P>";

        $ldap_link = @ldap_connect("$adresse_ldap", "$port_ldap");
        $r = @ldap_bind($ldap_link, "$login_ldap", "$pass_ldap");

        if ($ldap_link && ($r || !$login_ldap)) {
                echo "<B>"._T('info_connexion_ldap_ok');

                echo "<FORM ACTION='install.php3' METHOD='post'>";
                echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap3'>";
                echo "<INPUT TYPE='hidden' NAME='adresse_ldap' VALUE=\"$adresse_ldap\">";
                echo "<INPUT TYPE='hidden' NAME='port_ldap' VALUE=\"$port_ldap\">";
                echo "<INPUT TYPE='hidden' NAME='login_ldap' VALUE=\"$login_ldap\">";
                echo "<INPUT TYPE='hidden' NAME='pass_ldap' VALUE=\"$pass_ldap\">";

                echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";
                echo "</FORM>";
        }
        else {
                echo "<B>"._T('avis_connexion_ldap_echec_1')."</B>";
                echo "<P>"._T('avis_connexion_ldap_echec_2');
                echo "<br />\n"._T('avis_connexion_ldap_echec_3');
        }

        install_fin_html();

}

else if ($etape == 'ldap1') {
        install_debut_html();
        echo _VALIDE_CLAVIER;

        echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('titre_connexion_ldap')."</FONT>";

        echo "<P>"._T('entree_informations_connexion_ldap');

        $adresse_ldap = 'localhost';
        $port_ldap = 389;

        // Recuperer les anciennes donnees (si presentes)
        if (@file_exists(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP)) {
                $s = @join('', @file(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP));
                if (ereg('ldap_connect\("(.*)","(.*)"\)', $s, $regs)) {
                        $adresse_ldap = $regs[1];
                        $port_ldap = $regs[2];
                }
        }

        echo "<p><FORM ACTION='install.php3' METHOD='post'>";
        echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap2'>";
        echo "<fieldset><label><B>"._T('entree_adresse_annuaire')."</B><BR />\n</label>";
        echo _T('texte_adresse_annuaire_1')."<BR />\n";
        echo "<INPUT TYPE='text' NAME='adresse_ldap' CLASS='formo' VALUE=\"$adresse_ldap\" SIZE='20'><P>";

        echo "<label><B>"._T('entree_port_annuaire')."</B><BR />\n</label>";
        echo _T('texte_port_annuaire')."<BR />\n";
        echo "<INPUT TYPE='text' NAME='port_ldap' CLASS='formo' VALUE=\"$port_ldap\" SIZE='20'><P></fieldset>";

        echo "<p><fieldset>";
        echo _T('texte_acces_ldap_anonyme_1')." ";
        echo "<label><B>"._T('entree_login_ldap')."</B><BR />\n</label>";
        echo _T('texte_login_ldap_1')."<br />\n";
        echo "<INPUT TYPE='text' NAME='login_ldap' CLASS='formo' VALUE=\"\" SIZE='40'><P>";

        echo "<label><B>"._T('entree_passe_ldap')."</B><BR />\n</label>";
        echo "<INPUT TYPE='password' NAME='pass_ldap' CLASS='formo' VALUE=\"\" SIZE='40'></fieldset>";

        echo "<p><DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl'  VALUE='"._T('bouton_suivant')." >>'>";

        echo "</FORM>";

        install_fin_html();

}


?>