diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php index 2c7db6422f86cda716901f98177c0598616c67f2..2feb082fc90258ee3cafb854ede7a152afe15ace 100644 --- a/ecrire/base/abstract_sql.php +++ b/ecrire/base/abstract_sql.php @@ -158,7 +158,6 @@ function sql_showtable($table, $serveur='', $table_spip = false) $f = sql_serveur('showtable', $serveur); $f = $f($table, $serveur); if (!$f) return array(); - spip_log("show $table " . join(',',$f)); if (isset($GLOBALS['tables_principales'][$table]['join'])) $f['join'] = $GLOBALS['tables_principales'][$table]['join']; elseif (isset($GLOBALS['tables_auxiliaires'][$table]['join'])) diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 96bfb24a88bc213a83b79e7e93895ea07dfdd815..8153facc57c87dfee2efede7a4c499982c2069cd 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -1717,7 +1717,7 @@ function filtre_find($array, $val) { // // http://doc.spip.org/@calcul_pagination -function calcul_pagination($total, $nom, $position, $pas, $liste = true, $modele='') { +function calcul_pagination($total, $nom, $position, $pas, $liste = true, $modele='', $connect='') { static $ancres = array(); $bloc_ancre = ""; @@ -1761,7 +1761,7 @@ function calcul_pagination($total, $nom, $position, $pas, $liste = true, $modele return $bloc_ancre; if ($modele) $modele = '_'.$modele; - return recuperer_fond("modeles/pagination$modele", $pagination); + return recuperer_fond("modeles/pagination$modele", $pagination, false, true, $connect); } // recuperere le chemin d'une css existante et : diff --git a/ecrire/public.php b/ecrire/public.php index 81b4d5605bb6f36b08f6761909679268724a8f75..d4f4d6ca28e876a15de198873ea34d3db580d4d6 100644 --- a/ecrire/public.php +++ b/ecrire/public.php @@ -20,7 +20,7 @@ if (defined('_INC_PUBLIC')) { $fonds = array($fond); if (is_array($fond)) $fonds=$fond; foreach($fonds as $fond){ - $subpage = inclure_page($fond, $contexte_inclus); + $subpage = inclure_page($fond, $contexte_inclus, _request('connect')); if ($subpage['process_ins'] == 'html'){ echo $subpage['texte']; @@ -116,7 +116,7 @@ if (defined('_INC_PUBLIC')) { $tableau_des_erreurs = $tableau_des_temps = array(); $assembler = charger_fonction('assembler', 'public'); - $page = $assembler($fond); + $page = $assembler($fond, _request('connect')); if (isset($page['status'])) { include_spip('inc/headers'); diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php index 13dfb1f1694ac0ad71b111003490218291285660..7a47c1ec85100123c3b45333b0af801a68b5cf2e 100644 --- a/ecrire/public/assembler.php +++ b/ecrire/public/assembler.php @@ -16,7 +16,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // fonction principale declenchant tout le service // elle-meme ne fait que traiter les cas particuliers, puis passe la main. // http://doc.spip.org/@public_assembler_dist -function public_assembler_dist($fond) { +function public_assembler_dist($fond, $connect='') { global $forcer_lang, $ignore_auth_http; // multilinguisme @@ -98,7 +98,7 @@ function public_assembler_dist($fond) { } if ($l) lang_select(); - return assembler_page ($fond); + return assembler_page ($fond, $connect); } @@ -106,7 +106,7 @@ function public_assembler_dist($fond) { // calcule la page et les entetes // // http://doc.spip.org/@assembler_page -function assembler_page ($fond) { +function assembler_page ($fond, $connect='') { global $flag_preserver,$lastmodified, $use_cache; @@ -154,7 +154,7 @@ function assembler_page ($fond) { } } else { $parametrer = charger_fonction('parametrer', 'public'); - $page = $parametrer($fond, '', $chemin_cache); + $page = $parametrer($fond, '', $chemin_cache, $connect); //ajouter les scripts poue le mettre en cache $page['insert_js_fichier'] = pipeline("insert_js",array("type" => "fichier","data" => array())); @@ -221,7 +221,7 @@ function stop_inclure($fragment) { } } // http://doc.spip.org/@inclure_page -function inclure_page($fond, $contexte_inclus) { +function inclure_page($fond, $contexte_inclus, $connect='') { global $lastmodified; if (!defined('_PAS_DE_PAGE_404')) define('_PAS_DE_PAGE_404',1); @@ -265,7 +265,7 @@ function inclure_page($fond, $contexte_inclus) { // sinon on la calcule else { $parametrer = charger_fonction('parametrer', 'public'); - $page = $parametrer($fond, $contexte_inclus, $chemin_cache); + $page = $parametrer($fond, $contexte_inclus, $chemin_cache, $connect); $lastmodified = time(); // et on l'enregistre sur le disque if ($chemin_cache @@ -546,7 +546,7 @@ function message_erreur_404 ($erreur= "") { // fonction permettant de recuperer le resultat du calcul d'un squelette // pour une inclusion dans un flux // http://doc.spip.org/@recuperer_fond -function recuperer_fond($fond, $contexte=array(),$protect_xml=false, $trim=true) { +function recuperer_fond($fond, $contexte=array(),$protect_xml=false, $trim=true, $connect='') { // on est peut etre dans l'espace prive au moment de l'appel if (!defined ('_INC_PUBLIC')) define ('_INC_PUBLIC', 1); if (($fond=='')&&isset($contexte['fond'])) @@ -554,7 +554,7 @@ function recuperer_fond($fond, $contexte=array(),$protect_xml=false, $trim=true) $texte = ""; foreach(is_array($fond) ? $fond : array($fond) as $f){ - $page = inclure_page($f, $contexte); + $page = inclure_page($f, $contexte, $connect); if ($GLOBALS['flag_ob'] AND ($page['process_ins'] != 'html')) { ob_start(); eval('?' . '>' . $page['texte']); @@ -595,7 +595,7 @@ function creer_contexte_de_modele($args) { // Calcule le modele et retourne la mini-page ainsi calculee // http://doc.spip.org/@inclure_modele -function inclure_modele($type, $id, $params, $lien) { +function inclure_modele($type, $id, $params, $lien, $connect='') { static $compteur; if (++$compteur>10) return ''; # ne pas boucler indefiniment @@ -673,7 +673,7 @@ function inclure_modele($type, $id, $params, $lien) { $GLOBALS['compt_note'] = 0; // Appliquer le modele avec le contexte - $retour = trim(recuperer_fond($fond, $contexte)); + $retour = trim(recuperer_fond($fond, $contexte, false, true, $connect)); // On restitue les globales de notes telles qu'elles etaient avant l'appel // du modele. Si le modele n'a pas affiche ses notes, tant pis (elles *doivent* diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index 02ac2f4e2a13ccd5549240d59f504f1bee55bc0c..2bad7d9b324521fdc95a7563fb968523537dbfe3 100644 --- a/ecrire/public/balises.php +++ b/ecrire/public/balises.php @@ -513,9 +513,13 @@ function balise_LESAUTEURS_dist ($p) { $p->code = "safehtml($_lesauteurs)"; // $p->interdire_scripts = true; } else { + $connect = $p->boucles[$p->id_boucle]->sql_serveur; $p->code = "recuperer_fond( 'modeles/lesauteurs', - array('id_article' => ".champ_sql('id_article', $p)."))"; + array('id_article' => ".champ_sql('id_article', $p) + ."), false, true, " + . _q($connect) + .")"; $p->interdire_scripts = false; // securite apposee par recuperer_fond() } @@ -600,14 +604,14 @@ function balise_PAGINATION_dist($p, $liste='true') { $__modele = $__modele?", $__modele":""; $p->boucles[$b]->numrows = true; - + $connect = $p->boucles[$b]->sql_serveur; $p->code = "calcul_pagination( (isset(\$Numrows['$b']['grand_total']) ? \$Numrows['$b']['grand_total'] : \$Numrows['$b']['total'] ), ".$p->boucles[$b]->modificateur['debut_nom'].", \$Pile[0]['debut'.".$p->boucles[$b]->modificateur['debut_nom']."]," . $p->boucles[$b]->total_parties - . ", $liste$__modele)"; + . ", $liste$__modele,''," . _q($connect) . ")"; $p->interdire_scripts = false; return $p; @@ -1213,7 +1217,8 @@ function balise_INCLURE_dist($p) { if ($flag_env) { $l = "array_merge(\$Pile[0],$l)"; } - $p->code = "recuperer_fond('',".$l.",true, false)"; + $connect = $p->boucles[$p->id_boucle]->sql_serveur; + $p->code = "recuperer_fond('',".$l.",true, false, " . _q($connect) .")"; } else { $n = interprete_argument_balise(1,$p); $p->code = '(($c = find_in_path(' . $n . ')) ? spip_file_get_contents($c) : "")'; @@ -1265,9 +1270,10 @@ function balise_MODELE_dist($p) { } } + $connect = $p->boucles[$p->id_boucle]->sql_serveur; $p->code = "( ((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))<5)? recuperer_fond('modeles/".$nom."', - creer_contexte_de_modele(array(".join(',', $code_contexte).",'recurs='.(++\$recurs), \$GLOBALS['spip_lang']))):'')"; + creer_contexte_de_modele(array(".join(',', $code_contexte).",'recurs='.(++\$recurs), \$GLOBALS['spip_lang'])),false,true," . _q($connect) . "):'')"; $p->interdire_scripts = false; // securite assuree par le squelette return $p; diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php index b2af6c6b7bf55eeb50557069d4ce69fed7810a90..86986cf630f46a33a7b62519ddd13e1e07cd5c2c 100644 --- a/ecrire/public/composer.php +++ b/ecrire/public/composer.php @@ -29,9 +29,8 @@ 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, $source) { +function public_composer_dist($squelette, $mime_type, $gram, $source, $connect) { - $connect = _request('connect'); $nom = $mime_type . ($connect ? "_$connect" : '') . '_' . md5($squelette); // si squelette est deja en memoire (INCLURE a repetition) @@ -316,7 +315,7 @@ function calcul_exposer ($id, $type, $reference) { list($table,$hierarchie) = $x; $exposer[$element][$id_element] = true; if ($hierarchie) { - $row = sql_fetsel(array('id_rubrique'), array($table), array("$element=$id_element")); + $row = sql_fetsel(array('id_rubrique'), array($table), array("$element=" . _q($id_element))); $hierarchie = calculer_hierarchie($row['id_rubrique']); foreach (split(',',$hierarchie) as $id_rubrique) $exposer['id_rubrique'][$id_rubrique] = true; diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php index 33695a5f71ea71cb2da0c6fc09c4dc93286e6c3f..85f264af46c570e3b050c0bb46d8f39bd201f55a 100644 --- a/ecrire/public/parametrer.php +++ b/ecrire/public/parametrer.php @@ -281,7 +281,7 @@ function generer_generer_url($type, $p) # En cas d'erreur process_ins est absent et texte est un tableau de 2 chaines // http://doc.spip.org/@public_parametrer_dist -function public_parametrer_dist($fond, $local='', $cache='') { +function public_parametrer_dist($fond, $local='', $cache='', $connect='') { // verifier que la fonction assembler est bien chargee (cf. #608) $assembler = charger_fonction('assembler', 'public'); @@ -366,7 +366,7 @@ function public_parametrer_dist($fond, $local='', $cache='') { if ($GLOBALS['var_mode'] == 'debug') $GLOBALS['debug_objets']['contexte'][$sourcefile] = $local; - if ($fonc = $composer($skel, $mime_type, $gram, $sourcefile)){ + if ($fonc = $composer($skel, $mime_type, $gram, $sourcefile, $connect)){ spip_timer($a = 'calcul page '.rand(0,1000)); $notes = calculer_notes(); // conserver les notes...