Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1840 Rev 1895
Line 15... Line 15...
15
 * @copyright © 2011, Jean-Pascal MILCENT
15
 * @copyright © 2011, Jean-Pascal MILCENT
16
 */
16
 */
17
class CelWidgetSaisie extends CelMotCle {
17
class CelWidgetSaisie extends CelMotCle {
Line 18... Line 18...
18
 
18
 
-
 
19
	private $projet = null;
19
	private $projet = null;
20
	private $projetTags = array();
20
	private $tagsObs = null;
21
	private $tagsObs = null;
21
	private $tagsImg = null;
22
	private $tagsImg = null;
22
	private $champsEtendusObs = null;
23
	private $champsEtendusObs = null;
23
	private $utilisateur_id = null;
24
	private $utilisateur_id = null;
Line 28... Line 29...
28
 
29
 
29
	public function createElement($requeteDonnees) {
30
	public function createElement($requeteDonnees) {
30
		if (self::ARRET_SERVICE) {
31
		if (self::ARRET_SERVICE) {
31
			$this->messages[] = "Désactivation temporaire du service d'envoi des données au CEL.";
32
			$this->messages[] = "Désactivation temporaire du service d'envoi des données au CEL.";
32
		} else if (array_key_exists('projet', $requeteDonnees)) {
33
		} else if (array_key_exists('projet', $requeteDonnees)) {
33
			$this->debug[] = 'Projet : ok';
34
			$this->debug[] = 'Projet : '.$requeteDonnees['projet'];
-
 
35
			$this->projet = $requeteDonnees['projet'];
34
			$this->projet = $requeteDonnees['projet'];
36
 
35
			if (array_key_exists('tag-obs', $requeteDonnees) && $requeteDonnees['tag-obs'] != '') {
37
			// Traitements des tags multiples de projet
36
				$this->tagsObs = explode(',', $requeteDonnees['tag-obs']);
38
			$this->traiterProjetTags();
37
			}
39
 
38
			$this->tagsObs[] = 'Projets coopératifs>'.$this->projet;
40
			// Traitement des tags spécifique aux obs
-
 
41
			$this->traiterTagObs($requeteDonnees);
-
 
42
 
39
			if (array_key_exists('tag-img', $requeteDonnees) && $requeteDonnees['tag-img'] != '') {
43
			// Traitement des tags spécifique aux images
40
				$this->tagsImg = explode(',', $requeteDonnees['tag-img']);
44
			$this->traiterTagImg($requeteDonnees);
41
			}
45
 
42
			$this->tagsImg[] = 'Projets coopératifs>'.$this->projet;
46
			// Traitement des observations et des images
43
			if (filter_var($requeteDonnees['utilisateur']['courriel'], FILTER_VALIDATE_EMAIL)) {
47
			if (filter_var($requeteDonnees['utilisateur']['courriel'], FILTER_VALIDATE_EMAIL)) {
44
				$this->debug[] = 'Utilisateur : ok';
48
				$this->debug[] = 'Utilisateur : '.print_r($requeteDonnees['utilisateur'], true);
45
				$utilisateur = $requeteDonnees['utilisateur'];
49
				$utilisateur = $requeteDonnees['utilisateur'];
46
				if (array_key_exists('courriel', $utilisateur)) {
50
				if (array_key_exists('courriel', $utilisateur)) {
47
					$this->debug[] = 'Courriel : ok';
51
					$this->debug[] = 'Courriel : '.$utilisateur['courriel'];
48
					$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
52
					$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
49
					extract($utilisateur);
53
					extract($utilisateur);
50
					$this->utilisateur_id = $id_utilisateur;
54
					$this->utilisateur_id = $id_utilisateur;
51
					$ordre = $this->getMaxOrdre($id_utilisateur);
55
					$ordre = $this->getMaxOrdre($id_utilisateur);
Line 84... Line 88...
84
								$obsAAjouter['station'] = isset($obs['station']) ? $obs['station'] : null;
88
								$obsAAjouter['station'] = isset($obs['station']) ? $obs['station'] : null;
85
								$obsAAjouter['milieu'] = isset($obs['milieu']) ? $obs['milieu'] : null;
89
								$obsAAjouter['milieu'] = isset($obs['milieu']) ? $obs['milieu'] : null;
86
								$obsAAjouter['latitude'] = $obs['latitude'];
90
								$obsAAjouter['latitude'] = $obs['latitude'];
87
								$obsAAjouter['longitude'] = $obs['longitude'];
91
								$obsAAjouter['longitude'] = $obs['longitude'];
88
								$obsAAjouter['geodatum'] = 'WGS84';
92
								$obsAAjouter['geodatum'] = 'WGS84';
89
								
93
 
90
								$obsAAjouter['certitude'] = isset($obs['certitude']) ? $obs['certitude'] : null;
94
								$obsAAjouter['certitude'] = isset($obs['certitude']) ? $obs['certitude'] : null;
91
								$obsAAjouter['phenologie'] = isset($obs['phenologie']) ? $obs['phenologie'] : null;
95
								$obsAAjouter['phenologie'] = isset($obs['phenologie']) ? $obs['phenologie'] : null;
92
								$obsAAjouter['abondance'] = isset($obs['abondance']) ? $obs['abondance'] : null;
96
								$obsAAjouter['abondance'] = isset($obs['abondance']) ? $obs['abondance'] : null;
Line 93... Line 97...
93
 
97
 
Line 114... Line 118...
114
									'obs' => $this->protegerTableau($obsAAjouter),
118
									'obs' => $this->protegerTableau($obsAAjouter),
115
									'img' => $imgAAjouter);
119
									'img' => $imgAAjouter);
116
							}
120
							}
117
						}
121
						}
118
						$this->debug[] = 'Nbre obs ajoutée : '.count($observations);
122
						$this->debug[] = 'Nbre obs ajoutée : '.count($observations);
-
 
123
						$this->debug[] = 'projet : '.$this->projet;
-
 
124
						$this->debug[] = 'tagsObs : '.print_r($this->tagsObs, true);
-
 
125
						$this->debug[] = 'tagsImg : '.print_r($this->tagsImg, true);
Line 119... Line 126...
119
 
126
 
120
						// Insertion dans la base
127
						// Insertion dans la base
121
						$obs_a_taguer_ordres = array();
128
						$obs_a_taguer_ordres = array();
122
						$img_a_taguer_ids = array();
129
						$img_a_taguer_ids = array();
Line 157... Line 164...
157
				$this->messages[] = "Les informations concernant l'utilisateur (prénom, nom, courriel) n'ont pas été transmises.";
164
				$this->messages[] = "Les informations concernant l'utilisateur (prénom, nom, courriel) n'ont pas été transmises.";
158
			}
165
			}
159
		} else {
166
		} else {
160
			$this->messages[] = "Les informations concernant le projet coopératif n'ont pas été transmises.";
167
			$this->messages[] = "Les informations concernant le projet coopératif n'ont pas été transmises.";
161
		}
168
		}
-
 
169
		if (count($this->messages) > 0) {
-
 
170
			$this->debug[] = print_r($this->messages, true);
-
 
171
		}
162
		$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
172
		$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
163
		$retour = (object) array('msg' => $msg);
173
		$retour = (object) array('msg' => $msg);
164
		$this->envoyerJson($retour);
174
		$this->envoyerJson($retour);
165
		exit;
175
		exit;
166
	}
176
	}
Line -... Line 177...
-
 
177
 
-
 
178
	private function traiterProjetTags() {
-
 
179
		if (strpos($this->projet, ',') === false) {
-
 
180
			$this->projetTags = array('Projets coopératifs>'.$this->projet);
-
 
181
		} else {
-
 
182
			$projetTagsTxt = explode(',', $this->projet);
-
 
183
			foreach ($projetTagsTxt as $tag) {
-
 
184
				$this->projetTags[] = 'Projets coopératifs>'.$tag;
-
 
185
			}
-
 
186
		}
-
 
187
	}
-
 
188
 
-
 
189
	private function traiterTagObs($requeteDonnees) {
-
 
190
		if (array_key_exists('tag-obs', $requeteDonnees) && $requeteDonnees['tag-obs'] != '') {
-
 
191
			$this->tagsObs = explode(',', $requeteDonnees['tag-obs']);
-
 
192
		}
-
 
193
		foreach ($this->projetTags as $tag) {
-
 
194
			$this->tagsObs[] = $tag;
-
 
195
		}
-
 
196
	}
-
 
197
 
-
 
198
	private function traiterTagImg($requeteDonnees) {
-
 
199
		if (array_key_exists('tag-img', $requeteDonnees) && $requeteDonnees['tag-img'] != '') {
-
 
200
			$this->tagsImg = explode(',', $requeteDonnees['tag-img']);
-
 
201
		}
-
 
202
		foreach ($this->projetTags as $tag) {
-
 
203
			$this->tagsImg[] = $tag;
-
 
204
		}
-
 
205
	}
167
 
206
 
168
	private function ajouterChampsEtendusObs($obs_ids, $obs_a_champs_etendus) {
207
	private function ajouterChampsEtendusObs($obs_ids, $obs_a_champs_etendus) {
169
		$champs_etendus_obs = array();
208
		$champs_etendus_obs = array();
Line 170... Line 209...
170
		$gestionChampsEtendus = new GestionChampsEtendus($this->config, 'obs');
209
		$gestionChampsEtendus = new GestionChampsEtendus($this->config, 'obs');
Line 362... Line 401...
362
					$this->messages[] = $e;
401
					$this->messages[] = $e;
363
				}
402
				}
364
			}
403
			}
365
		}
404
		}
366
		// Liaison des tags spécifiques à chaque image s'il y en a
405
		// Liaison des tags spécifiques à chaque image s'il y en a
367
		if(count($this->correspondanceIdImgTags) > 0) {
406
		if (count($this->correspondanceIdImgTags) > 0) {
368
			foreach ($this->correspondanceIdImgTags as $id_img => $tags) {
407
			foreach ($this->correspondanceIdImgTags as $id_img => $tags) {
369
				if($tags != null && !empty($tags)) {
408
				if ($tags != null && !empty($tags)) {
370
					$this->lierImgAMotsCles(array($id_img), $tags);
409
					$this->lierImgAMotsCles(array($id_img), $tags);
371
				}
410
				}
372
			}
411
			}
373
		}
412
		}
374
	}
413
	}
Line 441... Line 480...
441
 
480
 
442
		$id_utilisateur = Cel::db()->proteger($id_utilisateur);
481
		$id_utilisateur = Cel::db()->proteger($id_utilisateur);
Line 443... Line 482...
443
		$ordre = Cel::db()->proteger($ordre);
482
		$ordre = Cel::db()->proteger($ordre);
444
 
483
 
445
		$requete = 'SELECT id_observation '.
484
		$requete = 'SELECT id_observation '.
446
					'FROM cel_obs '.
485
			'FROM cel_obs '.
Line 447... Line 486...
447
					"WHERE ce_utilisateur = $id_utilisateur ".
486
			"WHERE ce_utilisateur = $id_utilisateur ".
Line 448... Line 487...
448
					"	AND ordre = $ordre ";
487
			"	AND ordre = $ordre ";
449
 
488
 
450
		$resultat = Cel::db()->executerRequete($requete);
489
		$resultat = Cel::db()->executerRequete($requete);
Line 451... Line 490...
451
 
490
 
-
 
491
		$id_obs = (count($resultat) > 0) ? $resultat[0]['id_observation'] : false;
452
		$id_obs = (count($resultat) > 0) ? $resultat[0]['id_observation'] : false;
492
		return $id_obs;
453
		return $id_obs;
493
	}
Line 454... Line 494...
454
	}
494
 
455
 
495
	private function obtenirIdsObsPourTableauOrdres($id_utilisateur, $ordres) {
456
	private function obtenirIdsObsPourTableauOrdres($id_utilisateur, $ordres) {
496
		$this->debug[] = print_r($ordres,true);
457
		$id_utilisateur = Cel::db()->proteger($id_utilisateur);
497
		$id_utilisateur = Cel::db()->proteger($id_utilisateur);
458
		$ordres = array_map(array(Cel::db(),'proteger'), $ordres);
-
 
-
 
498
		$ordres = array_map(array(Cel::db(),'proteger'), $ordres);
459
 
499
 
460
		$requete = 'SELECT id_observation '.
500
		$requete = 'SELECT id_observation '.
461
							'FROM cel_obs '.
501
			'FROM cel_obs '.
462
							"WHERE ce_utilisateur = $id_utilisateur ".
502
			"WHERE ce_utilisateur = $id_utilisateur ".
463
							" AND ordre IN (".implode(',',$ordres).") ";
503
			"	AND ordre IN (".implode(',',$ordres).") ";