source: spip-zone/_squelettes_/gribouille_2/gribouille_pipelines.php @ 53427

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

if (!defined("_ECRIRE_INC_VERSION")) return; sur tout fichier PHP pour sécurité future principalement

File size: 3.2 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION")) return;
3/**
4 * Plugin / Squelettes Gribouille
5 * © Fil
6 * Distribue sous licence GNU/GPL
7 */
8
9
10/**
11 * Insertion dans le pipeline Styliser
12 * définir le squelette a utiliser si on est dans le cas
13 * d'une rubrique de Gribouille
14 *
15 * @param object $flux
16 * @return
17 */
18function gribouille_styliser($flux){
19        /**
20         * Gribouille ne s'active que sur les rubriques et les articles
21         */
22        if (($fond = $flux['args']['fond'])
23        AND in_array($fond, array('article','rubrique'))) {
24
25                $ext = $flux['args']['ext'];
26               
27                /**
28                 * Si la rubrique fait partie du secteur défini dans la configuration on change son fond
29                 */
30                if($id_rubrique = $flux['args']['id_rubrique']) {
31                        $id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
32                        if (in_array($id_secteur, lire_config('gribouille/principal/secteurs_wiki', array(0,-1)))) {
33                                include_spip('inc/autoriser');
34                                /**
35                                 * On vérifie si nous sommes autorisé à voir le Wiki
36                                 */
37                                if(autoriser('voir','rubrique',$id_rubrique,$GLOBALS['visiteur_session'])){
38                                        if ($squelette = test_squelette_gribouille($fond, $ext)) {
39                                                $flux['data'] = $squelette;
40                                        }
41                                }else{
42                                        unset($flux['args']);
43                                }
44                        }
45                }
46        }
47        return $flux;
48}
49
50/**
51 * Fonction qui vérifie la présence d'un squelette gribouille disponible
52 *
53 * @param string $fond article ou rubrique
54 * @param string $ext extension des squelettes (html)
55 * @return
56 */
57function test_squelette_gribouille($fond, $ext) {
58        if ($squelette = find_in_path($fond."_gribouille.$ext")) {
59                return substr($squelette, 0, -strlen(".$ext"));
60        }
61        return false;
62}
63
64/**
65 * Insertion dans le pipeline Prepare Recherche
66 * Si configuré comme tel, exclure de la recherche les secteurs de gribouille
67 *
68 * @param array $flux
69 * @return array
70 */
71function gribouille_prepare_recherche($flux){
72        if(lire_config('gribouille/principal/exclure_recherche') == 'on'){
73                $id_secteurs = lire_config('gribouille/principal/secteurs_wiki');
74                if(is_array($id_secteurs)){
75                        if ($flux['args']['type']=='article'
76                                AND $flux['args']['tout']=='0'
77                          AND $points = $flux['data']){
78                          $serveur =  $flux['args']['serveur'];
79                                $p2 = array();
80                                $s = sql_select("id_article", "spip_articles", "statut='publie' AND ".sql_in('id_article', array_keys($points), '','','','',$serveur)." AND ".sql_in('id_secteur', array_values($id_secteurs), 'NOT','','','',$serveur));
81                                while ($t = sql_fetch($s, $serveur)){
82                                        $p2[$t['id_article']] ='';
83                                }
84                                $p2 = array_intersect_key($points,$p2);
85                                $flux['data'] = $p2;
86                        }
87                        if ($flux['args']['type']=='rubrique'
88                          AND $flux['args']['tout']=='0'
89                          AND $points = $flux['data']){
90                          $serveur =  $flux['args']['serveur'];
91                                $p2 = array();
92                                $s = sql_select("id_rubrique", "spip_rubriques", "statut='publie' AND ".sql_in('id_rubrique', array_keys($points), '','','','',$serveur)." AND ".sql_in('id_secteur', array_values($id_secteurs), 'NOT','','','',$serveur));
93                                while ($t = sql_fetch($s, $serveur)){
94                                        $p2[$t['id_article']] ='';
95                                }
96                                $p2 = array_intersect_key($points,$p2);
97                                $flux['data'] = $p2;
98                        }
99                }
100        }
101        return $flux;
102}
103?>
Note: See TracBrowser for help on using the repository browser.