Skip to content
Extraits de code Groupes Projets
Valider 59aab79e rédigé par esj's avatar esj
Parcourir les fichiers

Depuis l'irruption des modèles, le débusqueur ne retrouvait pas toujours le...

Depuis l'irruption des modèles, le débusqueur ne retrouvait pas toujours le résultat d'une boucle, parce que l'utilisation d'un modèle à l'intérieur ne restaurait pas les variables globales du débusqueur. Réparé (dur).

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.
parent a5256a68
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -289,19 +289,18 @@ $liste_des_forums = array( ...@@ -289,19 +289,18 @@ $liste_des_forums = array(
// Droits d'acces maximum par defaut // Droits d'acces maximum par defaut
@umask(0); @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; $spip_version = 11042;
// version de l'interface a la base // version de l'interface a la base
$spip_sql_version = 1; $spip_sql_version = 1;
// version de spip en chaine // 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 // 1.xxyy : xx00 versions stables publiees, xxyy versions de dev
// (ce qui marche pour yy ne marchera pas forcement sur une version plus ancienne) // (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_affichee = '1.9.3 dev';
$spip_version_code = '1.9303';
// ** Securite ** // ** Securite **
$visiteur_session = $auteur_session = $connect_statut = $connect_toutes_rubriques = $hash_recherche = $hash_recherche_strict = $ldap_present =''; $visiteur_session = $auteur_session = $connect_statut = $connect_toutes_rubriques = $hash_recherche = $hash_recherche_strict = $ldap_present ='';
......
...@@ -30,14 +30,7 @@ include_spip('public/interfaces'); ...@@ -30,14 +30,7 @@ include_spip('public/interfaces');
# Toutefois pour 2. et 3. preferer la technique de la surcharge # Toutefois pour 2. et 3. preferer la technique de la surcharge
// http://doc.spip.org/@public_composer_dist // http://doc.spip.org/@public_composer_dist
function public_composer_dist($squelette, $mime_type, $gram, $source, $connect) { function public_composer_dist($squelette, $nom, $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;
$phpfile = sous_repertoire(_DIR_SKELS,'',false,true) . $nom . '.php'; $phpfile = sous_repertoire(_DIR_SKELS,'',false,true) . $nom . '.php';
......
...@@ -229,7 +229,7 @@ function squelette_debug_compile($nom, $sourcefile, $code, $squelette) { ...@@ -229,7 +229,7 @@ function squelette_debug_compile($nom, $sourcefile, $code, $squelette) {
// http://doc.spip.org/@boucle_debug // http://doc.spip.org/@boucle_debug
function boucle_debug ($nom, $id_parent, $id, $type, $crit, $avant, $milieu, $apres, $altern) { function boucle_debug ($nom, $id_parent, $id, $type, $crit, $avant, $milieu, $apres, $altern) {
global $debug_objets; global $debug_objets;
$debug_objets['courant'] = $nom;
$debug_objets['parent'][$nom.$id] = $id_parent; $debug_objets['parent'][$nom.$id] = $id_parent;
$debug_objets['pretty'][$nom.$id] = $debug_objets['pretty'][$nom.$id] =
"BOUCLE$id($type)" . htmlspecialchars( "BOUCLE$id($type)" . htmlspecialchars(
......
...@@ -297,18 +297,34 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='') { ...@@ -297,18 +297,34 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='') {
list($skel,$mime_type, $gram, $sourcefile) = list($skel,$mime_type, $gram, $sourcefile) =
$styliser($fond, $id_rubrique_fond, $GLOBALS['spip_lang'], $connect); $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) // 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 ($debug) {
if (isset($GLOBALS['var_mode']) && ($GLOBALS['var_mode'] == 'debug')) $GLOBALS['debug_objets']['contexte'][$sourcefile] = $local;
$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)); spip_timer($a = 'calcul page '.rand(0,1000));
$notes = calculer_notes(); // conserver les notes... $notes = calculer_notes(); // conserver les notes...
...@@ -329,7 +345,7 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='') { ...@@ -329,7 +345,7 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='') {
. join(', ',$info) . join(', ',$info)
.' ('.strlen($page['texte']).' octets)' .' ('.strlen($page['texte']).' octets)'
); );
if (isset($GLOBALS['var_mode']) && ($GLOBALS['var_mode'] == 'debug')) if ($debug)
$GLOBALS['debug_objets']['profile'][$sourcefile] = $profile; $GLOBALS['debug_objets']['profile'][$sourcefile] = $profile;
// Si #CACHE{} n'etait pas la, le mettre a $delais // Si #CACHE{} n'etait pas la, le mettre a $delais
...@@ -339,9 +355,10 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='') { ...@@ -339,9 +355,10 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='') {
} else } else
$page = array(); $page = array();
if (isset($GLOBALS['var_mode']) && ($GLOBALS['var_mode'] == 'debug')) { if ($debug) {
include_spip('public/debug'); include_spip('public/debug');
debug_dumpfile (strlen($page['texte'])?$page['texte']:" ", $fonc, 'resultat'); debug_dumpfile (strlen($page['texte'])?$page['texte']:" ", $fonc, 'resultat');
$GLOBALS['debug_objets']['courant'] = $courant;
} }
$page['contexte'] = $local; $page['contexte'] = $local;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter