示例#1
0
        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">*&nbsp;</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 . ' &nbsp;&nbsp;<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('&', '&amp;', $lien_supprimer) . '" onclick="javascript:return confirm(\'' . _t('BAZ_CONFIRMATION_SUPPRESSION_IMAGE') . '\');" ><i class="glyphicon glyphicon-trash icon-trash icon-white"></i>&nbsp;' . _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&eacute;ja, elle n\'a pas &eacute;t&eacute; remplac&eacute;e.</div>';
                }
            } else {
                echo '<div class="alert alert-danger">Fichier non autoris&eacute;.</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('&', '&amp;', $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&eacute;ja, elle n\'a pas &eacute;t&eacute; remplac&eacute;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);
        }
    }
}