From d258723e95eef7b78d69ad122cda5096681f34ea Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Fri, 25 Jan 2008 09:39:05 +0000
Subject: [PATCH] =?UTF-8?q?Le=20clonage=20de=20la=20pr=C3=A9sentation=20de?=
 =?UTF-8?q?s=20statistiques=20en=20celui=20des=20signatures=20ayant=20incl?=
 =?UTF-8?q?us=20le=20lien=20CSV=20par=20erreur,=20autant=20aller=20justqu'?=
 =?UTF-8?q?au=20bout.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Les productions de fichiers CSV sont à présent assurées par des squelettes accessibles seulement depuis l'espace privé, et rangé dans {{{prive/transmettre}}}.

Il y en a un pour les statistiques générales des visites, un pour celles pour d'un article précis (résultats identiques à ce qu'il y avait avant), mais aussi un pour les signatures d'une petition.
Pour ce dernier squelette, utilisation de la jointure explicite pour obtenir les signatures sur toutes les traduction de l'article.
---
 .gitattributes                                |  3 ++
 .../prive/transmettre/signatures_article.html |  9 ++++
 dist/prive/transmettre/statistiques.html      |  7 +++
 .../transmettre/statistiques_article.html     |  7 +++
 ecrire/exec/statistiques_visites.php          | 53 +++++++++----------
 ecrire/public/assembler.php                   | 12 +++++
 6 files changed, 62 insertions(+), 29 deletions(-)
 create mode 100644 dist/prive/transmettre/signatures_article.html
 create mode 100644 dist/prive/transmettre/statistiques.html
 create mode 100644 dist/prive/transmettre/statistiques_article.html

diff --git a/.gitattributes b/.gitattributes
index 01b1070a5f..7033e4ce1f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -283,6 +283,9 @@ dist/prive/infos/breve_fonctions.php -text
 dist/prive/infos/rubrique.html -text
 dist/prive/infos/site.html -text
 dist/prive/infos/site_fonctions.php -text
+dist/prive/transmettre/signatures_article.html -text
+dist/prive/transmettre/statistiques.html -text
+dist/prive/transmettre/statistiques_article.html -text
 dist/puce.gif -text
 dist/puce_prive.gif -text
 dist/puce_prive_rtl.gif -text
diff --git a/dist/prive/transmettre/signatures_article.html b/dist/prive/transmettre/signatures_article.html
new file mode 100644
index 0000000000..dcb68b32cf
--- /dev/null
+++ b/dist/prive/transmettre/signatures_article.html
@@ -0,0 +1,9 @@
+#HTTP_HEADER{Content-Type: text/csv; charset=#CHARSET}
+#HTTP_HEADER{Content-Disposition: attachment; filename=signature#ID_ARTICLE.csv}
+<BOUCLE0(ARTICLES){id_article}><B1>#TOTAL_BOUCLE <:info_signatures:> <:info_pour:>  #TITRE;
+<:nom:>;<:email:>
+<BOUCLE1(SIGNATURES){id_article}{par nom_email}>#NOM_EMAIL;#AD_EMAIL
+</BOUCLE1></BOUCLE0>
+
+
+
diff --git a/dist/prive/transmettre/statistiques.html b/dist/prive/transmettre/statistiques.html
new file mode 100644
index 0000000000..e6b84fe540
--- /dev/null
+++ b/dist/prive/transmettre/statistiques.html
@@ -0,0 +1,7 @@
+#HTTP_HEADER{Content-Type: text/csv; charset=#CHARSET}
+#HTTP_HEADER{Content-Disposition: attachment; filename=stats-#NOM_SITE_SPIP.csv}
+<BOUCLE1(VISITES){par date}>#DATE;#VISITES
+</BOUCLE1>
+
+
+
diff --git a/dist/prive/transmettre/statistiques_article.html b/dist/prive/transmettre/statistiques_article.html
new file mode 100644
index 0000000000..e5d4a286f2
--- /dev/null
+++ b/dist/prive/transmettre/statistiques_article.html
@@ -0,0 +1,7 @@
+#HTTP_HEADER{Content-Type: text/csv; charset=#CHARSET}
+#HTTP_HEADER{Content-Disposition: attachment; filename=stats-#NOM_SITE_SPIP-#ID_ARTICLE.csv}
+<BOUCLE1(VISITES_ARTICLES){id_article}{par date}>#DATE;#VISITES
+</BOUCLE1>
+
+
+
diff --git a/ecrire/exec/statistiques_visites.php b/ecrire/exec/statistiques_visites.php
index a0675e9707..609add02fd 100644
--- a/ecrire/exec/statistiques_visites.php
+++ b/ecrire/exec/statistiques_visites.php
@@ -45,23 +45,6 @@ function http_img_rien($width, $height, $class='', $title='') {
 		. (!$title ? '' : (" title=\"$title\"")));
 }
 
-// pondre les stats sous forme d'un fichier csv tres basique
-// http://doc.spip.org/@statistiques_csv
-function statistiques_csv($id) {
-
-	$filename = 'stats_'.($id ? 'article'.$id : 'total').'.csv';
-	header('Content-Type: text/csv');
-	header('Content-Disposition: attachment; filename='.$filename);
-	
-	if ($id)
-		$s = sql_select("date, visites", "spip_visites_articles", "id_article=$id", "", "date");
-	else
-		$s = sql_select("date, visites", "spip_visites", "", "", "date");
-	while ($t = sql_fetch($s)) {
-		echo $t['date'].";".$t['visites']."\n";
-	}
-}
-
 // http://doc.spip.org/@exec_statistiques_visites_dist
 function exec_statistiques_visites_dist()
 {
@@ -74,12 +57,20 @@ function exec_statistiques_visites_dist()
 	if ($limit == 0) $limit = 100;
 
 	if (!autoriser('voirstats', $id_article ? 'article':'', $id_article)) {
-	  include_spip('inc/minipres');
-	  echo minipres();
+		include_spip('inc/minipres');
+		echo minipres();
 	} else {
-		if (_request('format') == 'csv')
-			statistiques_csv($id_article);
-		else exec_statistiques_visites_args($id_article, $aff_jours, $limit);
+		if (_request('format') != 'csv')
+			exec_statistiques_visites_args($id_article, $aff_jours, $limit);
+		else {
+			include_spip('public/assembler');
+			$fond = 'prive/transmettre/'
+			 .  (_request('table')=='visites' ? 'statistiques' : 'signatures');
+			if (!$id_article)
+				$page = envoyer_page($fond, array());
+			else envoyer_page($fond . "_article", 
+				array('id_article' => $id_article));
+		} 
 	}
 }
 
@@ -226,7 +217,6 @@ function exec_statistiques_visites_args($id_article, $aff_jours, $limit)
 
 	echo debut_droite('', true);
 
-	$mode = statistiques_mode(self());
 	if ($id_article) {
 			$table = "spip_visites_articles";
 			$table_ref = "spip_referers_articles";
@@ -256,11 +246,11 @@ function exec_statistiques_visites_args($id_article, $aff_jours, $limit)
 
 			echo statistiques_par_mois(sql_select("FROM_UNIXTIME(UNIX_TIMESTAMP(date),'%Y-%m') AS date_unix, SUM(visites) AS total_visites", $table,  "$where AND date > DATE_SUB(NOW(),INTERVAL 2700 DAY)", 'date_unix', "date"), $last);
 		}
-		echo fin_cadre_relief(true), $mode;
+		echo fin_cadre_relief(true), statistiques_mode('visites');
 	}
 
 	if ($id_article AND  $n = sql_countsel('spip_signatures', "id_article=$id_article")) {
-		echo statistiques_signatures($aff_jours, $id_article, $mode, $n);
+		echo statistiques_signatures($aff_jours, $id_article, statistiques_mode('signatures'), $n);
 	}
 
 	$r = sql_select("referer, referer_md5, visites AS vis", $table_ref, $where, "", "vis DESC", $limit);
@@ -439,7 +429,7 @@ function statistiques_tous($log, $date_premier, $last, $total_absolu, $val_popul
 // Le bouton pour CSV et pour passer de svg a htm
 
 // http://doc.spip.org/@statistiques_mode
-function statistiques_mode($lui)
+function statistiques_mode($table)
 {
 	if (flag_svg()) {
 		$lien = 'non'; $alter = 'HTML';
@@ -447,10 +437,15 @@ function statistiques_mode($lui)
 		$lien = 'oui'; $alter = 'SVG';
 	}
 
+	$lui = self();
+	$csv = parametre_url(parametre_url($lui, 'table', $table), 'format', 'csv');
+
 	return "\n<div style='text-align:".$GLOBALS['spip_lang_right'] . ";' class='verdana1 spip_x-small'>"
-		. "<a href='". parametre_url($lui, 'var_svg', $lien)."'>$alter</a>" 
-		. " | <a href='"
-	  	. parametre_url($lui, 'format', 'csv')."'>CSV</a>"
+		. "<a href='". parametre_url($lui, 'var_svg', $lien)."'>"
+		. $alter
+		. "</a> | <a href='"
+		. $csv
+	  	. "'>CSV</a>"
 		. "</div>\n";
 }
 
diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php
index 1447327e11..9e38c591ca 100644
--- a/ecrire/public/assembler.php
+++ b/ecrire/public/assembler.php
@@ -110,6 +110,18 @@ function public_assembler_dist($fond, $connect='') {
 	return assembler_page ($fond, $connect);
 }
 
+// fonction pour l'envoi de fichier
+function envoyer_page($fond, $contexte)
+{
+	$page = inclure_page($fond, $contexte);
+	if (!is_array($page['entetes'])) {
+		include_spip('inc/headers');
+		redirige_par_entete(generer_url_public('404'));
+	}
+	envoyer_entetes($page['entetes']);
+	echo $page['texte'];
+}
+
 // Envoyer les entetes, en retenant ceux qui sont a usage interne
 // et demarrent par X-Spip-...
 function envoyer_entetes($entetes) {
-- 
GitLab