Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1873 → Rev 1874

/trunk/services/modules/0.1/determinations/ListeImagesDeterminationsProbables.php
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);