X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fecrire%2Finstall%2Fetape_3.php;fp=www%2Fecrire%2Finstall%2Fetape_3.php;h=a115cfd4c2c024fabed197057d8f44165835c24f;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=947c1bce90911793b01ac770c058675d4593d7d0;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/ecrire/install/etape_3.php b/www/ecrire/install/etape_3.php index 947c1bce..a115cfd4 100644 --- a/www/ecrire/install/etape_3.php +++ b/www/ecrire/install/etape_3.php @@ -3,21 +3,22 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2016 * + * Copyright (c) 2001-2017 * * 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_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} include_spip('inc/headers'); include_spip('base/abstract_sql'); -// http://doc.spip.org/@install_bases -function install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db){ - global $spip_version_base; +// http://code.spip.net/@install_bases +function install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db) { // Prefix des tables : // contrairement a ce qui est dit dans le message (trop strict mais c'est @@ -26,30 +27,43 @@ function install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, // a partir de ce qui est envoye a l'installation if (!defined('_INSTALL_TABLE_PREFIX')) { $table_prefix = ($GLOBALS['table_prefix'] != 'spip') - ? $GLOBALS['table_prefix'] - : trim(preg_replace(',[^a-z0-9],','',strtolower(_request('tprefix')))); + ? $GLOBALS['table_prefix'] + : trim(preg_replace(',[^a-z0-9],', '', strtolower(_request('tprefix')))); // S'il est vide on remet spip - if (!$table_prefix) + if (!$table_prefix) { $table_prefix = 'spip'; + } } else { $table_prefix = _INSTALL_TABLE_PREFIX; } + if (preg_match(',(.*):(.*),', $adresse_db, $r)) { + list(, $adresse_db, $port) = $r; + } else { + $port = ''; + } + $GLOBALS['connexions'][$server_db] - = spip_connect_db($adresse_db, 0, $login_db, $pass_db, '', $server_db); + = spip_connect_db($adresse_db, $port, $login_db, $pass_db, '', $server_db); $GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']] - = $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']]; + = $GLOBALS['spip_' . $server_db . '_functions_' . $GLOBALS['spip_sql_version']]; $fquery = sql_serveur('query', $server_db); - if ($choix_db == "new_spip") { + if ($choix_db == 'new_spip') { $re = ',^[a-z_][a-z_0-9-]*$,i'; - if (preg_match($re, $sel_db)) - sql_create_base($sel_db, $server_db); - else { - $re = "Le nom de la base doit correspondre a $re"; - spip_log($re); - return "

"._T("avis_connexion_erreur_nom_base")."

"; + if (preg_match($re, $sel_db)) { + $ok = sql_create_base($sel_db, $server_db); + if (!$ok) { + $re = "Impossible de creer la base $re"; + spip_log($re); + return '

' . _T('avis_connexion_erreur_creer_base') . "

"; + } + } else { + $re = "Le nom de la base doit correspondre a $re"; + spip_log($re); + + return '

' . _T('avis_connexion_erreur_nom_base') . "

"; } } @@ -57,35 +71,36 @@ function install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, // 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); + = spip_connect_db($adresse_db, $port, $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']]; + = $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); + $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'] = + $GLOBALS['meta']['charset_sql_base'] = $charset['charset']; - $GLOBALS['meta']['charset_collation_sql_base'] = + $GLOBALS['meta']['charset_collation_sql_base'] = $charset['collation']; - $GLOBALS['meta']['charset_sql_connexion'] = + $GLOBALS['meta']['charset_sql_connexion'] = $charset['charset']; $charsetbase = $charset['charset']; } else { - spip_log(_DEFAULT_CHARSET . " inconnu du serveur SQL"); + spip_log(_DEFAULT_CHARSET . ' inconnu du serveur SQL'); $charsetbase = 'standard'; } spip_log("Creation des tables. Codage $charsetbase"); @@ -93,9 +108,11 @@ function install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, // memoriser avec quel charset on l'a creee if ($charset) { - $t = array('nom' => 'charset_sql_base', - 'valeur' => $charset['charset'], - 'impt' => 'non'); + $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']; @@ -104,219 +121,262 @@ function install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $t['valeur'] = $charset['charset']; @sql_insertq('spip_meta', $t, '', $server_db); } - $t = array('nom' => 'version_installee', - 'valeur' => $spip_version_base, - 'impt' => 'non'); + $t = array( + 'nom' => 'version_installee', + 'valeur' => $GLOBALS['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); + 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 ($GLOBALS['spip_version_base'] < $version_installee)) { + $fupdateq( + 'spip_meta', + array('valeur' => $GLOBALS['spip_version_base'], 'impt' => 'non'), + "nom='version_installee'", + '', + $server_db + ); + spip_log('nouvelle version installee: ' . $GLOBALS['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); + } - // 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); + // recuperer le charset de la connexion dans les meta + $charset = ''; + $r = $fquery("SELECT valeur FROM spip_meta WHERE nom='charset_sql_connexion'", $server_db); + if ($r) { + $r = sql_fetch($r, $server_db); + } + if ($r) { + $charset = $r['valeur']; } $ligne_rappel = install_mode_appel($server_db); - $result_ok = @$fquery("SELECT COUNT(*) FROM spip_meta", $server_db); - if (!$result_ok) return ""; + $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"); + 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)) + 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, + '', + $charset + ) + ); - 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() -{ +// http://code.spip.net/@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')) - ))); + 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, $auteur_obligatoire) -{ - return info_progression_etape(3,'etape_','install/') . - info_etape(_T('info_informations_personnelles'), - - ""._T('texte_informations_personnelles_1')."" . - aide ("install5", true) . - "

" . - ($auteur_obligatoire? - '' - : - _T('texte_informations_personnelles_2') . " " . _T('info_laisser_champs_vides') - )) +// http://code.spip.net/@install_premier_auteur +function install_premier_auteur($email, $login, $nom, $pass, $hidden, $auteur_obligatoire) { + return info_progression_etape(3, 'etape_', 'install/') . + info_etape( + _T('info_informations_personnelles'), + '' . _T('texte_informations_personnelles_1') . '' . + aider('install5', true) . + '

' . + ($auteur_obligatoire ? + '' + : + _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, - 'required' => $auteur_obligatoire, - ), - '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_login_trop_court_car_pluriel', array('nb' => _LOGIN_TROP_COURT))."\n", - 'valeur' => $login, - 'required' => $auteur_obligatoire, - ), - 'pass' => array( - 'label' => ""._T('entree_mot_passe')."
\n"._T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI))."\n", - 'valeur' => $pass, - 'required' => $auteur_obligatoire, - ), - 'pass_verif' => array( - 'label' => ""._T('info_confirmer_passe')."
\n", - 'valeur' => $pass, - 'required' => $auteur_obligatoire, - ) - ) - ) - . bouton_suivant())); + "\n" + . $hidden + . fieldset( + _T('info_identification_publique'), + array( + 'nom' => array( + 'label' => '' . _T('entree_signature') . "
\n" . _T('entree_nom_pseudo_1') . "\n", + 'valeur' => $nom, + 'required' => $auteur_obligatoire, + ), + '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_login_trop_court_car_pluriel', + array('nb' => _LOGIN_TROP_COURT) + ) . "\n", + 'valeur' => $login, + 'required' => $auteur_obligatoire, + ), + 'pass' => array( + 'label' => '' . _T('entree_mot_passe') . "
\n" . _T( + 'info_passe_trop_court_car_pluriel', + array('nb' => _PASS_LONGUEUR_MINI) + ) . "\n", + 'valeur' => $pass, + 'required' => $auteur_obligatoire, + ), + 'pass_verif' => array( + 'label' => '' . _T('info_confirmer_passe') . "
\n", + 'valeur' => $pass, + 'required' => $auteur_obligatoire, + ) + ) + ) + . bouton_suivant())); } -// http://doc.spip.org/@install_etape_3_dist -function install_etape_3_dist() -{ +// http://code.spip.net/@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'); + ? _INSTALL_HOST_DB + : _request('adresse_db'); $login_db = defined('_INSTALL_USER_DB') - ? _INSTALL_USER_DB - : _request('login_db'); + ? _INSTALL_USER_DB + : _request('login_db'); $pass_db = defined('_INSTALL_PASS_DB') - ? _INSTALL_PASS_DB - : _request('pass_db'); + ? _INSTALL_PASS_DB + : _request('pass_db'); $server_db = defined('_INSTALL_SERVER_DB') - ? _INSTALL_SERVER_DB - : _request('server_db'); + ? _INSTALL_SERVER_DB + : _request('server_db'); $chmod_db = defined('_SPIP_CHMOD') - ? _SPIP_CHMOD - : _request('chmod'); + ? _SPIP_CHMOD + : _request('chmod'); $choix_db = defined('_INSTALL_NAME_DB') - ? _INSTALL_NAME_DB - : _request('choix_db'); + ? _INSTALL_NAME_DB + : _request('choix_db'); - $sel_db = ($choix_db == "new_spip") - ? _request('table_new') : $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); + $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) - . "

"._T('avis_operation_echec')."

" - . $res - . "

"._T('texte_operation_echec')."

" - . "
"; + $res = info_progression_etape(2, 'etape_', 'install/', true) + . "

" . _T('avis_operation_echec') . '

' + . $res + . '

' . _T('texte_operation_echec') . '

' + . '
'; } - - } else { + } else { $res = ''; list($adresse_db, $login_db, $pass_db, $sel_db, $server_db) = analyse_fichier_connection(_FILE_CONNECT_TMP); $GLOBALS['connexions'][$server_db] = spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db); } if (!$res) { - if (file_exists(_FILE_CONNECT_TMP)) + if (file_exists(_FILE_CONNECT_TMP)) { include(_FILE_CONNECT_TMP); - else + } else { redirige_url_ecrire('install'); - - if (file_exists(_FILE_CHMOD_TMP)) + } + + if (file_exists(_FILE_CHMOD_TMP)) { include(_FILE_CHMOD_TMP); - else + } else { redirige_url_ecrire('install'); + } $hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db) - . (defined('_INSTALL_NAME_DB') ? '' - : "\n"); - - $auteur_obligatoire = ($ldap_present?0:!sql_countsel('spip_auteurs','','','',$server_db)); - - $res = "
" - . _T('info_base_installee') - . "
" - . install_premier_auteur(_request('email'), - _request('login'), - _request('nom'), - _request('pass'), - $hidden, $auteur_obligatoire) - . (($ldap_present OR !function_exists('ldap_connect')) - ? '' : install_propose_ldap()); + . (defined('_INSTALL_NAME_DB') ? '' + : "\n"); + + $auteur_obligatoire = ($ldap_present ? 0 : !sql_countsel('spip_auteurs', '', '', '', $server_db)); + + $res = "
" + . _T('info_base_installee') + . '
' + . install_premier_auteur( + _request('email'), + _request('login'), + _request('nom'), + _request('pass'), + $hidden, + $auteur_obligatoire + ) + . (($ldap_present or !function_exists('ldap_connect')) + ? '' : install_propose_ldap()); } echo install_debut_html(); echo $res; echo install_fin_html(); } - -?>