X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fpublic.php;fp=www%2Fecrire%2Fpublic.php;h=5deb4515681bc869e55d5b453298d158b5934967;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/public.php b/www/ecrire/public.php new file mode 100644 index 0000000..5deb451 --- /dev/null +++ b/www/ecrire/public.php @@ -0,0 +1,263 @@ +$x"; + if (!$pos = strpos($page['texte'], '')) + $pos = strlen($page['texte']); + $page['texte'] = substr_replace($page['texte'], $x, $pos, 0); + } + + $affiche_boutons_admin = ($html AND (( + isset($_COOKIE['spip_admin']) + AND !$flag_preserver + ) OR $debug)); + + if ($affiche_boutons_admin) + include_spip('balise/formulaire_admin'); + + + + // decompte des visites, on peut forcer a oui ou non avec le header X-Spip-Visites + // par defaut on ne compte que les pages en html (ce qui exclue les js,css et flux rss) + $spip_compter_visites = $html?'oui':'non'; + if (isset($page['entetes']['X-Spip-Visites'])){ + $spip_compter_visites = in_array($page['entetes']['X-Spip-Visites'],array('oui','non'))?$page['entetes']['X-Spip-Visites']:$spip_compter_visites; + unset($page['entetes']['X-Spip-Visites']); + } + + // Execution de la page calculee + + + // traitements sur les entetes avant envoi + // peut servir pour le plugin de stats + $page['entetes'] = pipeline('affichage_entetes_final', $page['entetes']); + + + // 1. Cas d'une page contenant uniquement du HTML : + if ($page['process_ins'] == 'html') { + envoyer_entetes($page['entetes']); + } + + // 2. Cas d'une page contenant du PHP : + // Attention cette partie eval() doit imperativement + // etre declenchee dans l'espace des globales (donc pas + // dans une fonction). + else { + // sinon, inclure_balise_dynamique nous enverra peut-etre + // quelques en-tetes de plus (voire qq envoyes directement) + + // restaurer l'etat des notes + if (isset($page['notes']) AND $page['notes']){ + $notes = charger_fonction("notes","inc"); + $notes($page['notes'],'restaurer_etat'); + } + ob_start(); + xml_hack($page, true); + $res = eval('?' . '>' . $page['texte']); + $page['texte'] = ob_get_contents(); + xml_hack($page); + ob_end_clean(); + + envoyer_entetes($page['entetes']); + // en cas d'erreur lors du eval, + // la memoriser dans le tableau des erreurs + + if ($res === false) { + $msg = array('zbug_erreur_execution_page'); + erreur_squelette($msg); + } + } + + // + // Post-traitements + // + page_base_href($page['texte']); + + // (c'est ici qu'on fait var_recherche, validation, boutons d'admin, + // cf. public/assembler.php) + echo pipeline('affichage_final', $page['texte']); + + if ($lang) lang_select(); + // l'affichage de la page a pu lever des erreurs (inclusion manquante) + // il faut tester a nouveau + $debug = ((_request('var_mode') == 'debug') OR $tableau_des_temps) ? array(1) : array(); + + // Appel au debusqueur en cas d'erreurs ou de demande de trace + // at last + if ($debug) { + // en cas d'erreur, retester l'affichage + if ($html AND ($affiche_boutons_admin OR $debug)) { + if (!_request('var_mode_affiche')) + set_request('var_mode_affiche', 'resultat'); + $var_mode_affiche = _request('var_mode_affiche'); + $var_mode_objet = _request('var_mode_objet'); + $GLOBALS['debug_objets'][$var_mode_affiche][$var_mode_objet . 'tout'] = ($var_mode_affiche== 'validation' ? $page['texte'] :""); + echo erreur_squelette(false); + } + } else { + if (isset($GLOBALS['meta']['date_prochain_postdate']) + AND $GLOBALS['meta']['date_prochain_postdate'] <= time()) { + include_spip('inc/rubriques'); + calculer_prochain_postdate(true); + } + + // Effectuer une tache de fond ? + // si #SPIP_CRON est present, on ne le tente que pour les navigateurs + // en mode texte (par exemple), et seulement sur les pages web + if (defined('_DIRECT_CRON_FORCE') + OR ( + !defined('_DIRECT_CRON_INHIBE') + AND $html + AND !strstr($page['texte'], '') + AND !preg_match(',msie|mozilla|opera|konqueror,i', $_SERVER['HTTP_USER_AGENT'])) + ) + cron(); + + // sauver le cache chemin si necessaire + save_path_cache(); + } + + // Gestion des statistiques du site public + if (($GLOBALS['meta']["activer_statistiques"] != "non") + AND $spip_compter_visites!='non' + AND $stats = charger_fonction('stats', 'public', true)) + $stats(); +} + +?>