Subversion Repositories eFlore/Applications.del

Compare Revisions

Regard whitespace Rev 1485 → Rev 1486

/trunk/services/modules/0.1/images/ListeImages2.php
366,6 → 366,10
/* $req['join'][] = 'LEFT JOIN del_image_tag dit ON dit.ce_image = vdi.id_image';
$req['where'][] = 'dit.actif = 1'; */
 
 
 
// ==== commenté pour l'instant pour cause de soucis d'optimiseur MySQL (cf commentaire en intro) ====
/*
if(isset($p['masque.tag_pictoflora']['AND'])) {
// optimsation: en cas de "AND" on sort() l'input et le GROUP_CONCAT()
// donc nous utilisons des ".*" plutôt que de multiples conditions et "|"
381,10 → 385,39
" HAVING GROUP_CONCAT(tag_normalise) REGEXP %s)",
$db->proteger(implode('|', $p['masque.tag_pictoflora']['OR'])));
}
*/
 
// ==== XXX: puisque on est bassiné par cette "DEPENDENT SUBQUERY", nous la faisons donc indépendemment ====
if(isset($p['masque.tag_pictoflora']['AND'])) {
// optimsation: en cas de "AND" on sort() l'input et le GROUP_CONCAT()
// donc nous utilisons des ".*" plutôt que de multiples conditions et "|"
sort($p['masque.tag_pictoflora']['AND']);
 
// plutôt que db->connexion->query->fetchColumn(), une API pourrie nous oblige à ...
$ids = $db->recupererTous(sprintf(
"SELECT ce_image FROM del_image_tag WHERE actif = 1".
" GROUP BY ce_image".
" HAVING GROUP_CONCAT(tag_normalise ORDER BY tag_normalise) REGEXP %s",
$db->proteger(implode('.*', $p['masque.tag_pictoflora']['AND']))));
// puis:
$ids = array_map(create_function('$e', 'return $e["ce_image"];'), $ids);
if($ids) $req['where'][] = sprintf("vdi.id_image IN (%s)", implode(',', $ids));
 
}
else {
$ids = $db->recupererTous(sprintf(
"SELECT ce_image FROM del_image_tag WHERE actif = 1".
" GROUP BY ce_image".
" HAVING GROUP_CONCAT(tag_normalise) REGEXP %s",
$db->proteger(implode('|', $p['masque.tag_pictoflora']['OR']))));
$ids = array_map(create_function('$e', 'return $e["ce_image"];'), $ids);
if($ids) $req['where'][] = sprintf("vdi.id_image IN (%s)", implode(',', $ids));
}
 
}
}
 
 
static function getIdImages($p, $req, $db) {
return $db->recupererTous(sprintf(
'SELECT SQL_CALC_FOUND_ROWS id_image' .