2
0
forked from Wavyzz/dolibarr

Fix: Photo for users and members were saved with .jpg even if .png

This commit is contained in:
Laurent Destailleur
2010-02-13 22:20:32 +00:00
parent 45f5af14ef
commit d5c786d805
11 changed files with 83 additions and 41 deletions

View File

@@ -28,6 +28,7 @@
require("./pre.inc.php"); require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/member.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/member.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/images.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent_type.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/adherent_type.class.php");
@@ -88,6 +89,11 @@ if ($rowid)
$caneditfieldmember=$user->rights->adherent->creer; $caneditfieldmember=$user->rights->adherent->creer;
} }
// Define size of logo small and mini (might be set into other pages)
$maxwidthsmall=270;$maxheightsmall=150;
$maxwidthmini=128;$maxheightmini=72;
$quality = 80;
/* /*
@@ -244,6 +250,8 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
$adh->amount = $_POST["amount"]; $adh->amount = $_POST["amount"];
$adh->photo = $_FILES['photo']['name'];
// Get status and public property // Get status and public property
$adh->statut = $_POST["statut"]; $adh->statut = $_POST["statut"];
$adh->public = $_POST["public"]; $adh->public = $_POST["public"];
@@ -277,19 +285,27 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
{ {
if (isset($_FILES['photo']['tmp_name']) && trim($_FILES['photo']['tmp_name'])) if (isset($_FILES['photo']['tmp_name']) && trim($_FILES['photo']['tmp_name']))
{ {
$dir= $conf->adherent->dir_output . '/' . get_exdir($adh->id,2,0,1);
// If photo is provided create_exdir($dir);
if (! is_dir($conf->adherent->dir_output))
if (@is_dir($dir))
{ {
create_exdir($conf->adherent->dir_output); $newfile=$dir.'/'.$_FILES['photo']['name'];
}
if (is_dir($conf->adherent->dir_output))
{
$newfile=$conf->adherent->dir_output . "/" . $adh->id . ".jpg";
if (! dol_move_uploaded_file($_FILES['photo']['tmp_name'],$newfile,1) > 0) if (! dol_move_uploaded_file($_FILES['photo']['tmp_name'],$newfile,1) > 0)
{ {
$message .= '<div class="error">'.$langs->trans("ErrorFailedToSaveFile").'</div>'; $message .= '<div class="error">'.$langs->trans("ErrorFailedToSaveFile").'</div>';
} }
else
{
// Create small thumbs for company (Ratio is near 16/9)
// Used on logon for example
$imgThumbSmall = vignette($newfile, $maxwidthsmall, $maxheightsmall, '_small', $quality);
// Create mini thumbs for company (Ratio is near 16/9)
// Used on menu or for setup page for example
$imgThumbMini = vignette($newfile, $maxwidthmini, $maxheightmini, '_mini', $quality);
}
} }
} }

View File

@@ -219,11 +219,11 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 1)
* Edition info modele document * Edition info modele document
*/ */
$constantes=array( $constantes=array(
'ADHERENT_CARD_TYPE',
'ADHERENT_CARD_HEADER_TEXT', 'ADHERENT_CARD_HEADER_TEXT',
'ADHERENT_CARD_TEXT', 'ADHERENT_CARD_TEXT',
'ADHERENT_CARD_TEXT_RIGHT', 'ADHERENT_CARD_TEXT_RIGHT',
'ADHERENT_CARD_FOOTER_TEXT', 'ADHERENT_CARD_FOOTER_TEXT'
'ADHERENT_CARD_TYPE'
); );
print_fiche_titre($langs->trans("MembersCards"),'',''); print_fiche_titre($langs->trans("MembersCards"),'','');
@@ -232,13 +232,31 @@ form_constantes($constantes);
print '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'<br>'; print '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'<br>';
print '%DOL_MAIN_URL_ROOT%, %ID%, %PRENOM%, %NOM%, %LOGIN%, %PASSWORD%, '; print '%DOL_MAIN_URL_ROOT%, %ID%, %PRENOM%, %NOM%, %LOGIN%, %PASSWORD%, ';
print '%SOCIETE%, %ADRESSE%, %CP%, %VILLE%, %PAYS%, %EMAIL%, %NAISS%, %PHOTO%, %TYPE%, '; print '%SOCIETE%, %ADRESSE%, %CP%, %VILLE%, %PAYS%, %EMAIL%, %NAISS%, %PHOTO%, %TYPE%, ';
print '%YEAR%, %MONTH%, %DAY%, %LOGO%, %PHOTO%'; print '%YEAR%, %MONTH%, %DAY%, %PHOTO%';
//print '%INFOS%'; Deprecated //print '%INFOS%'; Deprecated
print '<br>'; print '<br>';
print '<br>'; print '<br>';
/*
* Edition info modele document
*/
$constantes=array(
'ADHERENT_ETIQUETTE_TYPE'
);
print_fiche_titre($langs->trans("MembersTickets"),'','');
form_constantes($constantes);
print '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'<br>';
print '%DOL_MAIN_URL_ROOT%, %ID%, %PRENOM%, %NOM%, %LOGIN%, %PASSWORD%, ';
print '%SOCIETE%, %ADRESSE%, %CP%, %VILLE%, %PAYS%, %EMAIL%, %NAISS%, %PHOTO%, %TYPE%, ';
print '%YEAR%, %MONTH%, %DAY%, %PHOTO%';
//print '%INFOS%'; Deprecated
print '<br>';
print '<br>';
/* /*
* Edition des variables globales non rattache a un theme specifique * Edition des variables globales non rattache a un theme specifique
*/ */
@@ -252,7 +270,7 @@ $constantes=array(
'ADHERENT_MAIL_RESIL_SUBJECT', 'ADHERENT_MAIL_RESIL_SUBJECT',
'ADHERENT_MAIL_RESIL', 'ADHERENT_MAIL_RESIL',
'ADHERENT_MAIL_FROM', 'ADHERENT_MAIL_FROM',
'ADHERENT_ETIQUETTE_TYPE'
); );
print_fiche_titre($langs->trans("Other"),'',''); print_fiche_titre($langs->trans("Other"),'','');

View File

@@ -38,7 +38,7 @@ $langs->load("companies");
if (!$user->admin) if (!$user->admin)
accessforbidden(); accessforbidden();
// Define size of logo small and mini // Define size of logo small and mini (might be set into other pages)
$maxwidthsmall=270;$maxheightsmall=150; $maxwidthsmall=270;$maxheightsmall=150;
$maxwidthmini=128;$maxheightmini=72; $maxwidthmini=128;$maxheightmini=72;
$quality = 80; $quality = 80;

View File

@@ -2914,7 +2914,7 @@ class Form
/** /**
* \brief Return HTML code to output a photo * \brief Return HTML code to output a photo
* \param modulepart Id to define module concerned * \param modulepart Id to define module concerned
* \param object Object containing data to retreive file name * \param object Object containing data to retrieve file name
* \param width Width of photo * \param width Width of photo
* \return string HTML code to output photo * \return string HTML code to output photo
*/ */
@@ -2927,13 +2927,15 @@ class Form
if ($modulepart=='userphoto') if ($modulepart=='userphoto')
{ {
$dir=$conf->user->dir_output; $dir=$conf->user->dir_output;
$file=$object->id.".jpg"; $file=get_exdir($object->id,2).$object->photo;
$altfile=$object->id.".jpg"; // For backward compatibility
$email=$object->email; $email=$object->email;
} }
if ($modulepart=='memberphoto') if ($modulepart=='memberphoto')
{ {
$dir=$conf->adherent->dir_output; $dir=$conf->adherent->dir_output;
$file=$object->id.".jpg"; $file=get_exdir($object->id,2).$object->photo;
$altfile=$object->id.".jpg"; // For backward compatibility
$email=$object->email; $email=$object->email;
} }
@@ -2942,6 +2944,10 @@ class Form
if (file_exists($dir."/".$file)) if (file_exists($dir."/".$file))
{ {
$ret.='<img alt="Photo" width="'.$width.'" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&file='.urlencode($file).'">'; $ret.='<img alt="Photo" width="'.$width.'" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&file='.urlencode($file).'">';
}
else if (file_exists($dir."/".$altfile))
{
$ret.='<img alt="Photo" width="'.$width.'" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&file='.urlencode($altfile).'">';
} }
else else
{ {

View File

@@ -51,6 +51,7 @@ ALTER TABLE llx_projet ADD COLUMN model_pdf varchar(50) AFTER note;
ALTER TABLE llx_societe ADD COLUMN localtax1_assuj tinyint DEFAULT 0 after tva_assuj; ALTER TABLE llx_societe ADD COLUMN localtax1_assuj tinyint DEFAULT 0 after tva_assuj;
ALTER TABLE llx_societe ADD COLUMN localtax2_assuj tinyint DEFAULT 0 after localtax1_assuj; ALTER TABLE llx_societe ADD COLUMN localtax2_assuj tinyint DEFAULT 0 after localtax1_assuj;
ALTER TABLE llx_user ADD COLUMN photo varchar(255) after statut;
-- Create table of extra fields -- Create table of extra fields
create table llx_extra_fields create table llx_extra_fields

View File

@@ -47,7 +47,7 @@ create table llx_adherent
phone_perso varchar(30), phone_perso varchar(30),
phone_mobile varchar(30), phone_mobile varchar(30),
naiss date, -- date de naissance naiss date, -- date de naissance
photo varchar(255), -- url vers photo photo varchar(255), -- filename or url of photo
statut smallint NOT NULL DEFAULT 0, statut smallint NOT NULL DEFAULT 0,
public smallint NOT NULL DEFAULT 0, -- certain champ de la fiche sont ils public ou pas ? public smallint NOT NULL DEFAULT 0, -- certain champ de la fiche sont ils public ou pas ?
datefin datetime, -- date de fin de validite de la cotisation datefin datetime, -- date de fin de validite de la cotisation

View File

@@ -51,6 +51,7 @@ create table llx_user
egroupware_id integer, egroupware_id integer,
ldap_sid varchar(255) DEFAULT NULL, ldap_sid varchar(255) DEFAULT NULL,
statut tinyint DEFAULT 1, statut tinyint DEFAULT 1,
photo varchar(255), -- filename or url of photo
lang varchar(6) lang varchar(6)
)type=innodb; )type=innodb;

View File

@@ -2640,15 +2640,16 @@ function yn($yesno, $case=1, $color=0)
* \remarks Examples: '001' with level 3->"0/0/1/", '015' with level 3->"0/1/5/" * \remarks Examples: '001' with level 3->"0/0/1/", '015' with level 3->"0/1/5/"
* \remarks Examples: 'ABC-1' with level 3 ->"0/0/1/", '015' with level 1->"5/" * \remarks Examples: 'ABC-1' with level 3 ->"0/0/1/", '015' with level 1->"5/"
*/ */
function get_exdir($num,$level=3,$alpha=0) function get_exdir($num,$level=3,$alpha=0,$withoutslash=0)
{ {
$path = ''; $path = '';
if (empty($alpha)) $num = preg_replace('/([^0-9])/i','',$num); if (empty($alpha)) $num = preg_replace('/([^0-9])/i','',$num);
else $num = preg_replace('/^.*\-/i','',$num); else $num = preg_replace('/^.*\-/i','',$num);
$num = substr("000".$num, -$level); $num = substr("000".$num, -$level);
if ($level == 1) $path = substr($num,0,1).'/'; if ($level == 1) $path = substr($num,0,1);
if ($level == 2) $path = substr($num,1,1).'/'.substr($num,0,1).'/'; if ($level == 2) $path = substr($num,1,1).'/'.substr($num,0,1);
if ($level == 3) $path = substr($num,2,1).'/'.substr($num,1,1).'/'.substr($num,0,1).'/'; if ($level == 3) $path = substr($num,2,1).'/'.substr($num,1,1).'/'.substr($num,0,1);
if (empty($withoutslash)) $path.='/';
return $path; return $path;
} }

View File

@@ -30,14 +30,14 @@
* \brief Create a thumbnail from an image file (une small et un mini) * \brief Create a thumbnail from an image file (une small et un mini)
* \brief Les extensions prises en compte sont jpg et png * \brief Les extensions prises en compte sont jpg et png
* \param file Chemin du fichier image a redimensionner * \param file Chemin du fichier image a redimensionner
* \param maxWidth Largeur maximum que dois faire la miniature (160 par defaut) * \param maxWidth Largeur maximum que dois faire la miniature (-1=unchanged, 160 par defaut)
* \param maxHeight Hauteur maximum que dois faire l'image (120 par defaut) * \param maxHeight Hauteur maximum que dois faire l'image (-1=unchanged, 120 par defaut)
* \param extName Extension pour differencier le nom de la vignette * \param extName Extension pour differencier le nom de la vignette
* \param quality Quality of compression (0=worst, 100=best) * \param quality Quality of compression (0=worst, 100=best)
* \return string Full path of thumb * \return string Full path of thumb
* \remarks With file=myfile.jpg -> myfile_small.jpg * \remarks With file=myfile.jpg -> myfile_small.jpg
*/ */
function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $quality=50) function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $quality=50, $outdir='thumbs')
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
@@ -63,23 +63,26 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $
{ {
return 'This file '.$file.' does not seem to be an image format file name.'; return 'This file '.$file.' does not seem to be an image format file name.';
} }
elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < 0){ elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < -1){
// Si la largeur max est incorrecte (n'est pas numerique, est vide, ou est inferieure a 0) // Si la largeur max est incorrecte (n'est pas numerique, est vide, ou est inferieure a 0)
return 'Valeur de la largeur incorrecte.'; return 'Valeur de la largeur incorrecte.';
} }
elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < 0){ elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < -1){
// Si la hauteur max est incorrecte (n'est pas numerique, est vide, ou est inferieure a 0) // Si la hauteur max est incorrecte (n'est pas numerique, est vide, ou est inferieure a 0)
return 'Valeur de la hauteur incorrecte.'; return 'Valeur de la hauteur incorrecte.';
} }
$fichier = realpath($file); // Chemin canonique absolu de l'image $fichier = realpath($file); // Chemin canonique absolu de l'image
$dir = dirname($file).'/'; // Chemin du dossier contenant l'image $dir = dirname($file); // Chemin du dossier contenant l'image
$dirthumb = $dir.'thumbs/'; // Chemin du dossier contenant les vignettes $dirthumb = $dir.($outdir?'/'.$outdir:''); // Chemin du dossier contenant les vignettes
$infoImg = getimagesize($fichier); // Recuperation des infos de l'image $infoImg = getimagesize($fichier); // Recuperation des infos de l'image
$imgWidth = $infoImg[0]; // Largeur de l'image $imgWidth = $infoImg[0]; // Largeur de l'image
$imgHeight = $infoImg[1]; // Hauteur de l'image $imgHeight = $infoImg[1]; // Hauteur de l'image
if ($maxWidth == -1) $maxWidth=$infoImg[0]; // If size is -1, we keep unchanged
if ($maxHeight == -1) $maxHeight=$infoImg[1]; // If size is -1, we keep unchanged
// Si l'image est plus petite que la largeur et la hauteur max, on ne cree pas de vignette // Si l'image est plus petite que la largeur et la hauteur max, on ne cree pas de vignette
if ($infoImg[0] < $maxWidth && $infoImg[1] < $maxHeight) if ($infoImg[0] < $maxWidth && $infoImg[1] < $maxHeight)
{ {
@@ -114,10 +117,7 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $
} }
// On cree le repertoire contenant les vignettes // On cree le repertoire contenant les vignettes
if (! file_exists($dirthumb))
{
create_exdir($dirthumb); create_exdir($dirthumb);
}
// Initialisation des variables selon l'extension de l'image // Initialisation des variables selon l'extension de l'image
switch($infoImg[2]) switch($infoImg[2])
@@ -214,7 +214,7 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $
$fileName = preg_replace('/(\.gif|\.jpeg|\.jpg|\.png|\.bmp)$/i','',$file); // On enleve extension quelquesoit la casse $fileName = preg_replace('/(\.gif|\.jpeg|\.jpg|\.png|\.bmp)$/i','',$file); // On enleve extension quelquesoit la casse
$fileName = basename($fileName); $fileName = basename($fileName);
$imgThumbName = $dirthumb.$fileName.$extName.$extImg; // Chemin complet du fichier de la vignette $imgThumbName = $dirthumb.'/'.$fileName.$extName.$extImg; // Chemin complet du fichier de la vignette
// Check if permission are ok // Check if permission are ok
//$fp = fopen($imgThumbName, "w"); //$fp = fopen($imgThumbName, "w");

View File

@@ -2308,15 +2308,14 @@ class Product extends CommonObject
*/ */
function add_photo($sdir, $file, $maxWidth = 160, $maxHeight = 120) function add_photo($sdir, $file, $maxWidth = 160, $maxHeight = 120)
{ {
$dir = $sdir .'/'. get_exdir($this->id,2) . $this->id ."/"; $dir = $sdir .'/'. get_exdir($this->id,2) . $this->id ."/photos";
$dir .= "photos/";
create_exdir($dir); create_exdir($dir);
$dir_osencoded=$dir; $dir_osencoded=$dir;
if (file_exists($dir_osencoded)) if (is_dir($dir_osencoded))
{ {
$originImage = $dir . $file['name']; $originImage = $dir . '/' . $file['name'];
// Cree fichier en taille origine // Cree fichier en taille origine
$result=dol_move_uploaded_file($file['tmp_name'], $originImage, 1); $result=dol_move_uploaded_file($file['tmp_name'], $originImage, 1);

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify