From f508f9378d589e191a2cae53b5bdfe90cb775f56 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Mon, 8 May 2006 00:19:15 +0000 Subject: [PATCH] =?UTF-8?q?nouveau=20crit=C3=A8re=20{logo}=20qui=20ne=20li?= =?UTF-8?q?ste=20que=20les=20objets=20ayant=20un=20logo=20({!logo}=20fonct?= =?UTF-8?q?ionne=20;=20le=20crit=C3=A8re=20fonctionne=20aussi=20dans=20la?= =?UTF-8?q?=20boucle=20HIERARCHIE).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/public/composer.php | 23 ++++++++++++++++++++++- ecrire/public/criteres.php | 16 ++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php index a9722202c2..09ef02b442 100644 --- a/ecrire/public/composer.php +++ b/ecrire/public/composer.php @@ -19,7 +19,7 @@ include_spip('inc/documents'); include_spip('inc/forum'); include_spip('inc/distant'); include_spip('inc/rubriques'); # pour calcul_branche (cf critere branche) -include_spip('public/debug'); # toujours prévoir le pire +include_spip('public/debug'); # toujours prevoir le pire # Charge et retourne un composeur, i.e. la fonction principale d'un squelette # ou '' s'il est inconnu. Le compile au besoin @@ -313,6 +313,27 @@ function calcul_exposer ($id, $type, $reference) { return $exposer[$type][$id]; } +function lister_objets_avec_logos ($type) { + $type_logos = array( + 'hierarchie' => 'rub', + 'rubriques' => 'rub', + 'articles' => 'art', + 'breves' => 'breve', + 'mots' => 'mot', + 'sites' => 'site', + 'auteurs' => 'aut' + ); + + $logos = array(); + if ($type = $type_logos[$type]) { + $a = preg_files(_DIR_IMG.$type.'on[0-9]+\.(gif|png|jpg)$'); + foreach ($a as $f) + $logos[] = intval(substr($f, strlen(_DIR_IMG.$type.'on'))); + } + + return join(',',$logos); +} + function table_from_primary($id) { global $tables_principales; include_spip('base/serial'); diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index 50e09bbc91..6a8968f8dc 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -185,6 +185,22 @@ function critere_branche_dist($idb, &$boucles, $crit) { $boucle->where[]= $c; } +// {logo} liste les objets qui ont un logo +function critere_logo_dist($idb, &$boucles, $crit) { + $not = $crit->not; + $boucle = &$boucles[$idb]; + + $c = "calcul_mysql_in('" . + $boucle->id_table . '.' . $boucle->primary + . "', lister_objets_avec_logos(". $boucle->type_requete ."), '')"; + if ($crit->cond) $c = "($arg ? $c : 1)"; + + if ($not) + $boucle->where[]= array("'NOT'", $c); + else + $boucle->where[]= $c; +} + // Tri : {par xxxx} // http://www.spip.net/@par function critere_par_dist($idb, &$boucles, $crit) { -- GitLab