diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index d3b24c930fe643c4f415d0d10119feccc38d8b6b..c0b0aac1ba11def238888de42daa5a4f83ab4f92 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -244,12 +244,13 @@ function spip_connect($serveur='') { : ($install ? (_FILE_CONNECT_INS . '.php') : '')); + unset($GLOBALS['db_ok']); unset($GLOBALS['spip_connect_version']); if ($f AND is_readable($f)) include($f); if (!isset($GLOBALS['db_ok'])) { if ($install) return 'spip_' . $serveur . '_query'; spip_log("spip_connect: serveur $index mal defini dans '$f'."); - return false; + return $connexions[$index]=false; } $connexions[$index] = $GLOBALS['db_ok']; diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php index 13eaca69a298de65737d45c847d73964f9e1257b..e241825c5793f1e5df1a907d734696775286e6a9 100644 --- a/ecrire/public/compiler.php +++ b/ecrire/public/compiler.php @@ -715,7 +715,7 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect='') $boucles[$id]->jointures = $x; if (($type == 'documents') && $boucle->doublons) { $descr['documents'] = true; } - } + } else $boucles[$id]->type_requete = ''; } } // Commencer par reperer les boucles appelees explicitement @@ -741,13 +741,13 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect='') } foreach($boucles as $id => $boucle) { $type = $boucle->type_requete; - if ($type != 'boucle') { - if ($boucle->param) { + if ($type AND $type != 'boucle') { + if ($boucle->param) { $res = calculer_criteres($id, $boucles); if (is_array($res)) return $res; # erreur } - $descr['id_mere'] = $id; - $boucles[$id]->return = + $descr['id_mere'] = $id; + $boucles[$id]->return = calculer_liste($boucle->milieu, $descr, $boucles, @@ -765,20 +765,24 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect='') foreach($boucles as $id => $boucle) { // appeler la fonction de definition de la boucle - $f = 'boucle_'.strtoupper($boucle->type_requete); + $req = $boucle->type_requete; + if ($req) { + $f = 'boucle_'.strtoupper($req); // si pas de definition perso, definition spip - if (!function_exists($f)) $f = $f.'_dist'; - // laquelle a une definition par defaut - if (!function_exists($f)) $f = 'boucle_DEFAUT'; - if (!function_exists($f)) $f = 'boucle_DEFAUT_dist'; + if (!function_exists($f)) $f = $f.'_dist'; + // laquelle a une definition par defaut + if (!function_exists($f)) $f = 'boucle_DEFAUT'; + if (!function_exists($f)) $f = 'boucle_DEFAUT_dist'; + $req = $f($id, $boucles); + } $boucles[$id]->return = "function BOUCLE" . strtr($id,"-","_") . $nom . '(&$Cache, &$Pile, &$doublons, &$Numrows, $SP) {' . - $f($id, $boucles) . + $req . "\n}\n\n"; - if ($GLOBALS['var_mode'] == 'debug') - boucle_debug_compile ($id, $nom, $boucles[$id]->return); + if ($GLOBALS['var_mode'] == 'debug') + boucle_debug_compile ($id, $nom, $boucles[$id]->return); } $code = ""; diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index c56b9abb56984d1491e6a43578b5f272a39200bc..af13d4fe4a75df3a7380584f4605b96d8210663c 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -1034,8 +1034,9 @@ function trouver_table($type, $boucle) $serveur = $boucle->sql_serveur; $s = $serveur ? $serveur : 0; - if (!isset($type_des_serveurs[$s])) spip_connect($serveur); - + if (!isset($type_des_serveurs[$s])) { + if (!spip_connect($serveur)) return null; + } $spip = ($type_des_serveurs[$s] == 'spip'); if ($spip AND isset($table_des_tables[$type])) {