*/ $res = true; // Cas d'une page contenant du PHP : if (empty($page['process_ins']) or $page['process_ins'] != 'html') { include_spip('inc/lang'); // restaurer l'etat des notes avant calcul if (isset($page['notes']) and $page['notes'] and $notes = charger_fonction("notes", "inc", true)) { $notes($page['notes'], 'restaurer_etat'); } ob_start(); if (strpos($page['texte'], '?xml') !== false) { $page['texte'] = str_replace('<' . '?xml', "<?xml", $page['texte']); } $res = eval('?' . '>' . $page['texte']); $eval = ob_get_contents(); ob_end_clean(); // erreur d'exécution ? // enregistrer le code pour afficher zbug_erreur_execution_page if (false === $res) { $page['codephp'] = $page['texte']; $page['texte'] = '<!-- erreur -->'; } else { $page['texte'] = $eval; } $page['process_ins'] = 'html'; if (strpos($page['texte'], '?xml') !== false) { $page['texte'] = str_replace("<?xml", '<' . '?xml', $page['texte']); } } page_base_href($page['texte']);
function evaluer_fond ($fond, $contexte=array(), $connect=null) { $page = inclure_page($fond, $contexte, $connect); if (!$page) return $page; if ($page['process_ins'] != 'html') { // 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); eval('?' . '>' . $page['texte']); $page['texte'] = ob_get_contents(); xml_hack($page); $page['process_ins'] = 'html'; ob_end_clean(); } page_base_href($page['texte']); // Lever un drapeau (global) si le fond utilise #SESSION // a destination de public/parametrer // pour remonter vers les inclusions appelantes // il faut bien lever ce drapeau apres avoir evalue le fond // pour ne pas faire descendre le flag vers les inclusions appelees if (isset($page['invalideurs']) AND isset($page['invalideurs']['session'])) $GLOBALS['cache_utilise_session'] = $page['invalideurs']['session']; return $page; }