Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 824 Rev 830
Line 14... Line 14...
14
 * @version $Id$
14
 * @version $Id$
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 -... Line 18...
-
 
18
	
-
 
19
	private $projet = null;
-
 
20
	private $utilisateur_id = null;
-
 
21
	
-
 
22
	public function getElement($params) {
-
 
23
		$resultat[] = $this->ajouterMotCleObs('jpm@tela-botanica.org', 'Projets coopératifs', self::OBS_RACINE_ID.'.projets-cooperatifs', self::OBS_RACINE_ID);
-
 
24
		$resultat[] = $this->ajouterMotCleObs('jpm@tela-botanica.org', 'Biodiversite34', self::OBS_RACINE_ID.'.projets-cooperatifs.biodiversite34', self::OBS_RACINE_ID.'.projets-cooperatifs');
-
 
25
		$this->envoyerJson($resultat);
-
 
26
	}
18
	
27
	
-
 
28
	public function createElement($requeteDonnees) {
-
 
29
		if (array_key_exists('projet', $requeteDonnees)) {
-
 
30
			$this->debug[] = 'Projet : ok';
19
	public function createElement($requeteDonnees){
31
			$this->projet = $requeteDonnees['projet'];
20
		if (array_key_exists('utilisateur', $requeteDonnees)) {
32
			if (array_key_exists('utilisateur', $requeteDonnees)) {
21
			$this->debug[] = 'Utilisateur : ok';
33
				$this->debug[] = 'Utilisateur : ok';
22
			$utilisateur = $requeteDonnees['utilisateur'];
34
				$utilisateur = $requeteDonnees['utilisateur'];
23
			if (array_key_exists('courriel', $utilisateur)) {
35
				if (array_key_exists('courriel', $utilisateur)) {
24
				$this->debug[] = 'Courriel : ok';
36
					$this->debug[] = 'Courriel : ok';
-
 
37
					extract($utilisateur);
25
				extract($utilisateur);
38
					$this->utilisateur_id = $courriel;
26
				$ordre = $this->getMaxOrdre($courriel);
39
					$ordre = $this->getMaxOrdre($courriel);
27
				if (!is_null($ordre)) {
40
					if (!is_null($ordre)) {
28
					$this->debug[] = 'Ordre : ok';
41
						$this->debug[] = 'Ordre : ok';
29
					// Triage et manipulation des données
42
						// Triage et manipulation des données
30
					$observations = array();
43
						$observations = array();
31
					foreach ($requeteDonnees as $cle => $obs) {
44
						foreach ($requeteDonnees as $cle => $obs) {
32
						if (preg_match('/^obsId[0-9]+$/', $cle)) {
45
							if (preg_match('/^obsId[0-9]+$/', $cle)) {
33
							$obsAAjouter = array();
46
								$obsAAjouter = array();
34
							$obsAAjouter['identifiant'] = $courriel;
47
								$obsAAjouter['identifiant'] = $courriel;
35
							$obsAAjouter['prenom_utilisateur'] = $prenom;
48
								$obsAAjouter['prenom_utilisateur'] = $prenom;
36
							$obsAAjouter['nom_utilisateur'] = $nom;
49
								$obsAAjouter['nom_utilisateur'] = $nom;
37
							$obsAAjouter['ordre'] = $ordre++;
50
								$obsAAjouter['ordre'] = $ordre++;
38
							$obsAAjouter['nom_sel'] = $obs['nom_sel'];
51
								$obsAAjouter['nom_sel'] = $obs['nom_sel'];
39
							$obsAAjouter['num_nom_sel'] = $obs['num_nom_sel'];
52
								$obsAAjouter['num_nom_sel'] = $obs['num_nom_sel'];
40
							$obsAAjouter['nom_ret'] = $obs['nom_ret'];
53
								$obsAAjouter['nom_ret'] = $obs['nom_ret'];
41
							$obsAAjouter['num_nom_ret'] = $obs['num_nom_ret'];
54
								$obsAAjouter['num_nom_ret'] = $obs['num_nom_ret'];
42
							$obsAAjouter['num_taxon'] = $obs['num_taxon'];
55
								$obsAAjouter['num_taxon'] = $obs['num_taxon'];
43
							$obsAAjouter['famille'] = $obs['famille'];
56
								$obsAAjouter['famille'] = $obs['famille'];
44
							$obsAAjouter['date_observation'] = $this->transormerDateFrVersMysql($obs['date']);
57
								$obsAAjouter['date_observation'] = $this->transormerDateFrVersMysql($obs['date']);
45
							$obsAAjouter['milieu'] = $obs['milieu'];
58
								$obsAAjouter['milieu'] = $obs['milieu'];
46
							$obsAAjouter['commentaire'] = $obs['notes'];
59
								$obsAAjouter['commentaire'] = $obs['notes'];
47
							$obsAAjouter['transmission'] = '1';
60
								$obsAAjouter['transmission'] = '1';
48
							$obsAAjouter['date_creation'] = date('Y-m-d H:i:s');
61
								$obsAAjouter['date_creation'] = date('Y-m-d H:i:s');
49
							$obsAAjouter['date_transmission'] = date('Y-m-d H:i:s');
-
 
50
							$obsAAjouter['mots_cles_texte'] = $obs['tag'];
62
								$obsAAjouter['date_transmission'] = date('Y-m-d H:i:s');
51
							$obsAAjouter['coord_x'] = $obs['latitude'];
63
								$obsAAjouter['coord_x'] = $obs['latitude'];
52
							$obsAAjouter['coord_y'] = $obs['longitude'];
64
								$obsAAjouter['coord_y'] = $obs['longitude'];
53
							$obsAAjouter['location'] = $obs['commune_nom'];
65
								$obsAAjouter['location'] = $obs['commune_nom'];
54
							$obsAAjouter['id_location'] = substr($obs['commune_code_insee'], 0, 2);
66
								$obsAAjouter['id_location'] = substr($obs['commune_code_insee'], 0, 2);
55
							$obsAAjouter['ref_geo'] = 'WGS84';
67
								$obsAAjouter['ref_geo'] = 'WGS84';
56
							
68
								
-
 
69
								$observations[] = $this->protegerTableau($obsAAjouter);
57
							$observations[] = $this->protegerTableau($obsAAjouter);
70
							}
58
						}
-
 
59
					}
71
						}
60
					$this->debug[] = 'Nbre obs ajoutée : '.count($observations); 
72
						$this->debug[] = 'Nbre obs ajoutée : '.count($observations); 
61
					// Insertion dans la base
73
						// Insertion dans la base
-
 
74
						$ok = true;
62
					$ok = true;
75
						$obs_a_lier = array();
63
					foreach ($observations as $obs) {
76
						foreach ($observations as $obs) {
64
						$insert = "INSERT INTO cel_inventory ";
77
							$insert = "INSERT INTO cel_inventory ";
65
						$champs = '('.implode(', ', array_keys($obs)).') ';
78
							$champs = '('.implode(', ', array_keys($obs)).') ';
66
						$values = 'VALUES ('.implode(', ', $obs).') ';
79
							$values = 'VALUES ('.implode(', ', $obs).') ';
67
						$requete = $insert.$champs.$values;
80
							$requete = $insert.$champs.$values;
68
						if ($this->executerRequeteSimple($requete) == false) {
81
							if ($this->executerRequeteSimple($requete) === false) {
-
 
82
								$ok = false;
-
 
83
							} else {
-
 
84
								$obs_ok[] = trim($obs['ordre'], "'");
69
							$ok = false;
85
							}
70
						}
-
 
71
					}
86
						}
72
					
87
						
-
 
88
						if ($ok === true) {
-
 
89
							$this->debug[] = print_r($obs_ok, true);
-
 
90
							$liaison_ok = $this->lierObsAMotsCles($obs_ok);
-
 
91
							if ($liaison_ok === false) {
-
 
92
								$e = "Toutes les observations n'ont pas pu être liées au mot-clé du projet.";
-
 
93
								$this->messages[] = $e;
-
 
94
							}
73
					if ($ok === false) {
95
						} else {
-
 
96
							$this->messages[] = "Un problème est survenu lors de l'insertion dans la base de données.";
-
 
97
						}
-
 
98
					} else {
74
						$this->messages[] = "Un problème est survenu lors de l'insertion dans la base de données.";
99
						$this->messages[] = "Un nouveau numéro d'ordre d'observation n'a pu être généré.";
75
					}
100
					}
76
				} else {
101
				} else {
77
					$this->messages[] = "Un nouveau numéro d'ordre d'observation n'a pu être généré.";
102
					$this->messages[] = "L'identifiant de l'utilisateur (courriel) n'a pas été transmis.";
78
				}
103
				}
79
			} else {
104
			} else {
80
				$this->messages[] = "L'identifiant de l'utilisateur (courriel) n'a pas été transmis.";
105
				$this->messages[] = "Les informations concernant l'utilisateur (prénom, nom, courriel) n'ont pas été transmises.";
81
			}
106
			}
82
		} else {
107
		} else {
83
			$this->messages[] = "Les informations concernant l'utilisateur (prénom, nom, courriel) n'ont pas été transmises.";
108
			$this->messages[] = "Les informations concernant le projet coopératif n'ont pas été transmises.";
Line 84... Line 109...
84
		}
109
		}
85
		
110
		
86
		$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
111
		$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
Line 99... Line 124...
99
			$ordre = $ordre_max + 1;
124
			$ordre = $ordre_max + 1;
100
		}
125
		}
101
		return $ordre;
126
		return $ordre;
102
	}
127
	}
Line 103... Line -...
103
	
-
 
104
	private function protegerTableau(Array $tableau) {
-
 
105
		foreach ($tableau as $id => $val) {
-
 
106
			$tableau[$id] = $this->bdd->quote($val);
-
 
107
		}
-
 
108
		return $tableau;
-
 
109
	}
-
 
110
	
128
	
111
	/**
129
	/**
112
	 * Transforme une date au format français (jj/mm/aaaa) dans un format Mysql (aaaa-mm-jj).
130
	 * Transforme une date au format français (jj/mm/aaaa) dans un format Mysql (aaaa-mm-jj).
113
	 * @param string $dateFr date au format français (jj/mm/aaaa)
131
	 * @param string $dateFr date au format français (jj/mm/aaaa)
114
	 * @return string date au format Mysql (aaaa-mm-jj)
132
	 * @return string date au format Mysql (aaaa-mm-jj)
Line 119... Line 137...
119
		if (count($morceauxDate) == 3) {
137
		if (count($morceauxDate) == 3) {
120
			$dateMysql = implode('-', array_reverse($morceauxDate)); 
138
			$dateMysql = implode('-', array_reverse($morceauxDate)); 
121
		}
139
		}
122
		return $dateMysql;
140
		return $dateMysql;
123
	}
141
	}
-
 
142
	
-
 
143
	private function lierObsAMotsCles($observations) {
-
 
144
		$categorie =  self::OBS_RACINE_ID.'.projets-cooperatifs';
-
 
145
		$projet =  $categorie.'.'.strtolower($this->projet);
-
 
146
		$ajout_mot_cle_1 = $this->ajouterMotCleObs($this->utilisateur_id, 'Projets coopératifs', $categorie, self::OBS_RACINE_ID);
-
 
147
		$ajout_mot_cle_2 = $this->ajouterMotCleObs($this->utilisateur_id, $this->projet, $projet, $categorie);
-
 
148
		$liaison_ok = false;
-
 
149
		if ($ajout_mot_cle_1 && $ajout_mot_cle_2) {
-
 
150
			$liaison_ok = $this->lierMotCleObs($this->utilisateur_id, array($projet), $observations);
-
 
151
		} else {
-
 
152
			$e = "La catégorie du projet et le mot-clé du projet n'ont pas pu être ajouté.";
-
 
153
			$this->messages[] = $e;
-
 
154
		}
-
 
155
		return $liaison_ok;
-
 
156
	}
124
}
157
}
125
?>
158
?>
126
159