Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1311 → Rev 1312

/trunk/services/modules/0.1/images/ListeImages.php
39,7 → 39,43
$this->bdd = $this->gestionBdd->getBdd();
}
/**
* RequeteSansParametres
*
* permet de vérifier qu'il n'y a aucun paramètre dans la requete, excepté les informations de start et limite,
* pour ajuster la requête pour un gain de temps
* @param array $ressources les ressources telles qu'elles sont passées au script
* @param array $parametres les paramètres tels qu'il sont passés au script
* */
public function requeteSansParametres($ressources, $parametres) {
$estSansParametres = true;
if (sizeof($ressources) > 0) {
$estSansParametres = false;
}
if (sizeof($parametres) > 2) {
// s'il y a plus de 2 paramètres, on est forcément dans le cas où on a demandé des paramètres autre que la navigation
$estSansParametres = false;
} else {
if (sizeof($parametres) == 1) {
if (!(isset($parametres['navigation.depart']) || isset($parametres['navigation.limite']))) {
// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
$estSansParametres = false;
}
} elseif (sizeof($parametres) == 2) {
// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
if (!(isset($parametres['navigation.depart']) && isset($parametres['navigation.limite']))) {
$estSansParametres = false;
}
}
}
return $estSansParametres;
}
/**
* Méthode principale de la classe.
* Lance la récupération des images dans la base et les place dans un objet ResultatService
* pour l'afficher.
47,6 → 83,7
* @param array $parametres les paramètres situés après le ? dans l'url
* */
public function consulter($ressources, $parametres) {
$this->initialiserRessourcesEtParametres($ressources, $parametres);
// Gestion des configuration du script
56,17 → 93,33
$this->verifierParametresTri();
$this->initialiserTri();
// Lancement du service
$liaisons = $this->chargerLiaisons();
$total = $this->compterImages();
$this->navigation->setTotal($total);
$images = $this->chargerImage($liaisons);
$images = $this->chargerVotes($images);
// Mettre en forme le résultat et l'envoyer pour affichage
$resultat = new ResultatService();
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
return $resultat;
if ($this->requeteSansParametres($ressources, $parametres)) {
// Lancement du service
$liaisons = $this->chargerLiaisonsSimple();
$images = $this->chargerImage($liaisons);
$images = $this->chargerVotes($images);
// Mettre en forme le résultat et l'envoyer pour affichage
$resultat = new ResultatService();
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
return $resultat;
} else {
// Lancement du service
$liaisons = $this->chargerLiaisons();
$total = $this->compterImages();
$this->navigation->setTotal($total);
$images = $this->chargerImage($liaisons);
$images = $this->chargerVotes($images);
// Mettre en forme le résultat et l'envoyer pour affichage
$resultat = new ResultatService();
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
return $resultat;
}
}
private function initialiserRessourcesEtParametres($ressources, $parametres) {
438,6 → 491,55
return $this->bdd->recupererTous($requeteLiaisons);
}
/**
* Chargement depuis la bdd de toutes les liaisons entre images et observations
* */
private function chargerLiaisonsSimple() {
// Charger les obs images / images
// récupérer les ids
// récupérer les observations
 
$requeteImages = 'SELECT SQL_CALC_FOUND_ROWS *, di.mots_cles_texte as mots_cles_texte_image FROM del_obs_image doi '.
'INNER JOIN del_image di ON doi.id_image = di.id_image '.
'ORDER BY id_observation DESC'.
$this->gestionBdd->getLimitSql();
$liaisons = $this->bdd->recupererTous($requeteImages);
$total = $this->compterImages();
$this->navigation->setTotal($total);
$idsObservations = array();
foreach ($liaisons as $image) {
$idObs = $image['id_observation'];
$idsObservations[$idObs] = $idObs;
}
$requeteObservations = 'SELECT * FROM del_observation dob '.
'LEFT JOIN del_utilisateur du ON dob.ce_utilisateur = du.id_utilisateur '.
'WHERE id_observation IN ('.implode(',', $idsObservations).')';
$resultatsObservations = $this->bdd->recupererTous($requeteObservations);
$observations = array();
foreach ($resultatsObservations as $id => $observation) {
$idObs = $observation['id_observation'];
$observations[$idObs] = $observation;
}
foreach ($liaisons as $id => $liaison) {
$idObs = $liaison['id_observation'];
$observation = $observations[$idObs];
foreach ($observation as $cle => $valeur) {
$liaisons[$id][$cle] = $valeur;
}
}
return $liaisons;
}
private function assemblercomptageOccurencesMotsClesCel() {
$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
$tabMotsClesAffiches = explode(',',$chaineMotsClesAffiches);
497,7 → 599,6
$liaison['prenom'] = $liaison['prenom_utilisateur'];
$liaison['nom'] = $liaison['nom_utilisateur'];
}
// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
$this->imageIds[] = $idImage;
$index = $liaison['id_image'].'-'.$liaison['id_observation'];
556,7 → 657,6
* */
private function formaterObservation($liaison) {
$observation = array();
foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
$observation[$nomFinal] = $liaison[$nomOriginal];
}