Subversion Repositories eFlore/Applications.del

Rev

Rev 1487 | Rev 1489 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1487 Rev 1488
Line 24... Line 24...
24
// SELECT MAX(num_taxonomique) FROM bdtfx_v2_00;
24
// SELECT MAX(num_taxonomique) FROM bdtfx_v2_00;
25
define('_LISTE_OBS_MAX_BDTFX_NT', 44378 + 1000);
25
define('_LISTE_OBS_MAX_BDTFX_NT', 44378 + 1000);
26
// SELECT MAX(num_nom) FROM bdtfx_v2_00;
26
// SELECT MAX(num_nom) FROM bdtfx_v2_00;
27
define('_LISTE_OBS_MAX_BDTFX_NN', 103386 + 10000);
27
define('_LISTE_OBS_MAX_BDTFX_NN', 103386 + 10000);
Line -... Line 28...
-
 
28
 
-
 
29
require_once(dirname(__FILE__) . '/../images/ListeImages2.php');
28
 
30
/*
29
restore_error_handler();
31
  restore_error_handler();
30
restore_exception_handler();
32
  restore_exception_handler();
-
 
33
  error_reporting(E_ALL);
Line 31... Line 34...
31
error_reporting(E_ALL);
34
*/
Line 32... Line 35...
32
 
35
 
33
class ListeObservations {
36
class ListeObservations {
Line 163... Line 166...
163
 
166
 
Line 164... Line 167...
164
		$db = $this->bdd;
167
		$db = $this->bdd;
165
 
168
 
-
 
169
		// filtrage de l'INPUT
-
 
170
		$params = self::requestFilterParams($parametres, self::$parametres_autorises, $this->conteneur);
-
 
171
 
166
		// filtrage de l'INPUT
172
		$params['masque.tag'] = ListeImages2::buildTagsAST(@$parametres['masque.tag'], 'OR', ',');
167
		$params = self::requestFilterParams($parametres, self::$parametres_autorises, $this->conteneur);
173
 
Line 168... Line 174...
168
		// ... et paramètres par défaut
174
		// ... et paramètres par défaut
169
		$params = array_merge(self::$default_params, $params);
175
		$params = array_merge(self::$default_params, $params);
Line 362... Line 368...
362
		}
368
		}
363
		if(!empty($p['masque.commune'])) {
369
		if(!empty($p['masque.commune'])) {
364
			$req['where'][] = 'vdi.zone_geo LIKE '.$db->proteger($p['masque.commune'].'%');
370
			$req['where'][] = 'vdi.zone_geo LIKE '.$db->proteger($p['masque.commune'].'%');
365
		}
371
		}
366
		if(!empty($p['masque.tag'])) {
372
		if(!empty($p['masque.tag'])) {
367
			// i_mots_cles_texte provient de la VIEW v_del_image
-
 
368
			// TODO: remove LOWER() lorsqu'on est sur que les tags sont uniformés en minuscule
373
			// TODO: remove LOWER() lorsqu'on est sur que les tags sont uniformés en minuscule
-
 
374
			// i_mots_cles_texte provient de la VIEW v_del_image
-
 
375
			if(isset($p['masque.tag']['AND'])) {
-
 
376
                /* Lorsque nous interprêtons la chaîne provenant du masque général (cf: buildTagsAST($p['masque'], 'OR', ' ') dans sqlAddMasqueConstraint()),
-
 
377
                   nous sommes splittés par espace. Cependant, assurons que si une virgule à été saisie, nous n'aurons pas le motif
-
 
378
                   " AND CONCAT(mots_cles_texte, i_mots_cles_texte) REGEXP ',' " dans notre requête.
-
 
379
                   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 */
-
 
380
				$subwhere = array();
-
 
381
				foreach($p['masque.tag']['AND'] as $tag) {
-
 
382
                    if(trim($tag) == ',') continue;
-
 
383
 
-
 
384
					$subwhere[] = sprintf(
369
			$req['where'][] = sprintf('LOWER(CONCAT(%s)) REGEXP %s',
385
						'LOWER(CONCAT(%s)) REGEXP %s',
-
 
386
						self::sqlAddIfNullPourConcat(array('vdi.mots_cles_texte', 'vdi.i_mots_cles_texte')),
-
 
387
						$db->proteger(strtolower($tag)));
-
 
388
				}
-
 
389
				$req['where'][] = '(' . implode(' AND ', $subwhere) . ')';
-
 
390
			}
-
 
391
			else {
-
 
392
				$req['where'][] = sprintf(
-
 
393
					'LOWER(CONCAT(%s)) REGEXP %s',
370
									  self::sqlAddIfNullPourConcat(array('vdi.mots_cles_texte', 'vdi.i_mots_cles_texte')),
394
					self::sqlAddIfNullPourConcat(array('vdi.mots_cles_texte', 'vdi.i_mots_cles_texte')),
371
									  $db->proteger(strtolower($p['masque.tag'])));
395
					$db->proteger(strtolower(implode('|', $p['masque.tag']['OR']))));
-
 
396
			}
372
		}
397
		}
Line 373... Line 398...
373
 
398
 
374
		if(!empty($p['masque.type'])) {
399
		if(!empty($p['masque.type'])) {
375
			self::addTypeConstraints($p['masque.type'], $db, $req, $c);
400
			self::addTypeConstraints($p['masque.type'], $db, $req, $c);
Line 390... Line 415...
390
							   'masque.famille' => $p['masque'],
415
			'masque.famille' => $p['masque'],
391
							   'masque.date' => $p['masque'],
416
			'masque.date' => $p['masque'],
392
							   'masque.genre' => $p['masque'],
417
			'masque.genre' => $p['masque'],
393
							   /* milieu: TODO ? */ );
418
			/* milieu: TODO ? */ );
394
			$or_masque = self::requestFilterParams($or_params, array_keys($or_params), $c);
419
			$or_masque = self::requestFilterParams($or_params, array_keys($or_params), $c);
-
 
420
			$or_masque['masque.tag'] = ListeImages2::buildTagsAST($p['masque'], 'OR', ' ');
395
			// $or_req = array('select' => array(), 'join' => array(), 'where' => array(), 'groupby' => array(), 'having' => array());
421
			// $or_req = array('select' => array(), 'join' => array(), 'where' => array(), 'groupby' => array(), 'having' => array());
396
			$or_req = array('join' => array(), 'where' => array());
422
			$or_req = array('join' => array(), 'where' => array());
397
			self::sqlAddConstraint($or_masque, $db, $or_req);
423
			self::sqlAddConstraint($or_masque, $db, $or_req);
Line 398... Line 424...
398
 
424