29,6 → 29,7 |
private $parametres = array(); |
private $protocoles = array(); |
|
private $idsImagesOrdonnees = array(); |
private $resultats = array(); |
private $propositions = array(); |
private $votes = array(); |
56,6 → 57,7 |
$this->verifierParametres(); |
|
// Lancement du service |
$this->idsImagesOrdonnees = $this->getIdsImages(); |
$infos = $this->chargerInfos(); |
$this->modifierEnteteTotal(); |
if ($infos) { |
101,28 → 103,27 |
} |
} |
|
private function chargerInfos() { |
private function getIdsImages() { |
$whereClause = $this->getClauseWhere(); |
$depart = $this->navigation->getDepart(); |
$limite = $this->navigation->getLimite(); |
|
$requete = 'SELECT SQL_CALC_FOUND_ROWS di.id_observation AS id_observation, nom_referentiel, nom_ret, '. |
'nom_ret_nn, nt, famille, ce_zone_geo, zone_geo, lieudit, station, milieu, date_observation, '. |
'di.mots_cles_texte AS mots_cles_texte, di.commentaire AS commentaire, '. |
'di.i_mots_cles_texte AS mots_cles_texte_image, date_transmission, di.id_image AS id_image, '. |
'di.ce_utilisateur AS ce_utilisateur, prenom, nom, courriel, di.nom_utilisateur, di.prenom_utilisateur, '. |
'di.courriel_utilisateur, nom_original, ce_protocole, moyenne, nb_votes, nb_tags '. |
'FROM v_del_image AS di '. |
' LEFT JOIN del_utilisateur AS du '. |
' ON du.id_utilisateur = IF(LENGTH(di.ce_utilisateur) > 5, 0, di.ce_utilisateur) '. |
$requete = 'SELECT SQL_CALC_FOUND_ROWS di.id_image '. |
'FROM del_image AS di '. |
' LEFT JOIN del_image_stat AS ds ON (di.id_image = ds.ce_image) '. |
"$whereClause ". |
'GROUP BY id_image '. |
'ORDER BY moyenne '. |
'ORDER BY moyenne DESC '. |
"LIMIT $depart, $limite ". |
' -- '.__FILE__.' : '.__LINE__; |
// TODO : optimisation voir http://www.tela-botanica.org/wikini/DevInformatiques/wakka.php?wiki=AppliDelOptmisationVues |
return $this->bdd->recupererTous($requete); |
//Debug::printr($requete); |
$resultats = $this->bdd->recupererTous($requete); |
$idImgs = array(); |
if ($resultats !== false ) { |
foreach ($resultats as $resultat) { |
$idImgs[] = $resultat['id_image']; |
} |
} |
return $idImgs; |
} |
|
private function getClauseWhere() { |
138,6 → 139,25 |
return (count($where) > 0) ? 'WHERE '.implode(' AND ', $where).' ' : ''; |
} |
|
private function chargerInfos() { |
$idImgsConcat = implode(',', $this->idsImagesOrdonnees); |
|
$requete = 'SELECT SQL_CALC_FOUND_ROWS '. |
'di.id_image, di.mots_cles_texte AS mots_cles_texte_image, '. |
'do.id_observation, nom_referentiel, nom_ret, '. |
'nom_ret_nn, nt, famille, ce_zone_geo, zone_geo, date_observation, '. |
'do.ce_utilisateur, do.nom_utilisateur, do.prenom_utilisateur, '. |
'du.prenom, du.nom '. |
'FROM del_image AS di '. |
' INNER JOIN del_observation AS do ON (di.ce_observation = do.id_observation) '. |
' LEFT JOIN del_utilisateur AS du ON (di.ce_utilisateur = du.id_utilisateur) '. |
' LEFT JOIN del_image_stat AS ds ON (di.id_image = ds.ce_image) '. |
"WHERE di.id_image IN ($idImgsConcat) ". |
'ORDER BY moyenne DESC '. |
' -- '.__FILE__.' : '.__LINE__; |
return $this->bdd->recupererTous($requete); |
} |
|
private function modifierEnteteTotal() { |
$requete = 'SELECT FOUND_ROWS() AS nbre -- '.__FILE__.' : '.__LINE__; |
$compte = $this->bdd->recuperer($requete); |
150,6 → 170,7 |
* @param $infos les infos sur les images et observations |
* */ |
private function traiterResultats($infos) { |
//Debug::printr($infos); |
foreach ($infos as $info) { |
$idImage = $info['id_image']; |
$index = $this->formaterIndexResultat($info); |