source: spip-zone/_plugins_/acces_restreint/trunk/accesrestreint_pipelines.php @ 53609

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

PHPDoc, pipelines, et corrections

File size: 2.5 KB
Line 
1<?php
2/**
3 * Plugin Acces Restreint 3.0 pour Spip 2.0
4 * Licence GPL (c) 2006-2008 Cedric Morin
5 *
6 */
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10
11/**
12 * Ajouter la boite des zones sur la fiche auteur
13 *
14 * @param string $flux
15 * @return string
16 */
17function accesrestreint_affiche_milieu($flux){
18        if ($e = trouver_objet_exec($flux['args']['exec'])
19          AND $e['type'] == 'rubrique'
20          AND $e['edition'] == false) {
21               
22                $id_auteur = $flux['args']['id_auteur'];
23
24                $ins = recuperer_fond('prive/editer/affecter_zones',array('id_auteur'=>$id_auteur));
25                if ($p = strpos($flux['data'],"<!--affiche_milieu-->") !== false)
26                        $flux['data'] = substr_replace($flux['data'],$ins,$p,0);
27                else
28                        $flux['data'] .= $ins;
29               
30        }
31        return $flux;
32}
33
34/**
35 * Ajouter la boite des zones sur la fiche de rubrique
36 *
37 * @param string $flux
38 * @return string
39 */
40function accesrestreint_affiche_gauche($flux) {
41        if ($e = trouver_objet_exec($flux['args']['exec'])
42          AND $e['type'] == 'rubrique'
43          AND $e['edition'] == false
44          AND $id_rubrique = $flux['args']['id_rubrique']){
45                if (autoriser('administrer', 'zone', 0)) {
46                        $flux['data'] .= recuperer_fond('prive/inclure/acces_rubrique', $_GET);
47                }
48        }
49        return $flux;
50}
51
52/**
53 * Detecter les demande d'acces aux pages restreintes
54 * et re-orienter vers une 401 si necessaire
55 *
56 * @param array $contexte
57 * @return array
58 */
59function accesrestreint_page_indisponible($contexte){
60        if ($contexte['status']=='404' AND isset($contexte['type'])){
61                $objet = $contexte['type'];
62                $table_sql = table_objet_sql($objet);
63                $id_table_objet = id_table_objet($objet);
64                if ($id = intval($contexte[$id_table_objet])){
65
66                        $publie = true;
67                        $restreint = false;
68
69                        $trouver_table = charger_fonction('trouver_table','base');
70                        $desc = $trouver_table($table_sql);
71                        if (isset($desc['field']['statut'])){
72                                $statut = sql_getfetsel('statut', $table_sql, "$id_table_objet=".intval($id));
73                                if ($statut!='publie')
74                                        $publie = false;
75                        }
76                       
77                        include_spip('inc/autoriser');
78                        if ($publie AND !autoriser('voir',$objet,$id)){
79                                // c'est un contenu restreint
80                                $contexte['status'] = '401';
81                                $contexte['code'] = '401 Unauthorized';
82                                $contexte['fond'] = '401';
83                                $contexte['erreur'] = _T('accesrestreint:info_acces_restreint');
84                                $contexte['cible'] = self();
85                        }
86                }
87        }
88        return $contexte;
89}
90
91/**
92 * Permettre l'ajout de champs extras via le plugin Champs Extras 2
93 *
94 * @param array $objets
95 * @return array
96 */
97function accesrestreint_objets_extensibles($objets){
98                return array_merge($objets, array('zone' => _T('accesrestreint:titre_zones_acces')));
99}
100
101?>
Note: See TracBrowser for help on using the repository browser.