source: spip-zone/_plugins_/masquer/masquer_pipelines.php @ 32163

Last change on this file since 32163 was 32163, checked in by nicolas@…, 10 years ago

ajout du critere {tout} permettant de forcer l'affichage

File size: 2.4 KB
Line 
1<?php
2function masquer_pre_boucle($boucle) {
3  static $id_mot;
4  static $liste_rubriques;
5  static $liste_articles;
6
7  // On ne masque que sur l'espace public
8  if (test_espace_prive() || isset($boucle->modificateur['tout'])) {
9    return $boucle;
10  }
11 
12  // Récupération de l'id_mot du mot dont le titre est "masquer"
13  if (!isset($id_mot)) {
14    $id_mot = sql_getfetsel("id_mot", "spip_mots", "titre='masquer'");
15  }
16 
17  // Récupération de la liste des rubriques masquées et leurs branches
18  // Hors du cas de la boucle RUBRIQUE, car utilisé aussi par le cas de la boucle ARTICLES
19  if (!isset($liste_rubriques)) {
20    $liste_rubriques = array();
21    // On masque les rubriques qui ont le mot clef
22    $res = sql_select("id_rubrique", "spip_mots_rubriques", "id_mot=".$id_mot); 
23    while($row = sql_fetch($res)) {
24      $liste_rubriques = array_merge($liste_rubriques, liste_rubriques_branche($row['id_rubrique']));
25    }
26  }
27 
28  // Cas de la boucle RUBRIQUES
29  if ($boucle->type_requete == 'rubriques') {
30    $rub = $boucle->id_table . '.id_rubrique';
31    $boucle->where[] = "array('NOT IN', '$rub', '(".implode(',', $liste_rubriques).")')";
32  }
33
34  // Cas de la boucle ARTICLES
35  if ($boucle->type_requete == 'articles') {
36    // On ne récupère la liste des articles masqués que si on a une boucle ARTICLES
37    if (!isset($liste_articles)) {
38      $liste_articles = array();
39      // On masque les articles qui ont le mot clef
40      $res = sql_select("id_article", "spip_mots_articles", "id_mot=".$id_mot); 
41      while($row = sql_fetch($res)) {
42        $liste_articles[] = $row['id_article'];
43      }
44      // On masque les articles qui sont dans des rubriques masquées
45      $res = sql_select("id_article", "spip_articles", "id_rubrique IN (".implode(',', $liste_rubriques).")"); 
46      while($row = sql_fetch($res)) {
47        $liste_articles[] = $row['id_article'];
48      }
49    }
50    $art = $boucle->id_table . '.id_article';
51    $boucle->where[] = "array('NOT IN', '$art', '(".implode(',', $liste_articles).")')";
52  }   
53
54  return $boucle;
55}
56
57// Récupération de la liste des rubriques d'une branche
58function liste_rubriques_branche($id_rubrique) {
59  $liste = array($id_rubrique);
60  $res = sql_select("id_rubrique", "spip_rubriques", "id_parent=".$id_rubrique); 
61  while($row = sql_fetch($res)) {
62    $liste[] = $row['id_rubrique'];
63    $sous_rubriques = liste_rubriques_branche($row['id_rubrique']);
64    $liste = array_merge($liste, $sous_rubriques);
65  }
66  return $liste;
67}
68?>
Note: See TracBrowser for help on using the repository browser.