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; }
// Attention cette partie eval() doit imperativement // etre declenchee dans l'espace des globales (donc pas // dans une fonction). // 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); $page['process_ins'] = eval('?' . '>' . $page['texte']); $page['texte'] = ob_get_contents(); xml_hack($page); ob_end_clean(); } if ($var_preview AND $var_preview = charger_fonction('previsualisation', 'public', true)) { $page = $var_preview($page); // Cette variable a ete calculee trop tot // on laisse son calcul ci-dessus pour compatibilite // bien que l'enlever a l'air sans incidence $html = preg_match(',^\s*text/html,',$page['entetes']['Content-Type']); } envoyer_entetes($page['entetes']); // en cas d'erreur lors du eval, // la memoriser dans le tableau des erreurs