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
|
||||
\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 (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 = entreprise avec num TVA) intra alors TVA par defaut=0. Fin de regle
|
||||
Sinon TVA proposee par defaut=0. Fin de regle.
|
||||
\param societe_vendeuse Objet societe vendeuse
|
||||
\param societe_acheteuse Objet societe acheteuse
|
||||
\param taux_produit Taux par defaut du produit vendu
|
||||
\return float 0 or 1
|
||||
* \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.
|
||||
* 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 (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
|
||||
* Sinon TVA proposee par defaut=0. Fin de regle.
|
||||
* \param societe_vendeuse Objet societe vendeuse
|
||||
* \param societe_acheteuse Objet societe acheteuse
|
||||
* \param taux_produit Taux par defaut du produit vendu
|
||||
* \return float 0 or 1
|
||||
*/
|
||||
function get_default_npr($societe_vendeuse, $societe_acheteuse, $taux_produit)
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2644,7 +2643,7 @@ function get_exdir($num,$level=3,$alpha=0)
|
||||
/**
|
||||
* \brief Creation of a directory (recursive)
|
||||
* \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)
|
||||
{
|
||||
@ -2652,7 +2651,8 @@ function create_exdir($dir)
|
||||
|
||||
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;
|
||||
$nbcreated=0;
|
||||
@ -2669,7 +2669,8 @@ function create_exdir($dir)
|
||||
// (ex selon config de open_basedir)
|
||||
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);
|
||||
|
||||
@ -2677,7 +2678,7 @@ function create_exdir($dir)
|
||||
$dirmaskdec=octdec('0755');
|
||||
if (! empty($conf->global->MAIN_UMASK)) $dirmaskdec=octdec($conf->global->MAIN_UMASK);
|
||||
$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.
|
||||
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 .= "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'];
|
||||
|
||||
// Cree fichier en taille origine
|
||||
$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
|
||||
$this->add_thumb($originImage,$maxWidth,$maxHeight);
|
||||
@ -2342,7 +2340,8 @@ class Product extends CommonObject
|
||||
{
|
||||
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);
|
||||
}
|
||||
@ -2354,27 +2353,28 @@ class Product extends CommonObject
|
||||
* \param $files url de l'image
|
||||
* \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 .= "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);
|
||||
}
|
||||
|
||||
if (file_exists($dir))
|
||||
if (file_exists($dir_osencoded))
|
||||
{
|
||||
// Cree fichier en taille vignette
|
||||
// \todo A faire
|
||||
|
||||
// Cree fichier en taille origine
|
||||
$content = file_get_contents($files);
|
||||
$content = file_get_contents($file);
|
||||
|
||||
$nom = basename($files);
|
||||
$im = fopen($dir.$nom,'wb');
|
||||
$nom = basename($file);
|
||||
$im = fopen(dol_osencode($dir.$nom),'wb');
|
||||
fwrite($im, $content);
|
||||
fclose($im);
|
||||
// }
|
||||
@ -2394,12 +2394,14 @@ class Product extends CommonObject
|
||||
$dir = $sdir . '/'. $pdir;
|
||||
|
||||
$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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -2425,14 +2427,17 @@ class Product extends CommonObject
|
||||
$pdirthumb = $pdir.'thumbs/';
|
||||
|
||||
$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)
|
||||
{
|
||||
$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))
|
||||
{
|
||||
$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">';
|
||||
|
||||
// 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).'">';
|
||||
}
|
||||
else {
|
||||
@ -2506,9 +2511,8 @@ class Product extends CommonObject
|
||||
$nbphoto=0;
|
||||
$tabobj=array();
|
||||
|
||||
$newdir=utf8_check($dir)?utf8_decode($dir):$dir;
|
||||
|
||||
$handle=@opendir($newdir);
|
||||
$dir_osencoded=dol_osencode($dir);
|
||||
$handle=@opendir($dir_osencoded);
|
||||
if ($handle)
|
||||
{
|
||||
while (($file = readdir($handle)) != false)
|
||||
@ -2564,7 +2568,7 @@ class Product extends CommonObject
|
||||
if (preg_match('/(\.jpg|\.bmp|\.gif|\.png|\.tiff)$/i',$filename,$regs))
|
||||
{
|
||||
$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);
|
||||
}
|
||||
@ -2577,8 +2581,8 @@ class Product extends CommonObject
|
||||
*/
|
||||
function get_image_size($file)
|
||||
{
|
||||
$newfile=utf8_check($file)?utf8_decode($file):$file;
|
||||
$infoImg = getimagesize($newfile); // Get information on image
|
||||
$file_osencoded=dol_osencode($file);
|
||||
$infoImg = getimagesize($file_osencoded); // Get information on image
|
||||
$this->imgWidth = $infoImg[0]; // Largeur de l'image
|
||||
$this->imgHeight = $infoImg[1]; // Hauteur de l'image
|
||||
}
|
||||
|
||||
@ -382,10 +382,10 @@ else // Open and return file
|
||||
|
||||
// Output files on browser
|
||||
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
|
||||
if (! file_exists($neworiginal_file))
|
||||
if (! file_exists($original_file_osencoded))
|
||||
{
|
||||
$langs->load("main");
|
||||
dol_print_error(0,$langs->trans("ErrorFileDoesNotExists",$_GET["file"]));
|
||||
@ -402,7 +402,7 @@ else // Open and return file
|
||||
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