399,9 → 399,55 |
$contenu = ''; |
if (isset($_GET['debut'])) $this->start = $_GET['debut']; |
if (isset($_GET['limite'])) $this->limite = $_GET['limite']; |
|
if($this->parametresSontDemandes()) { |
$requete = $this->creerRequeteAvecParametres(); |
} else { |
$requete = $this->creerRequeteSansParametres(); |
} |
$elements = $this->executerRequete($requete); |
|
// Création du contenu |
if ($elements != false && count($elements) > 0) { |
$contenu = $this->executerService($elements); |
} else { |
$this->messages[] = "Aucune image disponible."; |
} |
|
return $contenu; |
} |
|
private function parametresSontDemandes() { |
$criteres = $this->traiterCriteresMultiples($_GET) ; |
return (isset($_GET['recherche']) && $_GET['recherche'] != '') || !empty($criteres); |
} |
|
private function creerRequeteSansParametres() { |
// Première sous requete pour que le limite se fasse d'abord sur les images |
// et pas la jointure de toutes les tables |
$sous_requete_limitative = 'SELECT * FROM cel_images c '. |
' WHERE id_image '. |
' IN (SELECT id_image FROM cel_obs_images a '. |
(($this->etreFluxAdmin()) ? '' : 'INNER JOIN cel_obs b ON b.id_observation = a.id_observation AND b.transmission = 1 '). |
') '; |
$sous_requete_limitative .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby : 'c.date_creation DESC').' '. |
"LIMIT $this->start,$this->limit "; |
|
// Construction de la requête |
$requete = 'SELECT *, b.mots_cles_texte as mots_cles_texte_obs, c.mots_cles_texte as mots_cles_texte_images, '. |
' b.commentaire as commentaire_obs, c.commentaire as commentaire_img '. |
'FROM ('.$sous_requete_limitative.') as c '. |
' INNER JOIN cel_obs_images AS a '. |
' ON (a.id_image = c.id_image) '. |
' INNER JOIN cel_obs AS b '. |
' ON (a.id_observation = b.id_observation) AND b.ce_utilisateur = c.ce_utilisateur '; |
|
return $requete; |
} |
|
private function creerRequeteAvecParametres() { |
// Construction de la requête |
$requete = 'SELECT *, b.mots_cles_texte as mots_cles_texte_obs, c.mots_cles_texte as mots_cles_texte_images, '. |
' b.commentaire as commentaire_obs, c.commentaire as commentaire_img '. |
'FROM cel_obs_images AS a '. |
' INNER JOIN cel_obs AS b '. |
425,17 → 471,8 |
$requete = rtrim($requete, 'AND '); |
$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby : |
'c.date_creation DESC').' '."LIMIT $this->start,$this->limit "; |
|
$elements = $this->executerRequete($requete); |
|
// Création du contenu |
if ($elements != false && count($elements) > 0) { |
$contenu = $this->executerService($elements); |
} else { |
$this->messages[] = "Aucune image disponible."; |
} |
|
return $contenu; |
|
return $requete; |
} |
|
private function creerSousRequeteRechercheParCriteres($criteres) { |