diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php index cc0a1b49c77f67521c733a8734e34d5535da4bba..13eaca69a298de65737d45c847d73964f9e1257b 100644 --- a/ecrire/public/compiler.php +++ b/ecrire/public/compiler.php @@ -672,9 +672,8 @@ function code_boucle(&$boucles, $id, $nom) // En cas d'erreur, elle retourne un tableau des 2 premiers elements seulement // http://doc.spip.org/@public_compiler_dist -function public_compiler_dist($squelette, $nom, $gram, $sourcefile) { - global $table_des_tables, $tables_des_serveurs_sql, $tables_principales, $tables_auxiliaires, - $tables_jointures; +function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect=''){ + global $table_des_tables, $tables_des_serveurs_sql, $tables_principales, $tables_auxiliaires, $tables_jointures; // Pre-traitement : reperer le charset du squelette, et le convertir // Bonus : supprime le BOM @@ -703,6 +702,8 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) { foreach($boucles as $id => $boucle) { $type = $boucle->type_requete; if ($type != 'boucle') { + if (!$boucles[$id]->sql_serveur AND $connect) + $boucles[$id]->sql_serveur = $connect; $show = trouver_table($type, $boucles[$id]); if ($show) { $nom_table = $show['table']; @@ -805,7 +806,8 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) { $code . ' // -// Fonction principale du squelette ' . $sourcefile ." +// Fonction principale du squelette ' . $sourcefile . + ($connect ? " pour $connect" : '') . ". // function " . $nom . '($Cache, $Pile, $doublons=array(), $Numrows=array(), $SP=0) { $page = ' . diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php index 2a0395e551a15d96117676d5cf0f544ef87d835b..b2af6c6b7bf55eeb50557069d4ce69fed7810a90 100644 --- a/ecrire/public/composer.php +++ b/ecrire/public/composer.php @@ -29,9 +29,10 @@ include_spip('public/debug'); # toujours prevoir le pire # 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, $sourcefile) { +function public_composer_dist($squelette, $mime_type, $gram, $source) { - $nom = $mime_type . '_' . md5($squelette); + $connect = _request('connect'); + $nom = $mime_type . ($connect ? "_$connect" : '') . '_' . md5($squelette); // si squelette est deja en memoire (INCLURE a repetition) if (function_exists($nom)) @@ -40,7 +41,7 @@ function public_composer_dist($squelette, $mime_type, $gram, $sourcefile) { $phpfile = sous_repertoire(_DIR_SKELS,'',false,true) . $nom . '.php'; // si squelette est deja compile et perenne, le charger - if (!squelette_obsolete($phpfile, $sourcefile) + if (!squelette_obsolete($phpfile, $source) AND lire_fichier ($phpfile, $contenu, array('critique' => 'oui', 'phpcheck' => 'oui'))) eval('?'.'>'.$contenu); @@ -55,9 +56,9 @@ function public_composer_dist($squelette, $mime_type, $gram, $sourcefile) { if (function_exists($nom)) return $nom; // charger le source, si possible, et compiler - if (lire_fichier ($sourcefile, $skel)) { + if (lire_fichier ($source, $skel)) { $compiler = charger_fonction('compiler', 'public'); - $skel_code = $compiler($skel, $nom, $gram, $sourcefile); + $skel_code = $compiler($skel, $nom, $gram, $source, $connect); } // Tester si le compilateur renvoie une erreur @@ -72,7 +73,7 @@ function public_composer_dist($squelette, $mime_type, $gram, $sourcefile) { ecrire_fichier ($phpfile, $skel_code); return $nom; } else { - erreur_squelette(_T('zbug_erreur_compilation'), $sourcefile); + erreur_squelette(_T('zbug_erreur_compilation'), $source); } } }