Fix: File functions works with filename with special chars
This commit is contained in:
parent
9c5f2c803d
commit
3f97012399
@ -2576,21 +2576,20 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Fonction qui renvoie si tva doit etre tva percue recuperable
|
* \brief Fonction qui renvoie si tva doit etre tva percue recuperable
|
||||||
\remarks Si vendeur non assujeti a TVA, TVA par defaut=0. Fin de regle.
|
* \remarks Si vendeur non assujeti a TVA, TVA par defaut=0. Fin de regle.
|
||||||
Si le (pays vendeur = pays acheteur) alors TVA par defaut=TVA du produit vendu. Fin de regle.
|
* Si le (pays vendeur = pays acheteur) alors TVA par defaut=TVA du produit vendu. Fin de regle.
|
||||||
Si (vendeur et acheteur dans Communaute europeenne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par defaut=0 (La TVA doit etre paye par acheteur au centre d'impots de son pays et non au vendeur). Fin de regle.
|
* Si (vendeur et acheteur dans Communaute europeenne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par defaut=0 (La TVA doit etre paye par acheteur au centre d'impots de son pays et non au vendeur). Fin de regle.
|
||||||
Si (vendeur et acheteur dans Communaute europeenne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par defaut=TVA du produit vendu. Fin de regle
|
* Si (vendeur et acheteur dans Communaute europeenne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par defaut=TVA du produit vendu. Fin de regle
|
||||||
Si (vendeur et acheteur dans Communaute europeenne) et (acheteur = entreprise avec num TVA) intra alors TVA par defaut=0. Fin de regle
|
* Si (vendeur et acheteur dans Communaute europeenne) et (acheteur = entreprise avec num TVA) intra alors TVA par defaut=0. Fin de regle
|
||||||
Sinon TVA proposee par defaut=0. Fin de regle.
|
* Sinon TVA proposee par defaut=0. Fin de regle.
|
||||||
\param societe_vendeuse Objet societe vendeuse
|
* \param societe_vendeuse Objet societe vendeuse
|
||||||
\param societe_acheteuse Objet societe acheteuse
|
* \param societe_acheteuse Objet societe acheteuse
|
||||||
\param taux_produit Taux par defaut du produit vendu
|
* \param taux_produit Taux par defaut du produit vendu
|
||||||
\return float 0 or 1
|
* \return float 0 or 1
|
||||||
*/
|
*/
|
||||||
function get_default_npr($societe_vendeuse, $societe_acheteuse, $taux_produit)
|
function get_default_npr($societe_vendeuse, $societe_acheteuse, $taux_produit)
|
||||||
{
|
{
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2644,7 +2643,7 @@ function get_exdir($num,$level=3,$alpha=0)
|
|||||||
/**
|
/**
|
||||||
* \brief Creation of a directory (recursive)
|
* \brief Creation of a directory (recursive)
|
||||||
* \param $dir Directory to create
|
* \param $dir Directory to create
|
||||||
* \return int < 0 if KO, >= 0 if OK
|
* \return int < 0 if KO, 0 = already exists, > 0 if OK
|
||||||
*/
|
*/
|
||||||
function create_exdir($dir)
|
function create_exdir($dir)
|
||||||
{
|
{
|
||||||
@ -2652,7 +2651,8 @@ function create_exdir($dir)
|
|||||||
|
|
||||||
dol_syslog("functions.lib::create_exdir: dir=".$dir,LOG_INFO);
|
dol_syslog("functions.lib::create_exdir: dir=".$dir,LOG_INFO);
|
||||||
|
|
||||||
if (@is_dir($dir)) return 0;
|
$dir_osencoded=dol_osencode($dir);
|
||||||
|
if (@is_dir($dir_osencoded)) return 0;
|
||||||
|
|
||||||
$nberr=0;
|
$nberr=0;
|
||||||
$nbcreated=0;
|
$nbcreated=0;
|
||||||
@ -2669,7 +2669,8 @@ function create_exdir($dir)
|
|||||||
// (ex selon config de open_basedir)
|
// (ex selon config de open_basedir)
|
||||||
if ($ccdir)
|
if ($ccdir)
|
||||||
{
|
{
|
||||||
if (! @is_dir($ccdir))
|
$ccdir_osencoded=dol_osencode($ccdir);
|
||||||
|
if (! @is_dir($ccdir_osencoded))
|
||||||
{
|
{
|
||||||
dol_syslog("functions.lib::create_exdir: Directory '".$ccdir."' does not exists or is outside open_basedir PHP setting.",LOG_DEBUG);
|
dol_syslog("functions.lib::create_exdir: Directory '".$ccdir."' does not exists or is outside open_basedir PHP setting.",LOG_DEBUG);
|
||||||
|
|
||||||
@ -2677,7 +2678,7 @@ function create_exdir($dir)
|
|||||||
$dirmaskdec=octdec('0755');
|
$dirmaskdec=octdec('0755');
|
||||||
if (! empty($conf->global->MAIN_UMASK)) $dirmaskdec=octdec($conf->global->MAIN_UMASK);
|
if (! empty($conf->global->MAIN_UMASK)) $dirmaskdec=octdec($conf->global->MAIN_UMASK);
|
||||||
$dirmaskdec |= octdec('0110');
|
$dirmaskdec |= octdec('0110');
|
||||||
if (! @mkdir($ccdir, $dirmaskdec))
|
if (! @mkdir($ccdir_osencoded, $dirmaskdec))
|
||||||
{
|
{
|
||||||
// Si le is_dir a renvoye une fausse info, alors on passe ici.
|
// Si le is_dir a renvoye une fausse info, alors on passe ici.
|
||||||
dol_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING);
|
dol_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING);
|
||||||
|
|||||||
@ -2311,19 +2311,17 @@ class Product extends CommonObject
|
|||||||
$dir = $sdir .'/'. get_exdir($this->id,2) . $this->id ."/";
|
$dir = $sdir .'/'. get_exdir($this->id,2) . $this->id ."/";
|
||||||
$dir .= "photos/";
|
$dir .= "photos/";
|
||||||
|
|
||||||
if (! file_exists($dir))
|
create_exdir($dir);
|
||||||
{
|
|
||||||
create_exdir($dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file_exists($dir))
|
$dir_osencoded=$dir;
|
||||||
|
if (file_exists($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);
|
||||||
|
|
||||||
if (file_exists($originImage))
|
if (file_exists(dol_osencode($originImage)))
|
||||||
{
|
{
|
||||||
// Cree fichier en taille vignette
|
// Cree fichier en taille vignette
|
||||||
$this->add_thumb($originImage,$maxWidth,$maxHeight);
|
$this->add_thumb($originImage,$maxWidth,$maxHeight);
|
||||||
@ -2342,7 +2340,8 @@ class Product extends CommonObject
|
|||||||
{
|
{
|
||||||
require_once(DOL_DOCUMENT_ROOT ."/lib/images.lib.php");
|
require_once(DOL_DOCUMENT_ROOT ."/lib/images.lib.php");
|
||||||
|
|
||||||
if (file_exists($file))
|
$file_osencoded=dol_osencode($file);
|
||||||
|
if (file_exists($file_osencoded))
|
||||||
{
|
{
|
||||||
vignette($file,$maxWidth,$maxHeight);
|
vignette($file,$maxWidth,$maxHeight);
|
||||||
}
|
}
|
||||||
@ -2354,27 +2353,28 @@ class Product extends CommonObject
|
|||||||
* \param $files url de l'image
|
* \param $files url de l'image
|
||||||
* \author Jean Heimburger juin 2007
|
* \author Jean Heimburger juin 2007
|
||||||
*/
|
*/
|
||||||
function add_photo_web($sdir, $files)
|
function add_photo_web($sdir, $file)
|
||||||
{
|
{
|
||||||
$dir = $sdir .'/'. get_exdir($this->id,2) . $this->id ."/";
|
$dir = $sdir .'/'. get_exdir($this->id,2) . $this->id ."/";
|
||||||
$dir .= "photos/";
|
$dir .= "photos/";
|
||||||
|
|
||||||
if (! file_exists($dir))
|
$dir_osencoded=dol_osencode($dir);
|
||||||
|
if (! file_exists($dir_osencoded))
|
||||||
{
|
{
|
||||||
dol_syslog("Product Create $dir");
|
dol_syslog("Product Create ".$dir);
|
||||||
create_exdir($dir);
|
create_exdir($dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_exists($dir))
|
if (file_exists($dir_osencoded))
|
||||||
{
|
{
|
||||||
// Cree fichier en taille vignette
|
// Cree fichier en taille vignette
|
||||||
// \todo A faire
|
// \todo A faire
|
||||||
|
|
||||||
// Cree fichier en taille origine
|
// Cree fichier en taille origine
|
||||||
$content = file_get_contents($files);
|
$content = file_get_contents($file);
|
||||||
|
|
||||||
$nom = basename($files);
|
$nom = basename($file);
|
||||||
$im = fopen($dir.$nom,'wb');
|
$im = fopen(dol_osencode($dir.$nom),'wb');
|
||||||
fwrite($im, $content);
|
fwrite($im, $content);
|
||||||
fclose($im);
|
fclose($im);
|
||||||
// }
|
// }
|
||||||
@ -2394,12 +2394,14 @@ class Product extends CommonObject
|
|||||||
$dir = $sdir . '/'. $pdir;
|
$dir = $sdir . '/'. $pdir;
|
||||||
|
|
||||||
$nbphoto=0;
|
$nbphoto=0;
|
||||||
if (file_exists($dir))
|
|
||||||
|
$dir_osencoded=dol_osencode($dir);
|
||||||
|
if (file_exists($dir_osencoded))
|
||||||
{
|
{
|
||||||
$handle=opendir($dir);
|
$handle=opendir($dir_osencoded);
|
||||||
while (($file = readdir($handle)) != false)
|
while (($file = readdir($handle)) != false)
|
||||||
{
|
{
|
||||||
if (! utf8_check($file)) $file=utf8_encode($file); // readdir returns ISO
|
if (! utf8_check($file)) $file=utf8_encode($file); // To be sure data is stored in UTF8 in memory
|
||||||
if (dol_is_file($dir.$file)) return true;
|
if (dol_is_file($dir.$file)) return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2425,14 +2427,17 @@ class Product extends CommonObject
|
|||||||
$pdirthumb = $pdir.'thumbs/';
|
$pdirthumb = $pdir.'thumbs/';
|
||||||
|
|
||||||
$nbphoto=0;
|
$nbphoto=0;
|
||||||
if (file_exists($dir))
|
|
||||||
|
$dir_osencoded=dol_osencode($dir);
|
||||||
|
if (file_exists($dir_osencoded))
|
||||||
{
|
{
|
||||||
$handle=opendir($dir);
|
$handle=opendir($dir_osencoded);
|
||||||
while (($file = readdir($handle)) != false)
|
while (($file = readdir($handle)) != false)
|
||||||
{
|
{
|
||||||
$photo='';
|
$photo='';
|
||||||
|
|
||||||
if (! utf8_check($file)) $file=utf8_encode($file); // readdir returns ISO
|
if (! utf8_check($file)) $file=utf8_encode($file); // To be sure date is stored in UTF8 in memory
|
||||||
|
|
||||||
if (dol_is_file($dir.$file))
|
if (dol_is_file($dir.$file))
|
||||||
{
|
{
|
||||||
$nbphoto++;
|
$nbphoto++;
|
||||||
@ -2454,7 +2459,7 @@ class Product extends CommonObject
|
|||||||
print '<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart=product&file='.urlencode($pdir.$photo).'" alt="Taille origine" target="_blank">';
|
print '<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart=product&file='.urlencode($pdir.$photo).'" alt="Taille origine" target="_blank">';
|
||||||
|
|
||||||
// Si fichier vignette disponible, on l'utilise, sinon on utilise photo origine
|
// Si fichier vignette disponible, on l'utilise, sinon on utilise photo origine
|
||||||
if ($photo_vignette && is_file($dirthumb.$photo_vignette)) {
|
if ($photo_vignette && dol_is_file($dirthumb.$photo_vignette)) {
|
||||||
print '<img border="0" height="120" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=product&file='.urlencode($pdirthumb.$photo_vignette).'">';
|
print '<img border="0" height="120" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=product&file='.urlencode($pdirthumb.$photo_vignette).'">';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -2506,9 +2511,8 @@ class Product extends CommonObject
|
|||||||
$nbphoto=0;
|
$nbphoto=0;
|
||||||
$tabobj=array();
|
$tabobj=array();
|
||||||
|
|
||||||
$newdir=utf8_check($dir)?utf8_decode($dir):$dir;
|
$dir_osencoded=dol_osencode($dir);
|
||||||
|
$handle=@opendir($dir_osencoded);
|
||||||
$handle=@opendir($newdir);
|
|
||||||
if ($handle)
|
if ($handle)
|
||||||
{
|
{
|
||||||
while (($file = readdir($handle)) != false)
|
while (($file = readdir($handle)) != false)
|
||||||
@ -2564,7 +2568,7 @@ class Product extends CommonObject
|
|||||||
if (preg_match('/(\.jpg|\.bmp|\.gif|\.png|\.tiff)$/i',$filename,$regs))
|
if (preg_match('/(\.jpg|\.bmp|\.gif|\.png|\.tiff)$/i',$filename,$regs))
|
||||||
{
|
{
|
||||||
$photo_vignette=preg_replace('/'.$regs[0].'/i','',$filename).'_small'.$regs[0];
|
$photo_vignette=preg_replace('/'.$regs[0].'/i','',$filename).'_small'.$regs[0];
|
||||||
if (file_exists($dirthumb.$photo_vignette))
|
if (file_exists(dol_osencode($dirthumb.$photo_vignette)))
|
||||||
{
|
{
|
||||||
dol_delete_file($dirthumb.$photo_vignette);
|
dol_delete_file($dirthumb.$photo_vignette);
|
||||||
}
|
}
|
||||||
@ -2577,8 +2581,8 @@ class Product extends CommonObject
|
|||||||
*/
|
*/
|
||||||
function get_image_size($file)
|
function get_image_size($file)
|
||||||
{
|
{
|
||||||
$newfile=utf8_check($file)?utf8_decode($file):$file;
|
$file_osencoded=dol_osencode($file);
|
||||||
$infoImg = getimagesize($newfile); // Get information on image
|
$infoImg = getimagesize($file_osencoded); // Get information on image
|
||||||
$this->imgWidth = $infoImg[0]; // Largeur de l'image
|
$this->imgWidth = $infoImg[0]; // Largeur de l'image
|
||||||
$this->imgHeight = $infoImg[1]; // Hauteur de l'image
|
$this->imgHeight = $infoImg[1]; // Hauteur de l'image
|
||||||
}
|
}
|
||||||
|
|||||||
@ -382,10 +382,10 @@ else // Open and return file
|
|||||||
|
|
||||||
// Output files on browser
|
// Output files on browser
|
||||||
dol_syslog("viewimage.php return file $original_file content-type=$type");
|
dol_syslog("viewimage.php return file $original_file content-type=$type");
|
||||||
$neworiginal_file=utf8_check($original_file)?utf8_decode($original_file):$original_file;
|
$original_file_osencoded=dol_osencode($original_file);
|
||||||
|
|
||||||
// This test if file exists should be useless. We keep it to find bug more easily
|
// This test if file exists should be useless. We keep it to find bug more easily
|
||||||
if (! file_exists($neworiginal_file))
|
if (! file_exists($original_file_osencoded))
|
||||||
{
|
{
|
||||||
$langs->load("main");
|
$langs->load("main");
|
||||||
dol_print_error(0,$langs->trans("ErrorFileDoesNotExists",$_GET["file"]));
|
dol_print_error(0,$langs->trans("ErrorFileDoesNotExists",$_GET["file"]));
|
||||||
@ -402,7 +402,7 @@ else // Open and return file
|
|||||||
header('Content-type: image/png');
|
header('Content-type: image/png');
|
||||||
}
|
}
|
||||||
|
|
||||||
readfile($neworiginal_file); // Need a path in ISO
|
readfile($original_file_osencoded);
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user