From 8b037c87c30a223e2e00fd6519dac03513f66d82 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sat, 22 Oct 2005 09:03:16 +0000
Subject: [PATCH] surcharge  possible pour les statistiques par repartition,
 avec nettoyage de code mort et rajout de l'attribut title. La convention de
 nommage de la bibli a charger donnait le meme resultat que celle pour
 inc_cron, donc pour eviter un fichier ayant 2 jeux de fonctions sans rapport,
 renommage du script et de ses appels

---
 .gitattributes                          |   2 +
 ecrire/inc_presentation.php3            |   8 +-
 ecrire/inc_statistiques_repartition.php | 172 ++++++++++++++++++++
 ecrire/statistiques.php3                | 198 +-----------------------
 ecrire/statistiques_repartition.php     |  33 ++++
 5 files changed, 218 insertions(+), 195 deletions(-)
 create mode 100644 ecrire/inc_statistiques_repartition.php
 create mode 100644 ecrire/statistiques_repartition.php

diff --git a/.gitattributes b/.gitattributes
index 9c8cc2e34f..26fc694e9b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -273,6 +273,7 @@ ecrire/inc_mini_nav.php -text
 ecrire/inc_naviguer.php -text
 ecrire/inc_spip_cal.php -text
 ecrire/inc_spip_image.php -text
+ecrire/inc_statistiques_repartition.php -text
 ecrire/lang/ecrire_ru.php3 -text
 ecrire/lang/public_ru.php3 -text
 ecrire/lang/spip_ru.php3 -text
@@ -289,6 +290,7 @@ ecrire/safehtml/classes/safehtml.php -text
 ecrire/safehtml/license.txt -text
 ecrire/safehtml/readme-SPIP.txt -text
 ecrire/safehtml/readme.txt -text
+ecrire/statistiques_repartition.php -text
 plugins/ancres/version.php -text
 plugins/podcast_client/podcast_client.php -text
 plugins/podcast_client/version.php -text
diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3
index 63aa6fddd2..5389de0783 100644
--- a/ecrire/inc_presentation.php3
+++ b/ecrire/inc_presentation.php3
@@ -2033,7 +2033,7 @@ function barre_onglets($rubrique, $onglet){
 	}
 	if ($rubrique == "repartition") {
 		if (lire_meta('multi_articles') == 'oui' OR lire_meta('multi_rubriques') == 'oui') {
-			onglet(_T('onglet_repartition_rubrique'), "statistiques.php3", "rubriques", $onglet, "rubrique-24.gif");
+			onglet(_T('onglet_repartition_rubrique'), "statistiques_repartition.php", "rubriques", $onglet, "rubrique-24.gif");
 			onglet(_T('onglet_repartition_lang'), "statistiques_lang.php3", "langues", $onglet, "langues-24.gif");
 		}
 	}
@@ -2045,8 +2045,8 @@ function barre_onglets($rubrique, $onglet){
 	}
 
 	if ($rubrique == "stat_depuis") {
-		onglet(_T('icone_repartition_actuelle'), "statistiques.php3", "popularite", $onglet);
-		onglet(_T('onglet_repartition_debut'), "statistiques.php3?critere=debut", "debut", $onglet);
+		onglet(_T('icone_repartition_actuelle'), "statistiques_repartition.php", "popularite", $onglet);
+		onglet(_T('onglet_repartition_debut'), "statistiques_repartition.php?critere=debut", "debut", $onglet);
 
 	}
 
@@ -2564,7 +2564,7 @@ else {
 		echo "<div class='$class' id='bandeausuivi' style='position: absolute; $spip_lang_left: ".$decal."px;'><div class='bandeau_sec'><table class='gauche'><tr>\n";
 		if ($connect_toutes_rubriques) bandeau_barre_verticale();
 
-		icone_bandeau_secondaire (_T('icone_repartition_visites'), "statistiques.php3", "rubrique-24.gif", "repartition", $sous_rubrique);
+		icone_bandeau_secondaire (_T('icone_repartition_visites'), "statistiques_repartition.php", "rubrique-24.gif", "repartition", $sous_rubrique);
 		if (lire_meta('multi_articles') == 'oui' OR lire_meta('multi_rubriques') == 'oui')
 			icone_bandeau_secondaire (_T('onglet_repartition_lang'), "statistiques_lang.php3", "langues-24.gif", "repartition-langues", $sous_rubrique);
 		icone_bandeau_secondaire (_T('titre_liens_entrants'), "statistiques_referers.php3", "referers-24.gif", "referers", $sous_rubrique);
diff --git a/ecrire/inc_statistiques_repartition.php b/ecrire/inc_statistiques_repartition.php
new file mode 100644
index 0000000000..0757e5b3fd
--- /dev/null
+++ b/ecrire/inc_statistiques_repartition.php
@@ -0,0 +1,172 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2005                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+function enfants($id_parent, $critere){
+	global $nombre_vis;
+
+	global $nombre_abs;
+
+	$query = "SELECT id_rubrique FROM spip_rubriques WHERE id_parent='$id_parent'";
+	$result = spip_query($query);
+	$nombre = 0;
+
+	while($row = spip_fetch_array($result)) {
+		$id_rubrique = $row['id_rubrique'];
+
+		$query2 = "SELECT SUM(".$critere.") AS cnt FROM spip_articles WHERE id_rubrique='$id_rubrique'";
+		$result2 = spip_query($query2);
+		$visites = 0;
+		if ($row2 = spip_fetch_array($result2)) {
+			$visites = $row2['cnt'];
+		}
+		$nombre_abs[$id_rubrique] = $visites;
+		$nombre_vis[$id_rubrique] = $visites;
+		$nombre += $visites;
+		$nombre += enfants($id_rubrique, $critere);
+	}
+	$nombre_vis[$id_parent] += $nombre;
+	return $nombre;
+}
+
+
+function enfants_aff($id_parent,$decalage, $critere, $gauche=0) {
+
+	global $ifond;
+	global $niveau;
+	global $nombre_vis;
+	global $nombre_abs;
+	global $couleur_claire, $couleur_foncee, $spip_lang_right, $spip_lang_left;
+	global $abs_total;
+	global $taille;
+
+	$query="SELECT id_rubrique, titre, descriptif FROM spip_rubriques WHERE id_parent='$id_parent' ORDER BY 0+titre, titre";
+	$result=spip_query($query);
+	
+
+	while($row = spip_fetch_array($result)){
+		$id_rubrique = $row['id_rubrique'];
+		$titre = typo($row['titre']);
+		$descriptif = typo($row['descriptif']);
+
+		if ($nombre_vis[$id_rubrique]>0 OR $nombre_abs[$id_rubrique]>0){
+			$largeur_rouge = floor(($nombre_vis[$id_rubrique] - $nombre_abs[$id_rubrique]) * $taille / $abs_total);
+			$largeur_vert = floor($nombre_abs[$id_rubrique] * $taille / $abs_total);
+			
+			if ($largeur_rouge+$largeur_vert>0){
+					
+				if ($niveau == 0) {
+					$couleur="#cccccc";
+				}
+
+				else if ($niveau == 1) {
+					$couleur="#eeeeee";
+				}
+				else {
+					$couleur="white";
+				}
+				echo "<TABLE CELLPADDING=2 CELLSPACING=0 BORDER=0 width='100%'>";
+				echo "\n<TR BGCOLOR='$couleur' BACKGROUND='" . _DIR_IMG_PACK . "rien.gif' width='100%'>";
+				echo "\n<TD style='border-bottom: 1px solid #aaaaaa; padding-$spip_lang_left: ".($niveau*20+5)."px;'>";
+				if ($niveau==0 OR 1==1){
+					$pourcent = round($nombre_vis[$id_rubrique]/$abs_total*1000)/10;
+					echo "\n<div class='verdana1' style='float: $spip_lang_right;'>$pourcent%</div>";
+				}
+
+				//echo "<IMG SRC='" . _DIR_IMG_PACK . "rien.gif' WIDTH='".($niveau*20+1)."' HEIGHT=8 BORDER=0>";
+				
+			
+				if ( $largeur_rouge > 2) echo bouton_block_invisible("stats$id_rubrique");
+				
+				echo "<span class='verdana1'>";	
+				echo "<A HREF='naviguer.php3?id_rubrique=$id_rubrique' style='color: black;' title='$descriptif'>$titre</A>";
+				
+				
+				echo "</span>";
+				echo "</TD>\n<TD ALIGN='right' width='".($taille+5)."' style='border-bottom: 1px solid #aaaaaa;'>";
+				
+				
+				echo "\n<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 WIDTH=".($decalage+1+$gauche)." HEIGHT=8>";
+				echo "\n<TR>";
+				if ($gauche > 0) echo "<td width='".$gauche."'></td>";
+				echo "\n<TD style='background-color: #eeeeee; border: 1px solid #999999; white-space: nowrap;'>";
+				if ($visites_abs > 0) echo "<img src='" . _DIR_IMG_PACK . "rien.gif' width='".$visites_abs."' height=8 border=0>";
+				if ($largeur_rouge>0) echo "<IMG SRC='" . _DIR_IMG_PACK . "rien.gif' style='background-color: $couleur_foncee;' WIDTH=$largeur_rouge HEIGHT=8 BORDER=0>";
+				if ($largeur_vert>0) echo "<IMG SRC='" . _DIR_IMG_PACK . "rien.gif' style='background-color: $couleur_claire;' WIDTH=$largeur_vert HEIGHT=8 BORDER=0>";
+				
+				echo "</TD></TR></TABLE>\n";
+				echo "</TD></TR></table>";
+			}	
+		}
+		
+		if ($largeur_rouge > 0) {
+			$niveau++;
+			echo debut_block_invisible("stats$id_rubrique");
+			enfants_aff($id_rubrique,$largeur_rouge, $critere, $visites_abs+$gauche);
+			echo fin_block();
+			$niveau--;
+		}
+		$visites_abs = $visites_abs + round($nombre_vis[$id_rubrique]/$abs_total*$taille);
+	}
+}
+
+function statistiques_repartition_dist($critere)
+{
+
+  global $connect_statut, $connect_toutes_rubriques, $spip_ecran, $taille,
+    $abs_total, $nombre_vis;
+
+	debut_page(_T('titre_page_statistiques'), "suivi", "repartition");
+	
+	if (($connect_statut != '0minirezo')|| !$connect_toutes_rubriques) {
+		echo _T('avis_non_acces_page');
+		exit;
+	}
+
+	if ($spip_ecran == "large") {
+		$largeur_table = 974;
+		$taille = 550;
+	} else {
+		$largeur_table = 750;
+		$taille = 400;
+	}
+
+	echo "\n<br><br><center><table width='$largeur_table'><tr width='$largeur_table'><td width='$largeur_table' class='verdana2' style='text-align: center'>";
+	gros_titre(_T('titre_page_statistiques'));
+
+	if ($critere == "debut") {
+		$critere = "visites";
+		barre_onglets("stat_depuis", "debut");
+	}
+	else {
+		$critere = "popularite";
+		barre_onglets("stat_depuis", "popularite");
+	}
+
+	$abs_total=enfants(0, $critere);
+	if ($abs_total<1) $abs_total=1;
+	$nombre_vis[0] = 0;
+
+	debut_cadre_relief("statistiques-24.gif");
+	echo "<div style='border: 1px solid #aaaaaa;'>";
+	enfants_aff(0,$taille, $critere);
+	echo "</div><br />",
+	  "<div class='verdana3' style='text-align: left;'>",
+	  _T('texte_signification'),
+	  "</div>";
+	fin_cadre_relief();
+
+	echo "</td></tr></table></center>";
+
+	//	fin_page();
+}
+?>
+
diff --git a/ecrire/statistiques.php3 b/ecrire/statistiques.php3
index d46b2097ad..492fca041f 100644
--- a/ecrire/statistiques.php3
+++ b/ecrire/statistiques.php3
@@ -10,198 +10,14 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
+  // ce script n'est la que pour compatibilite avec d'anciens liens
+  // Il redirige pour pouvoir utiliser le chargement automatique 
+  // du fichier homonyme avec inc_ comme prefixe.
+  // Le nom "statistiques" rentre en conflit avec le chargement automatique
+  // pour inc_cron: ca pourrait cohabiter, mais ca ralentirait le chargement
 
-include ("inc.php3");
-
-
-debut_page(_T('titre_page_statistiques'), "suivi", "repartition");
-
-	if ($spip_ecran == "large") {
-		$largeur_table = 974;
-		$taille = 550;
-	} else {
-		$largeur_table = 750;
-		$taille = 400;
-	}	
-	
-echo "<center><table width='$largeur_table'><tr width='$largeur_table'><td width='$largeur_table' class='verdana2'>";
-
-
-echo "<br><br>";
-echo "<center>";
-gros_titre(_T('titre_page_statistiques'));
-echo "</center>";
-//if (lire_meta('multi_articles') == 'oui' OR lire_meta('multi_rubriques') == 'oui')
-//	barre_onglets("repartition", "rubriques");
-
-if ($GLOBALS["critere"] == "debut") {
-	$critere = "visites";
-//	gros_titre(_T('onglet_repartition_debut'));	
-}
-else {
-	$critere = "popularite";
-//	gros_titre(_T('onglet_repartition_actuelle'));	
-}
-
-if ($critere == "popularite") barre_onglets("stat_depuis", "popularite");
-else barre_onglets("stat_depuis", "debut");
-
-
-
-//debut_gauche();
-
-//debut_droite();
-
-if ($connect_statut != '0minirezo') {
-	echo _T('avis_non_acces_page');
-	fin_page();
-	exit;
-}
-
-//
-// Statistiques sur le site
-//
-
-
-function enfants($id_parent){
-	global $nombre_vis;
-	global $total_vis;
-	global $nombre_abs;
-	global $critere;
-
-	$query = "SELECT id_rubrique FROM spip_rubriques WHERE id_parent='$id_parent'";
-	$result = spip_query($query);
-	$nombre = 0;
-
-	while($row = spip_fetch_array($result)) {
-		$id_rubrique = $row['id_rubrique'];
-
-		$query2 = "SELECT SUM(".$critere.") AS cnt FROM spip_articles WHERE id_rubrique='$id_rubrique'";
-		$result2 = spip_query($query2);
-		$visites = 0;
-		if ($row2 = spip_fetch_array($result2)) {
-			$visites = $row2['cnt'];
-		}
-		$nombre_abs[$id_rubrique] = $visites;
-		$nombre_vis[$id_rubrique] = $visites;
-		$nombre += $visites;
-		$nombre += enfants($id_rubrique);
-	}
-	$nombre_vis[$id_parent] += $nombre;
-	return $nombre;
-}
-
-
-function enfants_aff($id_parent,$decalage, $gauche=0) {
-	global $total_vis;
-	global $ifond;
-	global $niveau;
-	global $nombre_vis;
-	global $nombre_abs;
-	global $couleur_claire, $couleur_foncee, $spip_lang_right, $spip_lang_left;
-	global $abs_total;
-	global $taille;
-
-	$query="SELECT id_rubrique, titre FROM spip_rubriques WHERE id_parent='$id_parent' ORDER BY 0+titre, titre";
-	$result=spip_query($query);
-	
-
-	while($row = spip_fetch_array($result)){
-		$id_rubrique = $row['id_rubrique'];
-		$titre = typo($row['titre']);
-
-		if ($nombre_vis[$id_rubrique]>0 OR $nombre_abs[$id_rubrique]>0){
-			$largeur_rouge = floor(($nombre_vis[$id_rubrique] - $nombre_abs[$id_rubrique]) * $taille / $abs_total);
-			$largeur_vert = floor($nombre_abs[$id_rubrique] * $taille / $abs_total);
-			
-			if ($largeur_rouge+$largeur_vert>0){
-					
-				if ($niveau == 0) {
-					$couleur="#cccccc";
-				}
-
-				else if ($niveau == 1) {
-					$couleur="#eeeeee";
-				}
-				else {
-					$couleur="white";
-				}
-				echo "<TABLE CELLPADDING=2 CELLSPACING=0 BORDER=0 width='100%'>";
-				echo "<TR BGCOLOR='$couleur' BACKGROUND='" . _DIR_IMG_PACK . "rien.gif' width='100%'>";
-				echo "<TD style='border-bottom: 1px solid #aaaaaa; padding-$spip_lang_left: ".($niveau*20+5)."px;'>";
-				if ($niveau==0 OR 1==1){
-					$pourcent = round($nombre_vis[$id_rubrique]/$abs_total*1000)/10;
-					echo "<div class='verdana1' style='float: $spip_lang_right;'>$pourcent%</div>";
-				}
-
-				//echo "<IMG SRC='" . _DIR_IMG_PACK . "rien.gif' WIDTH='".($niveau*20+1)."' HEIGHT=8 BORDER=0>";
-				
-			
-				if ( $largeur_rouge > 2) echo bouton_block_invisible("stats$id_rubrique");
-				
-				echo "<span class='verdana1'>";	
-				echo "<A HREF='naviguer.php3?id_rubrique=$id_rubrique' style='color: black;'>$titre</A>";
-				
-				
-				echo "</span>";
-				echo "</TD><TD ALIGN='right' width='".($taille+5)."' style='border-bottom: 1px solid #aaaaaa;'>";
-				
-				
-				echo "<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 WIDTH=".($decalage+1+$gauche)." HEIGHT=8>";
-				echo "<TR>";
-				if ($gauche > 0) echo "<td width='".$gauche."'></td>";
-				echo "<TD style='background-color: #eeeeee; border: 1px solid #999999; white-space: nowrap;'>";
-				if ($visites_abs > 0) echo "<img src='" . _DIR_IMG_PACK . "rien.gif' width='".$visites_abs."' height=8 border=0>";
-				if ($largeur_rouge>0) echo "<IMG SRC='" . _DIR_IMG_PACK . "rien.gif' style='background-color: $couleur_foncee;' WIDTH=$largeur_rouge HEIGHT=8 BORDER=0>";
-				if ($largeur_vert>0) echo "<IMG SRC='" . _DIR_IMG_PACK . "rien.gif' style='background-color: $couleur_claire;' WIDTH=$largeur_vert HEIGHT=8 BORDER=0>";
-				
-				echo "</TD></TR></TABLE>\n";
-				echo "</TD></TR></table>";
-			}	
-		}
-		
-		if ($largeur_rouge > 0) {
-			$niveau++;
-			echo debut_block_invisible("stats$id_rubrique");
-			enfants_aff($id_rubrique,$largeur_rouge, $visites_abs+$gauche);
-			echo fin_block();
-			$niveau--;
-		}
-		$visites_abs = $visites_abs + round($nombre_vis[$id_rubrique]/$abs_total*$taille);
-	}
-}
-
-
-
-$abs_total=enfants(0);
-if ($abs_total<1) $abs_total=1;
-$nombre_vis[0] = 0;
-
-$query = "SELECT id_rubrique FROM spip_rubriques WHERE id_parent='0'";
-$result = spip_query($query);
-
-while($row = spip_fetch_array($result)) {
-	$id_rubrique = $row['id_rubrique'];
-	if ($nombre_vis[$id_rubrique] > $total_vis) $total_vis+=$nombre_vis[$id_rubrique];
-}
-
-if ($total_vis<1) $total_vis=1;
-
-debut_cadre_relief("statistiques-24.gif");
-echo "<div style='border: 1px solid #aaaaaa;'>";
-enfants_aff(0,$taille);
-echo "</div>";
-
-
-
-echo "<P><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('texte_signification')."</FONT>";
-
-
-fin_cadre_relief();
-
-echo "</td></tr></table></center>";
-
-//fin_page();
+header("Location: " . str_replace('statistiques.php3', 'statistiques_repartition.php',  $_SERVER['REQUEST_URI']));
 
+exit;
 ?>
 
diff --git a/ecrire/statistiques_repartition.php b/ecrire/statistiques_repartition.php
new file mode 100644
index 0000000000..d515bd7bd1
--- /dev/null
+++ b/ecrire/statistiques_repartition.php
@@ -0,0 +1,33 @@
+<?php
+
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2005                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+include ("inc.php3");
+
+// prendre $var_* comme variables pour eviter les conflits avec les http_vars
+
+$var_nom = "statistiques_repartition";
+$var_f = find_in_path('inc_' . $var_nom . '.php');
+
+if ($var_f) 
+  include($var_f);
+elseif (file_exists($var_f = (_DIR_INCLUDE . 'inc_' . $var_nom . '.php')))
+  include($var_f);
+
+if (function_exists($var_nom))
+  $var_nom($critere);
+elseif (function_exists($var_f = $var_nom . "_dist"))
+  $var_f($critere);
+else
+   spip_log("fonction $var_nom indisponible");
+?>
+
-- 
GitLab