Subversion Repositories eFlore/Applications.del

Rev

Rev 1793 | Rev 1881 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1793 Rev 1794
Line 3... Line 3...
3
 * Le web service plantnet récupère toutes les image de la table v_del_image
3
 * Le web service plantnet récupère toutes les image de la table v_del_image
4
 * ordonées par date de modification
4
 * ordonées par date de modification
5
 * Les images sont regroupées en observations
5
 * Les images sont regroupées en observations
6
 * Les tags, les votes et les propositions de determinations sont intégrés à l'observation
6
 * Les tags, les votes et les propositions de determinations sont intégrés à l'observation
7
 *
7
 *
8
 *
-
 
9
 * @category	php 5.2
8
 * @category DEL
-
 
9
 * @package Services
10
 * @author	Samuel Dufour-Kowalski <samuel.dufour@cirad.fr>
10
 * @subpackage Plantnet
-
 
11
 * @version 0.1
11
 * @author	Mathias Chouet <mathias@tela-botanica.org>
12
 * @author Mathias CHOUET <mathias@tela-botanica.org>
-
 
13
 * @author Samuel DUFOUR-KOWALSKI <samuel.dufour@cirad.fr>
12
 * @author	Raphaël Droz <raphael@tela-botanica.org>
14
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @author	Aurélien Peronnet <aurelien@tela-botanica.org>
15
 * @author Aurelien PERONNET <aurelien@tela-botanica.org>
14
 
-
 
15
 
-
 
16
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
16
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
17
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
17
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
18
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
18
 * @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
19
 */
19
 */
Line 20... Line 20...
20
 
20
 
Line 21... Line 21...
21
class Changements {
21
class Changements {
22
 
22
 
23
	private $indexImagesIds = array();
23
	private $indexImagesIds = array();
24
	private $conteneur;
-
 
25
	private $navigation;
24
	private $conteneur;
26
	private $masque;
25
	private $navigation;
27
	private $bdd;
26
	private $bdd;
28
	private $parametres = array();
27
	private $parametres = array();
Line 29... Line 28...
29
	private $ressources = array();
28
	private $ressources = array();
30
	private $date_defaut = '1900-01-01';
-
 
31
 
29
	private $date_defaut = '1900-01-01';
32
	public function __construct(Conteneur $conteneur = null) {
30
 
33
 
31
	public function __construct(Conteneur $conteneur = null) {
Line 34... Line 32...
34
          /* restore_exception_handler(); */
32
		/* restore_exception_handler(); */
35
          /* restore_error_handler(); */
33
		/* restore_error_handler(); */
36
          /* ini_set("display_errors", "1"); */
34
		/* ini_set("display_errors", "1"); */
37
 
-
 
38
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
35
 
39
		$this->conteneur->chargerConfiguration('config_plantnet.ini');
36
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
Line 40... Line 37...
40
		$this->navigation = $conteneur->getNavigation();
37
		$this->conteneur->chargerConfiguration('config_plantnet.ini');
41
		$this->masque = $conteneur->getMasque();
38
		$this->navigation = $conteneur->getNavigation();
Line 48... Line 45...
48
	 * pour l'afficher.
45
	 * pour l'afficher.
49
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
46
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
50
	 * @param array $parametres les paramètres situés après le ? dans l'url
47
	 * @param array $parametres les paramètres situés après le ? dans l'url
51
	 * */
48
	 * */
52
	public function consulter($ressources, $parametres) {
49
	public function consulter($ressources, $parametres) {
53
 
-
 
54
 
-
 
55
		// initialiserRessourcesEtParametres()
50
		// initialiserRessourcesEtParametres()
56
		$this->ressources = $ressources;
51
		$this->ressources = $ressources;
57
		$this->parametres = $parametres;
52
		$this->parametres = $parametres;
Line 58... Line -...
58
 
-
 
59
 
53
 
60
		if(!isset($parametres['date'])) {
54
		if (!isset($parametres['date'])) {
61
			$this->parametres['date'] = $this->date_defaut;
55
			$this->parametres['date'] = $this->date_defaut;
Line 62... Line -...
62
		}
-
 
63
 
56
		}
64
 
57
 
65
		// Lancement du service
58
		// Lancement du service
66
		$liaisons = $this->chargerLiaisons();
59
		$liaisons = $this->chargerLiaisons();
Line 67... Line 60...
67
                $images = array();
60
		$images = array();
68
		$total = 0;
61
		$total = 0;
69
 
62
 
Line 70... Line 63...
70
		if($liaisons) {
63
		if ($liaisons) {
71
                  $compte = $this->bdd->recuperer('SELECT FOUND_ROWS() AS nbre');
64
			$compte = $this->bdd->recuperer('SELECT FOUND_ROWS() AS nbre');
Line 72... Line 65...
72
                  $total = (int) $compte['nbre'];
65
			$total = (int) $compte['nbre'];
73
 
66
 
74
                  $imgdata = $this->recupererDonneeObs($liaisons);
67
			$imgdata = $this->recupererDonneeObs($liaisons);
Line 75... Line 68...
75
                  $obs = $this->regrouperObs($liaisons, $imgdata);
68
			$obs = $this->regrouperObs($liaisons, $imgdata);
Line 76... Line 69...
76
 
69
 
77
                  $obs = $this->chargerPropositionPlusProbable($obs);
70
			$obs = $this->chargerPropositionPlusProbable($obs);
78
                  $obs = $this->orderArray($obs);
71
			$obs = $this->orderArray($obs);
79
		}
-
 
Line 80... Line 72...
80
 
72
		}
81
		$this->navigation->setTotal($total);
73
 
Line 82... Line 74...
82
 
74
		$this->navigation->setTotal($total);
-
 
75
 
Line 83... Line 76...
83
		// Mettre en forme le résultat et l'envoyer pour affichage
76
		// Mettre en forme le résultat et l'envoyer pour affichage
-
 
77
		$resultat = new ResultatService();
-
 
78
		$resultat->corps = array('entete' => $this->navigation->getEntete(), 'resultats' => $obs);
Line 84... Line 79...
84
		$resultat = new ResultatService();
79
 
85
		//$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
80
		return $resultat;
86
                $resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $obs);
81
	}
Line 87... Line 82...
87
 
82
 
88
		return $resultat;
-
 
89
	}
83
 
-
 
84
	private function orderArray(&$obs) {
Line 90... Line -...
90
 
-
 
91
 
-
 
92
        private function orderArray(&$obs) {
-
 
93
 
85
		$ret = array();
94
          $ret = array();
86
 
95
 
87
		foreach ($obs as $o) {
96
          foreach ($obs as $o) {
-
 
97
            $ret[] = $o;
-
 
98
          }
-
 
99
 
-
 
100
          function cmp($a, $b) {
-
 
101
            return ($a['date_changement'] < $b['date_changement']) ? 1 : -1;
-
 
102
          }
-
 
103
 
-
 
104
          usort($ret, 'cmp');
-
 
105
          return $ret;
-
 
106
        }
-
 
107
	/*-------------------------------------------------------------------------------
-
 
108
								CHARGEMENT DES IMAGES
-
 
109
	--------------------------------------------------------------------------------*/
-
 
110
	private function chargerLiaisons() {
-
 
111
 
-
 
112
          $date_debut = $this->parametres['date'];
-
 
113
          $date_debut = '\'' . $date_debut . '\'';
-
 
114
          $limite = @min(intval($this->parametres['navigation.limite']), 1000);
-
 
115
          $limite = $limite ? $limite : 10; // 0 => 10
-
 
116
          $depart = intval(@$this->parametres['navigation.depart']);
-
 
117
 
-
 
118
 
-
 
119
 
-
 
120
          $requete_sql =
-
 
121
            'select SQL_CALC_FOUND_ROWS vdi.id_observation, vdi.id_image, '.
-
 
122
 
-
 
123
            'GROUP_CONCAT(del_image_vote.valeur) as votes, GROUP_CONCAT(DISTINCT tag) as tags, '.
-
 
124
 
-
 
125
            'GREATEST('.
-
 
126
            'IFNULL(vdi.date_creation, \''.$this->date_defaut.'\'), '.
-
 
127
            'IFNULL(vdi.date_modification, \''.$this->date_defaut.'\'), '.
-
 
128
            'IFNULL(MAX(del_image_tag.date), \''.$this->date_defaut.'\'), '.
-
 
129
            'IFNULL(MAX(del_image_tag.date_modification), \''.$this->date_defaut.'\'), '.
-
 
130
            'IFNULL(MAX(del_image_vote.date), \''.$this->date_defaut.'\'), '.
-
 
131
            'IFNULL(MAX(del_commentaire.date), \''.$this->date_defaut.'\'), '.
-
 
132
            'IFNULL(MAX(del_commentaire_vote.date), \''.$this->date_defaut.'\')) as modif_date '.
-
 
133
 
-
 
134
            'from v_del_image as vdi '.
-
 
135
 
-
 
136
            'left join del_image_vote on del_image_vote.ce_image=id_image and del_image_vote.ce_protocole=3 '.
-
 
137
            'left join del_image_tag on del_image_tag.ce_image=id_image and del_image_tag.actif=1 '.
-
 
138
            'left join del_commentaire on del_commentaire.ce_observation=id_observation '.
-
 
139
            'left join del_commentaire_vote on del_commentaire_vote.ce_proposition=del_commentaire.id_commentaire '.
-
 
140
 
-
 
141
            'group by id_image, id_observation '.
-
 
142
 
-
 
143
            'having MAX(vdi.date_creation) >= '.$date_debut.' or '.
-
 
144
            '       MAX(vdi.date_modification) >= '.$date_debut.' or '.
-
 
145
            '       MAX(del_image_tag.date) >= '.$date_debut.' or '.
-
 
146
            '       MAX(del_image_tag.date_modification) >= '.$date_debut.' or '.
-
 
147
            '       MAX(del_image_vote.date) >= '.$date_debut.' or '.
-
 
Line -... Line 88...
-
 
88
			$ret[] = $o;
-
 
89
		}
-
 
90
 
-
 
91
		function cmp($a, $b) {
-
 
92
			return ($a['date_changement'] < $b['date_changement']) ? 1 : -1;
-
 
93
		}
-
 
94
 
-
 
95
		usort($ret, 'cmp');
-
 
96
		return $ret;
-
 
97
	}
-
 
98
 
-
 
99
	/*-------------------------------------------------------------------------------
-
 
100
								CHARGEMENT DES IMAGES
-
 
101
	--------------------------------------------------------------------------------*/
-
 
102
 
-
 
103
	private function chargerLiaisons() {
-
 
104
		$date_debut = $this->parametres['date'];
-
 
105
		$date_debut = '\'' . $date_debut . '\'';
-
 
106
		$limite = @min(intval($this->parametres['navigation.limite']), 1000);
-
 
107
		$limite = $limite ? $limite : 10; // 0 => 10
-
 
108
		$depart = intval(@$this->parametres['navigation.depart']);
-
 
109
 
-
 
110
		$requete_sql =
-
 
111
			'select SQL_CALC_FOUND_ROWS vdi.id_observation, vdi.id_image, '.
-
 
112
 
-
 
113
			'GROUP_CONCAT(del_image_vote.valeur) as votes, GROUP_CONCAT(DISTINCT tag) as tags, '.
-
 
114
 
-
 
115
			'GREATEST('.
-
 
116
			'IFNULL(vdi.date_creation, \''.$this->date_defaut.'\'), '.
-
 
117
			'IFNULL(vdi.date_modification, \''.$this->date_defaut.'\'), '.
-
 
118
			'IFNULL(MAX(del_image_tag.date), \''.$this->date_defaut.'\'), '.
-
 
119
			'IFNULL(MAX(del_image_tag.date_modification), \''.$this->date_defaut.'\'), '.
-
 
120
			'IFNULL(MAX(del_image_vote.date), \''.$this->date_defaut.'\'), '.
-
 
121
			'IFNULL(MAX(del_commentaire.date), \''.$this->date_defaut.'\'), '.
-
 
122
			'IFNULL(MAX(del_commentaire_vote.date), \''.$this->date_defaut.'\')) as modif_date '.
-
 
123
 
-
 
124
			'from v_del_image as vdi '.
-
 
125
 
-
 
126
			'left join del_image_vote on del_image_vote.ce_image=id_image and del_image_vote.ce_protocole=3 '.
-
 
127
			'left join del_image_tag on del_image_tag.ce_image=id_image and del_image_tag.actif=1 '.
-
 
128
			'left join del_commentaire on del_commentaire.ce_observation=id_observation '.
-
 
129
			'left join del_commentaire_vote on del_commentaire_vote.ce_proposition=del_commentaire.id_commentaire '.
-
 
130
 
-
 
131
			'group by id_image, id_observation '.
-
 
132
 
-
 
133
			'having MAX(vdi.date_creation) >= '.$date_debut.' or '.
-
 
134
			'       MAX(vdi.date_modification) >= '.$date_debut.' or '.
148
            '       MAX(del_commentaire.date) >= '.$date_debut.' or '.
135
			'       MAX(del_image_tag.date) >= '.$date_debut.' or '.
Line -... Line 136...
-
 
136
			'       MAX(del_image_tag.date_modification) >= '.$date_debut.' or '.
-
 
137
			'       MAX(del_image_vote.date) >= '.$date_debut.' or '.
-
 
138
			'       MAX(del_commentaire.date) >= '.$date_debut.' or '.
-
 
139
			'       MAX(del_commentaire_vote.date) >= '.$date_debut.' '.
-
 
140
			'order by modif_date DESC '.
-
 
141
			'limit '.$depart.', '.$limite.' -- '.__FILE__.':'.__LINE__;
-
 
142
 
-
 
143
		//echo $requete_sql; exit;
Line 149... Line -...
149
            '       MAX(del_commentaire_vote.date) >= '.$date_debut.' '.
-
 
150
            'order by modif_date DESC '.
-
 
151
            'limit '.$depart.', '.$limite.' -- '.__FILE__.':'.__LINE__;
-
 
152
 
-
 
153
          //echo $requete_sql; exit;
-
 
154
 
-
 
155
          return $this->bdd->recupererTous($requete_sql);
-
 
156
 
-
 
157
 
-
 
158
 
-
 
159
          // GROUP BY (très couteux) car multiples observations associées à une image
144
 
160
          // charlie est ici :-)
145
		return $this->bdd->recupererTous($requete_sql);
161
          // eg: 16150,16185,16245,16246,118995,129989
146
 
162
 
147
		// GROUP BY (très couteux) car multiples observations associées à une image
163
	}
148
		// charlie est ici :-)
164
 
149
		// eg: 16150,16185,16245,16246,118995,129989
165
 
150
	}
166
        // recupere les donnée associées (fait en 2 requetes pour optimiser)
151
 
167
        private function recupererDonneeObs(&$liaisons) {
152
	// recupere les donnée associées (fait en 2 requetes pour optimiser)
168
 
153
	private function recupererDonneeObs(&$liaisons) {
169
          // recuperer les ids
154
		// recuperer les ids
170
          $ids = array();
155
		$ids = array();
171
          foreach ($liaisons as $img) {
156
		foreach ($liaisons as $img) {
172
            $id = $img['id_image'];
157
			$id = $img['id_image'];
173
            $ids[] = $id;
158
			$ids[] = $id;
174
          }
159
		}
175
 
160
 
176
          // recuperer les donnees
161
		// recuperer les donnees
177
          $resultats = $this->bdd->recupererTous(sprintf(
162
		$resultats = $this->bdd->recupererTous(sprintf(
178
                  'SELECT  '.
163
			'SELECT  '.
179
                  'vdi.id_observation, vdi.id_image, '.
164
			'vdi.id_observation, vdi.id_image, '.
180
                  'vdi.nom_sel, '.
165
			'vdi.nom_sel, '.
181
                  'vdi.nom_referentiel, vdi.nom_ret, vdi.nom_ret_nn, vdi.nt, vdi.famille, '.
166
			'vdi.nom_referentiel, vdi.nom_ret, vdi.nom_ret_nn, vdi.nt, vdi.famille, '.
182
                  'vdi.zone_geo, vdi.latitude, vdi.longitude, '.
167
			'vdi.zone_geo, vdi.latitude, vdi.longitude, '.
183
                  'vdi.date_observation, vdi.date_creation, vdi.date_transmission, '.
168
			'vdi.date_observation, vdi.date_creation, vdi.date_transmission, '.
184
                  'vdi.mots_cles_texte as mots_cles_texte, '.
169
			'vdi.mots_cles_texte as mots_cles_texte, '.
Line 185... Line 170...
185
                  'vdi.i_mots_cles_texte as mots_cles_texte_image, '.
170
			'vdi.i_mots_cles_texte as mots_cles_texte_image, '.
186
 
171
 
187
                  'vdi.ce_utilisateur as ce_utilisateur, '.
172
			'vdi.ce_utilisateur as ce_utilisateur, '.
188
                  'vdi.prenom_utilisateur, vdi.courriel_utilisateur, vdi.nom_utilisateur, vdi.nom_original as nom_image '.
173
			'vdi.prenom_utilisateur, vdi.courriel_utilisateur, vdi.nom_utilisateur, vdi.nom_original as nom_image '.
189
 
174
 
190
                  'FROM v_del_image as vdi '.
-
 
191
                  'WHERE vdi.id_image IN (%s) '.
175
			'FROM v_del_image as vdi '.
192
                  '', implode(',', $ids)));
176
			'WHERE vdi.id_image IN (%s) '.
193
 
177
			'', implode(',', $ids)));
194
          // regroupe les données par id_image
178
 
195
          $img_data = array();
179
		// regroupe les données par id_image
196
          foreach ($resultats as $img) {
180
		$img_data = array();
197
            $id = $img['id_image'];
181
		foreach ($resultats as $img) {
198
            $img_data[$id] = $img;
182
			$id = $img['id_image'];
199
          }
183
			$img_data[$id] = $img;
200
          return $img_data;
184
		}
201
        }
185
		return $img_data;
202
 
186
	}
203
	/**
187
 
204
	* Retourner un tableau d'images formaté en fonction des liaisons trouvées
188
	/**
205
	* @param $liaisons les liaisons de la table del_obs_images
189
	* Retourner un tableau d'images formaté en fonction des liaisons trouvées
206
	* */
190
	* @param $liaisons les liaisons de la table del_obs_images
207
	private function regrouperObs(&$liaisons, &$imgdatas) {
191
	*/
208
 
192
	private function regrouperObs(&$liaisons, &$imgdatas) {
209
          // regroupe les observations
193
		// regroupe les observations
210
          $obs = array();
194
		$obs = array();
211
          foreach ($liaisons as $img) {
195
		foreach ($liaisons as $img) {
212
            $idobs = $img['id_observation'];
196
			$idobs = $img['id_observation'];
213
            $idimg = $img['id_image'];
197
			$idimg = $img['id_image'];
214
 
198
 
215
            $imgdata = $imgdatas[$idimg];
199
			$imgdata = $imgdatas[$idimg];
216
 
200
 
217
            if (!isset($obs[$idobs])) {
201
			if (!isset($obs[$idobs])) {
218
              $obs[$idobs] = array();
202
				$obs[$idobs] = array();
219
            }
203
			}
220
 
204
 
221
            $obs[$idobs]['id_observation'] = $idobs;
205
			$obs[$idobs]['id_observation'] = $idobs;
222
            $obs[$idobs]['auteur_id'] = $imgdata['ce_utilisateur'];
206
			$obs[$idobs]['auteur_id'] = $imgdata['ce_utilisateur'];
223
            $obs[$idobs]['auteur_prenom'] = $imgdata['prenom_utilisateur'];
207
			$obs[$idobs]['auteur_prenom'] = $imgdata['prenom_utilisateur'];
224
            $obs[$idobs]['auteur_nom'] = $imgdata['nom_utilisateur'];
208
			$obs[$idobs]['auteur_nom'] = $imgdata['nom_utilisateur'];
225
            $obs[$idobs]['auteur_courriel'] = $imgdata['courriel_utilisateur'];
209
			$obs[$idobs]['auteur_courriel'] = $imgdata['courriel_utilisateur'];
226
 
-
 
227
            $obs[$idobs]['mots_cles_obs_cel'] = $this->formaterMotsClesCel($imgdata['mots_cles_texte']);
210
 
228
 
211
			$obs[$idobs]['mots_cles_obs_cel'] = $this->formaterMotsClesCel($imgdata['mots_cles_texte']);
229
            $obs[$idobs]['date_observation'] = $imgdata['date_observation'];
212
 
230
            $obs[$idobs]['date_publication'] = $imgdata['date_transmission'];
213
			$obs[$idobs]['date_observation'] = $imgdata['date_observation'];
231
            $obs[$idobs]['date_creation'] = $imgdata['date_creation'];
214
			$obs[$idobs]['date_publication'] = $imgdata['date_transmission'];
232
            $obs[$idobs]['date_changement'] = $img['modif_date'];
215
			$obs[$idobs]['date_creation'] = $imgdata['date_creation'];
233
 
216
			$obs[$idobs]['date_changement'] = $img['modif_date'];
234
            $obs[$idobs]['nom_sel'] = $imgdata['nom_sel'];
217
 
235
            $obs[$idobs]['nom_referentiel'] = $imgdata['nom_referentiel'];
218
			$obs[$idobs]['nom_sel'] = $imgdata['nom_sel'];
236
            $obs[$idobs]['nom_ret'] = $imgdata['nom_ret'];
219
			$obs[$idobs]['nom_referentiel'] = $imgdata['nom_referentiel'];
237
            $obs[$idobs]['nn'] = $imgdata['nom_ret_nn'];
220
			$obs[$idobs]['nom_ret'] = $imgdata['nom_ret'];
238
            $obs[$idobs]['nt'] = $imgdata['nt'];
221
			$obs[$idobs]['nn'] = $imgdata['nom_ret_nn'];
239
            $obs[$idobs]['famille'] = $imgdata['famille'];
222
			$obs[$idobs]['nt'] = $imgdata['nt'];
240
 
223
			$obs[$idobs]['famille'] = $imgdata['famille'];
241
            $obs[$idobs]['zone_geo'] = $imgdata['zone_geo'];
224
 
242
            $obs[$idobs]['latitude'] = floatval($imgdata['latitude']);
-
 
243
            $obs[$idobs]['longitude'] = floatval($imgdata['longitude']);
-
 
244
 
225
			$obs[$idobs]['zone_geo'] = $imgdata['zone_geo'];
245
 
226
			$obs[$idobs]['latitude'] = floatval($imgdata['latitude']);
246
            if (!isset($obs[$idobs]['images'])) {
-
 
247
              $obs[$idobs]['images'] = array();
227
			$obs[$idobs]['longitude'] = floatval($imgdata['longitude']);
Line 248... Line 228...
248
            }
228
 
249
 
229
			if (!isset($obs[$idobs]['images'])) {
250
            $img_obj = array(
230
				$obs[$idobs]['images'] = array();
251
                             'id_image' => $img['id_image'],
231
			}
-
 
232
 
Line 252... Line -...
252
                             'nom_image' => $imgdata['nom_image'],
-
 
253
                             'url' => sprintf('http://api.tela-botanica.org/img:%09dO.jpg', $img['id_image']),
-
 
254
                             'votes' => array_map('intval', explode(',', $img['votes'])),
233
			$img_obj = array(
255
                             'tags' => explode(',', $img['tags']),
234
				'id_image' => $img['id_image'],
256
                             'mots_cles_img_cel' => $this->formaterMotsClesCel($imgdata['mots_cles_texte_image'])
235
				'nom_image' => $imgdata['nom_image'],
257
                             );
236
				'url' => sprintf('http://api.tela-botanica.org/img:%09dO.jpg', $img['id_image']),
258
            // push
237
				'votes' => array_map('intval', explode(',', $img['votes'])),
259
            $obs[$idobs]['images'][] = $img_obj;
238
				'tags' => explode(',', $img['tags']),
260
 
239
				'mots_cles_img_cel' => $this->formaterMotsClesCel($imgdata['mots_cles_texte_image'])
261
          }
-
 
262
 
240
				);
263
          return $obs;
241
			// push
264
 
242
			$obs[$idobs]['images'][] = $img_obj;
265
	}
243
		}
266
 
244
		return $obs;
267
	/**
245
	}
268
         * Charger les votes pour chaque image
246
 
269
         **/
247
	/**
270
	private function chargerPropositionPlusProbable(&$obs) {
248
	 * Charger les votes pour chaque image
271
 
249
	 */
272
          $obsIds = array_keys($obs);
250
	private function chargerPropositionPlusProbable(&$obs) {
273
 
251
		$obsIds = array_keys($obs);
274
          $resultats = $this->bdd->recupererTous(sprintf(
-
 
275
                  'SELECT ce_observation, id_commentaire, valeur, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, del_commentaire_vote.ce_utilisateur '.
-
 
276
                  'FROM del_commentaire_vote, del_commentaire '.
-
 
277
                  'WHERE ce_observation IN (%s) '.
-
 
278
                  'AND nom_sel IS NOT NULL '.
-
 
279
                  'AND del_commentaire.id_commentaire=del_commentaire_vote.ce_proposition '.
-
 
280
                  '', implode(',', $obsIds)));
-
 
281
 
-
 
282
 
252
 
283
          $votes = array(); // map ce_proposition -> score
-
 
284
 
-
 
285
          // calcul des votes
-
 
286
          // un vote identifié a un facteur de 3
-
 
287
          // additionne tous les vote par ce_proposition
-
 
288
          foreach($resultats as $vote) {
-
 
289
            if(!isset($votes[$vote['id_commentaire']])) {
-
 
Line -... Line 253...
-
 
253
		$resultats = $this->bdd->recupererTous(sprintf(
-
 
254
			'SELECT ce_observation, id_commentaire, valeur, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, del_commentaire_vote.ce_utilisateur '.
Line -... Line 255...
-
 
255
			'FROM del_commentaire_vote, del_commentaire '.
-
 
256
			'WHERE ce_observation IN (%s) '.
-
 
257
			'AND nom_sel IS NOT NULL '.
-
 
258
			'AND del_commentaire.id_commentaire=del_commentaire_vote.ce_proposition '.
-
 
259
			'', implode(',', $obsIds)));
-
 
260
 
-
 
261
		$votes = array(); // map ce_proposition -> score
-
 
262
 
-
 
263
		// calcul des votes
-
 
264
		// un vote identifié a un facteur de 3
290
              $votes[$vote['id_commentaire']] = 0;
265
		// additionne tous les vote par ce_proposition
291
            }
266
		foreach ($resultats as $vote) {
Line 292... Line -...
292
            $valeur = ($vote['valeur'] == 1) ? 1 : -1;
-
 
293
            $votes[$vote['id_commentaire']] += is_numeric($vote['ce_utilisateur']) ? 3 * $valeur : $valeur;
267
			if (!isset($votes[$vote['id_commentaire']])) {
294
          }
268
				$votes[$vote['id_commentaire']] = 0;
295
 
269
			}
-
 
270
			$valeur = ($vote['valeur'] == 1) ? 1 : -1;
296
          foreach($resultats as $vote) {
271
			$votes[$vote['id_commentaire']] += is_numeric($vote['ce_utilisateur']) ? 3 * $valeur : $valeur;
297
            $idobs = $vote['ce_observation'];
272
		}
298
 
273
 
299
            if(!isset($obs[$idobs]['determinations'])) {
274
		foreach ($resultats as $vote) {
300
              $obs[$idobs]['determinations'] = array();
275
			$idobs = $vote['ce_observation'];
301
            }
276
 
302
 
277
			if (!isset($obs[$idobs]['determinations'])) {
-
 
278
				$obs[$idobs]['determinations'] = array();
Line -... Line 279...
-
 
279
			}
303
            $obs[$idobs]['determinations'][$vote['id_commentaire']] =
280
 
-
 
281
			$obs[$idobs]['determinations'][$vote['id_commentaire']] =
Line 304... Line -...
304
              array('nom_sel' => $vote['nom_sel'],
-
 
305
                    'nom_ret' => $vote['nom_ret'],
-
 
306
                    'score' => $votes[$vote['id_commentaire']],
-
 
307
                    'nn' => $vote['nom_sel_nn']
-
 
308
                    );
-
 
309
          }
282
			array('nom_sel' => $vote['nom_sel'],
310
 
283
				'nom_ret' => $vote['nom_ret'],
311
 
284
				'score' => $votes[$vote['id_commentaire']],
312
          return $obs;
285
				'nn' => $vote['nom_sel_nn']);
313
	}
286
		}
314
 
287
		return $obs;
Line 315... Line 288...
315
 
288
	}
316
	/*-------------------------------------------------------------------------------
289