From 3fbb991b01b3e4eb8e2a457219d57d6ec9a9d5bd Mon Sep 17 00:00:00 2001 From: Antoine Pitrou <pitrou@free.fr> Date: Mon, 7 Oct 2002 22:10:44 +0000 Subject: [PATCH] Modifs "inc_mysql" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + correction bug articles du jour anti-datés --- ecrire/inc.php3 | 2 +- ecrire/{inc_mysql.php3 => inc_db_mysql.php3} | 58 ++++++++++++++------ ecrire/inc_version.php3 | 35 ++++++++---- ecrire/install.php3 | 48 +++++++++------- ecrire/upgrade.php3 | 36 +++++++++++- inc-cache.php3 | 4 +- inc-stats.php3 | 2 +- 7 files changed, 128 insertions(+), 57 deletions(-) rename ecrire/{inc_mysql.php3 => inc_db_mysql.php3} (80%) diff --git a/ecrire/inc.php3 b/ecrire/inc.php3 index 4c6c332750..ce62fb9977 100644 --- a/ecrire/inc.php3 +++ b/ecrire/inc.php3 @@ -376,7 +376,7 @@ function calculer_rubriques_publiques() { $query = "SELECT DISTINCT id_rubrique FROM spip_articles WHERE statut = 'publie'"; } else { - $query = "SELECT DISTINCT id_rubrique FROM spip_articles WHERE statut = 'publie' AND date < NOW()"; + $query = "SELECT DISTINCT id_rubrique FROM spip_articles WHERE statut = 'publie' AND date <= NOW()"; } $result = spip_query($query); while ($row = spip_fetch_array($result)) { diff --git a/ecrire/inc_mysql.php3 b/ecrire/inc_db_mysql.php3 similarity index 80% rename from ecrire/inc_mysql.php3 rename to ecrire/inc_db_mysql.php3 index 5764c0ce46..88b24e99f0 100644 --- a/ecrire/inc_mysql.php3 +++ b/ecrire/inc_db_mysql.php3 @@ -2,21 +2,24 @@ // // Ce fichier ne sera execute qu'une fois -if (defined("_ECRIRE_INC_MYSQL")) return; -define("_ECRIRE_INC_MYSQL", "1"); +if (defined("_ECRIRE_INC_DB_MYSQL")) return; +define("_ECRIRE_INC_DB_MYSQL", "1"); -function spip_query_db($query) { - // return spip_query_profile($query); // a decommenter pour chronometrer les requetes - // return spip_query_debug($query); // a decommenter pour afficher toutes les erreurs - $suite = ""; - if (eregi('[[:space:]](VALUES|WHERE)[[:space:]].*$', $query, $regs)) { - $suite = $regs[0]; - $query = substr($query, 0, -strlen($suite)); - } - $query = ereg_replace('([[:space:],])spip_', '\1'.$GLOBALS['table_prefix'].'_', $query) . $suite; - return mysql_query($query); +// +// Connexion a la base +// + +function spip_connect_db($host, $port, $login, $pass, $db) { + if ($port > 0) $host = "$host:$port"; + @mysql_connect($host, $login, $pass); + return @mysql_select_db($db); } + +// +// Appel de requetes SQL +// + function spip_query_profile($query) { static $tt = 0; $suite = ""; @@ -52,17 +55,34 @@ function spip_query_debug($query) { return $r; } -function spip_fetch_array($r='') { +function spip_query_db($query) { + // return spip_query_profile($query); // a decommenter pour chronometrer les requetes + // return spip_query_debug($query); // a decommenter pour afficher toutes les erreurs + $suite = ""; + if (eregi('[[:space:]](VALUES|WHERE)[[:space:]].*$', $query, $regs)) { + $suite = $regs[0]; + $query = substr($query, 0, -strlen($suite)); + } + $query = ereg_replace('([[:space:],])spip_', '\1'.$GLOBALS['table_prefix'].'_', $query) . $suite; + return mysql_query($query); +} + + +// +// Recuperation des resultats +// + +function spip_fetch_array($r) { if ($r) return mysql_fetch_array($r); } -function spip_fetch_object($r='') { +function spip_fetch_object($r) { if ($r) return mysql_fetch_object($r); } -function spip_fetch_row($r='') { +function spip_fetch_row($r) { if ($r) return mysql_fetch_row($r); } @@ -75,12 +95,12 @@ function spip_sql_errno() { return mysql_errno(); } -function spip_num_rows($r='') { +function spip_num_rows($r) { if ($r) return mysql_num_rows($r); } -function spip_free_result($r='') { +function spip_free_result($r) { if ($r) return mysql_free_result($r); } @@ -89,4 +109,6 @@ function spip_insert_id() { return mysql_insert_id(); } -?> \ No newline at end of file + + +?> diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index 2c86bd9c7a..942e8a1e9b 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -32,14 +32,6 @@ error_reporting(E_ALL ^ E_NOTICE); $table_prefix = "spip"; -function spip_query($query) { - include_ecrire("inc_mysql.php3"); - include_ecrire("inc_connect.php3"); - if (!$GLOBALS['db_ok']) - return; - return spip_query_db($query); -} - // // Infos de version PHP // @@ -239,6 +231,27 @@ function include_ecrire($file) { $GLOBALS['included_files'][$file] = 1; } + +$flag_connect = file_exists(($flag_ecrire ? "" : "ecrire/")."inc_connect.php3"); + +function spip_query($query) { + if ($GLOBALS['flag_connect'] && !$GLOBALS['db_ok']) { + include_ecrire("inc_connect.php3"); + if (!$GLOBALS['db_ok']) + return; + if ($GLOBALS['spip_connect_version'] < 0.1) { + if (!$GLOBALS['flag_ecrire']) { + $GLOBALS['db_ok'] = false; + return; + } + @Header("Location: upgrade.php3?reinstall=oui"); + exit; + } + } + return spip_query_db($query); +} + + // // Infos de config PHP // @@ -609,13 +622,13 @@ function email_valide($adresse) { return $valide; } - return (eregi( + return (eregi( '^[-!#$%&\'*+\\./0-9=?a-z^_`{|}~]+'. // nom d'utilisateur '@'. // @ '([-0-9a-z]+\.)+' . // hote, sous-domaine - '([0-9a-z]){2,4}$', // tld + '([0-9a-z]){2,4}$', // tld trim($adresse))); -} +} ?> diff --git a/ecrire/install.php3 b/ecrire/install.php3 index 45b437d3f4..1046dec735 100644 --- a/ecrire/install.php3 +++ b/ecrire/install.php3 @@ -1,7 +1,7 @@ <?php include ("inc_version.php3"); -include_ecrire ("inc_mysql.php3"); +//include_ecrire ("inc_db_mysql.php3"); include_ecrire ("inc_presentation.php3"); if (file_exists("inc_connect.php3")) { @@ -35,7 +35,7 @@ if ($etape == 6) { $result = spip_query_db($query); unset($id_auteur); while ($row = spip_fetch_array($result)) $id_auteur = $row['id_auteur']; - + $mdpass = md5($pass); $htpass = generer_htpass($pass); @@ -81,7 +81,7 @@ else if ($etape == 5) { echo "<BR><FONT FACE='Verdana,Arial,Helvetica,sans-serif' SIZE=3>Cinquième étape : <B>Informations personnelles</B></FONT>"; echo "<P>"; - + echo "<b>Le système va maintenant vous créer un accès personnalisé au site.</b>"; echo aide ("install5"); echo "<p>(Note : s'il s'agit d'une réinstallation, et que votre accès marche toujours, vous pouvez "; @@ -94,7 +94,7 @@ else if ($etape == 5) { echo "<B>Signature</B><BR>"; echo "(Votre nom ou votre pseudo)<BR>"; echo "<INPUT TYPE='text' NAME='nom' CLASS='formo' VALUE=\"$nom\" SIZE='40'><P>"; - + echo "<B>Votre adresse email</B><BR>"; echo "<INPUT TYPE='text' NAME='email' CLASS='formo' VALUE=\"$email\" SIZE='40'></fieldset><P>\n"; @@ -102,7 +102,7 @@ else if ($etape == 5) { echo "<B>Votre login</B><BR>"; echo "(Plus de 3 caractères)<BR>"; echo "<INPUT TYPE='text' NAME='login' CLASS='formo' VALUE=\"$login\" SIZE='40'><P>\n"; - + echo "<B>Votre mot de passe</B> <BR>"; echo "(Plus de 5 caractères)<BR>"; echo "<INPUT TYPE='text' NAME='pass' CLASS='formo' VALUE=\"$pass\" SIZE='40'></fieldset><P>\n"; @@ -130,6 +130,9 @@ else if ($etape == 4) { install_debut_html(); + // Necessaire pour appeler les fonctions SQL wrappees + include_ecrire("inc_db_mysql.php3"); + echo "<BR><FONT FACE='Verdana,Arial,Helvetica,sans-serif' SIZE=3>Quatrième étape : <B>Création des tables de la base</B></FONT>"; echo "<P>"; @@ -139,7 +142,7 @@ else if ($etape == 4) { if ($choix_db == "new_spip") { $sel_db = $table_new; - mysql_create_db($sel_db); + mysql_create_db($sel_db); } else { $sel_db = $choix_db; @@ -155,15 +158,15 @@ else if ($etape == 4) { echo "-->"; - + if ($result_ok) { $conn = "<"."?php\n"; $conn .= "if (defined(\"_ECRIRE_INC_CONNECT\")) return;\n"; $conn .= "define(\"_ECRIRE_INC_CONNECT\", \"1\");\n"; - $conn .= "\$GLOBALS['db_ok'] = true;\n"; - $conn .= "@mysql_connect('$adresse_db','$login_db','$pass_db');\n"; - $conn .= "@mysql_select_db('$sel_db');\n"; - $conn .= "\$GLOBALS['db_ok'] &= !!@spip_num_rows(@spip_query_db('SELECT COUNT(*) FROM spip_meta'));\n"; + $conn .= "\$GLOBALS['spip_connect_version'] = 0.1;\n"; + $conn .= "include_ecrire('inc_db_mysql.php3');\n"; + $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("inc_connect_install.php3", "wb"); fputs($myFile, $conn); @@ -206,12 +209,11 @@ else if ($etape == 3) { echo "<fieldset><label><B>Choisissez votre base :</B><BR></label>"; - if ($result AND (@spip_num_rows($result) > 0)) { + if ($result AND (($n = @mysql_num_rows($result)) > 0)) { echo "<B>Le serveur MySQL contient plusieurs bases de données.</B><P> <B>Sélectionnez</B> ci-après celle qui vous a été attribuée par votre hébergeur:"; - echo "<UL>"; - $i=0; + echo "<UL>"; $bases = ""; - while ($i < spip_num_rows($result)) { + 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"; @@ -222,7 +224,6 @@ else if ($etape == 3) { else { $bases .= "$base$base_fin\n"; } - $i++; } echo $bases."</UL>"; echo "ou... "; @@ -265,9 +266,9 @@ else if ($etape == 2) { $link = mysql_connect("$adresse_db","$login_db","$pass_db"); $db_connect = mysql_errno(); echo "-->"; - + echo "<P>"; - + if (($db_connect=="0") && $link){ echo "<B>La connexion a réussi.</B><P> Vous pouvez passer à l'étape suivante."; @@ -287,7 +288,7 @@ else if ($etape == 2) { } install_fin_html(); - + } else if ($etape == 1) { install_debut_html(); @@ -302,13 +303,18 @@ else if ($etape == 1) { $login_db = $login_hebergeur; $pass_db = ''; - // Recuperer les anciennes donnees (si presentes) + // Recuperer les anciennes donnees pour plus de facilite (si presentes) if (file_exists("inc_connect_install.php3")) { $s = @join('', @file("inc_connect_install.php3")); - if (ereg('mysql_connect\("(.*)","(.*)","(.*)"\)', $s, $regs)) { + 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'>"; diff --git a/ecrire/upgrade.php3 b/ecrire/upgrade.php3 index f838a83f6b..f40594062a 100644 --- a/ecrire/upgrade.php3 +++ b/ecrire/upgrade.php3 @@ -3,6 +3,36 @@ include ("inc_version.php3"); +// Si reinstallation necessaire, message ad hoc +if ($reinstall == 'oui') { + if (!file_exists("inc_connect.php3")) { + Header("Location: install.php3"); + exit; + } + + @copy("inc_connect.php3", "inc_connect_install.php3"); + + include_ecrire("inc_presentation.php3"); + install_debut_html("Mise à niveau de SPIP"); + echo "<p><b>Vous avez installé une nouvelle version de SPIP.</b><p> "; + echo "Cette nouvelle version nécessite une mise à jour plus "; + echo "complète qu'à l'accoutumée. "; + echo "Si vous êtes webmestre du site, veuillez effacer le fichier "; + echo "<tt>inc_connect.php3</tt> du répertoire <tt>ecrire</tt> "; + echo "et reprendre l'installation afin de mettre à jour vos "; + echo "paramètres de connexion à la base de données."; + + $link = new Link(); + echo "<p><div align='right'>"; + echo $link->getForm('GET'); + echo "<input type='submit' name='submit' value=\"Relancer l'installation\" class='fondl'>"; + echo "</form>\n"; + + install_fin_html(); + exit; +} + + include_ecrire ("inc_auth.php3"); include_ecrire ("inc_admin.php3"); include_ecrire ("inc_acces.php3"); @@ -12,12 +42,12 @@ include_ecrire ("inc_filtres.php3"); $upgrade_titre = "mise à niveau de votre base MySQL"; -// commentaire standard upgrade +// Commentaire standard upgrade $commentaire = "Vous venez de mettre à jour les fichiers SPIP. Il faut maintenant mettre à niveau la base de données du site."; -// erreur downgrade (cas de double installation de fichiers SPIP sur une meme base) +// Erreur downgrade (cas de double installation de fichiers SPIP sur une meme base) if ($spip_version < (double) lire_meta('version_installee')) $commentaire = "{{Attention!}} Vous avez installé une version des fichiers SPIP {antérieure} à celle qui se trouvait @@ -25,7 +55,7 @@ if ($spip_version < (double) lire_meta('version_installee')) perdue et votre site ne fonctionnera plus.<br>{{Réinstallez les fichiers de SPIP.}}"; -// qu'est-ce que tu fais ici? +// Qu'est-ce que tu fais ici? if ($spip_version == (double) lire_meta('version_installee')) { @header("Location: index.php3"); exit; diff --git a/inc-cache.php3 b/inc-cache.php3 index 0e8ddf5a7a..901e239406 100644 --- a/inc-cache.php3 +++ b/inc-cache.php3 @@ -62,7 +62,7 @@ function utiliser_cache($chemin_cache, $delais) { $use_cache &= empty($HTTP_POST_VARS); if (!$use_cache) { - include_ecrire("inc_mysql.php3"); +// include_ecrire("inc_mysql.php3"); include_ecrire("inc_connect.php3"); if (!$GLOBALS['db_ok']) $use_cache = true; } @@ -122,4 +122,4 @@ function purger_repertoire($dir, $age, $regexp = '') { closedir($handle); } -?> \ No newline at end of file +?> diff --git a/inc-stats.php3 b/inc-stats.php3 index a2da606dcc..e7635d28d9 100644 --- a/inc-stats.php3 +++ b/inc-stats.php3 @@ -7,7 +7,7 @@ define("_INC_STATS", "1"); function ecrire_stats() { global $id_article, $id_breve, $id_rubrique, $admin_ok; - include_ecrire("inc_mysql.php3"); +// include_ecrire("inc_mysql.php3"); include_ecrire("inc_connect.php3"); if (!$GLOBALS['db_ok']) return; -- GitLab