From e62e02f45e3d6d99aaa25e00c92b83d7a8b475ad Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Fri, 17 Mar 2006 17:22:45 +0000
Subject: [PATCH] nouvelle API de public_trouver_squelette, explicitant langage
 but et langage cible dans son resultat

---
 ecrire/public/calcul.php            | 23 +++++++++++------------
 ecrire/public/trouver_squelette.php |  2 +-
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/ecrire/public/calcul.php b/ecrire/public/calcul.php
index db0a2a15b5..d9abf77a76 100644
--- a/ecrire/public/calcul.php
+++ b/ecrire/public/calcul.php
@@ -61,10 +61,10 @@ function squelette_obsolete($skel, $squelette) {
 # - des fonctions de traduction de balise, de critere et de boucle
 # - des declaration de tables SQL supplementaires
 
-function charger_squelette ($squelette) {
-	$ext = $GLOBALS['extension_squelette'];
-	$nom = $ext . '_' . md5($squelette);
-	$sourcefile = $squelette . ".$ext";
+function charger_squelette ($squelette, $mime_type, $gram) {
+
+	$nom = $mime_type . '_' . md5($squelette);
+	$sourcefile = $squelette . ".$gram";
 
 	// le squelette est-il deja en memoire (INCLURE  a repetition)
 	if (function_exists($nom))
@@ -96,7 +96,7 @@ function charger_squelette ($squelette) {
 
 	if (function_exists($nom)) return $nom;
 
-	$skel_code = calculer_squelette($skel, $nom, $ext, $sourcefile);
+	$skel_code = calculer_squelette($skel, $nom, $gram, $sourcefile);
 	// Tester si le compilateur renvoie une erreur
 
 	if (is_array($skel_code))
@@ -145,14 +145,16 @@ function cherche_page ($cache, $contexte, $fond)  {
 		lang_select($lang);
 
 	$f = include_fonction('trouver_squelette', 'public');
-	$skel = $f($fond, $id_rubrique_fond,$GLOBALS['spip_lang']);
+	list($skel,$mime_type, $gram) = $f($fond, $id_rubrique_fond,$GLOBALS['spip_lang']);
 
-	// Charger le squelette et recuperer sa fonction principale
-	// (compilation automatique au besoin) et calculer
+	// Compiler le squelette en specifiant les langages cibles et source
+	// (cette compilation n'intervient qu'en cas de modif du squelette)
+	// et appliquer sa fonction principale sur le contexte 
+	// Passer le nom du cache pour produire sa destruction automatique
 
 	$page = array();
 
-	if ($fonc = charger_squelette($skel)) {
+	if ($fonc = charger_squelette($skel, $mime_type, $gram)) {
 		spip_timer('calcul page');
 		$page = $fonc(array('cache' => $cache), array($contexte));
 		spip_log("calcul ("
@@ -163,12 +165,9 @@ function cherche_page ($cache, $contexte, $fond)  {
 		);
 	}
 
-	// Passer la main au debuggueur)
 	if ($GLOBALS['var_mode'] == 'debug') {
 		debug_dumpfile ($page['texte'], $fonc, 'resultat');
 	}
-#	spip_log("page " . strlen($page['texte']) . " $skel .  $fonc");
-	// Retourner la structure de la page
 
 	return $page;
 }
diff --git a/ecrire/public/trouver_squelette.php b/ecrire/public/trouver_squelette.php
index 3340e2930f..578e8710c3 100644
--- a/ecrire/public/trouver_squelette.php
+++ b/ecrire/public/trouver_squelette.php
@@ -56,7 +56,7 @@ function public_trouver_squelette($fond, $id_rubrique, $lang) {
 			$squelette = $f;
 	}
 
-	return $squelette;
+	return array($squelette, $ext, $ext);
 }
 
 ?>
-- 
GitLab