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
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+4 −5
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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 ='';
+1 −8
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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';

+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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(
+27 −10
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -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

	if (!function_exists($fonc)) {

		$composer = charger_fonction('composer', 'public');

	// Le debugueur veut afficher le contexte
	if (isset($GLOBALS['var_mode']) && ($GLOBALS['var_mode'] == 'debug'))
		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;