Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1450 → Rev 1451

/trunk/services/modules/0.1/images/ListeImages2.php
47,7 → 47,7
* (http://www.mysqlperformanceblog.com/2007/04/06/using-delayed-join-to-optimize-count-and-limit-queries/)
* - éviter de dépendre d'une jointure systématique sur `cel_obs`, uniquement pour `(date_)transmission
* (cf VIEW del_image)
* - réorganiser les méthodes statiques parmis Observation, ListeObservations2 et ListImages2
* - réorganiser les méthodes statiques parmis Observation, ListeObservations et ListImages2
* - *peut-être*: passer requestFilterParams() en méthode de classe
*
*
65,7 → 65,7
*
*/
 
require_once(dirname(__FILE__) . '/../observations/ListeObservations2.php');
require_once(dirname(__FILE__) . '/../observations/ListeObservations.php');
require_once(dirname(__FILE__) . '/../observations/Observation.php');
restore_error_handler();
restore_exception_handler();
83,7 → 83,7
 
static $tri_possible = array('date_transmission', 'date_observation', 'votes', 'tags');
 
// en plus de ceux dans ListeObservations2
// en plus de ceux dans ListeObservations
static $parametres_autorises = array('protocole', 'masque.tag_cel', 'masque.tag_pictoflora', 'masque.milieu');
 
static $default_params = array('navigation.depart' => 0, 'navigation.limite' => 10,
151,14 → 151,14
// ($parametres_autorises) sauf... masque.type qui fait des modif' de WHERE sur les mots-clefs.
// Évitons ce genre de chose pour PictoFlora et les risques de conflits avec masque.tag
// même si ceux-ci sont improbables (pas d'<input> pour cela).
$params_ip = ListeObservations2::requestFilterParams($parametres,
array_diff(ListeObservations2::$parametres_autorises,
$params_ip = ListeObservations::requestFilterParams($parametres,
array_diff(ListeObservations::$parametres_autorises,
array('masque.type')),
$this->conteneur);
 
// notre propre filtrage sur l'INPUT
$params_pf = self::requestFilterParams($parametres,
array_merge(ListeObservations2::$parametres_autorises,
array_merge(ListeObservations::$parametres_autorises,
self::$parametres_autorises));
 
/* filtrage des tags + sémantique des valeurs multiples:
167,7 → 167,7
$params_pf['masque.tag_cel'] = self::buildTagsAST(@$parametres['masque.tag_cel'], 'OR', ',');
$params_pf['masque.tag_pictoflora'] = self::buildTagsAST(@$parametres['masque.tag_pictoflora'], 'OR', ',');
 
$params = array_merge(ListeObservations2::$default_params, // paramètre par défaut Identiplante
$params = array_merge(ListeObservations::$default_params, // paramètre par défaut Identiplante
self::$default_params, // paramètres par défaut PictoFlora
$params_ip, // les paramètres passés, traités par Identiplante
$params_pf); // les paramètres passés, traités par PictoFlora
176,8 → 176,8
/* $this->conteneur->setParametre('url_images', sprintf($this->conteneur->getParametre('url_images'),
"%09d", $params['format']));*/
 
// création des contraintes (génériques, de ListeObservations2)
ListeObservations2::sqlAddConstraint($params, $db, $req, $this->conteneur);
// création des contraintes (génériques, de ListeObservations)
ListeObservations::sqlAddConstraint($params, $db, $req, $this->conteneur);
// création des contraintes spécifiques (sur les tags essentiellement)
self::sqlAddConstraint($params, $db, $req, $this->conteneur);
// création des contraintes spécifiques impliquées par le masque général
186,13 → 186,13
self::sqlOrderBy($params, $db, $req);
 
// 1) grunt-work: *la* requête de récupération des id valides (+ SQL_CALC_FOUND_ROWS)
// $idobs_tab = ListeObservations2::getIdObs($params, $req, $db);
// $idobs_tab = ListeObservations::getIdObs($params, $req, $db);
$idobs_tab = self::getIdImages($params, $req, $db);
 
// Ce n'est pas la peine de continuer s'il n'y a pas eu de résultats dans la table del_obs_images
if(!$idobs_tab) {
$resultat = new ResultatService();
$resultat->corps = array('entete' => ListeObservations2::makeJSONHeader(0, $params, Config::get('url_service')),
$resultat->corps = array('entete' => ListeObservations::makeJSONHeader(0, $params, Config::get('url_service')),
'resultats' => array());
return $resultat;
/*
216,7 → 216,7
$images[$i] = $o->consulter(array($i), array('justthrow' => 1));
}
*/
list($images, $images_keyed_by_id_image) = ListeObservations2::reformateImagesDoubleIndex(
list($images, $images_keyed_by_id_image) = ListeObservations::reformateImagesDoubleIndex(
$liaisons,
$this->conteneur->getParametre('url_images'),
$params['format']);
237,7 → 237,7
$params_header = array_merge($params, array_filter(array('masque.tag_cel' => @$parametres['masque.tag_cel'],
'masque.tag_pictoflora' => @$parametres['masque.tag_pictoflora'])));
$resultat = new ResultatService();
$resultat->corps = array('entete' => ListeObservations2::makeJSONHeader($total, $params_header, Config::get('url_service')),
$resultat->corps = array('entete' => ListeObservations::makeJSONHeader($total, $params_header, Config::get('url_service')),
'resultats' => $images);
return $resultat;
}
292,7 → 292,7
*
*/
static function sqlAddConstraint($p, $db, &$req, Conteneur $c = NULL) {
// TODO implement dans ListeObservations2 ?
// TODO implement dans ListeObservations ?
if(!empty($p['masque.milieu'])) {
$req['where'][] = 'vdi.milieu LIKE '.$db->proteger('%' . $p['masque.milieu'].'%');
}
427,7 → 427,7
2) les tags sont traités différemment pour conserver la compatibilité avec l'utilisation historique:
Tous les mots-clefs doivent matcher et sont séparés par des espaces
(dit autrement, str_replace(" ", ".*", $mots-clefs-requête) =~ $mots-clefs-mysql)
Pour plus d'information: ListeObservations2::sqlAddMasqueConstraint() */
Pour plus d'information: ListeObservations::sqlAddMasqueConstraint() */
static function sqlAddMasqueConstraint($p, $db, &$req, Conteneur $c = NULL) {
if(!empty($p['masque'])) {
$or_params = array('masque.auteur' => $p['masque'],
451,7 → 451,7
'ordre' => $p['ordre']);
 
$or_masque = array_merge(
ListeObservations2::requestFilterParams($or_params, NULL, $c /* pour masque.departement */),
ListeObservations::requestFilterParams($or_params, NULL, $c /* pour masque.departement */),
self::requestFilterParams($or_params));
 
/* Lorsqu'on utilise le masque général pour chercher des tags, ils sont
462,7 → 462,7
 
// pas de select, groupby & co ici: uniquement 'join' et 'where'
$or_req = array('join' => array(), 'where' => array());
ListeObservations2::sqlAddConstraint($or_masque, $db, $or_req);
ListeObservations::sqlAddConstraint($or_masque, $db, $or_req);
self::sqlAddConstraint($or_masque, $db, $or_req);
 
if($or_req['where']) {
473,7 → 473,7
}
}
 
// complete & override ListeObservations2::requestFilterParams() (même usage)
// complete & override ListeObservations::requestFilterParams() (même usage)
static function requestFilterParams(Array $params, $parametres_autorises = NULL) {
if($parametres_autorises) { // filtrage de toute clef inconnue
$params = array_intersect_key($params, array_flip($parametres_autorises));
480,8 → 480,8
}
 
$p = array();
$p['tri'] = ListeObservations2::unsetIfInvalid($params, 'tri', self::$tri_possible);
$p['format'] = ListeObservations2::unsetIfInvalid($params, 'format', self::$format_image_possible);
$p['tri'] = ListeObservations::unsetIfInvalid($params, 'tri', self::$tri_possible);
$p['format'] = ListeObservations::unsetIfInvalid($params, 'format', self::$format_image_possible);
 
// "milieu" inutile pour IdentiPlantes ?
if(isset($params['masque.milieu'])) $p['masque.milieu'] = trim($params['masque.milieu']);