From 8d20150a84d2975e60563b577b8f3f3339d02fb7 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Fri, 3 Dec 2004 21:08:31 +0000
Subject: [PATCH] =?UTF-8?q?bug=20du=20md5=20des=20visites=20non=20repr?=
 =?UTF-8?q?=C3=A9sent=C3=A9=20par=20SQL=20car=20>=202^63?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc_statistiques.php3 | 16 +++++++++-------
 inc-stats.php3               |  2 +-
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/ecrire/inc_statistiques.php3 b/ecrire/inc_statistiques.php3
index 305c08168c..7954f3b72b 100644
--- a/ecrire/inc_statistiques.php3
+++ b/ecrire/inc_statistiques.php3
@@ -177,6 +177,7 @@ function calculer_n_referers($nb_referers) {
 
 	$referer_insert = "";
 	$referer_update = "";
+	$referer_vus = "";
 
 	while ($row = @spip_fetch_array($result)) {
 		$visites = $row['visites'];
@@ -184,8 +185,10 @@ function calculer_n_referers($nb_referers) {
 		$referer_md5 = '0x'.$row['md5'];
 		$referer_update[$visites][] = $referer_md5;
 		$referer_insert[] = "('$date', '$referer', $referer_md5, $visites, $visites)";
-		$referer_vus[] = $referer_md5;
+		$referer_vus .= "," . $referer_md5;
 	}
+	if ($referer_vus) 
+	  $referer_vus = "referer_md5 IN (" . substr($referer_vus,1) . ")";
 
 	// Mise a jour de la base
 	if (is_array($referer_update)) {
@@ -202,9 +205,9 @@ function calculer_n_referers($nb_referers) {
 	}
 
 	// Ventiler ces referers article par article
-	$where = (is_array($referer_vus)) ? "AND referer_md5 IN (".join(',',$referer_vus).")" : "";
-	$query = "SELECT COUNT(DISTINCT ip) AS visites, id_objet, referer, HEX(referer_md5) AS md5 ".
-		"FROM spip_referers_temp WHERE type='article' $where GROUP BY id_objet, referer_md5";
+	$query = "SELECT COUNT(DISTINCT ip) AS visites, id_objet, referer, HEX(referer_md5) AS md5 FROM spip_referers_temp WHERE type='article'"
+		  . ($referer_vus ? " AND $referer_vus" : '')
+		  . " GROUP BY id_objet, referer_md5";
 	$result = spip_query($query);
 
 	$referer_insert = "";
@@ -235,9 +238,8 @@ function calculer_n_referers($nb_referers) {
 	}
 
 	// Effacer les referers traites
-	if (is_array($referer_vus)) {
-		$query_effacer = "DELETE FROM spip_referers_temp WHERE referer_md5 IN (".join(",",$referer_vus).")";
-		$result_effacer = spip_query($query_effacer);
+	if ($referer_vus) {
+	  spip_query("DELETE FROM spip_referers_temp WHERE referer_md5 IN ($referer_vus)");
 	}
 
 	return  $tous ;
diff --git a/inc-stats.php3 b/inc-stats.php3
index a4ab85bc5e..42e11e5b93 100644
--- a/inc-stats.php3
+++ b/inc-stats.php3
@@ -45,7 +45,7 @@ function ecrire_stats() {
 	$log_referer = $GLOBALS['HTTP_REFERER'];
 	if (($url_site_spip<>'') AND strpos('-'.strtolower($log_referer), strtolower($url_site_spip)) AND !$GLOBALS['var_recherche']) $log_referer = "";
 	if ($log_referer) {
-		$referer_md5 = '0x'.substr(md5($log_referer), 0, 16);
+		$referer_md5 = '0x'.substr(md5($log_referer), 0, 15);
 		$query = "INSERT IGNORE INTO spip_referers_temp (ip, referer, referer_md5, type, id_objet) ".
 			"VALUES ($log_ip, '$log_referer', $referer_md5, '$log_type', $log_id_num)";
 		spip_query($query);
-- 
GitLab