From d410dc93e197c6593240ee6a38a22d9f65fa1094 Mon Sep 17 00:00:00 2001
From: James <james@rezo.net>
Date: Mon, 16 Oct 2006 18:29:11 +0000
Subject: [PATCH] =?UTF-8?q?balise=20#TOTAL=5FUNIQUE=20qui=20donne=20le=20n?=
 =?UTF-8?q?ombre=20d'=C3=A9l=C3=A9ments=20affich=C3=A9s=20effectivement=20?=
 =?UTF-8?q?via=20le=20filtre=20|unique.=20C'est=20'famille'-compatible=20:?=
 =?UTF-8?q?)=20(comprendre=20que=20le=20param=C3=A8tre=20du=20filtre=20fon?=
 =?UTF-8?q?ctionne=20=C3=A9videment=20avec=20la=20balise.)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Voilà, y a peut-être d'autres trucs à faire autour de ça, on en discute sur spip-dev si vous avez des idées.
---
 ecrire/inc/filtres.php    |  7 +++++--
 ecrire/public/balises.php | 16 ++++++++++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index f7fb0f8618..1eae7409fe 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -1074,14 +1074,17 @@ function extraire_multi ($letexte) {
 //
 // Ce filtre retourne la donnee si c'est la premiere fois qu'il la voit ;
 // possibilite de gerer differentes "familles" de donnees |unique{famille}
+# |unique{famille,1} affiche le nombre d'elements affiches (preferer toutefois #TOTAL_UNIQUE)
 # ameliorations possibles :
 # 1) si la donnee est grosse, mettre son md5 comme cle
 # 2) purger $mem quand on change de squelette (sinon bug inclusions)
 //
 // http://www.spip.net/@unique
 // http://doc.spip.org/@unique
-function unique($donnee, $famille='') {
+function unique($donnee, $famille='', $cpt = false) {
 	static $mem;
+	if ($cpt)
+		return count($mem[$famille]);
 	if (!($mem[$famille][$donnee]++))
 		return $donnee;
 }
@@ -1709,4 +1712,4 @@ function concat(){
 	return $texte;
 }
 
-?>
+?>
\ No newline at end of file
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index c39ddf6e84..b63ea4e655 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -1263,4 +1263,20 @@ function balise_PIPELINE_dist($p) {
 	return $p;
 }
 
+//
+// #TOTAL_UNIQUE
+// pour recuperer le nombre d'elements affiches par l'intermediaire du filtre
+// |unique
+// usage:
+// #TOTAL_UNIQUE afiche le nombre de #BALISE|unique
+// #TOTAL_UNIQUE{famille} afiche le nombre de #BALISE|unique{famille}
+//
+// http://doc.spip.org/@balise_TOTAL_UNIQUE_dist
+function balise_TOTAL_UNIQUE_dist($p) {
+	$_famille = interprete_argument_balise(1,$p);
+	$_famille = $_famille ? $_famille : "''";
+	$p->code = "unique('', $_famille, true)";
+	return $p;
+}
+
 ?>
\ No newline at end of file
-- 
GitLab