source: spip-zone/_plugins_/en_travaux/trunk/entravaux_options.php @ 90035

Last change on this file since 90035 was 90035, checked in by pierrekuhn82@…, 6 years ago

suite et fin de z90016 : plus de warning maintenant.

File size: 5.1 KB
Line 
1<?php
2/*
3 * Plugin En Travaux
4 * (c) 2006-2009 Arnaud Ventre, Cedric Morin
5 * Distribue sous licence GPL
6 *
7 */
8
9#var_dump($GLOBALS['meta']['entravaux_id_auteur']);
10
11/**
12 * Autoriser a voir le site en travaux : par defaut tous les webmestre
13 * @return mixed
14 */
15function autoriser_travaux_dist(){ return autoriser('webmestre'); }
16
17/**
18 * Verifier un verrou fichier pose dans local/entravaux_xxx.lock
19 * pour ne pas qu'il saute si on importe une base
20 * La meta n'est qu'un cache qu'on met a jour si pas dispo.
21 * @param string $nom
22 * @param bool $force
23 * @return bool
24 */
25function entravaux_check_verrou($nom, $force=false){
26        if (!isset($GLOBALS['meta'][$m='entravaux_'.$nom]) OR $force){
27                ecrire_meta($m,file_exists(_DIR_VAR.$m.".lock")?"oui":"non",'non');
28        }
29        return $GLOBALS['meta'][$m]=="oui"; // si oui : verrou pose
30}
31
32/**
33 * A-t-on active les travaux oui ou non ?
34 * @return bool
35 */
36function is_entravaux(){
37        // upgrade sauvage ?
38        include_spip('entravaux_administrations');
39        if (isset($GLOBALS['meta']['entravaux_id_auteur'])){include_spip('entravaux_install');entravaux_poser_verrou("accesferme");effacer_meta('entravaux_id_auteur');}
40        if (defined('_ENTRAVAUX_IP_EXCEPTIONS') AND in_array($GLOBALS['ip'],explode(',',_ENTRAVAUX_IP_EXCEPTIONS))) return false;
41        return entravaux_check_verrou("accesferme");
42}
43
44if (is_entravaux()){
45        include_spip('inc/autoriser');
46
47        // dans le site public
48        // si auteur pas autorise : placer sur un cache dedie
49        // si auteur autorise, desactiver le cache :
50        // il voit le site, mais pas de cache car il travaille dessus !
51        if (!test_espace_prive()){
52                if (!autoriser('travaux')){
53                        $GLOBALS['marqueur'].= ":en_travaux";
54                }
55                else {
56                        // desactiver le cache sauf si inhibe par define
57                        if (!defined('_ENTRAVAUX_GARDER_CACHE'))
58                                define('_NO_CACHE',1);
59                }
60        }
61        // si espace prive : die avec page travaux
62        // sauf si pas loge => redirection
63        else {
64                if (
65                  !in_array(_request('action'),array('logout'))
66                  AND !in_array(_request('exec'),array('install'))
67                ){
68                        if (!autoriser('travaux')){
69                                spip_initialisation_suite();
70                                // si on est loge : die() avec travaux
71                                if (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur'] != ''){
72                                        $travaux = recuperer_fond("inclure/entravaux",array());
73                                        // fallback : le fond renvoie parfois du vide ...
74                                        if (!strlen($travaux)){
75                                                @define('_SPIP_SCRIPT','spip.php');
76                                                echo "Acces interdit (en travaux) <a href='"
77                                                .generer_url_action('logout',"logout=public",false,true)
78                                                ."'>Deconnexion</a>";
79                                        }
80                                        else
81                                                echo $travaux;
82                                        die();
83                                }
84                                // sinon retour sur login_sos
85                                else {
86                                        $redirect = parametre_url(generer_url_public('login_sos'),'url',self(),'&');
87                                        include_spip('inc/headers');
88                                        redirige_par_entete($redirect);
89                                }
90                        }
91                }
92        }
93}
94
95/**
96 * Pipeline styliser pour rerouter tous les fonds vers en_travaux
97 * sauf si l'auteur connecte est celui qui a active le plugin
98 *
99 * @param array $flux
100 * @return array
101 */
102function entravaux_styliser($flux){
103        if (is_entravaux()){
104                include_spip('inc/autoriser');
105                // les pages exceptions
106                $pages_ok = array('login_sos','robots.txt','spip_pass','favicon.ico','informer_auteur');
107        // des squelettes autorisés configurables via mes_options
108                if (defined('_SKEL_HORS_TRAVAUX')) $skels_ok = explode(',',_SKEL_HORS_TRAVAUX); 
109                else $skels_ok = array();
110                if (!autoriser('travaux')
111                        AND !in_array($flux['args']['fond'],$pages_ok)
112                        AND !in_array($flux['args']['fond'],$skels_ok)
113                        AND !in_array($flux['args']['contexte'][_SPIP_PAGE],$pages_ok)
114                        // et on laisse passer modeles et formulaires,
115                        // qui ne peuvent etre inclus ou appeles que legitimement
116                  AND strpos($flux['args']['fond'],'/')===false){
117                        $fond = trouver_fond('inclure/entravaux','',true);
118                        $flux['data'] = $fond['fond'];
119                }
120        }
121        return $flux;
122}
123
124
125/**
126 * Afficher une icone de travaux sur tout le site public pour que le webmestre n'oublie pas
127 * de retablir le site
128 *
129 * @param string $flux
130 * @return string
131 */
132function entravaux_affichage_final($flux){
133        if (is_entravaux()
134                AND !test_espace_prive()
135                AND $GLOBALS['html']
136                AND !_AJAX){
137                include_spip('inc/filtres'); // pour http_img_pack
138                $x = '<div id="icone_travaux" style="
139                position: fixed;
140                left: 40px;
141                top: 40px;
142                ">'
143                . http_img_pack(chemin_image('entravaux-64.png'), _T('entravaux:en_travaux'), '', _T('entravaux:en_travaux'))
144                . '</div>';
145                if (!$pos = strpos($flux, '</body>'))
146                        $pos = strlen($flux);
147                $flux = substr_replace($flux, $x, $pos, 0);
148        }
149        return $flux;
150}
151
152/**
153 * Afficher une notice sur l'accueil de ecrire
154 * @param array $flux
155 * @return array
156 */
157function entravaux_affiche_milieu($flux){
158        if (is_entravaux()){
159                if ($flux['args']['exec']=='accueil'){
160                        $notice = recuperer_fond('inclure/entravaux_notice_ecrire',array());
161                        if (strlen(trim($notice)))
162                                $flux['data'] =  $notice . $flux['data'];
163                }
164        }
165        if ($flux['args']['exec']=='configurer_identite'){
166                $flux['data'] .= recuperer_fond('prive/squelettes/contenu/configurer_entravaux',array());
167        }
168        return $flux;
169}
170
171?>
Note: See TracBrowser for help on using the repository browser.