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]; |
} |