Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 3289 Rev 3358
Line 68... Line 68...
68
			$this->parametres['projet'] = $_POST['projet'];
68
			$this->parametres['projet'] = $_POST['projet'];
69
			$this->parametres['langue'] = $_POST['langue'];
69
			$this->parametres['langue'] = $_POST['langue'];
Line 70... Line 70...
70
 
70
 
71
			if ( $mode === 'modification' ) {
71
			if ( $mode === 'modification' ) {
-
 
72
				$parametres = $this->traiterParametresModif();
72
				$parametres = $this->traiterParametresModif();
73
				$donnees    = array_merge( $parametres, $this->traiterDonneesFiles() );
73
				$json       = $this->getDao()->modifier( $this->cel_url_tpl, $parametres );
74
				$json       = $this->getDao()->modifier( $this->cel_url_tpl, $donnees );
74
			} else {
75
			} else {
75
				$donnees = array_merge( $_POST, $this->traiterDonneesFiles() );
76
				$donnees = array_merge( $_POST, $this->traiterDonneesFiles() );
76
				// var_dump($donnees);
77
				// var_dump($donnees);
77
				$json  = $this->getDao()->ajouter( $this->cel_url_tpl, $donnees );
78
				$json    = $this->getDao()->ajouter( $this->cel_url_tpl, $donnees );
78
				$mode  = $this->parametres['mode'] = 'modification';
79
				$mode    = $this->parametres['mode'] = 'modification';
79
			}
80
			}
Line 80... Line 81...
80
		}
81
		}
81
 
82
 
Line 182... Line 183...
182
		$parametres_flux = '?';
183
		$parametres_flux = '?';
183
		$criteres        = array( 'projet', 'langue', 'titre' );
184
		$criteres        = array( 'projet', 'langue', 'titre' );
Line 184... Line 185...
184
 
185
 
185
		foreach( $this->parametres as $nom_critere => $valeur_critere ) {
186
		foreach( $this->parametres as $nom_critere => $valeur_critere ) {
186
			if ( in_array( $nom_critere, $criteres ) ) {
-
 
187
 
187
			if ( in_array( $nom_critere, $criteres ) ) {
188
				$valeur_critere   = str_replace( ' ', '%20', $valeur_critere );
188
				$valeur_critere   = str_replace( ' ', '%20', $valeur_critere );
189
				$parametres_flux .= $nom_critere . '=' . $valeur_critere . '&';
189
				$parametres_flux .= $nom_critere . '=' . $valeur_critere . '&';
190
			}
190
			}
Line 200... Line 200...
200
 
200
 
201
		foreach ( $_POST as $id => $parametres ) {
201
		foreach ( $_POST as $id => $parametres ) {
202
			if ($parametres !== '' ) {
202
			if ($parametres !== '' ) {
203
				$parametres_modif[$id] = $parametres;
203
				$parametres_modif[$id] = $parametres;
204
			} else {
204
			} else {
205
			    $parametres_modif[$id] = ' ';
205
				$parametres_modif[$id] = ' ';
206
			}
206
			}
207
		}
207
		}
208
		return $parametres_modif;
208
		return $parametres_modif;
Line 213... Line 213...
213
		$transmettre_donnees = false;
213
		$transmettre_donnees = false;
214
		$files_names = array();
214
		$files_names = array();
215
		$help_files_names = array();
215
		$help_files_names = array();
216
		$error =
216
		$error =
217
			"<div class=\"message-echec container\">Echec du téléchargement : ".
217
			"<div class=\"message-echec container\">Echec du téléchargement : ".
218
	    	"L\'extention de l\'image pour " . $nom . " n\'est pas bonne".
218
			"L\'extention de l\'image pour " . $nom . " n\'est pas bonne".
219
	    	", formats acceptés : png, gif, jpg, jpeg, ou csv.".
219
			", formats acceptés : png, gif, jpg, jpeg, ou csv.".
220
			"</div>";
220
			"</div>";
221
		$image_projet_langue = ( $this->parametres['langue'] !== 'fr' ) ? '_' . $this->parametres['langue'] : '';
221
		$image_projet_langue = ( $this->parametres['langue'] !== 'fr' ) ? '_' . $this->parametres['langue'] : '';
222
		$dossier_url = __DIR__ . '/squelettes/img/images_projets/' . $_POST['projet'] . $image_projet_langue . '/';
222
		$dossier_url = __DIR__ . '/squelettes/img/images_projets/' . $_POST['projet'] . $image_projet_langue . '/';
Line 223... Line 223...
223
 
223
 
224
		foreach ( array_keys( $_FILES ) as $file ) {
-
 
225
 
224
		foreach ( array_keys( $_FILES ) as $file ) {
226
			if ( $_FILES[$file]['name'] !== '' ) {
225
			if ( $_FILES[$file]['name'] !== '' ) {
Line 227... Line 226...
227
				$extension = $this->obtenirExtension( $_FILES[$file] );
226
				$extension = $this->obtenirExtension( $_FILES[$file] );
228
 
-
 
229
				if ( $extension ) {
227
 
Line 230... Line 228...
230
 
228
				if ( $extension ) {
231
					$transmettre_donnees = true;
229
					$transmettre_donnees = true;
232
 
230
 
233
			 		if ( strstr( $file, 'help-') ) {
231
					if ( strstr( $file, 'help-') ) {
234
			 			// Pas besoin de $return :
232
						// Pas besoin de $return :
235
			 			// Type déjà transmis dans le json des champs supp
233
						// Type déjà transmis dans le json des champs supp
236
						$real_file_key = str_replace( 'help-', '', $file );
234
						$real_file_key = str_replace( 'help-', '', $file );
237
						$help_files_names[$real_file_key] = $real_file_key . '.' . $extension;
235
						$help_files_names[$real_file_key] = $real_file_key . '.' . $extension;
238
					} else {
236
					} else {
239
						$return[$file] = $_FILES[$file]['type'];
237
						$return[$file] = $_FILES[$file]['type'];
240
					 	$files_names[$file] = $file .'.' . $extension;
-
 
241
					}
238
						$files_names[$file] = $file .'.' . $extension;
242
				} else {
239
					}
243
 
240
				} else {
244
					echo (
241
					echo (
245
						"<div class=\"message-echec container\">Echec du téléchargement : ".
242
						"<div class=\"message-echec container\">Echec du téléchargement : ".
246
				    	"L\'extention de l\'image pour " . $nom . " n\'est pas bonne".
243
						"L\'extention de l\'image pour " . $nom . " n\'est pas bonne".
247
				    	", formats acceptés : png, gif, jpg, jpeg, ou csv.".
244
						", formats acceptés : png, gif, jpg, jpeg, ou csv.".
248
						"</div>"
245
						"</div>"
249
					);
246
					);
Line 250... Line 247...
250
				}
247
				}
251
			}
248
			}
252
		}
-
 
253
 
249
		}
254
		if ( $transmettre_donnees ) {
250
 
255
			if( !is_dir( $dossier_url ) ) {
-
 
256
 
251
		if ( $transmettre_donnees ) {
257
				mkdir( $dossier_url, 0755 );
252
			if( !is_dir( $dossier_url ) ) {
258
			}
253
				mkdir( $dossier_url, 0755 );
259
 
254
			}
260
			// Téléversements
255
			// Téléversements
Line 267... Line 262...
267
				foreach ( array_keys( $help_files_names ) as $file ) {
262
				foreach ( array_keys( $help_files_names ) as $file ) {
268
					$this->televerser( 'help-' . $file, $help_files_names[ $file ], $dossier_url );
263
					$this->televerser( 'help-' . $file, $help_files_names[ $file ], $dossier_url );
269
				}
264
				}
270
			}
265
			}
271
		}
266
		}
272
 
-
 
273
		return $return;
267
		return $return;
274
	}
268
	}
Line 275... Line 269...
275
 
269
 
276
	private function televerser( $file, $full_name, $dossier_url ) {
270
	private function televerser( $file, $full_name, $dossier_url ) {
277
		$taille_maxi = 5242880;
271
		$taille_maxi  = 5242880;
278
		$taille      = filesize( $_FILES[$file]['tmp_name'] );
272
		$taille       = filesize( $_FILES[$file]['tmp_name'] );
279
		$extension   = $this->obtenirExtension( $_FILES[$file] );
273
		$extension    = $this->obtenirExtension( $_FILES[$file] );
-
 
274
		$file_name    = str_replace( '.' . $extension, '', $full_name );
-
 
275
		$file_exists  = file_exists( $dossier_url . $full_name );
-
 
276
		$ex_file_name = $full_name;
-
 
277
 
-
 
278
		// verifier l'existance d'un fichier avec une extention différente
-
 
279
		// ex: logo.png vers logo.jpg
-
 
280
		if ( !$file_exists ) {
-
 
281
			switch ( $extension ) {
-
 
282
				case 'png':
-
 
283
					$ex_file_name = $file_name . '.jpg';
-
 
284
					break;
-
 
285
				case 'csv':
-
 
286
					$ex_file_name = $file_name . '.tsv';
-
 
287
					break;
-
 
288
				case 'tsv':
-
 
289
					$ex_file_name = $file_name . '.csv';
-
 
290
					break;
-
 
291
				case 'jpg':
-
 
292
				default:
-
 
293
					$ex_file_name = $file_name . '.png';
-
 
294
					break;
-
 
295
			}
-
 
296
			$file_exists = file_exists( $dossier_url . $ex_file_name );
Line 280... Line 297...
280
		$file_name   = str_replace( $extension, '', $full_name );
297
		}
281
 
298
 
282
		//Début des vérifications de sécurité...
-
 
283
		if ( file_exists( $dossier_url . $full_name ) ) {
299
		//Début des vérifications de sécurité...
284
 
-
 
285
			if ( $_POST['mode'] === 'modification' ) {
300
		if ( $file_exists ) {
286
 
301
			if ( $this->parametres['mode'] === 'modification' ) {
287
				// Le fichier existe déjà, c'est normal si on est en mode modification
302
				// Le fichier existe déjà, c'est normal si on est en mode modification
288
				unlink ( $dossier_url . $full_name );
-
 
289
			} else {
303
				unlink( $dossier_url . $ex_file_name );
290
 
304
			} else {
291
				$erreur =
305
				$erreur =
292
					"<div class=\"message-echec container\">Echec du téléchargement : ".
306
					"<div class=\"message-echec container\">Echec du téléchargement : ".
293
						"Un fichier pour \"" . $file_name.
307
						"Un fichier pour \"" . $file_name.
Line 297... Line 311...
297
					"</div>";
311
					"</div>";
298
			}
312
			}
299
		}
313
		}
Line 300... Line 314...
300
 
314
 
301
		if ( !$extension ) {
-
 
302
 
315
		if ( !$extension ) {
303
			//Si le format n'est pas bon
316
			//Si le format n'est pas bon
304
			$erreur =
317
			$erreur =
305
				"<div class=\"message-echec container\">".
318
				"<div class=\"message-echec container\">".
306
					"Echec du téléchargement pour ".
319
					"Echec du téléchargement pour ".
307
					"\"" . $file_name . "\" ".
320
					"\"" . $file_name . "\" ".
308
					", formats acceptés : png, gif, jpg, jpeg, ou csv".
321
					", formats acceptés : png, gif, jpg, jpeg, ou csv".
309
				"</div>";
322
				"</div>";
Line 310... Line 323...
310
		}
323
		}
311
 
-
 
312
		if ( $taille > $taille_maxi ) {
324
 
313
 
325
		if ( $taille > $taille_maxi ) {
314
			$erreur =
326
			$erreur =
315
				"<div class=\"message-echec container\">".
327
				"<div class=\"message-echec container\">".
316
					"Echec du téléchargement pour ".
328
					"Echec du téléchargement pour ".
317
					"\"" . $file_name . "\" ".
329
					"\"" . $file_name . "\" ".
318
					": Max 5Mo".
330
					": Max 5Mo".
Line 319... Line 331...
319
				"</div>";
331
				"</div>";
320
		}
-
 
321
 
332
		}
322
		if ( isset( $erreur ) ) {
333
 
323
 
-
 
-
 
334
		if ( isset( $erreur ) ) {
324
			echo $erreur;
335
			echo $erreur;
325
		} else {
336
		} else {
326
 
337
			$dest_file = $dossier_url . $this->remove_accents( $full_name );
327
			if ( !move_uploaded_file( $_FILES[$file]['tmp_name'], $dossier_url . $this->remove_accents( $full_name ) ) ) {
338
			if ( !move_uploaded_file( $_FILES[$file]['tmp_name'], $dest_file ) ) {
328
			// move_uploaded_file() renvoie false si l'upload a échoué
339
			// move_uploaded_file() renvoie false si l'upload a échoué
329
				echo
340
				echo
330
					"<div class=\"message-echec container\">".
341
					"<div class=\"message-echec container\">".
-
 
342
						"Erreur du téléchargement pour ".
-
 
343
						"\"" . $file_name . "\"".
331
						"Erreur du téléchargement pour ".
344
					"</div>";
332
						"\"" . $file_name . "\"".
345
			} else {
333
					"</div>";
346
				chmod($dest_file, 0666);
Line 334... Line 347...
334
			}
347
			}
335
		}
348
		}
-
 
349
	}
336
	}
350
 
337
 
351
	private function obtenirExtension( $files ) {
338
	private function obtenirExtension( $files ) {
-
 
339
		$type = exif_imagetype( $files['tmp_name'] );
352
		$type = exif_imagetype( $files['tmp_name'] );
340
		//une vérif pas mal pour les types image
353
 
341
		if ( $type == ( IMAGETYPE_PNG || IMAGETYPE_JPEG || IMAGETYPE_GIF ) ) {
354
		//une vérif pas mal pour les types image
342
 
355
		if ( $type == ( IMAGETYPE_PNG || IMAGETYPE_JPEG || IMAGETYPE_GIF ) ) {
343
	    switch ( $type ) {
356
			switch ( $type ) {
344
	      case '1' :
357
				case '1' :
345
	        $format = 'gif';
358
					$format = 'gif';
346
	        break;
359
					break;
347
	      case '2' :
360
			 	case '2' :
348
	        $format = 'jpg';
361
					$format = 'jpg';
349
	        break;
362
					break;
350
	      case '3' :
363
			 	case '3' :
351
	        $format = 'png';
364
					$format = 'png';
352
	        break;
365
					break;
353
	      default :
366
				default :
354
	      	break;
367
					break;
355
	    }
-
 
356
	  } elseif ( str_replace( '.csv' , '', $files['name'] ) && substr( strrchr($files['type'], '/' ), 1 ) === 'csv' ) {
368
			}
-
 
369
		} elseif ( str_replace( '.csv' , '', $files['name'] ) && substr( strrchr($files['type'], '/' ), 1 ) === 'csv' ) {
-
 
370
			// Pas trouvé mieux pour csv :
357
	  	// Pas trouvé mieux pour csv :
371
			// Les fonctions qui pourraient utiliser $_FILES[file]["tmp_path"] me répondent "text/plain"...
358
	  	// Les fonctions qui pourraient utiliser $_FILES[file]["tmp_path"] me répondent "text/plain"...
-
 
359
 
372
			$format = 'csv';
360
	  	$format = 'csv';
373
		} elseif ( str_replace( '.tsv' , '', $files['name'] ) && substr( strrchr($files['type'], '/' ), 1 ) === 'tsv' ) {
361
	  } else {
374
			$format = 'tsv';
362
 
375
		} else {
Line 363... Line 376...
363
	  	return false;
376
			return false;
364
	  }
377
		}