Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1916 Rev 1921
Line 284... Line 284...
284
			}
284
			}
285
		}
285
		}
286
		return $resultat;
286
		return $resultat;
287
	}
287
	}
Line 288... Line -...
288
 
-
 
289
	public function executerUploadImage() {
-
 
290
		$retour = array(
-
 
291
				'squelette' => $this->projet.'_image',
-
 
292
				'squelette_ext' => '.tpl.xml',
-
 
293
				'mime' => 'text/xml',
-
 
294
				'donnees' => array(
-
 
295
						'urlMiniature' => '',
-
 
296
						'imageNom' => '',
-
 
297
						'message' => '',
-
 
298
						'debogage' => ''));
-
 
299
		$message = '';
-
 
300
		$debogage = '';
-
 
301
		if ($_FILES['fichier']['error'] == UPLOAD_ERR_OK) {
-
 
302
			if (is_uploaded_file($_FILES['fichier']['tmp_name'])) {
-
 
303
				if ($this->verifierFormatJpeg($_FILES['fichier']['tmp_name'])) {
-
 
304
					$dossierStockage = $this->config['chemins']['imagesTempDossier'];
-
 
305
 
-
 
306
					$nomFichierOriginal = preg_replace('/[.](jpeg|jpg)$/i', '.jpg', strtolower($_FILES['fichier']['name']));
-
 
307
					$originalChemin = $dossierStockage.$nomFichierOriginal;
-
 
308
					$deplacementOk = move_uploaded_file($_FILES['fichier']['tmp_name'], $originalChemin);
-
 
309
 
-
 
310
					if ($deplacementOk === true) {
-
 
311
						$miniatureFichier = str_replace('.jpg', '_min.jpg', $nomFichierOriginal);
-
 
312
						$miniatureChemin = $dossierStockage.$miniatureFichier;
-
 
313
 
-
 
314
						// Parametres
-
 
315
						$largeurIdeale = 100;
-
 
316
						$hauteurIdeale = 100;
-
 
317
						$qualite = 85;
-
 
318
 
-
 
319
						// Calcul de la hauteur et de la largeur optimale de la miniature
-
 
320
						$taillesImgOriginale = getimagesize($originalChemin);
-
 
321
						$largeurOrigine = $taillesImgOriginale[0];
-
 
322
						$hauteurOrigine = $taillesImgOriginale[1];
-
 
323
 
-
 
324
						$largeurMin = $largeurIdeale;
-
 
325
						$hauteurMin = (int) ($hauteurOrigine * ($largeurIdeale / $largeurOrigine));
-
 
326
						if ($hauteurMin > $hauteurIdeale) {
-
 
327
							$hauteurMin = $hauteurIdeale;
-
 
328
							$largeurMin = (int)($largeurOrigine * ($hauteurMin / $hauteurOrigine));
-
 
329
						}
-
 
330
 
-
 
331
						// Création de la miniature
-
 
332
						$imageOriginale = imagecreatefromjpeg($originalChemin);
-
 
333
						$imageMiniature = imagecreatetruecolor($largeurMin, $hauteurMin);
-
 
334
						$couleurFond = imagecolorallocate($imageMiniature, 255, 255, 255);
-
 
335
						imagefill($imageMiniature, 0, 0, $couleurFond);
-
 
336
						imagecopyresized($imageMiniature, $imageOriginale, 0, 0, 0, 0, $largeurMin, $hauteurMin, $largeurOrigine, $hauteurOrigine);
-
 
337
						imagejpeg($imageMiniature, $miniatureChemin, $qualite);
-
 
338
						imagedestroy($imageMiniature);
-
 
339
						imagedestroy($imageOriginale);
-
 
340
 
-
 
341
						// Retour des infos
-
 
342
						$retour['donnees']['urlMiniature'] = sprintf($this->config['chemins']['imagesTempUrlTpl'], $miniatureFichier);
-
 
343
						$retour['donnees']['imageNom'] = $nomFichierOriginal;
-
 
344
					} else {
-
 
345
						$message = "L'image n'a pu être déplacé sur le serveur.";
-
 
346
					}
-
 
347
				} else {
-
 
348
					$message = "L'image n'est pas au format JPEG.";
-
 
349
				}
-
 
350
			} else {
-
 
351
				$message = "L'image n'a pu être téléversée.";
-
 
352
				$debogage = $message.print_r($_FILES, true);
-
 
353
			}
-
 
354
		} else {
-
 
355
			if ($_FILES['fichier']['error'] == UPLOAD_ERR_FORM_SIZE) {
-
 
356
				$message = "L'image téléversée excède la taille maximum autorisée.".
-
 
357
						"Veuillez modifier votre image avant de la téléverser à nouveau.";
-
 
358
			} else {
-
 
359
				$message = "Une erreur de transfert a eu lieu (téléversement interrompu).";
-
 
360
			}
-
 
361
			$debogage = "Code erreur : {$_FILES['fichier']['error']}. ".
-
 
362
					"Voir : http://php.net/manual/fr/features.file-upload.errors.php";
-
 
363
		}
-
 
364
		// Retour des infos
-
 
365
		$retour['donnees']['message'] = $message;
-
 
366
		$retour['donnees']['debogage'] = $debogage;
-
 
367
		return $retour;
-
 
368
	}
-
 
369
 
-
 
370
	// Il ne faut pas utiliser l'index type du tableau files pour tester
-
 
371
	// si une image est en jpeg car le type renvoyé par les navigateurs
-
 
372
	// peut varier (ex. sous ie qui renvoie image/pjpeg
-
 
373
	private function verifierFormatJpeg($chemin) {
-
 
374
		// get imagesize renvoie un résultat consistant par contre
-
 
375
		$infos = getimagesize($chemin, $infos);
-
 
376
		return (isset($infos['mime']) && $infos['mime'] == 'image/jpeg');
-
 
377
	}
-
 
378
 
288
 
379
	private function array2js($array,$show_keys) {
289
	private function array2js($array,$show_keys) {
380
		$tableauJs = '{}';
290
		$tableauJs = '{}';
381
		if (!empty($array)) {
291
		if (!empty($array)) {
382
			$total = count($array) - 1;
292
			$total = count($array) - 1;