Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1276 Rev 1348
Line 30... Line 30...
30
	
30
	
31
	public function executer() {
31
	public function executer() {
32
		try {
32
		try {
33
			$observations = $this->chargerObservationsCommentees();
33
			$observations = $this->chargerObservationsCommentees();
34
			$this->formaterObservations($observations);
-
 
35
			
34
			$this->formaterObservations($observations);
36
			$commentaires = $this->chargerCommentairesAjourdhui();
35
			$commentaires = $this->chargerCommentairesAjourdhui();
37
			$this->formaterCommentaires($commentaires);
36
			$this->formaterCommentaires($commentaires);
38
			$this->parcourirListeCommentairesEtEnvoyerMessage($this->observations_concernees);
37
			$this->parcourirListeCommentairesEtEnvoyerMessage($this->observations_concernees);
39
		} catch (Exception $e) {
38
		} catch (Exception $e) {
Line 52... Line 51...
52
					"	FROM del_commentaire dc, del_observation dob".
51
					"	FROM del_commentaire dc, del_observation dob".
53
					"		WHERE dc.nom_sel = dob.nom_sel ".
52
					"		WHERE dc.nom_sel = dob.nom_sel ".
54
					"		AND dc.ce_utilisateur = dob.ce_utilisateur ".
53
					"		AND dc.ce_utilisateur = dob.ce_utilisateur ".
55
					"		AND dc.ce_observation = dob.id_observation ".
54
					"		AND dc.ce_observation = dob.id_observation ".
56
					") ".
55
					") ".
57
					"AND dc.ce_utilisateur IN ".	
56
					"AND dc.ce_utilisateur NOT IN ".	
58
					"( ".
57
					"( ".
59
					"	SELECT id_utilisateur ".
58
					"	SELECT id_utilisateur ".
60
					"	FROM del_utilisateur_infos ".
59
					"	FROM del_utilisateur_infos ".
61
					"		WHERE preferences LIKE ".$this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"1"%')." ".
60
					"		WHERE preferences LIKE ".$this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%')." ".
62
					") ".
61
					") ".
63
					"AND DATE_FORMAT( dc.date, '%Y-%m-%d' ) = CURDATE() ".
62
					"AND DATE_FORMAT( dc.date, '%Y-%m-%d' ) = CURDATE() ".
64
					"ORDER BY dc.ce_observation";
63
					"ORDER BY dc.ce_observation";
65
 
-
 
66
		$commentaires = $this->conteneur->getBdd()->recupererTous($requete);
64
		$commentaires = $this->conteneur->getBdd()->recupererTous($requete);
67
		return $commentaires;
65
		return $commentaires;
68
	}
66
	}
Line 69... Line 67...
69
	
67
	
Line 81... Line 79...
81
						"	FROM del_commentaire dc, del_observation dob".
79
						"	FROM del_commentaire dc, del_observation dob".
82
						"		WHERE dc.nom_sel = dob.nom_sel ".
80
						"		WHERE dc.nom_sel = dob.nom_sel ".
83
						"		AND dc.ce_utilisateur = dob.ce_utilisateur ".
81
						"		AND dc.ce_utilisateur = dob.ce_utilisateur ".
84
						"		AND dc.ce_observation = dob.id_observation ".
82
						"		AND dc.ce_observation = dob.id_observation ".
85
						") ".
83
						") ".
-
 
84
						"AND dc.ce_utilisateur NOT IN ".
-
 
85
							"( ".
-
 
86
							"	SELECT id_utilisateur ".
-
 
87
							"	FROM del_utilisateur_infos ".
-
 
88
							"		WHERE preferences LIKE ".$this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%')." ".
-
 
89
							") ".
86
						"AND DATE_FORMAT( dc.date, '%Y-%m-%d' ) = CURDATE()".
90
						"AND DATE_FORMAT( dc.date, '%Y-%m-%d' ) = CURDATE()".
87
					") ". 
91
					") ". 
88
					"ORDER BY do.ce_utilisateur, do.id_observation ";
92
					"ORDER BY do.ce_utilisateur, do.id_observation ";
89
		$observations = $this->conteneur->getBdd()->recupererTous($requete);
93
		$observations = $this->conteneur->getBdd()->recupererTous($requete);
90
		return $observations;
94
		return $observations;
91
	}
95
	}
Line -... Line 96...
-
 
96
	
-
 
97
	protected function convertirCodeZoneGeoVersDepartement($code_zone_geo) {
-
 
98
	
-
 
99
		$code_departement = '';
-
 
100
		if($this->estUnCodeInseeDepartement($code_zone_geo)) {
-
 
101
			$code_departement = substr(ltrim($code_zone_geo,'INSEE-C:'),0,2);
-
 
102
		}
-
 
103
	
-
 
104
		return $code_departement;
-
 
105
	}
-
 
106
	
-
 
107
	protected function estUnCodeInseeDepartement($code_a_tester) {
-
 
108
		return preg_match('/^INSEE-C:[0-9]{5}/',$code_a_tester);
-
 
109
	}
92
	
110
	
93
	protected function formaterObservations($liste_obs) {
111
	protected function formaterObservations($liste_obs) {
94
		foreach ($liste_obs as $obs) {
112
		foreach ($liste_obs as $obs) {
95
			$id_obs = $obs['id_observation'];
113
			$id_obs = $obs['id_observation'];
96
			$auteur_obs = $obs['ce_utilisateur'];
114
			$auteur_obs = $obs['ce_utilisateur'];
-
 
115
			$obs['date'] = $this->formaterDateObs($obs['date_observation']);
97
			$obs['date'] = $this->formaterDateObs($obs['date_observation']);
116
			$obs['lieu'] = $this->formaterLieuObservation($obs);
98
			$obs['lien'] = $this->obtenirLienFicheObs($obs['id_observation']);
117
			$obs['lien'] = $this->obtenirLienFicheObs($obs['id_observation']);
99
			$obs['commentaires'] = array();
118
			$obs['commentaires'] = array();
100
			$this->correspondance_id_obs_auteurs[$id_obs] = $auteur_obs;
119
			$this->correspondance_id_obs_auteurs[$id_obs] = $auteur_obs;
101
			$this->observations_concernees[$auteur_obs][$id_obs] = $obs;
120
			$this->observations_concernees[$auteur_obs][$id_obs] = $obs;
102
		}
121
		}
Line -... Line 122...
-
 
122
	}
-
 
123
	
-
 
124
	protected function formaterLieuObservation($obs) {
-
 
125
		$lieux = array();
-
 
126
		if(!empty($obs['zone_geo'])) {
-
 
127
			$zone_geo = $obs['zone_geo'];
-
 
128
			$zone_geo.= (!empty($obs['ce_zone_geo']) ? ' ('.$this->convertirCodeZoneGeoVersDepartement($obs['ce_zone_geo']).')' : '');
-
 
129
			$lieux[] = $zone_geo;
-
 
130
		}
-
 
131
		if(!empty($obs['lieudit'])) {
-
 
132
			$lieux[] = $obs['lieudit'];
-
 
133
		}
-
 
134
		if(!empty($obs['station'])) {
-
 
135
			$lieux[] = $obs['station'];
-
 
136
		}
-
 
137
		return implode(" > ", $lieux);
103
	}
138
	}
104
	
139
	
105
	protected function formaterCommentaires($liste_commentaires) {
140
	protected function formaterCommentaires($liste_commentaires) {
106
		$liste_commentaires_formatee = array();
141
		$liste_commentaires_formatee = array();
-
 
142
		foreach ($liste_commentaires as $commentaire) {
107
		foreach ($liste_commentaires as $commentaire) {
143
			$id_obs = $commentaire['ce_observation'];
108
			$id_obs = $commentaire['ce_observation'];
144
			if(isset($this->correspondance_id_obs_auteurs[$commentaire['ce_observation']])) {
109
			$auteur_obs = $this->correspondance_id_obs_auteurs[$commentaire['ce_observation']];
145
				$auteur_obs = $this->correspondance_id_obs_auteurs[$commentaire['ce_observation']];
-
 
146
				$commentaire['auteur'] = $this->formaterAuteur($commentaire);
110
			$commentaire['auteur'] = $this->formaterAuteur($commentaire);
147
				$this->observations_concernees[$auteur_obs][$id_obs]['commentaires'][] = $commentaire;
111
			$this->observations_concernees[$auteur_obs][$id_obs]['commentaires'][] = $commentaire;
148
			}
Line 112... Line 149...
112
		}
149
		}
113
	}
150
	}
Line 119... Line 156...
119
		}
156
		}
120
	}
157
	}
Line 121... Line 158...
121
	
158
	
122
	private function formaterMessagePourAuteur($liste_obs, $auteur) {
159
	private function formaterMessagePourAuteur($liste_obs, $auteur) {
-
 
160
		$donnees = array();
-
 
161
		// copie de la première obs pour en obtenir le nom et prénom de l'auteur
-
 
162
		// (en deux fois pour éviter un warning en mode strict
-
 
163
		$valeurs = array_values($liste_obs);
123
		$donnees = array();
164
		$premiere_obs = array_shift($valeurs);
124
		$donnees['liste_observations'] = $liste_obs;
165
		$donnees['liste_observations'] = $liste_obs;
-
 
166
		$donnees['auteur'] = $auteur;
125
		$donnees['auteur'] = $auteur;
167
		$donnees['auteur_formate'] = ucfirst($premiere_obs['prenom_utilisateur']).' '.ucfirst($premiere_obs['nom_utilisateur']);
126
		$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
168
		$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
127
		return $this->conteneur->traiterSquelettePhp($this->squelette_dossier.'commentaires.tpl.html', $donnees);
169
		return $this->conteneur->traiterSquelettePhp($this->squelette_dossier.'commentaires.tpl.html', $donnees);
Line 128... Line 170...
128
	}
170
	}