Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1994 Rev 2049
Line 30... Line 30...
30
	private $paramsFiltres = array();
30
	private $paramsFiltres = array();
Line 31... Line 31...
31
 
31
 
32
	private $idsObsOrdonnees = array();
32
	private $idsObsOrdonnees = array();
33
	private $infosObs = array();
33
	private $infosObs = array();
-
 
34
	private $infosObsOrdonnee = array();
-
 
35
	
Line 34... Line 36...
34
	private $infosObsOrdonnee = array();
36
	private $evenementsObs = array();
35
 
37
 
36
 
38
 
Line 87... Line 89...
87
	 * @param p: $params (filtrés sauf escape-string)
89
	 * @param p: $params (filtrés sauf escape-string)
88
	 * @param req: le tableau représentant les composants de la requete SQL
90
	 * @param req: le tableau représentant les composants de la requete SQL
89
	 * @param db: l'instance de db
91
	 * @param db: l'instance de db
90
	 */
92
	 */
91
	private function getIdObs() {
93
	private function getIdObs() {
92
		$requete = 'SELECT SQL_CALC_FOUND_ROWS id_observation '.
-
 
93
			'FROM del_observation AS do '.
-
 
94
			$this->sql->getJoin().
-
 
-
 
94
		
95
			'WHERE '.$this->sql->getWhere().
95
		$requete = $this->renvoyerRequeteSelonType();
96
			$this->sql->getGroupBy().
-
 
97
			$this->sql->getOrderBy().
-
 
98
			$this->sql->getLimit().
-
 
99
			' -- '.__FILE__.':'.__LINE__;
-
 
-
 
96
		
100
		//Debug::printr($requete);
97
		//Debug::printr($requete);
101
		$resultats = $this->bdd->recupererTous($requete);
98
		$resultats = $this->bdd->recupererTous($requete);
Line 102... Line 99...
102
 
99
 
103
		$idObs = array();
100
		$idObs = array();
Line 106... Line 103...
106
				$idObs[] = $resultat['id_observation'];
103
				$idObs[] = $resultat['id_observation'];
107
			}
104
			}
108
		}
105
		}
109
		return $idObs;
106
		return $idObs;
110
	}
107
	}
-
 
108
	
-
 
109
	private function renvoyerRequeteSelonType() {
-
 
110
		//TODO: interdire l'appel si l'on est pas connecté ?
-
 
111
		if($this->monActiviteEstDemandee()) {
-
 
112
			$gestion_utilisateur = new GestionUtilisateur($this->conteneur);
-
 
113
			$utilisateur = $gestion_utilisateur->getUtilisateurIdentifie();
-
 
114
			$id_utilisateur = $utilisateur['id_utilisateur'];
-
 
115
		
-
 
116
			$requete = $this->sql->getRequeteIdObsMonactiviteTout($id_utilisateur, $this->sql->getLimit()).' -- '.__FILE__.':'.__LINE__;
-
 
117
		
-
 
118
			// Enregistrement de la date de consultation pour ne pas réafficher des évènements déjà consultés
-
 
119
			setcookie('del_date_derniere_consultation_evenements_'+$id_utilisateur, date('Y-m-d H:i:s'), time() + (60*60*24*100),'/');	
-
 
120
		} else {
-
 
121
			$requete = 'SELECT SQL_CALC_FOUND_ROWS id_observation '.
-
 
122
					'FROM del_observation AS do '.
-
 
123
					$this->sql->getJoin().
-
 
124
					'WHERE '.$this->sql->getWhere().
-
 
125
					$this->sql->getGroupBy().
-
 
126
					$this->sql->getOrderBy().
-
 
127
					$this->sql->getLimit().
-
 
128
					' -- '.__FILE__.':'.__LINE__;
-
 
129
		}
-
 
130
		
-
 
131
		return $requete;
-
 
132
	}
-
 
133
	
-
 
134
	private function monActiviteEstDemandee() {
-
 
135
		return isset($this->paramsFiltres['masque.type']) && in_array('monactivite',$this->paramsFiltres['masque.type']);
-
 
136
	}
Line 111... Line 137...
111
 
137
 
112
	/**
138
	/**
113
	 * Après avoir récupérer seulement les ids dans une première requête, nous récupérons maintenant les infos.
139
	 * Après avoir récupérer seulement les ids dans une première requête, nous récupérons maintenant les infos.
114
	 * Le web service est ainsi 3 fois plus rapide.
140
	 * Le web service est ainsi 3 fois plus rapide.
Line 125... Line 151...
125
			'id_image, date_prise_de_vue AS `date`, hauteur, largeur, nom_original '.
151
			'id_image, date_prise_de_vue AS `date`, hauteur, largeur, nom_original '.
126
			'FROM del_observation AS do '.
152
			'FROM del_observation AS do '.
127
			'	LEFT JOIN del_image AS di ON (do.id_observation = di.ce_observation) '.
153
			'	LEFT JOIN del_image AS di ON (do.id_observation = di.ce_observation) '.
128
			"WHERE id_observation IN ($idsObsConcat) ".
154
			"WHERE id_observation IN ($idsObsConcat) ".
129
			' -- '.__FILE__.':'.__LINE__;
155
			' -- '.__FILE__.':'.__LINE__;
-
 
156
		
-
 
157
		if ($this->monActiviteEstDemandee()) {
-
 
158
			$this->stockerEvenementsObs($idsObsConcat);
-
 
159
		}		
-
 
160
		
130
		//Debug::printr($requete);
161
		//Debug::printr($requete);
131
		return $this->bdd->recupererTous($requete);
162
		return $this->bdd->recupererTous($requete);
132
	}
163
	}
-
 
164
	
-
 
165
	private function stockerEvenementsObs($idsObsConcat) {
-
 
166
					
-
 
167
			$gestion_utilisateur = new GestionUtilisateur($this->conteneur);
-
 
168
			$utilisateur = $gestion_utilisateur->getUtilisateurIdentifie();
-
 
169
			$id_utilisateur = $utilisateur['id_utilisateur'];
-
 
170
			
-
 
171
			$evenements = $this->sql->getEvenementsObs($idsObsConcat, $id_utilisateur);
-
 
172
			
-
 
173
			$this->evenements_obs = array();
-
 
174
			
-
 
175
			foreach($evenements as &$evenement) {
-
 
176
				$this->affecterTypeEvenement($evenement, $id_utilisateur);
-
 
177
				$this->evenementsObs[$evenement['id_observation']][] = $evenement['type'];
-
 
178
			}
-
 
179
	}
-
 
180
 
-
 
181
	private function affecterTypeEvenement(&$evenement, $id_utilisateur) {
-
 
182
				
-
 
183
		// La date maximale détermine le type d'évènement
-
 
184
		switch($evenement['date_max']) {
-
 
185
			// Quelqu'un a fait un nouveau commentaire ou proposition
-
 
186
			case $evenement['date_com']:
-
 
187
				if(!empty($evenement['nom_sel_com'])) {
-
 
188
					$type = 'nouvelle_proposition';
-
 
189
				} else {
-
 
190
					$type = 'nouveau_commentaire';
-
 
191
				}
-
 
192
				
-
 
193
				// J'ai commenté ou fait une proposition
-
 
194
				if($evenement['utilisateur_commentaire'] == $id_utilisateur) {
-
 
195
					$type .= "_vous_a_obs_autre";
-
 
196
				} else {
-
 
197
					$type .= "_autre_sur_obs_vous";
-
 
198
				}
-
 
199
				break;
-
 
200
					
-
 
201
				// Quelqu'un a fait un nouveau vote
-
 
202
			case $evenement['date_vote']:
-
 
203
				$type = 'nouveau vote';
-
 
204
				// $type = "nouveau_vote_vous_a_com_autre";
-
 
205
				 $type = "nouveau_vote_autre_sur_com_vous";
-
 
206
				break;
-
 
207
		
-
 
208
				// Quelqu'un a validé une proposition
-
 
209
			case $evenement['date_validation']:
-
 
210
				$type = "nouvelle_validation_autre_sur_prop_vous";
-
 
211
				// $type = "nouvelle_validation_vous_a_prop_autre";
-
 
212
				break;
-
 
213
				// Cas qui ne devrait jamais arriver
-
 
214
			default:
-
 
215
				$type = 'inconnu';
-
 
216
		}
-
 
217
		$evenement['type'] = $type;
-
 
218
	}
Line 133... Line 219...
133
 
219
 
134
	/**
220
	/**
135
	 * Les informations étant extraites d'une vue dont les infos des obs sont dupliquées pour chaque image,
221
	 * Les informations étant extraites d'une vue dont les infos des obs sont dupliquées pour chaque image,
136
	 * il nous faut maintenant récupérer qu'une seule fois les données d'observations et y intégrer les données
222
	 * il nous faut maintenant récupérer qu'une seule fois les données d'observations et y intégrer les données
Line 146... Line 232...
146
			// ATTENTION : la requête retourne de nombreuses lignes avec les mêmes données (test de l'existence nécessaire)
232
			// ATTENTION : la requête retourne de nombreuses lignes avec les mêmes données (test de l'existence nécessaire)
147
			if (is_array($obsFormatees[$id]) === false) {
233
			if (is_array($obsFormatees[$id]) === false) {
148
				$obsFormatees[$id] = $obs;
234
				$obsFormatees[$id] = $obs;
149
			}
235
			}
150
			$obsFormatees[$id]['images'][] = $this->extraireInfosImage($obs);
236
			$obsFormatees[$id]['images'][] = $this->extraireInfosImage($obs);
-
 
237
			
-
 
238
			if(isset($this->evenementsObs[$id])) {
-
 
239
				$obsFormatees[$id]['evenements'] = $this->evenementsObs[$id];
-
 
240
			}
151
		}
241
		}
152
		return $obsFormatees;
242
		return $obsFormatees;
153
	}
243
	}
Line 154... Line 244...
154
 
244