Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1467 Rev 1498
Line 20... Line 20...
20
	private $tagsObs = null;
20
	private $tagsObs = null;
21
	private $tagsImg = null;
21
	private $tagsImg = null;
22
	private $utilisateur_id = null;
22
	private $utilisateur_id = null;
23
	const DUREE_DE_VIE_IMG = 86400;// 3600 * 24 * 2 = 172 800
23
	const DUREE_DE_VIE_IMG = 86400;// 3600 * 24 * 2 = 172 800
24
	const ARRET_SERVICE = false;// Permet de bloquer le service en cas de problème sur le serveur
24
	const ARRET_SERVICE = false;// Permet de bloquer le service en cas de problème sur le serveur
-
 
25
	
-
 
26
	private $correspondanceIdImgTags = array();
Line 25... Line 27...
25
 
27
 
26
	public function createElement($requeteDonnees) {
28
	public function createElement($requeteDonnees) {
27
		if (self::ARRET_SERVICE) {
29
		if (self::ARRET_SERVICE) {
28
			$this->messages[] = "Désactivation temporaire du service d'envoi des données au CEL.";
30
			$this->messages[] = "Désactivation temporaire du service d'envoi des données au CEL.";
Line 43... Line 45...
43
				if (array_key_exists('courriel', $utilisateur)) {
45
				if (array_key_exists('courriel', $utilisateur)) {
44
					$this->debug[] = 'Courriel : ok';
46
					$this->debug[] = 'Courriel : ok';
45
					$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
47
					$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
46
					extract($utilisateur);
48
					extract($utilisateur);
47
					$this->utilisateur_id = $id_utilisateur;
49
					$this->utilisateur_id = $id_utilisateur;
48
					$ordre = $this->getMaxOrdre($id_utilisateur);
50
					$ordre = $this->getMaxOrdre($id_utilisateur);					
49
					if (!is_null($ordre)) {
51
					if (!is_null($ordre)) {
50
						$requeteDonnees = $this->supprimerSlashesProfond($requeteDonnees);
52
						$requeteDonnees = $this->supprimerSlashesProfond($requeteDonnees);
51
 
-
 
52
						// Triage et manipulation des données
53
						// Triage et manipulation des données
53
						$observations = array();
54
						$observations = array();
54
						foreach ($requeteDonnees as $cle => $obs) {
55
						foreach ($requeteDonnees as $cle => $obs) {
55
							if (preg_match('/^obsId[0-9]+$/', $cle)) {
56
							if (preg_match('/^obsId[0-9]+$/', $cle)) {
56
								$ordreObs = $ordre++;
57
								$ordreObs = $ordre++;
Line 90... Line 91...
90
								$obsAAjouter['date_modification'] = $obsAAjouter['date_creation'];
91
								$obsAAjouter['date_modification'] = $obsAAjouter['date_creation'];
91
								$obsAAjouter['date_transmission'] = $obsAAjouter['date_creation'];
92
								$obsAAjouter['date_transmission'] = $obsAAjouter['date_creation'];
Line 92... Line 93...
92
 
93
 
93
								$imgAAjouter = null;
94
								$imgAAjouter = null;
94
								if (!empty($obs['image_nom'])) {
-
 
95
									$imgAAjouter = array();
95
								if (!empty($obs['image_nom'])) {
96
									$imgAAjouter['id_utilisateur'] = $id_utilisateur;
-
 
97
									$imgAAjouter['id_obs'] = $ordreObs;
-
 
98
									$imgAAjouter['nom'] = $obs['image_nom'];
-
 
99
									$imgAAjouter['b64'] = $obs['image_b64'];
-
 
100
									$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
96
									$imgAAjouter = $this->traiterImagesALierAObs($id_utilisateur, $ordreObs, $obs);
Line 101... Line 97...
101
								}
97
								}
102
 
98
 
103
								$observations[$ordreObs] = array(
99
								$observations[$ordreObs] = array(
Line 125... Line 121...
125
							}
121
							}
Line 126... Line 122...
126
							
122
							
127
							// si le formulaire contient une image on la traite
123
							// si le formulaire contient une image on la traite
128
							if ($img != null) {
124
							if ($img != null) {
129
								$this->nettoyerImagesUploades();
-
 
130
								$nomFichierImg = $this->traiterNomFichierImage($img['nom']);
-
 
131
								$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
-
 
132
								// Si l'image est transmise en base 64
-
 
133
								if (empty($img['b64']) === false) {
-
 
134
									$this->transformerBase64enFichier($cheminImage, $img['b64']);
-
 
135
								}
-
 
136
							
-
 
137
								$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
-
 
138
								$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
-
 
139
								if ($idImg !== false) {
125
								$this->nettoyerImagesUploades();
140
									$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $img['id_obs']);
-
 
141
									if ($liaisonOk === true) {
-
 
142
										$img_a_taguer_ids[] = $idImg;
-
 
143
									}
-
 
144
								}
126
								$this->stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur);
145
							}
127
							}
Line 146... Line 128...
146
						}
128
						}
147
						
129
						
Line 163... Line 145...
163
		$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
145
		$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
164
		$retour = (object) array('msg' => $msg);
146
		$retour = (object) array('msg' => $msg);
165
		$this->envoyerJson($retour);
147
		$this->envoyerJson($retour);
166
	}
148
	}
Line -... Line 149...
-
 
149
	
-
 
150
	private function traiterImagesALierAObs($id_utilisateur, $ordreObs, $obs) {
-
 
151
		$imgAAjouter = null;
-
 
152
		if(is_array($obs['image_nom'])) {
-
 
153
			$imgAAjouter = array();
-
 
154
			foreach ($obs['image_nom'] as $index => $nom_image) {
-
 
155
				$image = array();
-
 
156
				$image['id_utilisateur'] = $id_utilisateur;
-
 
157
				$image['id_obs'] = $ordreObs;
-
 
158
				$image['nom'] = $nom_image;
-
 
159
				$image['tags'] = isset($obs['image_tag'][$index]) ? explode(',',$obs['image_tag'][$index]) : '';
-
 
160
				// on suppose que les b64 des images sont envoyés dans le même ordre que leurs noms 
-
 
161
				// TODO: indexer le tableau avec le nom des images
-
 
162
				$image['b64'] = isset($obs['image_b64'][$index]) ? $obs['image_b64'][$index] : '';
-
 
163
				$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');		
-
 
164
				$imgAAjouter[] = $image;
-
 
165
			}
-
 
166
		} else {
-
 
167
			if (!empty($obs['image_nom'])) {
-
 
168
				$imgAAjouter = array();
-
 
169
				$imgAAjouter['id_utilisateur'] = $id_utilisateur;
-
 
170
				$imgAAjouter['id_obs'] = $ordreObs;
-
 
171
				$imgAAjouter['nom'] = $obs['image_nom'];
-
 
172
				$imgAAjouter['b64'] = $obs['image_b64'];
-
 
173
				$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
-
 
174
			}
-
 
175
		}
-
 
176
		
-
 
177
		return $imgAAjouter;
-
 
178
	}
-
 
179
	
-
 
180
	private function stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur) {
-
 
181
		if(!isset($img['nom']) && is_array($img)) {
-
 
182
			foreach($img as $index => $image) {
-
 
183
				//echo '<pre>'.print_r($image,true).'</pre>';exit;
-
 
184
				$nomFichierImg = $this->traiterNomFichierImage($image['nom']);
-
 
185
				$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
-
 
186
				// Si l'image est transmise en base 64
-
 
187
				if (empty($image['b64']) === false) {
-
 
188
					$this->transformerBase64enFichier($cheminImage, $image['b64']);
-
 
189
				}
-
 
190
					
-
 
191
				$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
-
 
192
				$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
-
 
193
				if ($idImg !== false) {
-
 
194
					$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $image['id_obs']);
-
 
195
					if ($liaisonOk === true) {
-
 
196
						$img_a_taguer_ids[] = $idImg;
-
 
197
						if(isset($image['tags'])) {
-
 
198
							$this->correspondanceIdImgTags[$idImg] = $image['tags'];
-
 
199
						}
-
 
200
					}
-
 
201
				}
-
 
202
			}
-
 
203
		} else {
-
 
204
			$nomFichierImg = $this->traiterNomFichierImage($img['nom']);
-
 
205
			$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
-
 
206
			// Si l'image est transmise en base 64
-
 
207
			if (empty($img['b64']) === false) {
-
 
208
				$this->transformerBase64enFichier($cheminImage, $img['b64']);
-
 
209
			}
-
 
210
				
-
 
211
			$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
-
 
212
			$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
-
 
213
			if ($idImg !== false) {
-
 
214
				$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $img['id_obs']);
-
 
215
				if ($liaisonOk === true) {
-
 
216
					$img_a_taguer_ids[] = $idImg;
-
 
217
					if(isset($img['tags'])) {
-
 
218
						$this->correspondanceIdImgTags[$idImg] = $img['tags'];
-
 
219
					}
-
 
220
				}
-
 
221
			}
-
 
222
		}
-
 
223
	}
167
	
224
	
168
	private function affecterChampsManquantsUtilisateur($utilisateur) {
225
	private function affecterChampsManquantsUtilisateur($utilisateur) {
169
		$gestion_utilisateur = new User($this->config);
226
		$gestion_utilisateur = new User($this->config);
170
		$infos_complementaires = $gestion_utilisateur->obtenirUtilisateurSiExiste($utilisateur['courriel']);
227
		$infos_complementaires = $gestion_utilisateur->obtenirUtilisateurSiExiste($utilisateur['courriel']);
171
		if(!isset($utilisateur['id_utilisateur']) || trim($utilisateur['id_utilisateur']) == '') {
228
		if(!isset($utilisateur['id_utilisateur']) || trim($utilisateur['id_utilisateur']) == '') {
Line 252... Line 309...
252
					$e = "Toutes les images n'ont pas pu être liées aux mots-clés : $hierarchieTag";
309
					$e = "Toutes les images n'ont pas pu être liées aux mots-clés : $hierarchieTag";
253
					$this->messages[] = $e;
310
					$this->messages[] = $e;
254
				}
311
				}
255
			}
312
			}
256
		}
313
		}
-
 
314
		// Liaison des tags spécifiques à chaque image s'il y en a
-
 
315
		if(count($this->correspondanceIdImgTags) > 0) {
-
 
316
			foreach ($this->correspondanceIdImgTags as $id_img => $tags) {
-
 
317
				if($tags != null && !empty($tags)) {
-
 
318
					$this->lierImgAMotsCles(array($id_img), $tags);
-
 
319
				}
-
 
320
			}
-
 
321
		}
257
	}
322
	}
Line 258... Line 323...
258
 
323
 
259
	private function lierImgAMotsCles($images_ids, $tags) {
324
	private function lierImgAMotsCles($images_ids, $tags) {
260
		$idTagParent = self::IMG_RACINE_ID;
325
		$idTagParent = self::IMG_RACINE_ID;