www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

galerie-photo.php (4973B)


      1 <?php
      2 
      3 class GaleriePhoto {
      4 	public static function action($chemin, $action, $paramètres) {
      5 		if ($action == "anuler") {
      6 			return new Page($chemin, '', "redirect");
      7 		} else if ($action == "supprimer") {
      8 			Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
      9 			return new Page($chemin->parent(), '', "redirect");
     10 		} else {
     11 			if (isset($paramètres["fichier_image"])) {
     12 				$fichier_image = $paramètres["fichier_image"]["tmp_name"];
     13 				$fichier_image_mini = self::creer_miniature($fichier_image, 64, 64);
     14 				Stockage::set_prop_fichier($chemin, "image_mini", $fichier_image_mini);
     15 				Stockage::set_prop_fichier_reçu($chemin, "image", $fichier_image);
     16 			}
     17 			
     18 			if (isset($paramètres["description"])) {
     19 				Stockage::set_prop($chemin, "description", $paramètres["description"]);
     20 			}
     21 			
     22 			// titre après les autres paramètres car il peut générer un redirect.
     23 			if (isset($paramètres["titre"]) && Stockage::prop_diff($chemin, "titre", $paramètres["titre"])) {
     24 				Stockage::set_prop($chemin, "titre", $paramètres["titre"]);
     25 				Stockage::renomer($chemin, $paramètres["titre"]);
     26 				$chemin = $chemin->renomer($paramètres["titre"]);
     27 				// TODO : transmettre le paramètre "vue"
     28 				return new Page($chemin, '', "redirect");
     29 			}
     30 			
     31 			if (isset($paramètres["vue"])) {
     32 				return self::vue($chemin, $paramètres["vue"]);
     33 			} else {
     34 				return self::vue($chemin);
     35 			}
     36 		}
     37 	}
     38 	
     39 	public static function vue($chemin, $vue = "normal") {
     40 		if ($vue == "normal") {
     41 			$ret = '';
     42 			
     43 			if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) {
     44 				$ret .= '<form class="galerie infos" enctype="multipart/form-data" method="post" action="' . $chemin->get_url() . '">';
     45 				$ret .= '<h2><input type="text" name="titre" value="' . Stockage::get_prop($chemin, "titre") . '" /></h2>';
     46 				$ret .= '<img alt="' . Stockage::get_prop($chemin, "titre") . '" src="' . $chemin->get_url("?vue=image") . '"/>';
     47 				$ret .= '<p>';
     48 				$ret .= '<input type="file" name="fichier_image" id="fichier_image">';
     49 				$ret .= '</p>';
     50 				$ret .= formulaire_édition_texte_enrichi(Stockage::get_prop($chemin, "description"), "description");
     51 				$ret .= '<p><input type="submit" value="appliquer" /></p>';
     52 				$ret .= '</form>';
     53 			} else {
     54 				$ret .= '<h2>' . Stockage::get_prop($chemin, "titre") . '</h2>';
     55 				$ret .= '<img alt="' . Stockage::get_prop($chemin, "titre") . '" src="' . $chemin->get_url("?vue=image") . '"/>';
     56 				$ret .= affichage_texte_enrichi(Stockage::get_prop($chemin, "message"));
     57 			}
     58 			return new Page($ret, Stockage::get_prop($chemin, "titre"));
     59 		} else if ($vue == "miniature" || $vue == "mini") {
     60 			$ret = '<img alt="' . Stockage::get_prop($chemin, "titre") . '" src="' . $chemin->get_url("?vue=image_mini") . '"/>';
     61 			
     62 			return new Page($ret, Stockage::get_prop($chemin, "titre"));
     63 		} else if ($vue == "image") {
     64 			return new Page($chemin, "image", "sendprop");
     65 		} else if ($vue == "image_mini") {
     66 			return new Page($chemin, "image_mini", "sendprop");
     67 		}
     68 		return new Page('',''); // TODO : devrait renvoyer une page d'erreur !
     69 	}
     70 	
     71 	public static function creer_miniature($chemin_fs, $largeur_max, $hauteur_max) {
     72 		$chemin_fs_dest = tempnam(dirname($chemin_fs), "img");
     73 		if ($chemin_fs_dest === false) return false; // TODO : return Erreur::...(...);
     74 		
     75 		/* TODO : utiliser imagealphablending si nécessaire... http://www.php.net/manual/fr/function.imagecreatefrompng.php#85754 */
     76 		$image = imagecreatefromjpeg($chemin_fs); // ... formpng()
     77 		$largeur = imageSX($image);
     78 		$hauteur = imageSY($image);
     79 		if ($largeur < $largeur_max && $hauteur < $hauteur_max) {
     80 			$largeur_miniature = $largeur;
     81 			$hauteur_miniature = $hauteur;
     82 		} else if ($largeur / $hauteur < $largeur_max / $hauteur_max) { // limité par la hauteur.
     83 			$largeur_miniature = $largeur_max;
     84 			$hauteur_miniature = $hauteur * $largeur_miniature/$largeur;
     85 		} else { // limité par la largeur
     86 			$hauteur_miniature = $hauteur_max;
     87 			$largeur_miniature = $largeur * $hauteur_miniature/$hauteur;
     88 		}
     89 		$miniature = ImageCreateTrueColor($largeur_miniature, $hauteur_miniature); // miniatures de tailles différentes
     90 		var_dump($largeur_miniature, $hauteur_miniature, $largeur, $hauteur);
     91 		imagecopyresampled(
     92 			$miniature,         // image destination
     93 			$image,             // image source
     94 			0,                  // x destination
     95 			0,                  // y destination
     96 			0,                  // x source
     97 			0,                  // y source
     98 			$largeur_miniature, // largeur destination
     99 			$hauteur_miniature, // hauteur destination
    100 			$largeur,           // largeur source
    101 			$hauteur            // hauteur source
    102 		);
    103 		imagedestroy($image); // On libère la mémoire le plus tôt possible.
    104 		imagejpeg($miniature, $chemin_fs_dest);
    105 		imagedestroy($miniature);
    106 		return $chemin_fs_dest;
    107 	}
    108 }
    109 
    110 Modules::enregister_module("GaleriePhoto", "galerie-photo", "vue", "description", "fichier_image");
    111 
    112 ?>