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,6 → 105,9 |
case 'obs-images' : |
$liaisons = $this->chargerLiaisons(); |
break; |
case 'id': |
$liaisons = $this->chargerLiaisonsParId(); |
break; |
default : //case simple ! |
$liaisons = $this->chargerLiaisonsSimple(); |
} |
614,7 → 617,37 |
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,8 → 1124,12 |
* 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'; |
|