From 02980093eea232e6680a21aaf238cb8ce5844c15 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 2 Apr 2005 13:44:44 +0000 Subject: [PATCH] Fix: La fonction create_exdir ne fonctionnais pas sous windows --- htdocs/lib/functions.inc.php | 62 +++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index 12e672e9db3..c8e990ed978 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -1320,40 +1320,52 @@ function departement_rowid($db,$code, $pays_id) } } +/** + * \brief Renvoi un chemin de classement répertoire en fonction d'un id + * Examples: 1->"0/0/1/", 15->"0/1/5/" + * \param $num id à décomposer + */ function get_exdir($num) { - $num = substr("000".$num, -3); - return substr($num, 0,1).'/'.substr($num, 1,1).'/'.substr($num, 2,1).'/'; + $num = substr("000".$num, -3); + return substr($num, 0,1).'/'.substr($num, 1,1).'/'.substr($num, 2,1).'/'; } -/* - * Création de répertoire recursive - * +/** + * \brief Création de répertoire recursive + * \param $dir Répertoire à créer + * \return int < 0 si erreur, >= 0 si succès */ function create_exdir($dir) { - $ccdir = ''; + $nberr=0; + $nbcreated=0; - $cdir = explode("/",substr($dir,1)); - - for ($i = 0 ; $i < sizeof($cdir) ; $i++) - { - $ccdir .= "/".$cdir[$i]; - - if (! file_exists($ccdir)) - { - umask(0); - if (! @mkdir($ccdir, 0755)) - { - dolibarr_syslog("create_exdir Erreur: Le répertoire '$ccdir' n'existe pas et Dolibarr n'a pu le créer."); - } - else - { - dolibarr_syslog("create_exdir Le répertoire '$ccdir' created"); - } - } - } + $ccdir = ''; + $cdir = explode("/",$dir); + for ($i = 0 ; $i < sizeof($cdir) ; $i++) + { + if ($i > 0) $ccdir .= '/'.$cdir[$i]; + else $ccdir = $cdir[$i]; + if (eregi("^.:$",$ccdir,$regs)) continue; // Si chemin Windows incomplet, on poursuit par rep suivant + //print "${ccdir}
\n"; + if ($ccdir && ! file_exists($ccdir)) + { + umask(0); + if (! @mkdir($ccdir, 0755)) + { + dolibarr_syslog("functions.inc.php::create_exdir Erreur: Le répertoire '$ccdir' n'existe pas et Dolibarr n'a pu le créer."); + $nberr++; + } + else + { + dolibarr_syslog("functions.inc.php::create_exdir Répertoire '$ccdir' created"); + $nbcreated++; + } + } + } + return ($nberr ? -$nberr : $nbcreated); } ?>