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

Last change on this file since 68841 was 68841, checked in by rastapopoulos@…, 8 years ago

Inclusion pour avoir la fonction suivante

File size: 3.0 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'] == 'auteur'
20          AND $e['edition'] == false) {
21               
22                $id_auteur = $flux['args']['id_auteur'];
23
24                $ins = recuperer_fond('prive/squelettes/inclure/acces_auteur',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/squelettes/inclure/acces_rubrique', array('id_rubrique'=>$id_rubrique));
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'){
61                $objet = "";
62                if (isset($contexte['type'])) $objet = $contexte['type'];
63                elseif (isset($contexte['type-page'])) $objet = $contexte['type-page'];
64                elseif(isset($contexte['fond_erreur'])) {
65                        include_spip('inc/urls');
66                        define('_DEFINIR_CONTEXTE_TYPE_PAGE',true);
67                        $c2 = $contexte;
68                        list($fond2,$c2,$url_redirect) = urls_decoder_url(nettoyer_uri(),$contexte['fond_erreur'],$c2,true);
69                        $objet = $c2['type-page'];
70                }
71                if ($objet){
72                        $table_sql = table_objet_sql($objet);
73                        $id_table_objet = id_table_objet($objet);
74                        if ($id = intval($contexte[$id_table_objet])){
75
76                                $publie = true;
77                                if (include_spip("base/objets")
78                                  AND function_exists("objet_test_si_publie")){
79                                        $publie = objet_test_si_publie($objet,$id);
80                                }
81                                else {
82                                        $trouver_table = charger_fonction('trouver_table','base');
83                                        $desc = $trouver_table($table_sql);
84                                        if (isset($desc['field']['statut'])){
85                                                $statut = sql_getfetsel('statut', $table_sql, "$id_table_objet=".intval($id));
86                                                if ($statut!='publie')
87                                                        $publie = false;
88                                        }
89                                }
90
91                                include_spip('inc/autoriser');
92                                if ($publie AND !autoriser('voir',$objet,$id)){
93                                        // c'est un contenu restreint
94                                        $contexte['status'] = '401';
95                                        $contexte['code'] = '401 Unauthorized';
96                                        $contexte['fond'] = '401';
97                                        $contexte['erreur'] = _T('accesrestreint:info_acces_restreint');
98                                        $contexte['cible'] = self();
99                                        if (!isset($contexte['objet'])){
100                                                $contexte['objet'] = $objet;
101                                                $contexte['id_objet'] = $id;
102                                        }
103                                }
104                        }
105                }
106        }
107        return $contexte;
108}
109
110?>
Note: See TracBrowser for help on using the repository browser.