From 04400183b50d753a13daeb23c40c63de391a1816 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 2 Nov 2006 22:23:40 +0000
Subject: [PATCH] =?UTF-8?q?Le=20bug=20de=20[7758]=20=C3=A9tait=20du=20?=
 =?UTF-8?q?=C3=A0=20[7674]:=20on=20partage=20effectivement=20tellement=20d?=
 =?UTF-8?q?'utilisations=20d'une=20meme=20requete,=20que=20le=20nombre=20d?=
 =?UTF-8?q?e=20r=C3=A9ponses=20a=20toutes=20les=20chances=20de=20varier=20?=
 =?UTF-8?q?souvent=20il=20n'est=20vraiment=20pas=20question=20de=20le=20m?=
 =?UTF-8?q?=C3=A9moriser,=20il=20faut=20le=20recalculer=20=C3=A0=20chaque?=
 =?UTF-8?q?=20fois.=20Du=20coup=20on=20supprime=20le=20champ=20id=5Fauteur?=
 =?UTF-8?q?=20de=20cette=20table,=20car=20il=20ne=20peut=20plus=20servir?=
 =?UTF-8?q?=20=C3=A0=20rien.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

En fait cette table mémorise différentes requetes qui ne sont pas si nombreuses, on pourrait les coder dans un tableau PHP statique et id_ajax_fonc n'en serait plus que l'index, ça éviterait les appels à SQL.
---
 ecrire/base/serial.php      |  1 -
 ecrire/base/upgrade.php     |  7 ++++++-
 ecrire/exec/memoriser.php   | 10 +++++-----
 ecrire/inc/presentation.php | 22 ++++++++--------------
 ecrire/inc_version.php      |  2 +-
 5 files changed, 20 insertions(+), 22 deletions(-)

diff --git a/ecrire/base/serial.php b/ecrire/base/serial.php
index 767d0973df..5aff7166cd 100644
--- a/ecrire/base/serial.php
+++ b/ecrire/base/serial.php
@@ -339,7 +339,6 @@ $spip_signatures_key = array(
 
 $spip_ajax_fonc = array(
 		"id_ajax_fonc" => "bigint(21) NOT NULL",
-		"id_auteur" => "bigint(21) NOT NULL",
 		"variables" => "text NOT NULL",
 		"date"	=> "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
 		"`hash`"	=> "BIGINT UNSIGNED NOT NULL" );
diff --git a/ecrire/base/upgrade.php b/ecrire/base/upgrade.php
index 753224a82f..f296812dd8 100644
--- a/ecrire/base/upgrade.php
+++ b/ecrire/base/upgrade.php
@@ -1208,6 +1208,11 @@ function maj_base($version_cible = 0) {
 		maj_version(1.918);
 	}
 
+	if (upgrade_vers(1.919, $version_installee, $version_cible)) {
+		spip_query("ALTER TABLE spip_ajax_fonc DROP id_auteur");
+		maj_version(1.919);
+	}
+
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/ecrire/exec/memoriser.php b/ecrire/exec/memoriser.php
index a64fadcdbe..ea5cdbc6c1 100644
--- a/ecrire/exec/memoriser.php
+++ b/ecrire/exec/memoriser.php
@@ -17,16 +17,16 @@ function exec_memoriser_dist()
 {
 	$id_ajax = intval(_request('id_ajax_fonc'));
 
-	// le champ id_auteur sert finalement a memoriser le nombre de lignes
-	// (a renommer)
-
-	$res = spip_fetch_array(spip_query($q = "SELECT variables, id_auteur, hash FROM spip_ajax_fonc WHERE id_ajax_fonc = $id_ajax"));
+	$res = spip_fetch_array(spip_query($q = "SELECT variables, hash FROM spip_ajax_fonc WHERE id_ajax_fonc = $id_ajax"));
 
 	if ($res) {
 		
 		include_spip('inc/presentation');
 		list($t,$r,$p,$f) = unserialize($res["variables"]);
-		ajax_retour(afficher_articles_trad($t, $r, $f, $p, $id_ajax, $res['id_auteur'], _request('trad')));
+
+		$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $r['FROM'] . ($r['WHERE'] ? (' WHERE ' . $r['WHERE']) : '') . ($r['GROUP BY'] ? (' GROUP BY ' . $r['GROUP BY']) : '')));
+
+		ajax_retour(afficher_articles_trad($t, $r, $f, $p, $id_ajax, $cpt['n'], _request('trad')));
 
 	} else spip_log("memoriser $q vide");
 }
diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php
index c218a72664..d87979fcb3 100644
--- a/ecrire/inc/presentation.php
+++ b/ecrire/inc/presentation.php
@@ -680,36 +680,30 @@ function afficher_articles($titre, $requete, $formater_article='') {
 	
 	if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = '';
 
+	$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '')));
+
+	if (!$cpt = $cpt['n']) return '' ;
+
 	// memorisation des arguments pour gérer l'affichage par tranche
 	// et/ou par langues.
 
 	$hash = substr(md5(serialize($requete) . $GLOBALS['meta']['gerer_trad'] . $titre), 0, 31);
 	$tmp_var = 't' . substr($hash, 0, 7);
+	$nb_aff = floor(1.5 * _TRANCHES);
+	$deb_aff = intval(_request($tmp_var));
 
-	// le champ id_auteur sert finalement a memoriser le nombre de lignes
-	// (a renommer)
-
-	$res_proch = spip_query("SELECT id_ajax_fonc, id_auteur FROM spip_ajax_fonc WHERE hash=0x$hash LIMIT 1");
+	$res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=0x$hash LIMIT 1");
 
 	if ($row = spip_fetch_array($res_proch)) {
 		$id_ajax = $row["id_ajax_fonc"];
-		$cpt = $row["id_auteur"];
 	} else  {
-
-		$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '')));
-
-		if (!$cpt = $cpt['n']) return '' ;
-		
 		if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt);
 		$v = serialize(array($titre, $requete, $tmp_var, $formater_article));
 
 		include_spip ('base/abstract_sql');
-		$id_ajax = spip_abstract_insert("spip_ajax_fonc", "(variables, hash, id_auteur, date)", "(" . _q($v) . ", 0x$hash, $cpt, NOW())");
+		$id_ajax = spip_abstract_insert("spip_ajax_fonc", "(variables, hash, date)", "(" . _q($v) . ", 0x$hash, NOW())");
 	}
 
-	$nb_aff = floor(1.5 * _TRANCHES);
-	$deb_aff = intval(_request($tmp_var));
-
 	$requete['FROM'] = preg_replace("/(spip_articles AS \w*)/", "\\1 LEFT JOIN spip_petitions AS petitions USING (id_article)", $requete['FROM']);
 
 	$requete['SELECT'] .= ", petitions.id_article AS petition ";
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index ca379e6a7d..6405a84aad 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -279,7 +279,7 @@ $tables_des_serveurs_sql['localhost'] =  &$tables_principales;
 // (utilise pour les modifs de la base de donnees)
 
 // version de la base
-$spip_version = 1.918;
+$spip_version = 1.919;
 
 // version de spip en chaine
 // et en numerique a incrementer sur les evolutions qui cassent la compatibilite descendante
-- 
GitLab