[PLUGINS] ~maj en travaux
[ptitvelo/web/www.git] / www / plugins / en_travaux / entravaux_options.php
index b23fffe..c1706c7 100644 (file)
-<?php
-/*
- * Plugin En Travaux
- * (c) 2006-2009 Arnaud Ventre, Cedric Morin
- * Distribue sous licence GPL
- *
- */
-
-#var_dump($GLOBALS['meta']['entravaux_id_auteur']);
-
-/**
- * Autoriser a voir le site en travaux : par defaut tous les webmestre
- * @return mixed
- */
-function autoriser_travaux_dist(){ return autoriser('webmestre'); }
-
-/**
- * Verifier un verrou fichier pose dans local/entravaux_xxx.lock
- * pour ne pas qu'il saute si on importe une base
- * La meta n'est qu'un cache qu'on met a jour si pas dispo.
- * @param string $nom
- * @param bool $force
- * @return bool
- */
-function entravaux_check_verrou($nom, $force=false){
-       if (!isset($GLOBALS['meta'][$m='entravaux_'.$nom]) OR $force){
-               ecrire_meta($m,file_exists(_DIR_VAR.$m.".lock")?"oui":"non",'non');
-       }
-       return $GLOBALS['meta'][$m]=="oui"; // si oui : verrou pose
-}
-
-/**
- * A-t-on active les travaux oui ou non ?
- * @return bool
- */
-function is_entravaux(){
-       // upgrade sauvage ?
-       include_spip('entravaux_administrations');
-       if (isset($GLOBALS['meta']['entravaux_id_auteur'])){include_spip('entravaux_install');entravaux_poser_verrou("accesferme");effacer_meta('entravaux_id_auteur');}
-       if (defined('_ENTRAVAUX_IP_EXCEPTIONS') AND in_array($GLOBALS['ip'],explode(',',_ENTRAVAUX_IP_EXCEPTIONS))) return false;
-       return entravaux_check_verrou("accesferme");
-}
-
-if (is_entravaux()){
-       include_spip('inc/autoriser');
-
-       // dans le site public
-       // si auteur pas autorise : placer sur un cache dedie
-       // si auteur autorise, desactiver le cache :
-       // il voit le site, mais pas de cache car il travaille dessus !
-       if (!test_espace_prive()){
-               if (!autoriser('travaux')){
-                       $GLOBALS['marqueur'].= ":en_travaux";
-               }
-               else {
-                       // desactiver le cache sauf si inhibe par define
-                       if (!defined('_ENTRAVAUX_GARDER_CACHE'))
-                               define('_NO_CACHE',1);
-               }
-       }
-       // si espace prive : die avec page travaux
-       // sauf si pas loge => redirection
-       else {
-               if (
-                 !in_array(_request('action'),array('logout'))
-                 AND !in_array(_request('exec'),array('install'))
-               ){
-                       if (!autoriser('travaux')){
-                               spip_initialisation_suite();
-                               // si on est loge : die() avec travaux
-                               if ($GLOBALS['visiteur_session']['id_auteur']){
-                                       $travaux = recuperer_fond("inclure/entravaux",array());
-                                       // fallback : le fond renvoie parfois du vide ...
-                                       if (!strlen($travaux)){
-                                               @define('_SPIP_SCRIPT','spip.php');
-                                               echo "Acces interdit (en travaux) <a href='"
-                                               .generer_url_action('logout',"logout=public",false,true)
-                                               ."'>Deconnexion</a>";
-                                       }
-                                       else
-                                               echo $travaux;
-                                       die();
-                               }
-                               // sinon retour sur login_sos
-                               else {
-                                       $redirect = parametre_url(generer_url_public('login_sos'),'url',self(),'&');
-                                       include_spip('inc/headers');
-                                       redirige_par_entete($redirect);
-                               }
-                       }
-               }
-       }
-}
-
-/**
- * Pipeline styliser pour rerouter tous les fonds vers en_travaux
- * sauf si l'auteur connecte est celui qui a active le plugin
- *
- * @param array $flux
- * @return array
- */
-function entravaux_styliser($flux){
-       if (is_entravaux()){
-               include_spip('inc/autoriser');
-               // les pages exceptions
-               $pages_ok = array('login_sos','robots.txt','spip_pass','favicon.ico','informer_auteur');
-               if (!autoriser('travaux')
-                       AND !in_array($flux['args']['fond'],$pages_ok)
-                       AND !in_array($flux['args']['contexte'][_SPIP_PAGE],$pages_ok)
-                       // et on laisse passer modeles et formulaires,
-                       // qui ne peuvent etre inclus ou appeles que legitimement
-                 AND strpos($flux['args']['fond'],'/')===false){
-                       $fond = trouver_fond('inclure/entravaux','',true);
-                       $flux['data'] = $fond['fond'];
-               }
-       }
-       return $flux;
-}
-
-
-/**
- * Afficher une icone de travaux sur tout le site public pour que le webmestre n'oublie pas
- * de retablir le site
- * 
- * @param string $flux
- * @return string
- */
-function entravaux_affichage_final($flux){
-       if (is_entravaux()
-               AND !test_espace_prive()
-               AND $GLOBALS['html']
-               AND !_AJAX){
-               include_spip('inc/filtres'); // pour http_img_pack
-               $x = '<div id="icone_travaux" style="
-               position: fixed;
-               left: 40px;
-               top: 40px;
-               ">'
-               . http_img_pack(chemin_image('entravaux-64.png'), _T('entravaux:en_travaux'), '', _T('entravaux:en_travaux'))
-               . '</div>';
-               if (!$pos = strpos($flux, '</body>'))
-                       $pos = strlen($flux);
-               $flux = substr_replace($flux, $x, $pos, 0);
-       }
-       return $flux;
-}
-
-/**
- * Afficher une notice sur l'accueil de ecrire
- * @param array $flux
- * @return array
- */
-function entravaux_affiche_milieu($flux){
-       if (is_entravaux()){
-               if ($flux['args']['exec']=='accueil'){
-                       $notice = recuperer_fond('inclure/entravaux_notice_ecrire',array());
-                       if (strlen(trim($notice)))
-                               $flux['data'] =  $notice . $flux['data'];
-               }
-       }
-       if ($flux['args']['exec']=='configurer_identite'){
-               $flux['data'] .= recuperer_fond('prive/squelettes/contenu/configurer_entravaux',array());
-       }
-       return $flux;
-}
-
-?>
+<?php\r
+/*\r
+ * Plugin En Travaux\r
+ * (c) 2006-2009 Arnaud Ventre, Cedric Morin\r
+ * Distribue sous licence GPL\r
+ *\r
+ */\r
+\r
+#var_dump($GLOBALS['meta']['entravaux_id_auteur']);\r
+\r
+/**\r
+ * Autoriser a voir le site en travaux : par defaut tous les webmestre\r
+ * @return mixed\r
+ */\r
+function autoriser_travaux_dist(){ return autoriser('webmestre'); }\r
+\r
+/**\r
+ * Verifier un verrou fichier pose dans local/entravaux_xxx.lock\r
+ * pour ne pas qu'il saute si on importe une base\r
+ * La meta n'est qu'un cache qu'on met a jour si pas dispo.\r
+ * @param string $nom\r
+ * @param bool $force\r
+ * @return bool\r
+ */\r
+function entravaux_check_verrou($nom, $force=false){\r
+       if (!isset($GLOBALS['meta'][$m='entravaux_'.$nom]) OR $force){\r
+               ecrire_meta($m,file_exists(_DIR_VAR.$m.".lock")?"oui":"non",'non');\r
+       }\r
+       return $GLOBALS['meta'][$m]=="oui"; // si oui : verrou pose\r
+}\r
+\r
+/**\r
+ * A-t-on active les travaux oui ou non ?\r
+ * @return bool\r
+ */\r
+function is_entravaux(){\r
+       // upgrade sauvage ?\r
+       include_spip('entravaux_administrations');\r
+       if (isset($GLOBALS['meta']['entravaux_id_auteur'])){include_spip('entravaux_install');entravaux_poser_verrou("accesferme");effacer_meta('entravaux_id_auteur');}\r
+       if (defined('_ENTRAVAUX_IP_EXCEPTIONS') AND in_array($GLOBALS['ip'],explode(',',_ENTRAVAUX_IP_EXCEPTIONS))) return false;\r
+       return entravaux_check_verrou("accesferme");\r
+}\r
+\r
+if (is_entravaux()){\r
+       include_spip('inc/autoriser');\r
+\r
+       // dans le site public\r
+       // si auteur pas autorise : placer sur un cache dedie\r
+       // si auteur autorise, desactiver le cache :\r
+       // il voit le site, mais pas de cache car il travaille dessus !\r
+       if (!test_espace_prive()){\r
+               if (!autoriser('travaux')){\r
+                       $GLOBALS['marqueur'].= ":en_travaux";\r
+               }\r
+               else {\r
+                       // desactiver le cache sauf si inhibe par define\r
+                       if (!defined('_ENTRAVAUX_GARDER_CACHE'))\r
+                               define('_NO_CACHE',1);\r
+               }\r
+       }\r
+       // si espace prive : die avec page travaux\r
+       // sauf si pas loge => redirection\r
+       else {\r
+               if (\r
+                 !in_array(_request('action'),array('logout'))\r
+                 AND !in_array(_request('exec'),array('install'))\r
+               ){\r
+                       if (!autoriser('travaux')){\r
+                               spip_initialisation_suite();\r
+                               // si on est loge : die() avec travaux\r
+                               if ($GLOBALS['visiteur_session']['id_auteur']){\r
+                                       $travaux = recuperer_fond("inclure/entravaux",array());\r
+                                       // fallback : le fond renvoie parfois du vide ...\r
+                                       if (!strlen($travaux)){\r
+                                               @define('_SPIP_SCRIPT','spip.php');\r
+                                               echo "Acces interdit (en travaux) <a href='"\r
+                                               .generer_url_action('logout',"logout=public",false,true)\r
+                                               ."'>Deconnexion</a>";\r
+                                       }\r
+                                       else\r
+                                               echo $travaux;\r
+                                       die();\r
+                               }\r
+                               // sinon retour sur login_sos\r
+                               else {\r
+                                       $redirect = parametre_url(generer_url_public('login_sos'),'url',self(),'&');\r
+                                       include_spip('inc/headers');\r
+                                       redirige_par_entete($redirect);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+/**\r
+ * Pipeline styliser pour rerouter tous les fonds vers en_travaux\r
+ * sauf si l'auteur connecte est celui qui a active le plugin\r
+ *\r
+ * @param array $flux\r
+ * @return array\r
+ */\r
+function entravaux_styliser($flux){\r
+       if (is_entravaux()){\r
+               include_spip('inc/autoriser');\r
+               // les pages exceptions\r
+               $pages_ok = array('login_sos','robots.txt','spip_pass','favicon.ico','informer_auteur');\r
+        // des squelettes autorisés configurables via mes_options\r
+               if (defined('_SKEL_HORS_TRAVAUX')) $skels_ok = explode(',',_SKEL_HORS_TRAVAUX); \r
+               else $skels_ok = array();\r
+               if (!autoriser('travaux')\r
+                       AND !in_array($flux['args']['fond'],$pages_ok)\r
+                       AND !in_array($flux['args']['fond'],$skels_ok)\r
+                       AND !in_array($flux['args']['contexte'][_SPIP_PAGE],$pages_ok)\r
+                       // et on laisse passer modeles et formulaires,\r
+                       // qui ne peuvent etre inclus ou appeles que legitimement\r
+                 AND strpos($flux['args']['fond'],'/')===false){\r
+                       $fond = trouver_fond('inclure/entravaux','',true);\r
+                       $flux['data'] = $fond['fond'];\r
+               }\r
+       }\r
+       return $flux;\r
+}\r
+\r
+\r
+/**\r
+ * Afficher une icone de travaux sur tout le site public pour que le webmestre n'oublie pas\r
+ * de retablir le site\r
+ * \r
+ * @param string $flux\r
+ * @return string\r
+ */\r
+function entravaux_affichage_final($flux){\r
+       if (is_entravaux()\r
+               AND !test_espace_prive()\r
+               AND $GLOBALS['html']\r
+               AND !_AJAX){\r
+               include_spip('inc/filtres'); // pour http_img_pack\r
+               $x = '<div id="icone_travaux" style="\r
+               position: fixed;\r
+               left: 40px;\r
+               top: 40px;\r
+               ">'\r
+               . http_img_pack(chemin_image('entravaux-64.png'), _T('entravaux:en_travaux'), '', _T('entravaux:en_travaux'))\r
+               . '</div>';\r
+               if (!$pos = strpos($flux, '</body>'))\r
+                       $pos = strlen($flux);\r
+               $flux = substr_replace($flux, $x, $pos, 0);\r
+       }\r
+       return $flux;\r
+}\r
+\r
+/**\r
+ * Afficher une notice sur l'accueil de ecrire\r
+ * @param array $flux\r
+ * @return array\r
+ */\r
+function entravaux_affiche_milieu($flux){\r
+       if (is_entravaux()){\r
+               if ($flux['args']['exec']=='accueil'){\r
+                       $notice = recuperer_fond('inclure/entravaux_notice_ecrire',array());\r
+                       if (strlen(trim($notice)))\r
+                               $flux['data'] =  $notice . $flux['data'];\r
+               }\r
+       }\r
+       if ($flux['args']['exec']=='configurer_identite'){\r
+               $flux['data'] .= recuperer_fond('prive/squelettes/contenu/configurer_entravaux',array());\r
+       }\r
+       return $flux;\r
+}\r
+\r
+?>\r