Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 3091 Rev 3509
Line 24... Line 24...
24
	* @param int $id_utilisateur identifiant de l'utilisateur
24
	* @param int $id_utilisateur identifiant de l'utilisateur
25
	* @param array $infos_fichier les infos sur le fichier à traiter, de la même forme que les
25
	* @param array $infos_fichier les infos sur le fichier à traiter, de la même forme que les
26
	* élements du tableau $_FILES de php
26
	* élements du tableau $_FILES de php
27
	*/
27
	*/
28
	public function ajouterImage($id_utilisateur, $infos_fichier) {
28
	public function ajouterImage($id_utilisateur, $infos_fichier) {
29
		$nouvel_ordre = $this->obtenirNouvelOrdrePourUtilisateur($id_utilisateur);
-
 
30
 
-
 
31
		$extracteur_metadonnees = new ExtracteurMetadonnees();
29
		$extracteur_metadonnees = new ExtracteurMetadonnees();
32
		$informations_image = $extracteur_metadonnees->extraireMetadonnees($infos_fichier['tmp_name']) ;
30
		$informations_image = $extracteur_metadonnees->extraireMetadonnees($infos_fichier['tmp_name']) ;
33
		if (!$informations_image) {
31
		if (!$informations_image) {
34
			$message = "Erreur lors de l'extraction des metadonnées";
32
			$message = "Erreur lors de l'extraction des metadonnées";
35
			$this->logger($message);
33
			$this->logger($message);
36
		}
34
		}
Line 37... Line 35...
37
 
35
 
38
		// ajout de quelques informations supplémentaire, en sus
36
		// ajout de quelques informations supplémentaire, en sus
39
		// des metadonnées dejà extraites
37
		// des metadonnées dejà extraites
40
		$informations_image['ordre'] = $nouvel_ordre ;
-
 
41
		$informations_image['transmission'] = '0' ;
38
		$informations_image['original_name'] = $infos_fichier['name'] ;
Line 42... Line 39...
42
		$informations_image['nom_original'] = $infos_fichier['name'] ;
39
		//$informations_image['size'] = $infos_fichier['name'] ;
43
 
40
 
Line 44... Line 41...
44
		// le md5 du fichier sert à repérer les images en doublons
41
		// le md5 du fichier sert à repérer les images en doublons
45
		$informations_image['md5'] = md5_file($infos_fichier['tmp_name']) ;
-
 
-
 
42
		$informations_image['md5'] = md5_file($infos_fichier['tmp_name']) ;
46
 
43
 
Line 47... Line 44...
47
		$informations_image['ce_utilisateur'] = $id_utilisateur ;
44
		$informations_image['user_id'] = $id_utilisateur ;
48
 
-
 
49
		$infos_utilisateur = $this->getInfosComplementairesUtilisateur($id_utilisateur);
45
//manque une fonction
Line 50... Line 46...
50
 
46
		$infos_utilisateur = $this->getInfosComplementairesUtilisateur($id_utilisateur);
51
		$informations_image['courriel_utilisateur'] = $infos_utilisateur['courriel'];
47
 
52
		$informations_image['nom_utilisateur'] = $infos_utilisateur['nom'];
48
		$informations_image['user_email'] = $infos_utilisateur['courriel'];
53
		$informations_image['prenom_utilisateur'] = $infos_utilisateur['prenom'];
49
		$informations_image['user_pseudo'] = $infos_utilisateur['pseudo'];
54
 
50
 
55
		$requete = $this->construireRequeteInsertionImage($informations_image);
51
		$requete = $this->construireRequeteInsertionImage($informations_image);
Line 56... Line 52...
56
		$resultat_insertion_infos_image = Cel::db()->executer($requete);
52
		$resultat_insertion_infos_image = Cel::db()->executer($requete);
57
		if (!$resultat_insertion_infos_image) {
53
		if (!$resultat_insertion_infos_image) {
58
			$message = "Echec de l'insertion dans la base de donnees : " ;
54
			$message = "Echec de l'insertion dans la base de donnees : " ;
59
			$this->logger($message);
55
			$this->logger($message);
60
		}
56
		}
Line 76... Line 72...
76
		}
72
		}
Line 77... Line 73...
77
 
73
 
78
		return $id_nouvelle_image;
74
		return $id_nouvelle_image;
Line 79... Line -...
79
	}
-
 
80
 
-
 
81
	private function obtenirNouvelOrdrePourUtilisateur($id_utilisateur) {
-
 
82
		$idUtilisateurP = Cel::db()->proteger($id_utilisateur);
-
 
83
		$requete = 'SELECT MAX(ordre) AS max_ordre '.
-
 
84
			'FROM cel_images '.
-
 
85
			"WHERE ce_utilisateur = $idUtilisateurP ".
-
 
Line 86... Line -...
86
			' -- '.__FILE__.' : '.__LINE__;
-
 
87
		$resultat = Cel::db()->requeter($requete);
-
 
88
 
-
 
89
		$nouvel_ordre = 0;
-
 
90
		if ($resultat !== false) {
-
 
91
			$nouvel_ordre = $resultat[0]['max_ordre'];
-
 
92
			$nouvel_ordre++;
-
 
93
		} else {
-
 
94
			$message = "Erreur lors du calcul du nouvel ordre de l'image";
-
 
95
			$this->logger($message);
-
 
Line 96... Line 75...
96
		}
75
	}
97
		return $nouvel_ordre;
76
 
98
	}
77
 
99
 
78
 
100
	private function obtenirIdImagePourIdentifiantEtOrdre($id_utilisateur, $ordre) {
79
	private function obtenirIdImagePourIdentifiantEtOrdre($id_utilisateur, $nom) {
101
		$id_image = false;
80
		$id_image = false;
102
		$idUtilisateurP = Cel::db()->proteger($id_utilisateur);
81
		$idUtilisateurP = Cel::db()->proteger($id_utilisateur);
103
		$ordreP = Cel::db()->proteger($ordre);
82
		$nomP = Cel::db()->proteger($nom);
104
		$requete ='SELECT id_image '.
83
		$requete ='SELECT id as id_image '.
105
			'FROM cel_images '.
84
			'FROM photo '.
Line 106... Line 85...
106
			"WHERE ce_utilisateur = $idUtilisateurP ".
85
			"WHERE user_id = $idUtilisateurP ".
107
			"	AND ordre = $ordreP ".
86
			"	AND original_name = $nomP ".
Line 114... Line 93...
114
		return $id_image;
93
		return $id_image;
115
	}
94
	}
Line 116... Line 95...
116
 
95
 
117
	private function construireRequeteInsertionImage($informations_image) {
96
	private function construireRequeteInsertionImage($informations_image) {
118
		$infos = array(
97
		$infos = array(
119
			'date_creation' => 'NOW()',
98
			'date_created ' => 'NOW()',
120
			'date_modification' => 'NOW()');
99
			'date_updated ' => 'NOW()');
121
		foreach ($informations_image as $champ => $valeur) {
100
		foreach ($informations_image as $champ => $valeur) {
122
			$infos[$champ] = is_null($valeur) ? 'NULL' : Cel::db()->proteger($valeur);
101
			$infos[$champ] = is_null($valeur) ? 'NULL' : Cel::db()->proteger($valeur);
123
		}
102
		}
124
		$champs = implode(', ', array_keys($infos));
103
		$champs = implode(', ', array_keys($infos));
Line 125... Line 104...
125
		$valeurs = implode(', ', array_values($infos));
104
		$valeurs = implode(', ', array_values($infos));
126
 
105
 
127
		$requete = "INSERT INTO cel_images ($champs) ".
106
		$requete = "INSERT INTO photo ($champs) ".
128
			"VALUES ($valeurs) ".
107
			"VALUES ($valeurs) ".
129
			' -- '.__FILE__.' : '.__LINE__;
108
			' -- '.__FILE__.' : '.__LINE__;
Line 139... Line 118...
139
	 * @return boolean true ou false suivant le succès de l'opération
118
	 * @return boolean true ou false suivant le succès de l'opération
140
	*/
119
	*/
141
	public function modifierImage($id_utilisateur, $id_image, $parametres) {
120
	public function modifierImage($id_utilisateur, $id_image, $parametres) {
142
		$champs_a_mettre_a_jour = $this->construireRequeteMajMetaDonnees($parametres);
121
		$champs_a_mettre_a_jour = $this->construireRequeteMajMetaDonnees($parametres);
Line 143... Line 122...
143
 
122
 
144
		$requete = "UPDATE cel_images SET $champs_a_mettre_a_jour ".
123
		$requete = "UPDATE photo SET $champs_a_mettre_a_jour ".
145
			' WHERE id_image = '.Cel::db()->proteger($id_image).
124
			' WHERE id = '.Cel::db()->proteger($id_image).
146
			' AND ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).
125
			' AND user_id = '.Cel::db()->proteger($id_utilisateur).
147
			' -- '.__FILE__.' : '.__LINE__;
126
			' -- '.__FILE__.' : '.__LINE__;
148
		$resultat = Cel::db()->executer($requete);
127
		$resultat = Cel::db()->executer($requete);
149
		return ($resultat !== false);
128
		return ($resultat !== false);
Line 150... Line -...
150
	}
-
 
151
 
-
 
152
	public function modifierTransmissionParObs($idsObs, $publier) {
-
 
153
		$ids_obs_proteges = Cel::db()->proteger($idsObs);
-
 
154
		$idsObsConcat = is_array($ids_obs_proteges) ? implode(', ', $ids_obs_proteges) : $ids_obs_proteges;
-
 
155
		$etatTransmission = $publier ? 1 : 0;
129
	}
156
		$dateTransmission = $publier ? 'NOW()' : 'NULL';
-
 
157
 
-
 
158
		$requete = "UPDATE cel_images ".
-
 
159
			"SET transmission = $etatTransmission, date_transmission = $dateTransmission ".
-
 
160
			"WHERE ce_observation IN ($idsObsConcat) ".
-
 
161
			' -- ' . __FILE__ . ':' . __LINE__;
-
 
162
		$resultat = Cel::db()->executer($requete);
-
 
Line 163... Line 130...
163
		return $resultat;
130
 
164
	}
131
 
165
 
132
 
166
	/**
133
	/**
Line 186... Line 153...
186
			}
153
			}
187
		}
154
		}
188
		return implode(', ', $champs_maj);
155
		return implode(', ', $champs_maj);
189
	}
156
	}
Line 190... Line -...
190
 
-
 
191
	public function supprimerImageParOrdre($id_utilisateur, $ordre_images) {
-
 
192
		if (is_array($ordre_images)) {
-
 
193
			$ordre_images = Cel::db()->proteger($ordre_images);
-
 
194
			$idsImagesP = implode(',', $ordre_images);
-
 
195
		} else {
-
 
196
			$idsImagesP = Cel::db()->proteger($ordre_images);
-
 
197
		}
-
 
198
		$idUtilisateurP = Cel::db()->proteger($id_utilisateur);
-
 
199
 
-
 
200
		$requete = 'SELECT id_image '.
-
 
201
			'FROM cel_images '.
-
 
202
			"WHERE ce_utilisateur = $idUtilisateurP ".
-
 
203
			"AND ordre IN ($idsImagesP) ".
-
 
204
			' -- '.__FILE__.' : '.__LINE__;
-
 
205
		$resultats = Cel::db()->requeter($requete);
-
 
206
 
-
 
207
		$idsImages = array();
-
 
208
		foreach ($resultats as $id_image) {
-
 
209
			$idsImages[] = $id_image['id_image'];
-
 
210
		}
-
 
211
		return $this->supprimerImage($idsImages);
-
 
212
	}
-
 
213
 
157
 
214
	public function supprimerImage($id_image_ou_tableau) {
158
	public function supprimerImage($id_image_ou_tableau) {
215
		$ids_images_non_protegees = array();
159
		$ids_images_non_protegees = array();
216
		if (is_array($id_image_ou_tableau)) {
160
		if (is_array($id_image_ou_tableau)) {
217
			$ids_images_non_protegees = $id_image_ou_tableau;
161
			$ids_images_non_protegees = $id_image_ou_tableau;
Line 220... Line 164...
220
		} else {
164
		} else {
221
			$ids_images_non_protegees[] = $id_image_ou_tableau;
165
			$ids_images_non_protegees[] = $id_image_ou_tableau;
222
			$chaine_ids_images = Cel::db()->proteger($id_image_ou_tableau);
166
			$chaine_ids_images = Cel::db()->proteger($id_image_ou_tableau);
223
		}
167
		}
Line 224... Line 168...
224
 
168
 
225
		$requete = 'DELETE FROM cel_images '.
169
		$requete = 'DELETE FROM photo '.
226
			"WHERE id_image in ($chaine_ids_images) ".
170
			"WHERE id in ($chaine_ids_images) ".
227
			' -- '.__FILE__.' : '.__LINE__;
171
			' -- '.__FILE__.' : '.__LINE__;
228
		$resultat_suppression_image = Cel::db()->executer($requete);
172
		$resultat_suppression_image = Cel::db()->executer($requete);
229
		if ($resultat_suppression_image === false) {
173
		if ($resultat_suppression_image === false) {
230
			$message = "Erreur lors de la suppression de l'image" ;
174
			$message = "Erreur lors de la suppression de l'image" ;
Line 253... Line 197...
253
	* @param string $id_utilisateur
197
	* @param string $id_utilisateur
254
	*/
198
	*/
255
	public function migrerImagesMailVersId($mail_utilisateur, $infos_utilisateur) {
199
	public function migrerImagesMailVersId($mail_utilisateur, $infos_utilisateur) {
256
		// ATTENTION : cette fonction suppose que l'utilisateur n'a pas déjà d'images dans le CEL
200
		// ATTENTION : cette fonction suppose que l'utilisateur n'a pas déjà d'images dans le CEL
257
		// avec l'identifiant $id_utilisateur ce qui est normalement le cas
201
		// avec l'identifiant $id_utilisateur ce qui est normalement le cas
258
		$requete = 'UPDATE cel_images SET '.
202
		$requete = 'UPDATE photo SET '.
259
			'ce_utilisateur = '.Cel::db()->proteger($infos_utilisateur['id_utilisateur']).', '.
203
			'user_id = '.Cel::db()->proteger($infos_utilisateur['id_utilisateur']).', '.
260
			'prenom_utilisateur = '.Cel::db()->proteger($infos_utilisateur['prenom']).', '.
204
			'user_pseudo = '.Cel::db()->proteger($infos_utilisateur['prenom']).', '.
261
			'nom_utilisateur = '.Cel::db()->proteger($infos_utilisateur['nom']).', '.
-
 
262
			'courriel_utilisateur = '.Cel::db()->proteger($infos_utilisateur['courriel']).' '.
205
			'user_email = '.Cel::db()->proteger($infos_utilisateur['courriel']).' '.
263
			'WHERE ce_utilisateur = '.Cel::db()->proteger($mail_utilisateur).' '.
206
			'WHERE user_id = '.Cel::db()->proteger($mail_utilisateur).' '.
264
			' -- '.__FILE__.' : '.__LINE__;
207
			' -- '.__FILE__.' : '.__LINE__;
Line 265... Line 208...
265
 
208
 
266
		$migration_releve = Cel::db()->executer($requete);
209
		$migration_releve = Cel::db()->executer($requete);
267
		return $migration_releve;
210
		return $migration_releve;