371,7 → 371,15 |
$req['where'][] = 'dit.actif = 1'; */ |
|
|
// Note à propos des 4 "@ instruction" ci-dessous (notamment sur recupererTous()) |
// REGEXP permet un puissant mécanisme de sélection des obs/image à qui sait |
// l'utiliser, mais peut sortir une erreur en cas de REGEXP invalide |
// ex: REGEX "^(". |
// Pour l'heure nous ignorons ce type d'erreur car aucun de nos champ de recherche |
// ne peuvent (ou ne devrait) comporter des meta-caractères |
// ([])?*+\\ |
|
|
// ==== commenté pour l'instant pour cause de soucis d'optimiseur MySQL (cf commentaire en intro) ==== |
/* |
if(isset($p['masque.tag_pictoflora']['AND'])) { |
398,23 → 406,25 |
sort($p['masque.tag_pictoflora']['AND']); |
|
// plutôt que db->connexion->query->fetchColumn(), une API pourrie nous oblige à ... |
$ids = $db->recupererTous(sprintf( |
$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); |
$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( |
$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); |
|
$ids = @array_map(create_function('$e', 'return $e["ce_image"];'), $ids); |
if($ids) $req['where'][] = sprintf("vdi.id_image IN (%s)", implode(',', $ids)); |
} |
|