From ac82a8995e63f5af6b5e5093b0a2cee3242d5792 Mon Sep 17 00:00:00 2001
From: ARNO* <arno@rezo.net>
Date: Fri, 5 Jul 2002 05:43:04 +0000
Subject: [PATCH] Nouveau systeme de decompte des visites et d'enregistrement
 des referers

---
 ecrire/config-fonctions.php3      |  27 +++-
 ecrire/data/engines-list.ini      | 214 ++++++++++++++++++++++++++++++
 ecrire/inc_base.php3              |  25 ++++
 ecrire/inc_presentation.php3      |  18 ++-
 ecrire/inc_statistiques.php3      | 210 +++++++++++++++++++++++++++++
 ecrire/inc_version.php3           |   4 +-
 ecrire/index.php3                 |   7 +-
 ecrire/statistiques_referers.php3 |  90 +++++++++++++
 ecrire/statistiques_visites.php3  | 118 ++++++++++++++++
 inc-public.php3                   |   2 +-
 inc-stats.php3                    |  48 ++++++-
 11 files changed, 747 insertions(+), 16 deletions(-)
 create mode 100644 ecrire/data/engines-list.ini
 create mode 100644 ecrire/inc_statistiques.php3
 create mode 100644 ecrire/statistiques_referers.php3
 create mode 100644 ecrire/statistiques_visites.php3

diff --git a/ecrire/config-fonctions.php3 b/ecrire/config-fonctions.php3
index 87d25e7a80..bb9f90d456 100644
--- a/ecrire/config-fonctions.php3
+++ b/ecrire/config-fonctions.php3
@@ -44,6 +44,7 @@ if ($changer_config == 'oui') {
 	ecrire_meta("activer_messagerie", $activer_messagerie);
 	ecrire_meta("activer_imessage", $activer_imessage);
 	ecrire_meta("activer_statistiques", $activer_statistiques);
+	ecrire_meta("activer_statistiques_ref", $activer_statistiques_ref);
 
 	ecrire_meta("suivi_edito", $suivi_edito);
 	if ($adresse_suivi) ecrire_meta("adresse_suivi", $adresse_suivi);
@@ -202,6 +203,7 @@ fin_cadre_relief();
 debut_cadre_relief("statistiques-24.gif");
 
 	$activer_statistiques=lire_meta("activer_statistiques");
+	$activer_statistiques_ref=lire_meta("activer_statistiques_ref");
 
 
 	echo "<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3 WIDTH=\"100%\">";
@@ -226,13 +228,36 @@ debut_cadre_relief("statistiques-24.gif");
 		echo " &nbsp; <INPUT TYPE='radio' NAME='activer_statistiques' VALUE='non' id='statistiques_off'>";
 		echo " <label for='statistiques_off'>Ne pas g&eacute;rer les statistiques</label> ";
 	}
-
 	echo "</FONT>";
 	echo "</TD></TR>\n";
 
 
 
 
+	if ($activer_statistiques != "non") {
+		echo "<TR><TD BACKGROUND='img_pack/rien.gif'>";
+		echo "<FONT FACE='Verdana,Arial,Helvetica,sans-serif' SIZE=2 COLOR='#000000'>Votre site doit-il conserver les <i>referers</i>&nbsp;?</FONT>";
+		echo "</TD></TR>";
+
+	
+		echo "<TR><TD BACKGROUND='img_pack/rien.gif' ALIGN='center'>";
+		echo "<FONT FACE='Verdana,Arial,Helvetica,sans-serif' SIZE=2 COLOR='#000000'>";
+		if ($activer_statistiques_ref!="oui"){
+			echo "<INPUT TYPE='radio' NAME='activer_statistiques_ref' VALUE='oui' id='statistiques_ref_on'>";
+			echo " <label for='statistiques_ref_on'>G&eacute;rer les referers</label> ";
+			echo " &nbsp; <INPUT TYPE='radio' NAME='activer_statistiques_ref' VALUE='non' id='statistiques_ref_off' CHECKED>";
+			echo " <B><label for='statistiques_ref_off'>Ne pas g&eacute;rer les referers</label></B> ";
+		}else{
+			echo "<INPUT TYPE='radio' NAME='activer_statistiques_ref' VALUE='oui' id='statistiques_ref_on' CHECKED>";
+			echo " <B><label for='statistiques_ref_on'>G&eacute;rer les referers</label></B> ";
+			echo " &nbsp; <INPUT TYPE='radio' NAME='activer_statistiques_ref' VALUE='non' id='statistiques_ref_off'>";
+			echo " <label for='statistiques_ref_off'>Ne pas g&eacute;rer les referers</label> ";
+		}
+		echo "</FONT>";
+		echo "</TD></TR>\n";
+	}
+
+
 	echo "<TR><TD ALIGN='right'>";
 	echo "<INPUT TYPE='submit' NAME='Valider' VALUE='Valider' CLASS='fondo'>";
 	echo "</TD></TR>";
diff --git a/ecrire/data/engines-list.ini b/ecrire/data/engines-list.ini
new file mode 100644
index 0000000000..f787f82cae
--- /dev/null
+++ b/ecrire/data/engines-list.ini
@@ -0,0 +1,214 @@
+# -----------------------------------------------------------------------------
+
+# Les Visiteurs - Engines List
+
+# -----------------------------------------------------------------------------
+
+# [Engine Name]
+
+# word= | word => query | directory
+
+# host 1
+
+# host 2
+
+# hots ...
+
+# -----------------------------------------------------------------------------
+
+# sort the list according your visits (see your referrers).
+
+# -----------------------------------------------------------------------------
+
+
+
+[Google]
+
+q=
+
+www.google.com
+
+www.google.fr
+
+www.google.cl
+
+www.google.be
+
+www.google.co.uk
+
+www.google.de
+
+www.google.ca
+
+www.google.it
+
+web.toile.com
+
+
+
+[Voila]
+
+kw=
+
+search.ke.voila.fr
+
+search.voila.com
+
+moteur.voila.fr
+
+search.voila.fr
+
+beta.voila.fr
+
+
+
+[Yahoo !/Google]
+
+p=
+
+fr.google.yahoo.com
+
+google.yahoo.com
+
+
+
+[Yahoo !]
+
+p=
+
+fr.search.yahoo.com
+
+ink.yahoo.fr
+
+search.yahoo.fr
+
+fr.ink.yahoo.com
+
+ink.yahoo.com
+
+
+
+[Yahoo !]
+
+directory
+
+fr.dir.yahoo.com
+
+
+
+[AltaVista]
+
+q=
+
+www.altavista.com
+
+search.fr.altavista.com
+
+search.altavista.com
+
+www.altavista.fr
+
+fr.altavista.com
+
+altavista.fr
+
+listings.altavista.com
+
+
+
+[Lycos]
+
+query=
+
+www.lycos.fr
+
+vachercher.lycos.fr
+
+
+
+[Nomade]
+
+s=
+
+rechercher.nomade.fr
+
+ie4.nomade.fr
+
+rechercher.nomade.tiscali.fr
+
+
+
+[Lycos]
+
+MT=
+
+hotbot.lycos.com
+
+
+
+[Francite]
+
+name=
+
+recherche.francite.com
+
+
+
+[MSN]
+
+s=
+
+leguide.fr.msn.com
+
+leguide.msn.fr
+
+
+
+[MSN]
+
+q=
+
+search.msn.fr
+
+search.msn.com
+
+auto.search.msn.com
+
+
+
+[Excite]
+
+search=
+
+www.excite.fr
+
+
+
+[AOL]
+
+q=
+
+www.aolrecherche.aol.fr
+
+
+
+[AllTheWeb]
+
+q=
+
+www.alltheweb.com
+
+
+
+[Netscape]
+
+search=
+
+search-intl.netscape.com
+
+search.netscape.com
+
+
+
+
+
diff --git a/ecrire/inc_base.php3 b/ecrire/inc_base.php3
index d42f2b8af3..f98ed31a58 100644
--- a/ecrire/inc_base.php3
+++ b/ecrire/inc_base.php3
@@ -256,6 +256,31 @@ function creer_base() {
 		KEY statut(statut))";
 	$result = spip_query($query);
 
+	$query = "CREATE TABLE spip_visites_temp (
+		date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
+		ip varchar(16) NOT NULL,
+		type varchar(16) NOT NULL,
+		referer text NOT NULL)";
+	$result = spip_query($query);
+
+	$query = "CREATE TABLE spip_visites (
+		date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
+		type varchar(16) NOT NULL,
+		visites bigint(21) DEFAULT '0' NOT NULL)";
+	$result = spip_query($query);
+
+	$query = "CREATE TABLE spip_visites_referers (
+		id_referer bigint(21) DEFAULT '0' NOT NULL auto_increment,
+		date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
+		referer text,
+		referer_md5 varchar(16) NOT NULL,
+		type varchar(16) NOT NULL,
+		visites bigint(21) DEFAULT '0' NOT NULL,
+		PRIMARY KEY (id_referer),
+		KEY type (type),
+		KEY referer_md5 (referer_md5))";
+	$result = spip_query($query);
+	
 
 	//
 	// Relations
diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3
index 5705b025bb..0a18d9620c 100644
--- a/ecrire/inc_presentation.php3
+++ b/ecrire/inc_presentation.php3
@@ -433,7 +433,7 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a
 
 			$s = affdate($date);
 			if ($activer_statistiques != "non" AND $afficher_visites AND $visites > 0) {
-				$s .= "<br><font size=\"1\">($visites&nbsp;visites)</font>";
+				$s .= "<br><font size=\"1\">(<a href='statistiques_visites.php3?id_article=$id_article'>$visites&nbsp;visites</a>)</font>";
 			}
 			$vals[] = $s;
 
@@ -925,9 +925,12 @@ function barre_onglets($rubrique, $onglet){
 	debut_onglet();
 	
 	if ($rubrique == "statistiques"){
-		onglet("R&eacute;partition des entr&eacute;es", "statistiques.php3", "repartition", $onglet, "statistiques-24.gif");
+		onglet("&Eacute;volution des visites", "statistiques_visites.php3", "evolution", $onglet, "statistiques-24.gif");
+		onglet("R&eacute;partition des entr&eacute;es", "statistiques.php3", "repartition", $onglet, "");
+		$activer_statistiques_ref = lire_meta("activer_statistiques_ref");
+		if ($activer_statistiques_ref == "oui")	onglet("Les referers du jour", "statistiques_referers.php3", "referers", $onglet, "");
 		onglet("Articles r&eacute;cents", "statistiques_recents.php3", "recents", $onglet, "article-24.gif");
-		onglet("Tous les articles", "statistiques_tous.php3", "tous", $onglet, "article-24.gif");
+		onglet("Tous les articles", "statistiques_tous.php3", "tous", $onglet, "");
 	}
 	
 	if ($rubrique == "administration"){
@@ -1257,7 +1260,7 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr
 	else if ($connect_statut == '0minirezo' and !$connect_toutes_rubriques){
 	bandeau_barre_verticale();
 		echo "<td background=''>";
-			icone_bandeau_principal ("Statistiques du site", "statistiques.php3", "administration-48.gif", "administration", $rubrique);
+			icone_bandeau_principal ("Statistiques du site", "statistiques_visites.php3", "administration-48.gif", "administration", $rubrique);
 		echo "</td>";
 	}
 	echo "<td background='' width='100%'>   </td>";
@@ -1326,7 +1329,7 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr
 			}
 		}
 		else if ($rubrique == "administration"){
-			icone_bandeau_secondaire ("Statistiques des visites", "statistiques.php3", "statistiques-24.gif", "statistiques", $sous_rubrique);
+			icone_bandeau_secondaire ("Statistiques des visites", "statistiques_visites.php3", "statistiques-24.gif", "statistiques", $sous_rubrique);
 			if ($connect_toutes_rubriques) {
 				icone_bandeau_secondaire ("Configuration du site", "configuration.php3", "administration-24.gif", "configuration", $sous_rubrique);
 				icone_bandeau_secondaire ("Gestion de la base", "admin_tech.php3", "base-24.gif", "base", $sous_rubrique);
@@ -1567,7 +1570,10 @@ est distribu&eacute; <a href='gpl.txt'>sous licence GPL</a>
 
 <?php
 if (ereg("index.php3$", $GLOBALS['REQUEST_URI'])) {
-	echo "<br>Les icones de l'interface sont distribu&eacute;es en GPL par <a href='http://jimmac.musichall.cz/'>Jakub 'Jimmac' Steiner</a>";
+	echo "<br>Les icones de l'interface sont distribu&eacute;s en GPL par <a href='http://jimmac.musichall.cz/'>Jakub 'Jimmac' Steiner</a>";
+}
+if (ereg("statistiques_visites.php3$", $GLOBALS['REQUEST_URI']) OR ereg("statistiques_referers.php3$", $GLOBALS['REQUEST_URI'])) {
+	echo "<br>L'affichage des requ&ecirc;tes des moteurs de recherche est r&eacute;alis&eacute;<br>&agrave; partir d'un extrait du code de <a href='http://www.phpinfo.net/'>Visiteurs</a>,<br> distribu&eacute; en GPL par Jean-Pierre D&eacute;z&eacute;lus.";
 }
 ?>
 </div></blockquote>
diff --git a/ecrire/inc_statistiques.php3 b/ecrire/inc_statistiques.php3
new file mode 100644
index 0000000000..1cacc24f7f
--- /dev/null
+++ b/ecrire/inc_statistiques.php3
@@ -0,0 +1,210 @@
+<?php
+
+//
+// Ce fichier ne sera execute qu'une fois
+if (defined("_ECRIRE_INC_STATISTIQUES")) return;
+define("_ECRIRE_INC_STATISTIQUES", "1");
+
+
+function stats_load_engines()
+{
+
+    $file_name = 'data/engines-list.ini';
+    if ($fp = @fopen($file_name, 'r'))
+    {
+        while ($data = fgets($fp, 256))
+        {
+            $data = trim(chop($data));
+
+            if (!ereg('^#', $data) && $data != '')
+            {
+                if (ereg('^\[(.*)\]$', $data, $engines))
+                {
+                    // engine
+                    $engine = $engines[1];
+
+                    // query | dir
+                    if (!feof($fp))
+                    {
+                        $data = fgets($fp, 256);
+                        $query_or_dir = trim(chop($data));
+                    }
+                }
+                else
+                {
+                    $host = $data;
+                    $arr_engines[] = Array($engine, $query_or_dir, $host);
+                }
+            }
+        }
+        fclose($fp);
+    }
+    return $arr_engines;
+}
+
+function stats_show_keywords($kw_referer, $kw_referer_host)
+{
+	global $arr_engines;
+	
+	if (sizeof($arr_engines) == 0) {
+		// Charger les moteurs de recherche
+		$arr_engines = stats_load_engines();
+	}
+ 
+    $url   = parse_url( $kw_referer );
+    $query = $url['query'];
+    $host  = $url['host'];
+    
+    parse_str($query);
+  
+    $keywords = '';
+    $found    = false;
+  
+    for ($cnt = 0; $cnt < sizeof($arr_engines) && !$found; $cnt++)
+    {
+        if ($found = ($host == $arr_engines[$cnt][2]))
+        {
+            $kw_referer_host = $arr_engines[$cnt][0];
+            $keywords = ereg('=', $arr_engines[$cnt][1])
+                ? ${str_replace('=', '', $arr_engines[$cnt][1])}
+                : $lvm_directory;
+        }
+    }
+    
+    $nom_url = substr(strip_tags($kw_referer_host),0,40);
+
+    $buffer = "&nbsp;<a href='".strip_tags($kw_referer)."'>".$nom_url."</a>\n";
+    
+    if ($keywords != '')
+    {
+      $buffer .= "(<b>" .trim(stripslashes(htmlentities($keywords)))."</b>)\n";
+    }
+
+    return( $buffer );
+
+}
+
+
+
+function calculer_visites(){
+
+	// Selectionner les dates > 24 heures
+	$query_date= "SELECT date FROM spip_visites_temp WHERE date < DATE_SUB(NOW(),INTERVAL 1 DAY) GROUP BY date";
+	$result_date = spip_query($query_date);
+	while ($row_date = mysql_fetch_array($result_date)) {
+		$visites = "";
+		$referers = "";
+		
+		$date = $row_date['date'];
+			
+		
+		// Nombre de visiteurs uniques sur le site
+		$query = "SELECT ip AS total_visites FROM spip_visites_temp WHERE date='$date' GROUP BY ip";
+		$result = spip_query($query);
+		$total_visites = mysql_num_rows($result);
+		$query_insert = "INSERT spip_visites (date, type, visites) VALUES ('$date', 'tout', '$total_visites');";
+		$result_insert = spip_query($query_insert);
+	
+	
+		// Recuperer les donnees du log	
+		$query = "SELECT * FROM spip_visites_temp WHERE date='$date'";
+		$result = spip_query($query);
+	
+		while ($row = mysql_fetch_array($result)) {
+			$ip = $row['ip'];
+			$type = $row['type'];
+			$referer = $row['referer'];
+			
+			$visites[$type][$ip] = 1;
+			if (strlen($referer) > 0) {
+				$referers[$referer][$type][$ip] = 1;
+			}
+		}
+		
+		// Nombre de visiteurs par articles
+
+		$query = "SELECT id_article, visites FROM spip_articles";
+		$result = spip_query($query);
+		
+		while ($row = mysql_fetch_array($result)) {
+			$id_article = $row['id_article'];
+			$vis_article = $row['visites'];
+			$visites_articles[$id_article] = $vis_article;
+		}				
+		
+		
+		while (list($key, $value) = each($visites)) {
+			$type_page = $key;
+			$visites_uniques = count($value);
+			
+			
+			if (ereg("^article([0-9]+)", $type_page, $regs)){
+				$id_article = $regs[1];
+				$total_article = $visites_articles[$id_article] + $visites_uniques;
+				$query_insert = "INSERT spip_visites (date, type, visites) VALUES ('$date', 'article$id_article', '$visites_uniques');";
+				$result_insert = spip_query($query_insert);
+				$query_insert = "UPDATE spip_articles SET visites = '$total_article' WHERE id_article = '$id_article'";
+				$result_insert = spip_query($query_insert);
+			}
+		}
+	
+		$activer_statistiques_ref=lire_meta("activer_statistiques_ref");
+		
+		if ($activer_statistiques_ref == "oui"){		
+			while (list($key, $value) = each($referers)) {
+				$referer = $key;
+				$ref_md5 = substr(md5($referer), 0, 15);
+	
+	
+	
+				//echo stats_show_keywords($referer, $referer);
+	
+				$total_ref = 0;
+				while (list($key2,$value2) = each ($value)) {
+					$value2 = count($value2);
+					$total_ref = $total_ref + $value2;
+					
+					if (ereg("^article([0-9]+)", $key2, $regs)){
+						$id_article = $regs[1];
+						$query = "SELECT id_referer, visites FROM spip_visites_referers WHERE type = 'article$id_article' AND referer_md5 = '$ref_md5'";
+						$result = spip_query($query);
+						if ($row = mysql_fetch_array($result)) {
+							$id_referer = $row['id_referer'];
+							$total_visites = $row['visites'] + $value2;
+							$query_insert = "UPDATE spip_visites_referers SET visites = $total_visites WHERE id_referer = '$id_referer'";
+							$result_insert = spip_query($query_insert);
+						}
+						else {				
+							$query_insert = "INSERT spip_visites_referers (date, referer, referer_md5, type, visites) VALUES ('$date', '$referer', '$ref_md5', 'article$id_article', '$value2');";
+							$result_insert = spip_query($query_insert);
+						}
+					}
+				
+				}
+	
+				$query = "SELECT id_referer, visites FROM spip_visites_referers WHERE type = 'tout' AND referer_md5 = '$ref_md5'";
+				$result = spip_query($query);
+				if ($row = mysql_fetch_array($result)) {
+					$id_referer = $row['id_referer'];
+					$total_visites = $row['visites'] + $total_ref;
+					$query_insert = "UPDATE spip_visites_referers SET visites = $total_visites WHERE id_referer = '$id_referer'";
+					$result_insert = spip_query($query_insert);
+				}
+				else {				
+					$query_insert = "INSERT spip_visites_referers (date, referer, referer_md5, type, visites) VALUES ('$date', '$referer', '$ref_md5', 'tout', '$total_ref');";
+					$result_insert = spip_query($query_insert);
+				}
+			}
+		}
+		
+		$query_effacer = "DELETE FROM spip_visites_temp WHERE date = '$date'";
+		$result_effacer = spip_query($query_effacer);	
+			
+	}	
+	$query_effacer = "DELETE FROM spip_visites_referers WHERE date < DATE_SUB(NOW(),INTERVAL 7 DAY) AND visites = '1'";
+	$result_effacer = spip_query($query_effacer);	
+}
+
+
+?>
+
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 2d0279dc20..250071bda7 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -13,11 +13,11 @@ define("_ECRIRE_INC_VERSION", "1");
 //
 
 // version de la base
-$spip_version = 1.423;
+$spip_version = 1.431;
 
 // version de spip
 // (mettre a jour a la main et conserver la mention "CVS")
-$spip_version_affichee = "1.4d1 CVS";
+$spip_version_affichee = "1.4c8 CVS";
 
 // version de spip / tag
 if (ereg('Name: v(.*) ','$Name$', $regs)) $spip_version_affichee = $regs[1];
diff --git a/ecrire/index.php3 b/ecrire/index.php3
index f8dc4ae245..a4af2a4f5a 100644
--- a/ecrire/index.php3
+++ b/ecrire/index.php3
@@ -201,7 +201,7 @@ if ($activer_messagerie != 'non' AND $connect_activer_messagerie != 'non') {
 
 if ($connect_statut == "0minirezo")	{
 	echo "<p>";
-	icone_horizontale("Statistiques du site", "statistiques.php3", "statistiques-24.gif","rien.gif");
+	icone_horizontale("Statistiques du site", "statistiques_visites.php3", "statistiques-24.gif","rien.gif");
 	icone_horizontale("Suivi des forums", "controle_forum.php3", "suivi-forum-24.gif","rien.gif");
 }
 
@@ -450,6 +450,11 @@ if (($date - $date_opt) > 24 * 3600) {
 	ecrire_metas();
 	include ("optimiser.php3");
 }
+// Traitement des statistiques
+if (($date - $date_opt) > 8 * 3600) {
+	include ("inc_statistiques.php3");
+	calculer_visites();
+}
 
 
 include_local ("inc_mail.php3");
diff --git a/ecrire/statistiques_referers.php3 b/ecrire/statistiques_referers.php3
new file mode 100644
index 0000000000..9762e2fbdf
--- /dev/null
+++ b/ecrire/statistiques_referers.php3
@@ -0,0 +1,90 @@
+<?php
+
+include ("inc.php3");
+include ("inc_statistiques.php3");
+
+
+debut_page("Statistiques", "administration", "statistiques");
+
+
+echo "<br><br><br>";
+gros_titre("Les referers du jour");
+barre_onglets("statistiques", "referers");
+
+debut_gauche();
+
+
+debut_boite_info();
+
+echo "<FONT FACE='Verdana,Arial,Helvetica,sans-serif' SIZE=2>";
+echo "<P align=left>".propre("Cette page pr&eacute;sente la liste des {referers}, c'est-&agrave;-dire des sites contenant des liens menant vers votre propre site, uniquement pour aujourd'hui: en effet, cette liste est remise &agrave; z&eacute;ro toutes les 24 heures.");
+
+
+echo "</FONT>";
+
+fin_boite_info();
+
+
+
+
+
+debut_droite();
+
+if ($connect_statut != '0minirezo') {
+	echo "Vous n'avez pas acc&egrave;s &agrave; cette page.";
+	fin_page();
+	exit;
+}
+
+
+//////
+
+	echo "<font face='verdana,arial,helvetica,sans-serif' size=2>";
+
+
+		echo "<ul>";
+		// Recuperer les donnees du log	
+		$query = "SELECT * FROM spip_visites_temp";
+		$result = spip_query($query);
+	
+		while ($row = mysql_fetch_array($result)) {
+			$ip = $row['ip'];
+			$type = $row['type'];
+			$referer = $row['referer'];
+			
+			if (strlen($referer) > 0) {
+				$referers[$referer][$type][$ip] = 1;
+			}
+		}
+
+		while (list($key, $value) = each($referers)) {
+			$referer = $key;
+			$ref_md5 = substr(md5($referer), 0, 15);
+
+
+			echo "\n<li>";
+
+			$total_ref = 0;
+			while (list($key2,$value2) = each ($value)) {
+				$value2 = count($value2);
+				$total_ref = $total_ref + $value2;
+			}
+	
+			if ($total_ref > 5) echo "<font color='red'>$total_ref liens : </font>";
+			else if ($total_ref > 1) echo "$total_ref liens : ";
+			else echo "<font color='#999999'>$total_ref lien : </font>";
+
+			echo stats_show_keywords($referer, $referer);
+
+
+		}
+
+
+
+	echo "</ul>";
+	echo "</font>";
+
+fin_page();
+
+?>
+
diff --git a/ecrire/statistiques_visites.php3 b/ecrire/statistiques_visites.php3
new file mode 100644
index 0000000000..d230a9c71d
--- /dev/null
+++ b/ecrire/statistiques_visites.php3
@@ -0,0 +1,118 @@
+<?php
+
+include ("inc.php3");
+include ("inc_statistiques.php3");
+
+
+debut_page("Statistiques", "administration", "statistiques");
+
+echo "<br><br><br>";
+gros_titre("&Eacute;volution des visites");
+barre_onglets("statistiques", "evolution");
+
+debut_gauche();
+
+
+/*
+debut_boite_info();
+echo "<FONT FACE='Verdana,Arial,Helvetica,sans-serif' SIZE=2>";
+echo "<P align=left>".propre("Le syst&egrave;me de statistiques int&eacute;gr&eacute; &agrave; SPIP est volontairement rudimentaire (afin de ne pas alourdir la base de donn&eacute;es et de ne pas tracer les visiteurs du site). De ce fait, les nombres de visites indiqu&eacute;s ici doivent &ecirc;tre pond&eacute;r&eacute;s: ils servent uniquement d'{indication} sur la popularit&eacute; {relative} des articles et des rubriques. ");
+echo "</FONT>";
+fin_boite_info();
+*/
+
+
+
+
+debut_droite();
+
+if ($connect_statut != '0minirezo') {
+	echo "Vous n'avez pas acc&egrave;s &agrave; cette page.";
+	fin_page();
+	exit;
+}
+
+
+
+
+//////
+
+if ($id_article) $page = "article$id_article";
+else $page = "tout";
+
+
+$query="SELECT * FROM spip_visites WHERE type = '$page' ORDER BY date";
+$result=spip_query($query);
+
+while ($row = mysql_fetch_array($result)) {
+	$date = $row['date'];
+	$visites = $row['visites'];
+		
+	$log[$date] = $visites;
+}
+
+
+$max = max($log);
+
+
+if ($max>10) $maxgraph = substr(ceil(substr($max,0,2) / 10)."000000000000", 0, strlen($max));
+else $maxgraph = 10;
+
+$rapport = 200 / $maxgraph;
+
+if (count($log) < 365) $largeur = floor(365 / count($log));
+if ($largeur < 1) $largeur = 1;
+
+
+debut_cadre_relief();
+echo "<table cellpadding=0 cellspacing=0 border=0><tr>";
+
+	echo "<td bgcolor='black'><img src='img_pack/rien.gif' width=1 height=1></td>";
+
+// Presentation graphique
+while (list($key, $value) = each($log)) {
+	
+	$hauteur = round($value * $rapport)	- 1;
+	
+	echo "<td valign='bottom' width=5>";
+	
+	if ($hauteur > 0){
+		echo "<img src='img_pack/rien.gif' width=$largeur height=1 style='background-color:$couleur_foncee;'>";
+		echo "<img src='img_pack/rien.gif' width=$largeur height=$hauteur style='background-color:$couleur_claire;'>";
+	}
+	echo "<img src='img_pack/rien.gif' width=$largeur height=1 style='background-color:black;'>";
+	
+	echo "</td>";
+	
+	$jour_precedent = $key;
+}
+echo "<td bgcolor='black'><img src='img_pack/rien.gif' width=1 height=1></td>";
+echo "<td><img src='img_pack/rien.gif' width=5 height=1></td>";
+echo "<td valign='top'><font face='verdana,arial,helvetica,sans-serif' size=2>max&nbsp;: $max</font></td>";
+echo "</tr></table>";
+
+fin_cadre_relief();
+
+$query = "SELECT * FROM spip_visites_referers WHERE type = '$page' ORDER BY visites DESC LIMIT 0,100";
+$result = spip_query($query);
+
+echo "<p><font face='verdana,arial,helvetica,sans-serif' size=2>";
+while ($row = mysql_fetch_array($result)) {
+	$referer = $row['referer'];
+	$visites = $row['visites'];
+
+	echo "\n<li>";
+
+
+	if ($visites > 5) echo "<font color='red'>$visites liens : </font>";
+	else if ($visites > 1) echo "$visites liens : ";
+	else echo "<font color='#999999'>$visites lien : </font>";
+
+	echo stats_show_keywords($referer, $referer);
+}
+echo "</font>";
+
+fin_page();
+
+?>
+
diff --git a/inc-public.php3 b/inc-public.php3
index 1f3c403e79..0b124db4ba 100644
--- a/inc-public.php3
+++ b/inc-public.php3
@@ -329,7 +329,7 @@ if ($spip_session) {
 // Gestion des statistiques par article
 //
 
-if ($id_article AND lire_meta("activer_statistiques") != "non" AND !$flag_preserver) {
+if (lire_meta("activer_statistiques") != "non" AND !$flag_preserver) {
 	include_ecrire("inc_connect.php3");
 	include_local ("inc-stats.php3");
 	if ($db_ok) $stats = ecrire_stats();
diff --git a/inc-stats.php3 b/inc-stats.php3
index cc8d793535..6c86653528 100644
--- a/inc-stats.php3
+++ b/inc-stats.php3
@@ -6,11 +6,48 @@ if (defined("_INC_STATS")) return;
 define("_INC_STATS", "1");
 
 function ecrire_stats() {
+	global $id_article, $id_breve, $id_rubrique, $admin_ok;
+
+	
+	// Essai de fichier de log simplifie
+	$log_ip = $GLOBALS['REMOTE_ADDR'];
+	if ($id_rubrique > 0) {
+		$log_type = "rubrique";
+		$log_id_num = $id_rubrique;
+	}
+	else if ($id_article > 0) {
+		$log_type = "article";
+		$log_id_num = $id_article;
+	}
+	else if ($id_breve > 0) {
+		$log_type = "breve";
+		$log_id_num = $id_breve;
+	}
+	$url_site_spip = lire_meta('adresse_site');
+	$log_referer = $GLOBALS['HTTP_REFERER'];
+	if (eregi($url_site_spip,$log_referer)) $log_referer = "";
+	
+	$log_date = date("Y-m-d")." 00:00:00";
+	
+	$query = "INSERT spip_visites_temp (date, ip, type, referer) VALUES ('$log_date', '$log_ip', '$log_type$log_id_num','$log_referer')";
+	spip_query($query);
+
+	if ($admin_ok AND $id_article > 0) {
+		$query = "SELECT visites FROM spip_articles WHERE id_article=$id_article AND statut='publie'";
+		$result = spip_query($query);
+		if ($row = mysql_fetch_array($result)) {
+			$visites = $row['visites'];
+			echo "[$visites visites]";
+			bouton("Evolution des visites", "./ecrire/statistiques_visites.php3?id_article=$id_article");
+			
+		}
+	}
+
+	/*
 	global $HTTP_REFERER;
 	global $id_article;
 	global $admin_ok;
 
-
 	$my_ref = $HTTP_REFERER;
 	$my_ref = "\n".substr(md5($my_ref), 0, 15);
 
@@ -20,7 +57,7 @@ function ecrire_stats() {
 	if ($row = mysql_fetch_array($result)) {
 		$visites = $row['visites'];
 		$referers = $row['referers'];
-		
+
 		$visites++;
 
 		if (!ereg($my_ref, $referers)) {
@@ -32,10 +69,11 @@ function ecrire_stats() {
 		}
 
 		$num_ref = strlen($referers) / 16;
-		if ($admin_ok) {
-			return "<small>[$visites visites - $num_ref referers]</small>";
-		}
+		if ($admin_ok) echo "<small>[$visites visites - $num_ref referers]</small>";
 	}
+	*/
+	
+	
 }
 
 
-- 
GitLab