diff --git a/ecrire/public/boucles.php b/ecrire/public/boucles.php index 7141c818f4259ab90a790f009b087a5997d3c724..aa046b55d29070a50076c8ad1ba49b8a469b3d1c 100644 --- a/ecrire/public/boucles.php +++ b/ecrire/public/boucles.php @@ -58,7 +58,7 @@ function boucle_ARTICLES_dist($id_boucle, &$boucles) { $mstatut = $id_table .'.statut'; // Restreindre aux elements publies - if (!$boucle->statut) { + if (!$boucle->modificateur['criteres']['statut']) { if (!$GLOBALS['var_preview']) { $boucle->where[]= array("'='", "'$mstatut'", "'\"publie\"'"); if ($GLOBALS['meta']["post_dates"] == 'non') @@ -80,7 +80,7 @@ function boucle_AUTEURS_dist($id_boucle, &$boucles) { $mstatut = $id_table .'.statut'; // Restreindre aux elements publies - if (!$boucle->statut) { + if (!$boucle->modificateur['criteres']['statut']) { // Si pas de lien avec un article, selectionner // uniquement les auteurs d'un article publie if (!$GLOBALS['var_preview']) @@ -110,7 +110,7 @@ function boucle_BREVES_dist($id_boucle, &$boucles) { $mstatut = $id_table .'.statut'; // Restreindre aux elements publies - if (!$boucle->statut) { + if (!$boucle->modificateur['criteres']['statut']) { if (!$GLOBALS['var_preview']) $boucle->where[]= array("'='", "'$mstatut'", "'\"publie\"'"); else @@ -137,7 +137,7 @@ function boucle_FORUMS_dist($id_boucle, &$boucles) { $boucle->where[]= array("'='", "'$id_table." ."id_parent'", 0); } // Restreindre aux elements publies - if (!$boucle->statut) { + if (!$boucle->modificateur['criteres']['statut']) { if ($GLOBALS['var_preview']) $boucle->where[]= array("'IN'", "'$mstatut'", "'(\"publie\",\"prive\")'"); else @@ -160,7 +160,7 @@ function boucle_SIGNATURES_dist($id_boucle, &$boucles) { $boucle->from[$id_table] = "spip_signatures"; // Restreindre aux elements publies - if (!$boucle->statut) { + if (!$boucle->modificateur['criteres']['statut']) { $boucle->where[]= array("'='", "'$mstatut'", "'\"publie\"'"); } return calculer_boucle($id_boucle, $boucles); @@ -193,7 +193,7 @@ function boucle_RUBRIQUES_dist($id_boucle, &$boucles) { $mstatut = $id_table .'.statut'; // Restreindre aux elements publies - if (!$boucle->statut) { + if (!$boucle->modificateur['criteres']['statut']) { if (!$GLOBALS['var_preview']) if (!isset($boucle->modificateur['tout'])) $boucle->where[]= array("'='", "'$mstatut'", "'\"publie\"'"); @@ -244,7 +244,7 @@ function boucle_SYNDICATION_dist($id_boucle, &$boucles) { // Restreindre aux elements publies - if (!$boucle->statut) { + if (!$boucle->modificateur['criteres']['statut']) { if (!$GLOBALS['var_preview']) { $boucle->where[]= array("'='", "'$mstatut'", "'\"publie\"'"); } else @@ -264,7 +264,7 @@ function boucle_SYNDIC_ARTICLES_dist($id_boucle, &$boucles) { $mstatut = $id_table .'.statut'; // Restreindre aux elements publies, sauf critere contraire - if ($boucle->statut) {} + if ($boucle->modificateur['criteres']['statut']) {} else if ($GLOBALS['var_preview']) $boucle->where[]= array("'IN'", "'$mstatut'", "'(\"publie\",\"prop\")'"); else { diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index 4f8136a683022f45bd6c3349c08cb1bd00d63f07..7fbe7e88de1c8222144bbd2051013c9e193b72d7 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -690,11 +690,14 @@ function calculer_critere_infixe($idb, &$boucles, $crit) { $table = $calculer_critere_externe($boucle, $boucle->jointures, $col, $desc, ($crit->cond OR $op !='='), $t); } } + // tag du critere pour permettre aux boucles de modifier leurs requetes par defaut en fonction de ca + $boucles[$idb]->modificateur['criteres'][$col] = true; + // ajout pour le cas special d'une condition sur le champ statut: // il faut alors interdire a la fonction de boucle // de mettre ses propres criteres de statut // http://www.spip.net/@statut (a documenter) - + // garde pour compatibilite avec code des plugins anterieurs, mais redondant avec la ligne precedente if ($col == 'statut') $boucles[$idb]->statut = true; // ajout pour le cas spécial des forums