X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Finstall%2Fetape_3.php;fp=www%2Fecrire%2Finstall%2Fetape_3.php;h=453beac1b3f580901960a8213fd2eca07e493d9d;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/install/etape_3.php b/www/ecrire/install/etape_3.php new file mode 100644 index 0000000..453beac --- /dev/null +++ b/www/ecrire/install/etape_3.php @@ -0,0 +1,312 @@ +"; + } + } + + // on rejoue la connexion apres avoir teste si il faut lui indiquer + // un sql_mode + install_mode_appel($server_db, false); + $GLOBALS['connexions'][$server_db] + = spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db); + + $GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']] + = $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']]; + + // Completer le tableau decrivant la connexion + + $GLOBALS['connexions'][$server_db]['prefixe'] = $table_prefix; + $GLOBALS['connexions'][$server_db]['db'] = $sel_db; + + $old = sql_showbase($table_prefix . "_meta", $server_db); + if ($old) $old = sql_fetch($old, $server_db); + if (!$old) { + + // Si possible, demander au serveur d'envoyer les textes + // dans le codage std de SPIP, + $charset = sql_get_charset(_DEFAULT_CHARSET, $server_db); + + if ($charset) { + sql_set_charset($charset['charset'], $server_db); + $GLOBALS['meta']['charset_sql_base'] = + $charset['charset']; + $GLOBALS['meta']['charset_collation_sql_base'] = + $charset['collation']; + $GLOBALS['meta']['charset_sql_connexion'] = + $charset['charset']; + $charsetbase = $charset['charset']; + } else { + spip_log(_DEFAULT_CHARSET . " inconnu du serveur SQL"); + $charsetbase = 'standard'; + } + spip_log("Creation des tables. Codage $charsetbase"); + creer_base($server_db); // AT LAST + creer_base_types_doc($server_db); + // memoriser avec quel charset on l'a creee + + if ($charset) { + $t = array('nom' => 'charset_sql_base', + 'valeur' => $charset['charset'], + 'impt' => 'non'); + @sql_insertq('spip_meta', $t, '', $server_db); + $t['nom'] = 'charset_collation_sql_base'; + $t['valeur'] = $charset['collation']; + @sql_insertq('spip_meta', $t, '', $server_db); + $t['nom'] = 'charset_sql_connexion'; + $t['valeur'] = $charset['charset']; + @sql_insertq('spip_meta', $t, '', $server_db); + } + $t = array('nom' => 'version_installee', + 'valeur' => $spip_version_base, + 'impt' => 'non'); + @sql_insertq('spip_meta', $t, '', $server_db); + $t['nom'] = 'nouvelle_install'; + $t['valeur'] = 1; + @sql_insertq('spip_meta', $t, '', $server_db); + // positionner la langue par defaut du site si un cookie de lang a ete mis + if (isset($_COOKIE['spip_lang_ecrire'])){ + @sql_insertq('spip_meta', array('nom'=>'langue_site','valeur'=>$_COOKIE['spip_lang_ecrire']), '', $server_db); + } + } else { + + // pour recreer les tables disparues au besoin + spip_log("Table des Meta deja la. Verification des autres."); + creer_base($server_db); + $fupdateq = sql_serveur('updateq', $server_db); + + $r = $fquery("SELECT valeur FROM spip_meta WHERE nom='version_installee'", $server_db); + + if ($r) $r = sql_fetch($r, $server_db); + $version_installee = !$r ? 0 : (double) $r['valeur']; + if (!$version_installee OR ($spip_version_base < $version_installee)) { + $fupdateq('spip_meta', array('valeur'=>$spip_version_base, 'impt'=>'non'), "nom='version_installee'", $server_db); + spip_log("nouvelle version installee: $spip_version_base"); + } + // eliminer la derniere operation d'admin mal terminee + // notamment la mise a jour + @$fquery("DELETE FROM spip_meta WHERE nom='import_all' OR nom='admin'", $server_db); + } + + $ligne_rappel = install_mode_appel($server_db); + + $result_ok = @$fquery("SELECT COUNT(*) FROM spip_meta", $server_db); + if (!$result_ok) return ""; + + if ($chmod_db) { + install_fichier_connexion(_FILE_CHMOD_TMP, "if (!defined('_SPIP_CHMOD')) define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod_db).");\n"); + } + + if (preg_match(',(.*):(.*),', $adresse_db, $r)) + list(,$adresse_db, $port) = $r; + else $port = ''; + + // si ce fichier existe a cette etape c'est qu'il provient + // d'une installation qui ne l'a pas cree correctement. + // Le supprimer pour que _FILE_CONNECT_TMP prime. + + if (_FILE_CONNECT AND file_exists(_FILE_CONNECT)) + spip_unlink(_FILE_CONNECT); + + install_fichier_connexion(_FILE_CONNECT_TMP, + $ligne_rappel + . install_connexion($adresse_db, + $port, + $login_db, + $pass_db, + $sel_db, + $server_db, + $table_prefix)); + return ''; +} + +// http://doc.spip.org/@install_propose_ldap +function install_propose_ldap() +{ + return generer_form_ecrire('install', ( + fieldset(_T('info_authentification_externe'), + array( + 'etape' => array( + 'label' => _T('texte_annuaire_ldap_1'), + 'valeur' => 'ldap1', + 'hidden' => true + )), + bouton_suivant(_T('bouton_acces_ldap')) + ))); +} + + +// http://doc.spip.org/@install_premier_auteur +function install_premier_auteur($email, $login, $nom, $pass, $hidden) +{ + return info_progression_etape(3,'etape_','install/') . + info_etape(_T('info_informations_personnelles'), + + ""._T('texte_informations_personnelles_1')."" . + aide ("install5") . + "

" . + _T('texte_informations_personnelles_2') . " " . + _T('info_laisser_champs_vides') + ) + . generer_form_ecrire('install', ( + "\n" + . $hidden + . fieldset(_T('info_identification_publique'), + array( + 'nom' => array( + 'label' => ""._T('entree_signature')."
\n"._T('entree_nom_pseudo_1')."\n", + 'valeur' => $nom + ), + 'email' => array( + 'label' => ""._T('entree_adresse_email')."\n", + 'valeur' => $email + ) + ) + ) + + . fieldset(_T('entree_identifiants_connexion'), + array( + 'login' => array( + 'label' => ""._T('entree_login')."
\n"._T('info_plus_trois_car')."\n", + 'valeur' => $login + ), + 'pass' => array( + 'label' => ""._T('entree_mot_passe')."
\n"._T('info_plus_cinq_car_2')."\n", + 'valeur' => $pass + ), + 'pass_verif' => array( + 'label' => ""._T('info_confirmer_passe')."
\n", + 'valeur' => $pass + ) + ) + ) + . bouton_suivant())); +} + +// http://doc.spip.org/@install_etape_3_dist +function install_etape_3_dist() +{ + $ldap_present = _request('ldap_present'); + + if (!$ldap_present) { + $adresse_db = defined('_INSTALL_HOST_DB') + ? _INSTALL_HOST_DB + : _request('adresse_db'); + + $login_db = defined('_INSTALL_USER_DB') + ? _INSTALL_USER_DB + : _request('login_db'); + + $pass_db = defined('_INSTALL_PASS_DB') + ? _INSTALL_PASS_DB + : _request('pass_db'); + + $server_db = defined('_INSTALL_SERVER_DB') + ? _INSTALL_SERVER_DB + : _request('server_db'); + + $chmod_db = defined('_SPIP_CHMOD') + ? _SPIP_CHMOD + : _request('chmod'); + + $choix_db = defined('_INSTALL_NAME_DB') + ? _INSTALL_NAME_DB + : _request('choix_db'); + + $sel_db = ($choix_db == "new_spip") + ? _request('table_new') : $choix_db; + + $res = install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db); + + if ($res) { + $res .= info_progression_etape(2,'etape_','install/', true); + + $res .= "

"._T('avis_operation_echec')."

"._T('texte_operation_echec'); + } + + } else { + $res = ''; + list($adresse_db, $login_db, $pass_db, $sel_db, $server_db) + = analyse_fichier_connection(_FILE_CONNECT_TMP); + } + + if (!$res) { + if (file_exists(_FILE_CONNECT_TMP)) + include(_FILE_CONNECT_TMP); + else + redirige_url_ecrire('install'); + + if (file_exists(_FILE_CHMOD_TMP)) + include(_FILE_CHMOD_TMP); + else + redirige_url_ecrire('install'); + + $hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db) + . (defined('_INSTALL_NAME_DB') ? '' + : "\n"); + $res = "

" + . _T('info_base_installee') + . "

" + . install_premier_auteur(_request('email'), + _request('login'), + _request('nom'), + _request('pass'), + $hidden) + . (($ldap_present OR !function_exists('ldap_connect')) + ? '' : install_propose_ldap()); + } + + echo install_debut_html(); + echo $res; + echo install_fin_html(); +} + +?>