X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fecrire%2Fpublic%2Fparametrer.php;h=099a89217ccbaf2d11040f058b44da2a8b4d4546;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=fe6094105599c5a8ef7f2474ab4fd23254b3f4c6;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/ecrire/public/parametrer.php b/www/ecrire/public/parametrer.php index fe609410..099a8921 100644 --- a/www/ecrire/public/parametrer.php +++ b/www/ecrire/public/parametrer.php @@ -3,14 +3,16 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2016 * + * Copyright (c) 2001-2017 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} include_spip('inc/lang'); @@ -25,8 +27,9 @@ if (@is_readable(_CACHE_PLUGINS_FCT)) { // chargement optimise precompile include_once(_CACHE_PLUGINS_FCT); } -if (test_espace_prive ()) +if (test_espace_prive()) { include_spip('inc/filtres_ecrire'); +} # Determine le squelette associe a une requete # et l'applique sur le contexte, le nom du cache et le serveur @@ -41,25 +44,31 @@ if (test_espace_prive ()) # En cas d'erreur process_ins est absent et texte est un tableau de 2 chaines -// http://doc.spip.org/@public_parametrer_dist -function public_parametrer_dist($fond, $contexte='', $cache='', $connect='') { - static $composer,$styliser,$notes=null; +// http://code.spip.net/@public_parametrer_dist +function public_parametrer_dist($fond, $contexte = '', $cache = '', $connect = '') { + static $composer, $styliser, $notes = null; $page = tester_redirection($fond, $contexte, $connect); - if ($page) return $page; + if ($page) { + return $page; + } - if (isset($contexte['lang'])) + if (isset($contexte['lang'])) { $lang = $contexte['lang']; - elseif (!isset($lang)) + } elseif (!isset($lang)) { $lang = $GLOBALS['meta']['langue_site']; + } - $select = ((!isset($GLOBALS['forcer_lang']) OR !$GLOBALS['forcer_lang']) AND $lang <> $GLOBALS['spip_lang']); - if ($select) $select = lang_select($lang); + $select = ((!isset($GLOBALS['forcer_lang']) or !$GLOBALS['forcer_lang']) and $lang <> $GLOBALS['spip_lang']); + if ($select) { + $select = lang_select($lang); + } $debug = (defined('_VAR_MODE') && _VAR_MODE == 'debug'); - if (!$styliser) + if (!$styliser) { $styliser = charger_fonction('styliser', 'public'); - list($skel,$mime_type, $gram, $sourcefile) = + } + list($skel, $mime_type, $gram, $sourcefile) = $styliser($fond, $contexte, $GLOBALS['spip_lang'], $connect); if ($skel) { @@ -74,27 +83,29 @@ function public_parametrer_dist($fond, $contexte='', $cache='', $connect='') { // charger le squelette en specifiant les langages cibles et source // au cas il faudrait le compiler (source posterieure au resultat) - if (!$composer) + if (!$composer) { $composer = charger_fonction('composer', 'public'); + } $fonc = $composer($skel, $mime_type, $gram, $sourcefile, $connect); - } - else + } else { $fonc = ''; + } if (!$fonc) { // squelette inconnu (==='') ou faux (===false) $page = $fonc; - } - else { + } else { // Preparer l'appel de la fonction principale du squelette - spip_timer($a = 'calcul page '.rand(0,1000)); + spip_timer($a = 'calcul page ' . rand(0, 1000)); // On cree un marqueur de notes unique lie a cette composition // et on enregistre l'etat courant des globales de notes... - if (is_null($notes)) + if (is_null($notes)) { $notes = charger_fonction('notes', 'inc', true); - if ($notes) - $notes('','empiler'); + } + if ($notes) { + $notes('', 'empiler'); + } // Rajouter d'office ces deux parametres // (mais vaudrait mieux que le compilateur sache le simuler @@ -102,46 +113,56 @@ function public_parametrer_dist($fond, $contexte='', $cache='', $connect='') { if (!isset($contexte['date'])) { $contexte['date'] = date("Y-m-d H:i:s"); $contexte['date_default'] = true; - } else $contexte['date'] = normaliser_date($contexte['date'], true); + } else { + $contexte['date'] = normaliser_date($contexte['date'], true); + } if (!isset($contexte['date_redac'])) { $contexte['date_redac'] = date("Y-m-d H:i:s"); $contexte['date_redac_default'] = true; - } else $contexte['date_redac'] = normaliser_date($contexte['date_redac'], true); + } else { + $contexte['date_redac'] = normaliser_date($contexte['date_redac'], true); + } - // Passer le nom du cache pour produire sa destruction automatique + // Passer le nom du cache pour produire sa destruction automatique $page = $fonc(array('cache' => $cache), array($contexte)); - // Restituer les globales de notes telles qu'elles etaient avant l'appel - // Si l'inclus n'a pas affiche ses notes, tant pis (elles *doivent* - // etre dans son resultat, autrement elles ne seraient pas prises en - // compte a chaque calcul d'un texte contenant un modele, mais seulement - // quand le modele serait calcule, et on aurait des resultats incoherents) - if ($notes) - $notes('','depiler'); + // Restituer les globales de notes telles qu'elles etaient avant l'appel + // Si l'inclus n'a pas affiche ses notes, tant pis (elles *doivent* + // etre dans son resultat, autrement elles ne seraient pas prises en + // compte a chaque calcul d'un texte contenant un modele, mais seulement + // quand le modele serait calcule, et on aurait des resultats incoherents) + if ($notes) { + $notes('', 'depiler'); + } // reinjecter en dynamique la pile des notes // si il y a des inclure dynamiques // si la pile n'est pas vide // la generalisation de cette injection permettrait de corriger le point juste au dessus // en faisant remonter les notes a l'incluant (A tester et valider avant application) - if ($notes) - $page['notes'] = $notes('','sauver_etat'); + if ($notes) { + $page['notes'] = $notes('', 'sauver_etat'); + } // spip_log: un joli contexte $infos = array(); foreach (array_filter($contexte) as $var => $val) { - if (is_array($val)) $val = serialize($val); - if (strlen("$val") > 30) - $val = substr("$val", 0,27).'..'; - if (strstr($val,' ')) + if (is_array($val)) { + $val = serialize($val); + } + if (strlen("$val") > 30) { + $val = substr("$val", 0, 27) . '..'; + } + if (strstr($val, ' ')) { $val = "'$val'"; - $infos[] = $var.'='.$val; + } + $infos[] = $var . '=' . $val; } $profile = spip_timer($a); spip_log("calcul ($profile) [$skel] " . join(', ', $infos) - .' ('.strlen($page['texte']).' octets)'); + . ' (' . strlen($page['texte']) . ' octets)'); if (defined('_CALCUL_PROFILER') AND intval($profile)>_CALCUL_PROFILER){ spip_log("calcul ($profile) [$skel] " @@ -150,38 +171,40 @@ function public_parametrer_dist($fond, $contexte='', $cache='', $connect='') { } if ($debug) { - // si c'est ce que demande le debusqueur, lui passer la main + // si c'est ce que demande le debusqueur, lui passer la main $t = strlen($page['texte']) ? $page['texte'] : " "; $GLOBALS['debug_objets']['resultat'][$fonc . 'tout'] = $t; $GLOBALS['debug_objets']['courant'] = $courant; $GLOBALS['debug_objets']['profile'][$sourcefile] = $profile; if ($GLOBALS['debug_objets']['sourcefile'] - AND (_request('var_mode_objet') == $fonc) - AND (_request('var_mode_affiche') == 'resultat')) { + and (_request('var_mode_objet') == $fonc) + and (_request('var_mode_affiche') == 'resultat') + ) { erreur_squelette(); } } // Si #CACHE{} n'etait pas la, le mettre a $delais - if (!isset($page['entetes']['X-Spip-Cache'])){ + if (!isset($page['entetes']['X-Spip-Cache'])) { // Dans l'espace prive ou dans un modeles/ on pose un cache 0 par defaut - // si aucun #CACHE{} specifie + // si aucun #CACHE{} spécifié // le contexte implicite qui conditionne le cache assure qu'on retombe pas sur le meme // entre public et prive - if (test_espace_prive() OR strncmp($fond,'modeles/',8)==0) + if (test_espace_prive() or strncmp($fond, 'modeles/', 8) == 0) { $page['entetes']['X-Spip-Cache'] = 0; - else - $page['entetes']['X-Spip-Cache'] = isset($GLOBALS['delais'])?$GLOBALS['delais']:36000; + } else { + $page['entetes']['X-Spip-Cache'] = isset($GLOBALS['delais']) ? $GLOBALS['delais'] : 36000; + } } $page['contexte'] = $contexte; - + // faire remonter le fichier source static $js_inclus = false; - if (defined('_VAR_INCLURE') AND _VAR_INCLURE){ + if (defined('_VAR_INCLURE') and _VAR_INCLURE) { $page['sourcefile'] = $sourcefile; $page['texte'] = - "
".$page['sourcefile']."
".$page['texte']."
" - . ($js_inclus?"":""); + "
" . $page['sourcefile'] . "
" . $page['texte'] . "
" + . ($js_inclus ? "" : ""); $js_inclus = true; } @@ -192,56 +215,81 @@ function public_parametrer_dist($fond, $contexte='', $cache='', $connect='') { } } - if ($select) lang_select(); + if ($select) { + lang_select(); + } return $page; } /** - * si le champ virtuel est non vide c'est une redirection. + * Si le champ virtuel est non vide c'est une redirection. * avec un eventuel raccourci Spip + * * si le raccourci a un titre il sera pris comme corps du 302 * - * http://doc.spip.org/@tester_redirection + * @uses public_tester_redirection_dist() + * @param string $fond + * @param array $contexte + * @param string $connect + * @return array|bool + */ +function tester_redirection($fond, $contexte, $connect) { + static $tester_redirection = null; + if (is_null($tester_redirection)) { + $tester_redirection = charger_fonction('tester_redirection', 'public'); + } + return $tester_redirection($fond, $contexte, $connect); +} + + +/** + * Si le champ virtuel est non vide c'est une redirection. + * avec un eventuel raccourci Spip + * + * si le raccourci a un titre il sera pris comme corps du 302 * * @param string $fond * @param array $contexte * @param string $connect * @return array|bool */ -function tester_redirection($fond, $contexte, $connect) -{ +function public_tester_redirection_dist($fond, $contexte, $connect) { if ($fond == 'article' - AND $id_article = intval($contexte['id_article'])) { + and $id_article = intval($contexte['id_article']) + ) { include_spip('public/quete'); // pour quete_virtuel et ses dependances $m = quete_virtuel($id_article, $connect); if (strlen($m)) { include_spip('inc/texte'); // les navigateurs pataugent si l'URL est vide - if ($url = virtuel_redirige($m, true)){ + if ($url = virtuel_redirige($m, true)) { // passer en url absolue car cette redirection pourra // etre utilisee dans un contexte d'url qui change // y compris url arbo $status = 302; - if (defined('_STATUS_REDIRECTION_VIRTUEL')) - $status=_STATUS_REDIRECTION_VIRTUEL; + if (defined('_STATUS_REDIRECTION_VIRTUEL')) { + $status = _STATUS_REDIRECTION_VIRTUEL; + } if (!preg_match(',^\w+:,', $url)) { include_spip('inc/filtres_mini'); $url = url_absolue($url); } $url = str_replace('&', '&', $url); - return array('texte' => "<" - . "?php include_spip('inc/headers');redirige_par_entete('" - . texte_script($url) - . "','',$status);" - . "?" . ">", + + return array( + 'texte' => "<" + . "?php include_spip('inc/headers');redirige_par_entete('" + . texte_script($url) + . "','',$status);" + . "?" . ">", 'process_ins' => 'php', - 'status' => $status); + 'status' => $status + ); } } } + return false; } - -?>