Skip to content
Extraits de code Groupes Projets
Valider 0014e6e9 rédigé par esj's avatar esj
Parcourir les fichiers

Elimination de la table principale de la boucle de [11091]: traitement...

Elimination de la table principale de la boucle de [11091]: traitement particulier de la boucle Document dont la "table principale" a une jointure d'office.
Toujours le même fichier à contrôler pour SQLite.

Scorie de [11089] qui empêchait contenu_document de fonctionner dans un cas.
parent d31e44b9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -312,10 +312,11 @@ function fichier_copie_locale($source) { ...@@ -312,10 +312,11 @@ function fichier_copie_locale($source) {
} }
// Ping pour voir si son extension est connue et autorisee // Ping pour voir si son extension est connue et autorisee
$path_parts = recuperer_infos_distantes($source,0,false) ; $path_parts = recuperer_infos_distantes($source,0,false) ;
$ext = $path_part ? $path_parts['extension'] : ''; $ext = $path_parts ? $path_parts['extension'] : '';
if ($ext AND sql_getfetsel("extension", "spip_types_documents", "extension=".sql_quote($ext))) { if ($ext AND sql_getfetsel("extension", "spip_types_documents", "extension=".sql_quote($ext))) {
return nom_fichier_copie_locale($source, $ext); return nom_fichier_copie_locale($source, $ext);
} }
spip_log("pas de copie locale pour $source");
} }
......
...@@ -178,10 +178,9 @@ function boucle_DOCUMENTS_dist($id_boucle, &$boucles) { ...@@ -178,10 +178,9 @@ function boucle_DOCUMENTS_dist($id_boucle, &$boucles) {
AND !$boucle->modificateur['criteres']['id_rubrique'] AND !$boucle->modificateur['criteres']['id_rubrique']
AND !$boucle->modificateur['criteres']['id_document'] AND !$boucle->modificateur['criteres']['id_document']
) { ) {
# pallier un defaut du compilo sur le AS qui se met a la fin # Espace avant LEFT JOIN indispensable pour insertion de AS
unset($boucle->from[$id_table]); # a refaire plus proprement
$boucle->from[] = "spip_documents AS `${id_table}` $boucle->from[$id_table] = "spip_documents LEFT JOIN spip_documents_articles AS a
LEFT JOIN spip_documents_articles AS a
ON `$id_table`.id_document=a.id_document ON `$id_table`.id_document=a.id_document
LEFT JOIN spip_articles AS aa LEFT JOIN spip_articles AS aa
ON a.id_article=aa.id_article ON a.id_article=aa.id_article
......
...@@ -518,6 +518,7 @@ function calculer_select ($select = array(), $from = array(), ...@@ -518,6 +518,7 @@ function calculer_select ($select = array(), $from = array(),
reset($from); reset($from);
$e = '/\b(' . "$t\\." . join("|" . $t . '\.', $equiv) . ')\b/'; $e = '/\b(' . "$t\\." . join("|" . $t . '\.', $equiv) . ')\b/';
if (!( count($equiv) <> 1 OR // a faire sauter un jour if (!( count($equiv) <> 1 OR // a faire sauter un jour
strpos($t, ' ') OR // jointure des le depart cf boucle_doc
calculer_jointnul($t, $select, $e) OR calculer_jointnul($t, $select, $e) OR
calculer_jointnul($t, $join, $e) OR calculer_jointnul($t, $join, $e) OR
calculer_jointnul($t, $where, $e) OR calculer_jointnul($t, $where, $e) OR
...@@ -533,7 +534,6 @@ function calculer_select ($select = array(), $from = array(), ...@@ -533,7 +534,6 @@ function calculer_select ($select = array(), $from = array(),
$where = remplacer_jointnul($t, $where, $e); $where = remplacer_jointnul($t, $where, $e);
$having = remplacer_jointnul($t, $having, $e); $having = remplacer_jointnul($t, $having, $e);
} }
$from[-1] = $sfrom; $from[-1] = $sfrom;
} }
......
...@@ -239,8 +239,14 @@ function spip_mysql_select_as($args) ...@@ -239,8 +239,14 @@ function spip_mysql_select_as($args)
} else $join =''; } else $join ='';
$res = ''; $res = '';
foreach($args as $k => $v) { foreach($args as $k => $v) {
$res .= ', ' . $v . (is_numeric($k) ? '' : " AS `$k`") . $join; if (!is_numeric($k)) {
$join = ''; $p = strpos($v, " ");
if ($p)
$v = substr($v,0,$p) . " AS `$k`" . substr($v,$p);
else $v .= " AS `$k`";
}
$res .= ', ' . $v ;
} }
return substr($res,2) . $join; return substr($res,2) . $join;
} }
......
...@@ -488,11 +488,18 @@ function spip_pg_select_as($args) ...@@ -488,11 +488,18 @@ function spip_pg_select_as($args)
$argsas = ""; $argsas = "";
foreach($args as $k => $v) { foreach($args as $k => $v) {
$as = ''; $as = '';
spip_log("$k : $v");
if (!is_numeric($k)) { if (!is_numeric($k)) {
if (preg_match('/\.(.*)$/', $k, $r)) if (preg_match('/\.(.*)$/', $k, $r))
$v = $k; $v = $k;
elseif ($v != $k) $as = " AS $k"; elseif ($v != $k) {
$p = strpos($v, " ");
if ($p)
$v = substr($v,0,$p) . " AS $k" . substr($v,$p);
else $as = " AS $k";
}
} }
spip_log("subs $k : $v avec $as");
if (strpos($v, 'JOIN') === false) $argsas .= ', '; if (strpos($v, 'JOIN') === false) $argsas .= ', ';
$argsas .= $v . $as; $argsas .= $v . $as;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter