93,7 → 93,7 |
// En fonction des paramètres de recherche, on n'effectue |
// pas la même requête, pour optimiser les jointures et les |
// rapidités d'éxécution. |
$type = $this->getTypeRequete($parametres); |
$type = $this->getTypeRequete($ressources, $parametres); |
|
switch ($type) { |
case 'obs' : |
105,8 → 105,11 |
case 'obs-images' : |
$liaisons = $this->chargerLiaisons(); |
break; |
case 'id': |
$liaisons = $this->chargerLiaisonsParId(); |
break; |
default : //case simple ! |
$liaisons = $this->chargerLiaisonsSimple(); |
$liaisons = $this->chargerLiaisonsSimple(); |
} |
|
$images = array(); |
133,7 → 136,7 |
* Charger la clause WHERE en fonction des paramètres de masque |
* */ |
private function chargerClauseWhere() { |
|
|
$where = array(); |
$tableauMasque = $this->masque->getMasque(); |
if (!empty($tableauMasque)) { |
428,7 → 431,7 |
|
$conditionsObs[] = implode(' OR ', $conditionsLibre); |
} |
|
|
// referentiel |
if (isset($masques['masque.referentiel'])) { |
$ref = $masques['masque.referentiel']; |
613,9 → 616,39 |
|
return $liaisons; |
} |
|
|
|
/** |
* Charge les liaisons pour une seule image dont l'id est spécifié dans l'URL |
* Copie de chargerLiaisonsObs avec critère sur l'id_image uniquement |
* Supporte seulement le masque sur referentiel |
*/ |
private function chargerLiaisonsParId() { |
|
$idImage = $this->ressources[0]; |
|
// Récupérer les liaisons |
$requeteObs = ' SELECT SQL_CALC_FOUND_ROWS dob.id_observation as id_observation, dob.nom_referentiel, nom_sel, nom_sel_nn, nt, famille, ce_zone_geo, zone_geo, lieudit, station, milieu, '. |
' date_observation, dob.mots_cles_texte as mots_cles_texte, dob.commentaire as commentaire, di.mots_cles_texte as mots_cles_texte_image , date_transmission, '. |
' doi.id_image as id_image, di.ce_utilisateur as ce_utilisateur, prenom, nom, courriel, dob.prenom_utilisateur, dob.nom_utilisateur, dob.courriel_utilisateur, nom_original '. |
'FROM del_observation dob '. |
' INNER JOIN del_obs_image doi ON dob.id_observation = doi.id_observation '. |
' INNER JOIN del_image di ON doi.id_image = di.id_image '. |
' LEFT JOIN del_utilisateur du ON dob.ce_utilisateur = du.id_utilisateur '. |
' WHERE doi.id_image = '.intval($idImage); |
|
if (isset($this->parametres['masque.referentiel'])) { |
$requeteObs .= " AND dob.nom_referentiel LIKE '" . $this->parametres['masque.referentiel'] . "%'"; |
} |
|
$observations = $this->bdd->recupererTous($requeteObs . ' -- ' . __FILE__ . ':' . __LINE__); |
|
$total = $this->getFoundRows(); |
$this->navigation->setTotal($total); |
|
return $observations; |
} |
|
/** |
* Chargement depuis la bdd de toutes les liaisons entre images et observations |
* Méthode appelée uniquement lorsque les paramètres concernent une observation |
* */ |
1091,9 → 1124,13 |
* Obtenir le type de requête à exécuter en fonction des paramètres de recherche |
* @param $parametres les paramètres de l'application |
* */ |
private function getTypeRequete($parametres) { |
private function getTypeRequete($ressources, $parametres) { |
|
|
// une image par id |
if ((count($ressources) == 1) && is_numeric($ressources[0])) { |
return 'id'; |
} |
|
$typeRequete = 'simple'; |
|
// Dans ce cas précis, les informations concernant le depart, la limite ou l'ordre ne |