diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php index fa98fb4fe96..322a2eb2815 100644 --- a/htdocs/lib/functions.lib.php +++ b/htdocs/lib/functions.lib.php @@ -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); diff --git a/htdocs/product.class.php b/htdocs/product.class.php index 018cd326f14..137ef4cc25c 100644 --- a/htdocs/product.class.php +++ b/htdocs/product.class.php @@ -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 ''; // 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 ''; } 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 } diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index 204468bcb0e..d66ff9b708c 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -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); } ?>