@titre : url @description : # external signifie : ne pas stocker dans la bdd. @image : external # private signifie : ne peut pas être modifié directement par l'utilisateur / la requête / les autres modules. @miniature : private,external set_image : fonction php qui crée la miniature. Vue normale : (@titre titre) (action supprimer "Supprimer cet évènement") (@texte-riche description) (@image image) Vue miniature : (@titre titre) (@image miniature) parent(), '', "redirect"); } else { if (isset($paramètres["fichier_image"]) && ($paramètres["fichier_image"]["tmp_name"] != "")) { $fichier_image = $paramètres["fichier_image"]["tmp_name"]; $fichier_image_mini = self::creer_miniature($fichier_image, 64, 64); Stockage::set_prop_fichier($chemin, "image_mini", $fichier_image_mini); Stockage::set_prop_fichier_reçu($chemin, "image", $fichier_image); } if (isset($paramètres["description"])) { Stockage::set_prop($chemin, "description", $paramètres["description"]); } // titre après les autres paramètres car il peut générer un redirect. if (isset($paramètres["titre"]) && Stockage::prop_diff($chemin, "titre", $paramètres["titre"])) { Stockage::set_prop($chemin, "titre", $paramètres["titre"]); Stockage::renomer($chemin, $paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]); // TODO : transmettre le paramètre "vue" return new Page($chemin, $chemin, '', "redirect"); } if (isset($paramètres["vue"])) { return self::vue($chemin, $paramètres["vue"]); } else { return self::vue($chemin); } } } public static function vue($chemin, $vue = "normal") { if ($vue == "normal") { $ret = ''; if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) { $ret .= '
'; $ret .= '

'; $ret .= '' . Stockage::get_prop($chemin, '; $ret .= '

'; $ret .= ''; $ret .= '

'; $ret .= formulaire_édition_texte_enrichi(Stockage::get_prop($chemin, "description"), "description"); $ret .= '

'; $ret .= '
'; } else { $ret .= '

' . Stockage::get_prop($chemin, "titre") . '

'; $ret .= '' . Stockage::get_prop($chemin, '; $ret .= affichage_texte_enrichi(Stockage::get_prop($chemin, "description")); } return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre")); } else if ($vue == "miniature" || $vue == "mini") { $ret = '' . Stockage::get_prop($chemin, '; return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre")); } else if ($vue == "image") { return new Page($chemin, $chemin, "image", "sendprop"); } else if ($vue == "image_mini") { return new Page($chemin, $chemin, "image_mini", "sendprop"); } return new Page($chemin, '',''); // TODO : devrait renvoyer une page d'erreur ! } public static function creer_miniature($chemin_fs, $largeur_max, $hauteur_max) { $chemin_fs_dest = tempnam(dirname($chemin_fs), "img"); if ($chemin_fs_dest === false) return false; // TODO : return Erreur::...(...); /* TODO : utiliser imagealphablending si nécessaire... http://www.php.net/manual/fr/function.imagecreatefrompng.php#85754 */ $image = imagecreatefromjpeg($chemin_fs); // ... formpng() $largeur = imageSX($image); $hauteur = imageSY($image); if ($largeur < $largeur_max && $hauteur < $hauteur_max) { $largeur_miniature = $largeur; $hauteur_miniature = $hauteur; } else if ($largeur / $hauteur < $largeur_max / $hauteur_max) { // limité par la hauteur. $largeur_miniature = $largeur_max; $hauteur_miniature = $hauteur * $largeur_miniature/$largeur; } else { // limité par la largeur $hauteur_miniature = $hauteur_max; $largeur_miniature = $largeur * $hauteur_miniature/$hauteur; } $miniature = ImageCreateTrueColor($largeur_miniature, $hauteur_miniature); // miniatures de tailles différentes var_dump($largeur_miniature, $hauteur_miniature, $largeur, $hauteur); imagecopyresampled( $miniature, // image destination $image, // image source 0, // x destination 0, // y destination 0, // x source 0, // y source $largeur_miniature, // largeur destination $hauteur_miniature, // hauteur destination $largeur, // largeur source $hauteur // hauteur source ); imagedestroy($image); // On libère la mémoire le plus tôt possible. imagejpeg($miniature, $chemin_fs_dest); imagedestroy($miniature); return $chemin_fs_dest; } } Modules::enregister_module("GaleriePhoto", "galerie-photo", "vue", "description", "fichier_image"); ?>