From 59aab79edcad8ceb0d7c61537b9d11361bb77894 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 10 Jan 2008 21:36:23 +0000 Subject: [PATCH] =?UTF-8?q?Depuis=20l'irruption=20des=20mod=C3=A8les,=20le?= =?UTF-8?q?=20d=C3=A9busqueur=20ne=20retrouvait=20pas=20toujours=20le=20r?= =?UTF-8?q?=C3=A9sultat=20d'une=20boucle,=20parce=20que=20l'utilisation=20?= =?UTF-8?q?d'un=20mod=C3=A8le=20=C3=A0=20l'int=C3=A9rieur=20ne=20restaurai?= =?UTF-8?q?t=20pas=20les=20variables=20globales=20du=20d=C3=A9busqueur.=20?= =?UTF-8?q?R=C3=A9par=C3=A9=20(dur).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pour ce faire, il a fallu changer la fonction public/composer dont le 2e argument est à présent le nom du squelette à compiler. Ce changement de signature entraine la modification de $spip_version_code, qui à présent vaut le numéro de la dernière SVN l'ayant modifié, à l'instar de $spip_version pour la base SQL. --- ecrire/inc_version.php | 9 ++++----- ecrire/public/composer.php | 9 +-------- ecrire/public/debug.php | 2 +- ecrire/public/parametrer.php | 37 ++++++++++++++++++++++++++---------- 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index 37bd9389a6..52f3c1432b 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -289,19 +289,18 @@ $liste_des_forums = array( // Droits d'acces maximum par defaut @umask(0); -// version de la base (= numero SVN de sa derniere modif) +// version des signatures de fonctions PHP +// (= numero SVN de leur derniere modif cassant la compatibilite) +$spip_version_code = 11056; +// version de la base SQL (= numero SVN de sa derniere modif) $spip_version = 11042; - // version de l'interface a la base $spip_sql_version = 1; // version de spip en chaine -// et en numerique a incrementer sur les evolutions qui cassent la compatibilite descendante // 1.xxyy : xx00 versions stables publiees, xxyy versions de dev // (ce qui marche pour yy ne marchera pas forcement sur une version plus ancienne) -// type nouvelles fonctionnalites, deplacement de fonctions ... $spip_version_affichee = '1.9.3 dev'; -$spip_version_code = '1.9303'; // ** Securite ** $visiteur_session = $auteur_session = $connect_statut = $connect_toutes_rubriques = $hash_recherche = $hash_recherche_strict = $ldap_present =''; diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php index 4e20262471..8ac3b3760c 100644 --- a/ecrire/public/composer.php +++ b/ecrire/public/composer.php @@ -30,14 +30,7 @@ include_spip('public/interfaces'); # Toutefois pour 2. et 3. preferer la technique de la surcharge // http://doc.spip.org/@public_composer_dist -function public_composer_dist($squelette, $mime_type, $gram, $source, $connect) { - - $nom = $mime_type . ($connect ? "_$connect" : '') . '_' - . md5($GLOBALS['spip_version_code'].' * '.$squelette); - - // si squelette est deja en memoire (INCLURE a repetition) - if (function_exists($nom)) - return $nom; +function public_composer_dist($squelette, $nom, $gram, $source, $connect) { $phpfile = sous_repertoire(_DIR_SKELS,'',false,true) . $nom . '.php'; diff --git a/ecrire/public/debug.php b/ecrire/public/debug.php index 50ddef74ae..eb6059db94 100644 --- a/ecrire/public/debug.php +++ b/ecrire/public/debug.php @@ -229,7 +229,7 @@ function squelette_debug_compile($nom, $sourcefile, $code, $squelette) { // http://doc.spip.org/@boucle_debug function boucle_debug ($nom, $id_parent, $id, $type, $crit, $avant, $milieu, $apres, $altern) { global $debug_objets; - $debug_objets['courant'] = $nom; + $debug_objets['parent'][$nom.$id] = $id_parent; $debug_objets['pretty'][$nom.$id] = "BOUCLE$id($type)" . htmlspecialchars( diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php index 04112aed3f..94ee8a5cbc 100644 --- a/ecrire/public/parametrer.php +++ b/ecrire/public/parametrer.php @@ -297,18 +297,34 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='') { list($skel,$mime_type, $gram, $sourcefile) = $styliser($fond, $id_rubrique_fond, $GLOBALS['spip_lang'], $connect); - // Charger le squelette en specifiant les langages cibles et source + // calcul du nom du squelette + $fonc = $mime_type . ($connect ? "_$connect" : '') . '_' + . md5($GLOBALS['spip_version_code'].' * '.$skel); + + $debug = (isset($GLOBALS['var_mode']) && ($GLOBALS['var_mode'] == 'debug')); + // sauver le nom de l'eventuel squelette en cours d'execution + // (recursion possible a cause des modeles) + $courant = $debug ? @$GLOBALS['debug_objets']['courant'] : ''; + + // si pas deja en memoire (INCLURE a repetition), + // charger le squelette en specifiant les langages cibles et source // au cas il faudrait le compiler (source posterieure au resultat) - // et appliquer sa fonction principale sur le contexte. - // Passer le nom du cache pour produire sa destruction automatique - $composer = charger_fonction('composer', 'public'); + if (!function_exists($fonc)) { + + $composer = charger_fonction('composer', 'public'); - // Le debugueur veut afficher le contexte - if (isset($GLOBALS['var_mode']) && ($GLOBALS['var_mode'] == 'debug')) - $GLOBALS['debug_objets']['contexte'][$sourcefile] = $local; + if ($debug) { + $GLOBALS['debug_objets']['contexte'][$sourcefile] = $local; + $GLOBALS['debug_objets']['courant'] = $fonc; + } + $fonc = $composer($skel, $fonc, $gram, $sourcefile, $connect); + } + + // Appliquer le squelette compile' sur le contexte. + // Passer le nom du cache pour produire sa destruction automatique - if ($fonc = $composer($skel, $mime_type, $gram, $sourcefile, $connect)){ + if ($fonc) { spip_timer($a = 'calcul page '.rand(0,1000)); $notes = calculer_notes(); // conserver les notes... @@ -329,7 +345,7 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='') { . join(', ',$info) .' ('.strlen($page['texte']).' octets)' ); - if (isset($GLOBALS['var_mode']) && ($GLOBALS['var_mode'] == 'debug')) + if ($debug) $GLOBALS['debug_objets']['profile'][$sourcefile] = $profile; // Si #CACHE{} n'etait pas la, le mettre a $delais @@ -339,9 +355,10 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='') { } else $page = array(); - if (isset($GLOBALS['var_mode']) && ($GLOBALS['var_mode'] == 'debug')) { + if ($debug) { include_spip('public/debug'); debug_dumpfile (strlen($page['texte'])?$page['texte']:" ", $fonc, 'resultat'); + $GLOBALS['debug_objets']['courant'] = $courant; } $page['contexte'] = $local; -- GitLab