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

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

retablir l'affichage/edition des zones sur sa propre page auteur (exec=infos_perso).

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