diff --git a/ecrire/exec/upgrade.php b/ecrire/exec/upgrade.php index ad2229d982275b87d634aec065e1853322d8ecbc..d3e40213538b5c9bb70f93826414b2c22aeeb371 100644 --- a/ecrire/exec/upgrade.php +++ b/ecrire/exec/upgrade.php @@ -24,16 +24,17 @@ function exec_upgrade_dist() { // Si reinstallation necessaire, message ad hoc if (_request('reinstall') == 'oui') { - - @copy(_FILE_CONNECT, _FILE_CONNECT_INS); - - echo minipres(_T('titre_page_upgrade'), + include_spip('inc/minipres'); + $r = minipres(_T('titre_page_upgrade'), "<p><b>" . _T('texte_nouvelle_version_spip_1') . "</b><p> " . _T('texte_nouvelle_version_spip_2', array('connect' => '<tt>' . _FILE_CONNECT . '</tt>')) . generer_form_ecrire('upgrade', "<input type='hidden' name='reinstall' value='non' />",'', _T('bouton_relancer_installation'))); + echo $r; + + @rename(_FILE_CONNECT, _FILE_CONNECT_TMP); exit; } diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 9750ea42c6cd36b0513feadaa2946f18e954bd93..de04cde98916004da33fc87df1bf0a40fd827ce5 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -246,11 +246,9 @@ function spip_connect($serveur='') { $install = (_request('exec') == 'install'); $f = (!preg_match('/^\w*$/', $serveur)) ? '' - : (($serveur AND !$install) ? - (_FILE_CONNECT_INS . $serveur . '.php') - : (_FILE_CONNECT ? _FILE_CONNECT - : ($install ? (_FILE_CONNECT_INS . '.php') - : ''))); + : (($serveur AND !$install) ? + ( _DIR_ETC . _FILE_CONNECT_INS . $serveur . '.php') + : (_FILE_CONNECT ? _FILE_CONNECT : _FILE_CONNECT_TMP)); unset($GLOBALS['db_ok']); unset($GLOBALS['spip_connect_version']); @@ -268,6 +266,7 @@ function spip_connect($serveur='') { // initialisation de l'alphabet utilise dans les connexions SQL // si l'installation l'a determine. // Celui du serveur principal l'impose aux serveurs secondaires + // s'ils le connaissent if (!$serveur) { $charset = spip_connect_main($GLOBALS['db_ok']); @@ -282,7 +281,8 @@ function spip_connect($serveur='') { } if ($charset != -1) { $f = $GLOBALS['db_ok']['set_charset']; - $f($charset, $serveur); + if (function_exists($f)) + $f($charset, $serveur); } return $connexions[$index]; } @@ -1196,19 +1196,24 @@ function spip_initialisation($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) { $GLOBALS['test_dirs'] = array($pa, $ti, $ta); // Le fichier de connexion a la base de donnees - define('_FILE_CONNECT_INS', _DIR_ETC . 'connect'); + // tient compte des anciennes versions (inc_connect...) + define('_FILE_CONNECT_INS', 'connect'); define('_FILE_CONNECT', - (@is_readable($f = _FILE_CONNECT_INS . '.php') ? $f + (@is_readable($f = _DIR_ETC . _FILE_CONNECT_INS . '.php') ? $f : (@is_readable($f = _DIR_RESTREINT . 'inc_connect.php') ? $f : (@is_readable($f = _DIR_RESTREINT . 'inc_connect.php3') ? $f : false)))); // Le fichier de reglages des droits - define('_FILE_CHMOD_INS', _DIR_ETC . 'chmod'); + define('_FILE_CHMOD_INS', 'chmod'); define('_FILE_CHMOD', - (@is_readable($f = _FILE_CHMOD_INS . '.php') ? $f + (@is_readable($f = _DIR_ETC . _FILE_CHMOD_INS . '.php') ? $f : false)); + define('_FILE_TMP_SUFFIX', '.tmp.php'); + define('_FILE_CONNECT_TMP', _DIR_ETC . _FILE_CONNECT_INS . _FILE_TMP_SUFFIX); + define('_FILE_CHMOD_TMP', _DIR_ETC . _FILE_CHMOD_INS . _FILE_TMP_SUFFIX); + // Definition des droits d'acces en ecriture if (!defined('_SPIP_CHMOD')) { if(_FILE_CHMOD) diff --git a/ecrire/install/etape_1.php b/ecrire/install/etape_1.php index 2453d89ca6d6791561893c4261de03c067137f4e..2e835980e54fe8ed56843a1c731c3d268c213093 100644 --- a/ecrire/install/etape_1.php +++ b/ecrire/install/etape_1.php @@ -24,8 +24,8 @@ function install_etape_1_dist() $chmod = (isset($_GET['chmod']) AND preg_match(',^[0-9]+$,', $_GET['chmod']))? sprintf('%04o', $_GET['chmod']):'0777'; // Recuperer les anciennes donnees pour plus de facilite (si presentes) - if (@file_exists(_FILE_CONNECT_INS . _FILE_TMP . '.php')) { - $s = @join('', @file(_FILE_CONNECT_INS . _FILE_TMP . '.php')); + if (@file_exists(_FILE_CONNECT_TMP)) { + $s = @join('', @file(_FILE_CONNECT_TMP)); if (preg_match("#mysql_connect\([\"'](.*)[\"'],[\"'](.*)[\"'],[\"'](.*)[\"']\)#", $s, $regs)) { $adresse_db = $regs[1]; $login_db = $regs[2]; @@ -36,8 +36,8 @@ function install_etape_1_dist() $login_db = $regs[3]; } } - if(@file_exists(_FILE_CHMOD_INS . _FILE_TMP . '.php')){ - $s = @join('', @file(_FILE_CHMOD_INS . _FILE_TMP . '.php')); + if(@file_exists(_FILE_CHMOD_TMP)){ + $s = @join('', @file(_FILE_CHMOD_TMP)); if(preg_match("#define\('_SPIP_CHMOD', (.*)\)#", $s, $regs)) { $chmod = $regs[1]; } diff --git a/ecrire/install/etape_3.php b/ecrire/install/etape_3.php index cdb54b18504759a1f7f8019e729ca4e21e4067bf..cbd173f6541f7fa8ed741ed331e7d9964a579566 100644 --- a/ecrire/install/etape_3.php +++ b/ecrire/install/etape_3.php @@ -123,7 +123,8 @@ function install_bases(){ WHERE nom='version_installee'", $server_db); // 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); } + @$fquery("DELETE FROM spip_meta WHERE nom='import_all' OR nom='admin'", $server_db); + } $ligne_rappel = ($server_db != 'mysql') ? '' : test_rappel_nom_base_mysql($server_db); @@ -132,7 +133,7 @@ function install_bases(){ if (!$result_ok) return "<!--\n$nouvelle $ligne_rappel\n-->"; if($chmod) { - install_fichier_connexion(_FILE_CHMOD_INS . _FILE_TMP . '.php', "@define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod).");\n"); + install_fichier_connexion(_FILE_CHMOD_TMP, "@define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod).");\n"); } if (preg_match(',(.*):(.*),', $adresse_db, $r)) @@ -147,7 +148,7 @@ function install_bases(){ . addcslashes($pass_db, "'\\") . "','$sel_db'" . ",'$server_db', '$table_prefix');\n"; - install_fichier_connexion(_FILE_CONNECT_INS . _FILE_TMP . '.php', $conn); + install_fichier_connexion(_FILE_CONNECT_TMP, $conn); return ''; } @@ -224,13 +225,13 @@ function install_etape_3_dist() $res .= "<p class='resultat'><b>"._T('avis_operation_echec')."</b></p>"._T('texte_operation_echec'); else { - if (file_exists(_FILE_CONNECT_INS . _FILE_TMP . '.php')) - include(_FILE_CONNECT_INS . _FILE_TMP . '.php'); + if (file_exists(_FILE_CONNECT_TMP)) + include(_FILE_CONNECT_TMP); else redirige_par_entete(generer_url_ecrire('install')); - if (file_exists(_FILE_CHMOD_INS . _FILE_TMP . '.php')) - include(_FILE_CHMOD_INS . _FILE_TMP . '.php'); + if (file_exists(_FILE_CHMOD_TMP)) + include(_FILE_CHMOD_TMP); else redirige_par_entete(generer_url_ecrire('install')); @@ -255,7 +256,8 @@ function install_etape_3_dist() function test_rappel_nom_base_mysql($server_db) { $GLOBALS['mysql_rappel_nom_base'] = true; - $ok = sql_insert('spip_meta', "(nom,valeur)", "('mysql_rappel_nom_base', 'test')", array(), $server_db); + sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db); + $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db); if ($ok) { sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db); diff --git a/ecrire/install/etape_4.php b/ecrire/install/etape_4.php index a1184396612c0909896f436465946486888d2a89..42e69a99ba9fe884ce2908f21c95908c17722c51 100644 --- a/ecrire/install/etape_4.php +++ b/ecrire/install/etape_4.php @@ -36,23 +36,14 @@ function install_etape_4_dist() exit; } - if (@file_exists(_FILE_CHMOD_INS . _FILE_TMP . '.php')) - include(_FILE_CHMOD_INS . _FILE_TMP . '.php'); + if (@file_exists(_FILE_CHMOD_TMP)) + include(_FILE_CHMOD_TMP); else redirige_par_entete(generer_url_ecrire('install')); - if (!@file_exists(_FILE_CONNECT_INS . _FILE_TMP . '.php')) + if (!@file_exists(_FILE_CONNECT_TMP)) redirige_par_entete(generer_url_ecrire('install')); - // Avec ce qui suit, spip_connect et consorts vont marcher. - - if (!@rename(_FILE_CONNECT_INS . _FILE_TMP . '.php', - _DIR_ETC . 'connect.php')) { - copy(_FILE_CONNECT_INS . _FILE_TMP . '.php', - _DIR_ETC . 'connect.php'); - spip_unlink(_FILE_CONNECT_INS . _FILE_TMP . '.php'); - } - echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_etape(_T('info_derniere_etape'), @@ -110,17 +101,25 @@ function install_etape_4_dist() spip_unlink($htpasswd."-admin"); ecrire_acces(); - if (!@rename(_FILE_CHMOD_INS . _FILE_TMP . '.php', - _DIR_ETC . 'chmod.php')) { - copy(_FILE_CHMOD_INS . _FILE_TMP . '.php', - _DIR_ETC . 'chmod.php'); - spip_unlink(_FILE_CHMOD_INS . _FILE_TMP . '.php'); - } - - // et on l'envoie dans l'espace prive + // on l'envoie dans l'espace prive echo generer_form_ecrire('accueil', bouton_suivant()); echo info_progression_etape(4,'etape_','install/'); echo install_fin_html(); + + // et on perennise + + $f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CHMOD_TMP); + if (!@rename(_FILE_CHMOD_TMP, $f)) { + if (@copy(_FILE_CHMOD_TMP, $f)) + spip_unlink(_FILE_CHMOD_TMP); + } + + $f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CONNECT_TMP); + if (!@rename(_FILE_CONNECT_TMP, $f)) { + if (@copy(_FILE_CONNECT_TMP, $f)) + @spip_unlink(_FILE_CONNECT_TMP); + } + } ?> diff --git a/ecrire/install/etape_chmod.php b/ecrire/install/etape_chmod.php index 44a7479a82bd2211b91d63fb5336cf45aa0ac972..86ce36384d7bbab819025fb9415c818d0a321d6f 100644 --- a/ecrire/install/etape_chmod.php +++ b/ecrire/install/etape_chmod.php @@ -68,7 +68,7 @@ function test_ecrire($my_dir) { // // tester les droits en ecriture sur les repertoires -// rajouter celui passer dans l'url ou celui du source (a l'installation) +// rajouter celui passe dans l'url ou celui du source (a l'installation) // function install_etape_chmod_dist() @@ -82,7 +82,7 @@ function install_etape_chmod_dist() if (!in_array($test_dir, $test_dirs)) $test_dirs[] = _DIR_RACINE . $test_dir; } else { if (!_FILE_CONNECT) - $test_dirs[] = dirname(_FILE_CONNECT_INS).'/'; + $test_dirs[] = _DIR_ETC; } $bad_dirs = array(); diff --git a/ecrire/install/etape_ldap4.php b/ecrire/install/etape_ldap4.php index 387c22826eb421b93f48d9cd346c15125dde6b21..74029bc09079a259e0a41b12b495678ac6683eca 100644 --- a/ecrire/install/etape_ldap4.php +++ b/ecrire/install/etape_ldap4.php @@ -41,7 +41,7 @@ function install_etape_ldap4_dist() else { info_etape(_T('info_reglage_ldap')); - lire_fichier(_FILE_CONNECT_INS . _FILE_TMP . '.php', $conn); + lire_fichier(_FILE_CONNECT_TMP, $conn); if ($p = strpos($conn, '?'.'>')) $conn = substr($conn, 0, $p); if (!strpos($conn, 'spip_connect_ldap')) { @@ -59,7 +59,7 @@ function install_etape_ldap4_dist() $conn .= "\$GLOBALS['ldap_present'] = true;\n"; } $conn .= "?".">"; - ecrire_fichier(_FILE_CONNECT_INS . _FILE_TMP . '.php', $conn); + ecrire_fichier(_FILE_CONNECT_TMP, $conn); $statuts = liste_statuts_ldap(); $statut_ldap = defined('_INSTALL_STATUT_LDAP') ? _INSTALL_STATUT_LDAP diff --git a/ecrire/install/etape_ldap5.php b/ecrire/install/etape_ldap5.php index 6d9e6becec0954ec2ab42eb3b9b1b08ccb318f9e..c686191d7fb8994439faf642bf1ad08720b7c720 100644 --- a/ecrire/install/etape_ldap5.php +++ b/ecrire/install/etape_ldap5.php @@ -18,8 +18,8 @@ function install_etape_ldap5_dist() { // _FILE_CONNECT n'existe pas encore - if (@file_exists(_FILE_CONNECT_INS . _FILE_TMP . '.php')) - include(_FILE_CONNECT_INS . _FILE_TMP . '.php'); + if (@file_exists(_FILE_CONNECT_TMP)) + include(_FILE_CONNECT_TMP); else redirige_par_entete(generer_url_ecrire('install'));