diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index f7fb0f861869424c10d3de8567f815bc1fc2db7c..1eae7409feb8d5f9cd3b6400f3e97a972ef67b32 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 c39ddf6e84ccea1007a5b4a601f03b5d16831f4d..b63ea4e655bbc153b8ba5f9f59861107e5e1f047 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