return false; } if ($fix) { $img_out = imagecreatetruecolor($largeur_max, $hauteur_max); if ($largeur_final < $largeur_max) { $origine_x = round(($largeur_max - $largeur_final) / 2); } if ($hauteur_final < $hauteur_max) { $origine_y = round(($hauteur_max - $hauteur_final) / 2); } $couleurs = hex2rgb($fix_couleur); $fond = ImageColorAllocate($img_out, $couleurs[0], $couleurs[1], $couleurs[2]); imagefill($img_out, 0, 0, $fond); } else { $img_out = imagecreatetruecolor($largeur_final, $hauteur_final); } imagecopyresampled($img_out, $img_in, $origine_x, $origine_y, 0, 0, $largeur_final, $hauteur_final, imagesx($img_in), imagesy($img_in)); if ($sauvegarder) { imagejpeg($img_out, $image_destination); } else { imagejpeg($img_out, null, 100); } } $image = isset($_GET['image']) ? trim($_GET['image']) : exit; $w = isset($_GET['w']) ? intval(trim($_GET['w'])) : 80; $h = isset($_GET['h']) ? intval(trim($_GET['h'])) : 70; $fix = isset($_GET['fix']) && $_GET['fix'] == 1 ? true : false; $c = isset($_GET['color']) ? trim($_GET['color']) : 'fff'; header('Content-type: image/jpeg'); redimensionner_image($image, $w, $h, false, '', $fix, $c);
/** image() - Ajoute un element de type image au formulaire * * @param mixed L'objet QuickForm du formulaire * @param mixed Le tableau des valeurs des differentes option pour l'element image * @param string Type d'action pour le formulaire : saisie, modification, vue,... saisie par défaut * @return void */ function image(&$formtemplate, $tableau_template, $mode, $valeurs_fiche) { list($type, $identifiant, $label, $hauteur_vignette, $largeur_vignette, $hauteur_image, $largeur_image, $class, $obligatoire, $apparait_recherche, $bulle_d_aide) = $tableau_template; if ($mode == 'saisie') { $label = $obligatoire == 1 ? '<span class="symbole_obligatoire">* </span>' . $label : $label; //on verifie qu'il ne faut supprimer l'image if (isset($_GET['suppr_image']) && isset($valeurs_fiche[$type . $identifiant]) && $valeurs_fiche[$type . $identifiant] == $_GET['suppr_image']) { if (baz_a_le_droit('supp_fiche', isset($valeurs_fiche['createur']) ? $valeurs_fiche['createur'] : '')) { //on efface le fichier s'il existe if (file_exists(BAZ_CHEMIN_UPLOAD . $valeurs_fiche[$type . $identifiant])) { unlink(BAZ_CHEMIN_UPLOAD . $valeurs_fiche[$type . $identifiant]); } $nomimg = $valeurs_fiche[$type . $identifiant]; //on efface une entrée de la base de données unset($valeurs_fiche[$type . $identifiant]); $valeur = $valeurs_fiche; $valeur['date_maj_fiche'] = date('Y-m-d H:i:s', time()); $valeur['id_fiche'] = $valeurs_fiche['id_fiche']; $valeur = json_encode(array_map("utf8_encode", $valeur)); //on sauve les valeurs d'une fiche dans une PageWiki, pour garder l'historique $GLOBALS["wiki"]->SavePage($valeurs_fiche['id_fiche'], $valeur); //on affiche les infos sur l'effacement du fichier, et on reinitialise la variable pour le fichier pour faire apparaitre le formulaire d'ajout par la suite $info = '<div class="alert alert-info">' . _t('BAZ_FICHIER') . $nomimg . _t('BAZ_A_ETE_EFFACE') . '</div>' . "\n"; require_once BAZ_CHEMIN . 'libs' . DIRECTORY_SEPARATOR . 'vendor/HTML/QuickForm/html.php'; $formtemplate->addElement(new HTML_QuickForm_html("\n" . $info . "\n")); $valeurs_fiche[$type . $identifiant] = ''; } else { $info = '<div class="alert">' . _t('BAZ_DROIT_INSUFFISANT') . '</div>' . "\n"; require_once BAZ_CHEMIN . 'libs' . DIRECTORY_SEPARATOR . 'vendor/HTML/QuickForm/html.php'; $formtemplate->addElement(new HTML_QuickForm_html("\n" . $info . "\n")); } } if ($bulle_d_aide != '') { $label = $label . ' <img class="tooltip_aide" title="' . htmlentities($bulle_d_aide, ENT_QUOTES, TEMPLATES_DEFAULT_CHARSET) . '" src="tools/bazar/presentation/images/aide.png" width="16" height="16" alt="image aide" />'; } //cas ou il y a une image dans la base de donnees if (isset($valeurs_fiche[$type . $identifiant]) && $valeurs_fiche[$type . $identifiant] != '') { //il y a bien le fichier image, on affiche l'image, avec possibilite de la supprimer ou de la modifier if (file_exists(BAZ_CHEMIN_UPLOAD . $valeurs_fiche[$type . $identifiant])) { require_once BAZ_CHEMIN . 'libs/vendor/HTML/QuickForm/html.php'; $formtemplate->addElement(new HTML_QuickForm_html("\n" . '<fieldset class="bazar_fieldset">' . "\n" . '<legend>' . $label . '</legend>' . "\n")); $lien_supprimer = $GLOBALS['wiki']->href('edit', $GLOBALS['wiki']->GetPageTag()); $lien_supprimer .= ($GLOBALS['wiki']->config["rewrite_mode"] ? "?" : "&") . 'suppr_image=' . $valeurs_fiche[$type . $identifiant]; $html_image = afficher_image($valeurs_fiche[$type . $identifiant], $label, '', $largeur_vignette, $hauteur_vignette, $largeur_image, $hauteur_image); $lien_supprimer_image = '<a class="btn btn-danger btn-mini" href="' . str_replace('&', '&', $lien_supprimer) . '" onclick="javascript:return confirm(\'' . _t('BAZ_CONFIRMATION_SUPPRESSION_IMAGE') . '\');" ><i class="glyphicon glyphicon-trash icon-trash icon-white"></i> ' . _t('BAZ_SUPPRIMER_IMAGE') . '</a>' . "\n"; if ($html_image != '') { $formtemplate->addElement('html', $html_image); } //gestion du champs obligatoire $option = array('accept' => ".jpeg, .jpg, .gif, .png"); $formtemplate->addElement('file', $type . $identifiant, $lien_supprimer_image . _t('BAZ_MODIFIER_IMAGE'), $option); $formtemplate->addElement('hidden', 'oldimage_' . $type . $identifiant, $valeurs_fiche[$type . $identifiant]); $formtemplate->addElement(new HTML_QuickForm_html("\n" . '</fieldset>' . "\n")); } else { //le fichier image n'existe pas, du coup on efface l'entree dans la base de donnees echo '<div class="alert alert-danger">' . _t('BAZ_FICHIER') . $valeurs_fiche[$type . $identifiant] . _t('BAZ_FICHIER_IMAGE_INEXISTANT') . '</div>' . "\n"; //on efface une entrée de la base de données unset($valeurs_fiche[$type . $identifiant]); $valeur = $valeurs_fiche; $valeur['date_maj_fiche'] = date('Y-m-d H:i:s', time()); $valeur['id_fiche'] = $valeurs_fiche['id_fiche']; $valeur = json_encode(array_map("utf8_encode", $valeur)); //on sauve les valeurs d'une fiche dans une PageWiki, pour garder l'historique $GLOBALS["wiki"]->SavePage($valeurs_fiche['id_fiche'], $valeur); } } else { //cas ou il n'y a pas d'image dans la base de donnees, on affiche le formulaire d'envoi d'image //gestion du champs obligatoire $option = array('accept' => ".jpeg, .jpg, .gif, .png"); if (isset($obligatoire) && $obligatoire == 1) { $option['required'] = 'required'; } $formtemplate->addElement('file', $type . $identifiant, $label, $option); //TODO: la verification du type de fichier ne marche pas $tabmime = array('gif' => 'image/gif', 'jpg' => 'image/jpeg', 'png' => 'image/png'); /*$formtemplate->addRule($type.$identifiant, 'Vous devez choisir une fichier de type image gif, jpg ou png', 'mimetype', $tabmime );*/ } } elseif ($mode == 'requete') { if (isset($_FILES[$type . $identifiant]['name']) && $_FILES[$type . $identifiant]['name'] != '') { //on enleve les accents sur les noms de fichiers, et les espaces $nomimage = preg_replace("/&([a-z])[a-z]+;/i", "\$1", htmlentities($identifiant . $_FILES[$type . $identifiant]['name'], ENT_QUOTES, TEMPLATES_DEFAULT_CHARSET)); $nomimage = str_replace(' ', '_', $nomimage); if (preg_match("/(gif|jpeg|png|jpg)\$/i", $nomimage)) { $chemin_destination = BAZ_CHEMIN_UPLOAD . $nomimage; //verification de la presence de ce fichier if (!file_exists($chemin_destination)) { move_uploaded_file($_FILES[$type . $identifiant]['tmp_name'], $chemin_destination); chmod($chemin_destination, 0755); //generation des vignettes if ($hauteur_vignette != '' && $largeur_vignette != '' && !file_exists('cache/vignette_' . $nomimage)) { $adr_img = redimensionner_image($chemin_destination, 'cache/vignette_' . $nomimage, $largeur_vignette, $hauteur_vignette); } //generation des images if ($hauteur_image != '' && $largeur_image != '' && !file_exists('cache/image_' . '_' . $nomimage)) { $adr_img = redimensionner_image($chemin_destination, 'cache/image_' . $nomimage, $largeur_image, $hauteur_image); } } else { echo '<div class="alert alert-danger">L\'image ' . $nomimage . ' existait déja, elle n\'a pas été remplacée.</div>'; } } else { echo '<div class="alert alert-danger">Fichier non autorisé.</div>'; } if (isset($valeurs_fiche['oldimage_' . $type . $identifiant])) { unset($valeurs_fiche['oldimage_' . $type . $identifiant]); } return array($type . $identifiant => $nomimage); } elseif (isset($valeurs_fiche['oldimage_' . $type . $identifiant]) && $valeurs_fiche['oldimage_' . $type . $identifiant] != '') { $tabimg = array($type . $identifiant => $valeurs_fiche['oldimage_' . $type . $identifiant]); unset($valeurs_fiche['oldimage_' . $type . $identifiant]); return $tabimg; } } elseif ($mode == 'recherche') { } elseif ($mode == 'html') { if (isset($valeurs_fiche[$type . $identifiant]) && $valeurs_fiche[$type . $identifiant] != '' && file_exists(BAZ_CHEMIN_UPLOAD . $valeurs_fiche[$type . $identifiant])) { return afficher_image($valeurs_fiche[$type . $identifiant], $label, $class, $largeur_vignette, $hauteur_vignette, $largeur_image, $hauteur_image); } } }
/** image() - Ajoute un élément de type image au formulaire * * @param mixed L'objet QuickForm du formulaire * @param mixed Le tableau des valeurs des différentes option pour l'élément image * @param string Type d'action pour le formulaire : saisie, modification, vue,... saisie par défaut * @return void */ function image(&$formtemplate, $tableau_template, $mode, $valeurs_fiche) { list($type, $identifiant, $label, $hauteur_vignette, $largeur_vignette, $hauteur_image, $largeur_image, $class, $obligatoire, $apparait_recherche, $bulle_d_aide) = $tableau_template; if ($mode == 'saisie') { //on vérifie qu'il ne faut supprimer l'image if (isset($_GET['suppr_image']) && $valeurs_fiche[$type . $identifiant] == $_GET['suppr_image']) { //on efface le fichier s'il existe if (file_exists(BAZ_CHEMIN_UPLOAD . $valeurs_fiche[$type . $identifiant])) { unlink(BAZ_CHEMIN_UPLOAD . $valeurs_fiche[$type . $identifiant]); } //on efface une entrée de la base de données unset($valeurs_fiche[$type . $identifiant]); $valeur = $valeurs_fiche; $valeur['date_maj_fiche'] = date('Y-m-d H:i:s', time()); $valeur['id_fiche'] = $GLOBALS['_BAZAR_']['id_fiche']; $valeur = json_encode(array_map("utf8_encode", $valeur)); //on sauve les valeurs d'une fiche dans une PageWiki, pour garder l'historique $GLOBALS["wiki"]->SavePage($GLOBALS['_BAZAR_']['id_fiche'], $valeur); //on affiche les infos sur l'effacement du fichier, et on réinitialise la variable pour le fichier pour faire apparaitre le formulaire d'ajout par la suite echo '<div class="info_box">' . BAZ_FICHIER . $valeurs_fiche[$type . $identifiant] . BAZ_A_ETE_EFFACE . '</div>' . "\n"; $valeurs_fiche[$type . $identifiant] = ''; } if ($bulle_d_aide != '') { $labelbulle = $label . ' <img class="tooltip_aide" title="' . htmlentities($bulle_d_aide) . '" src="tools/bazar/presentation/images/aide.png" width="16" height="16" alt="image aide" />'; } //cas ou il y a une image dans la base de données if (isset($valeurs_fiche[$type . $identifiant]) && $valeurs_fiche[$type . $identifiant] != '') { //il y a bien le fichier image, on affiche l'image, avec possibilité de la supprimer ou de la modifier if (file_exists(BAZ_CHEMIN_UPLOAD . $valeurs_fiche[$type . $identifiant])) { require_once BAZ_CHEMIN . 'libs' . DIRECTORY_SEPARATOR . 'HTML/QuickForm/html.php'; $formtemplate->addElement(new HTML_QuickForm_html("\n" . '<fieldset class="bazar_fieldset">' . "\n" . '<legend>' . $labelbulle . '</legend>' . "\n")); $lien_supprimer = clone $GLOBALS['_BAZAR_']['url']; $lien_supprimer->addQueryString('action', $_GET['action']); $lien_supprimer->addQueryString('id_fiche', $GLOBALS['_BAZAR_']["id_fiche"]); $lien_supprimer->addQueryString('suppr_image', $valeurs_fiche[$type . $identifiant]); $html_image = afficher_image($valeurs_fiche[$type . $identifiant], $label, $class, $largeur_vignette, $hauteur_vignette, $largeur_image, $hauteur_image); $lien_supprimer_image .= '<a class="BAZ_lien_supprimer" href="' . str_replace('&', '&', $lien_supprimer->getURL()) . '" onclick="javascript:return confirm(\'' . BAZ_CONFIRMATION_SUPPRESSION_IMAGE . '\');" >' . BAZ_SUPPRIMER_IMAGE . '</a>' . "\n"; if ($html_image != '') { $formtemplate->addElement('html', $html_image); } $formtemplate->addElement('file', $type . $identifiant, $lien_supprimer_image . BAZ_MODIFIER_IMAGE); $formtemplate->addElement(new HTML_QuickForm_html("\n" . '</fieldset>' . "\n")); } else { echo '<div class="BAZ_error">' . BAZ_FICHIER . $valeurs_fiche[$type . $identifiant] . BAZ_FICHIER_IMAGE_INEXISTANT . '</div>' . "\n"; //on efface une entrée de la base de données unset($valeurs_fiche[$type . $identifiant]); $valeur = $valeurs_fiche; $valeur['date_maj_fiche'] = date('Y-m-d H:i:s', time()); $valeur['id_fiche'] = $GLOBALS['_BAZAR_']['id_fiche']; $valeur = json_encode(array_map("utf8_encode", $valeur)); //on sauve les valeurs d'une fiche dans une PageWiki, pour garder l'historique $GLOBALS["wiki"]->SavePage($GLOBALS['_BAZAR_']['id_fiche'], $valeur); } } else { $formtemplate->addElement('file', $type . $identifiant, $label); //gestion du champs obligatoire if ($apparait_recherche == 0 && isset($obligatoire) && $obligatoire == 1) { $formtemplate->addRule('image', IMAGE_VALIDE_REQUIS, 'required', '', 'client'); } //TODO: la vérification du type de fichier ne marche pas $tabmime = array('gif' => 'image/gif', 'jpg' => 'image/jpeg', 'png' => 'image/png'); $formtemplate->addRule($type . $identifiant, 'Vous devez choisir une fichier de type image gif, jpg ou png', 'mimetype', $tabmime); } } elseif ($mode == 'requete') { if (isset($_FILES[$type . $identifiant]['name']) && $_FILES[$type . $identifiant]['name'] != '') { //dans le cas d'une modification, on vérifie l'existance d'une image précédente, que l'on supprime et remplace if (isset($GLOBALS['_BAZAR_']['id_fiche'])) { /*$requete_nom_ancienne_image = 'SELECT bfvt_texte FROM '.BAZ_PREFIXE.'fiche_valeur_texte WHERE bfvt_ce_fiche="'.$GLOBALS['_BAZAR_']['id_fiche'].'" AND bfvt_id_element_form="'.$type.$identifiant.'"'; $resultat = $GLOBALS['_BAZAR_']['db']->query($requete_nom_ancienne_image) ; $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC); $ancienne_image = $ligne['bfvt_texte']; //on efface le fichier s'il existe if (file_exists(BAZ_CHEMIN_UPLOAD.$ancienne_image)) { unlink(BAZ_CHEMIN_UPLOAD.$ancienne_image); }*/ } //on enleve les accents sur les noms de fichiers, et les espaces $nomimage = preg_replace("/&([a-z])[a-z]+;/i", "\$1", htmlentities($identifiant . $_FILES[$type . $identifiant]['name'])); $nomimage = str_replace(' ', '_', $nomimage); $chemin_destination = BAZ_CHEMIN_UPLOAD . $nomimage; //verification de la presence de ce fichier if (!file_exists($chemin_destination)) { move_uploaded_file($_FILES[$type . $identifiant]['tmp_name'], $chemin_destination); chmod($chemin_destination, 0755); //génération des vignettes if ($hauteur_vignette != '' && $largeur_vignette != '' && !file_exists('cache/vignette_' . $nomimage)) { $adr_img = redimensionner_image($chemin_destination, 'cache/vignette_' . $nomimage, $largeur_vignette, $hauteur_vignette); } //génération des images if ($hauteur_image != '' && $largeur_image != '' && !file_exists('cache/image_' . '_' . $nomimage)) { $adr_img = redimensionner_image($chemin_destination, 'cache/image_' . $nomimage, $largeur_image, $hauteur_image); } } else { echo '<div class="BAZ_error">L\'image ' . $nomimage . ' existait déja, elle n\'a pas été remplacée.</div>'; } return array($type . $identifiant => $nomimage); } } elseif ($mode == 'recherche') { } elseif ($mode == 'html') { if (isset($valeurs_fiche[$type . $identifiant]) && $valeurs_fiche[$type . $identifiant] != '' && file_exists(BAZ_CHEMIN_UPLOAD . $valeurs_fiche[$type . $identifiant])) { return afficher_image($valeurs_fiche[$type . $identifiant], $label, $class, $largeur_vignette, $hauteur_vignette, $largeur_image, $hauteur_image); } } }