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

Last change on this file since 95491 was 95491, checked in by marcimat@…, 5 years ago

Notices PHP en moins sur des ?page=nnnn qui n'existent pas.

File size: 3.2 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 (
19                ($e = trouver_objet_exec($flux['args']['exec'])
20          AND $e['type'] == 'auteur'
21          AND $e['edition'] == false
22          AND $id_auteur = $flux['args']['id_auteur'])
23        OR (
24                $flux['args']['exec'] == "infos_perso"
25                AND $id_auteur = $GLOBALS['visiteur_session']['id_auteur']
26                )){
27
28                $ins = recuperer_fond('prive/squelettes/inclure/acces_auteur',array('id_auteur'=>$id_auteur));
29                if (($p = strpos($flux['data'],"<!--affiche_milieu-->")) !== false)
30                        $flux['data'] = substr_replace($flux['data'],$ins,$p,0);
31                else
32                        $flux['data'] .= $ins;
33               
34        }
35        return $flux;
36}
37
38/**
39 * Ajouter la boite des zones sur la fiche de rubrique
40 *
41 * @param string $flux
42 * @return string
43 */
44function accesrestreint_affiche_gauche($flux) {
45        if ($e = trouver_objet_exec($flux['args']['exec'])
46          AND $e['type'] == 'rubrique'
47          AND $e['edition'] == false
48          AND $id_rubrique = $flux['args']['id_rubrique']){
49                if (autoriser('administrer', 'zone', 0)) {
50                        $flux['data'] .= recuperer_fond('prive/squelettes/inclure/acces_rubrique', array('id_rubrique'=>$id_rubrique));
51                }
52        }
53        return $flux;
54}
55
56/**
57 * Detecter les demande d'acces aux pages restreintes
58 * et re-orienter vers une 401 si necessaire
59 *
60 * @param array $contexte
61 * @return array
62 */
63function accesrestreint_page_indisponible($contexte){
64        if ($contexte['status']=='404'){
65                $objet = "";
66                if (isset($contexte['type'])) {
67                        $objet = $contexte['type'];
68                } elseif (isset($contexte['type-page'])) {
69                        $objet = $contexte['type-page'];
70                } elseif (isset($contexte['fond_erreur'])) {
71                        include_spip('inc/urls');
72                        if (!defined('_DEFINIR_CONTEXTE_TYPE_PAGE')) {
73                                define('_DEFINIR_CONTEXTE_TYPE_PAGE', true);
74                        }
75                        $c2 = $contexte;
76                        list($fond2, $c2, $url_redirect) = urls_decoder_url(nettoyer_uri(), $contexte['fond_erreur'], $c2, true);
77                        if (isset($c2['type-page'])) {
78                                $objet = $c2['type-page'];
79                        }
80                }
81                if ($objet){
82                        $table_sql = table_objet_sql($objet);
83                        $id_table_objet = id_table_objet($objet);
84                        if ($id = intval($contexte[$id_table_objet])){
85
86                                $publie = true;
87                                if (include_spip("base/objets")
88                                  AND function_exists("objet_test_si_publie")){
89                                        $publie = objet_test_si_publie($objet,$id);
90                                }
91                                else {
92                                        $trouver_table = charger_fonction('trouver_table','base');
93                                        $desc = $trouver_table($table_sql);
94                                        if (isset($desc['field']['statut'])){
95                                                $statut = sql_getfetsel('statut', $table_sql, "$id_table_objet=".intval($id));
96                                                if ($statut!='publie')
97                                                        $publie = false;
98                                        }
99                                }
100
101                                include_spip('inc/autoriser');
102                                if ($publie AND !autoriser('voir',$objet,$id)){
103                                        // c'est un contenu restreint
104                                        $contexte['status'] = '401';
105                                        $contexte['code'] = '401 Unauthorized';
106                                        $contexte['fond'] = '401';
107                                        $contexte['erreur'] = _T('accesrestreint:info_acces_restreint');
108                                        $contexte['cible'] = self();
109                                        if (!isset($contexte['objet'])){
110                                                $contexte['objet'] = $objet;
111                                                $contexte['id_objet'] = $id;
112                                        }
113                                }
114                        }
115                }
116        }
117        return $contexte;
118}
119
120?>
Note: See TracBrowser for help on using the repository browser.