Subversion Repositories eFlore/Applications.del

Compare Revisions

Regard whitespace Rev 1487 → Rev 1488

/trunk/services/modules/0.1/observations/ListeObservations.php
26,9 → 26,12
// SELECT MAX(num_nom) FROM bdtfx_v2_00;
define('_LISTE_OBS_MAX_BDTFX_NN', 103386 + 10000);
 
require_once(dirname(__FILE__) . '/../images/ListeImages2.php');
/*
restore_error_handler();
restore_exception_handler();
error_reporting(E_ALL);
*/
 
class ListeObservations {
 
165,6 → 168,9
 
// filtrage de l'INPUT
$params = self::requestFilterParams($parametres, self::$parametres_autorises, $this->conteneur);
 
$params['masque.tag'] = ListeImages2::buildTagsAST(@$parametres['masque.tag'], 'OR', ',');
 
// ... et paramètres par défaut
$params = array_merge(self::$default_params, $params);
 
364,12 → 370,31
$req['where'][] = 'vdi.zone_geo LIKE '.$db->proteger($p['masque.commune'].'%');
}
if(!empty($p['masque.tag'])) {
// TODO: remove LOWER() lorsqu'on est sur que les tags sont uniformés en minuscule
// i_mots_cles_texte provient de la VIEW v_del_image
// TODO: remove LOWER() lorsqu'on est sur que les tags sont uniformés en minuscule
$req['where'][] = sprintf('LOWER(CONCAT(%s)) REGEXP %s',
if(isset($p['masque.tag']['AND'])) {
/* Lorsque nous interprêtons la chaîne provenant du masque général (cf: buildTagsAST($p['masque'], 'OR', ' ') dans sqlAddMasqueConstraint()),
nous sommes splittés par espace. Cependant, assurons que si une virgule à été saisie, nous n'aurons pas le motif
" AND CONCAT(mots_cles_texte, i_mots_cles_texte) REGEXP ',' " dans notre requête.
XXX: Au 12/11/2013, une recherche sur tag depuis le masque général implique un OU, donc le problème ne se pose pas ici */
$subwhere = array();
foreach($p['masque.tag']['AND'] as $tag) {
if(trim($tag) == ',') continue;
 
$subwhere[] = sprintf(
'LOWER(CONCAT(%s)) REGEXP %s',
self::sqlAddIfNullPourConcat(array('vdi.mots_cles_texte', 'vdi.i_mots_cles_texte')),
$db->proteger(strtolower($p['masque.tag'])));
$db->proteger(strtolower($tag)));
}
$req['where'][] = '(' . implode(' AND ', $subwhere) . ')';
}
else {
$req['where'][] = sprintf(
'LOWER(CONCAT(%s)) REGEXP %s',
self::sqlAddIfNullPourConcat(array('vdi.mots_cles_texte', 'vdi.i_mots_cles_texte')),
$db->proteger(strtolower(implode('|', $p['masque.tag']['OR']))));
}
}
 
if(!empty($p['masque.type'])) {
self::addTypeConstraints($p['masque.type'], $db, $req, $c);
392,6 → 417,7
'masque.genre' => $p['masque'],
/* milieu: TODO ? */ );
$or_masque = self::requestFilterParams($or_params, array_keys($or_params), $c);
$or_masque['masque.tag'] = ListeImages2::buildTagsAST($p['masque'], 'OR', ' ');
// $or_req = array('select' => array(), 'join' => array(), 'where' => array(), 'groupby' => array(), 'having' => array());
$or_req = array('join' => array(), 'where' => array());
self::sqlAddConstraint($or_masque, $db, $or_req);