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

Last change on this file since 119640 was 119640, checked in by Maïeul Rouquette, 11 months ago

document à inclure

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