diff --git a/htdocs/lib/files.lib.php b/htdocs/lib/files.lib.php index 37698faf74a..6a7f71a2fe1 100644 --- a/htdocs/lib/files.lib.php +++ b/htdocs/lib/files.lib.php @@ -37,22 +37,24 @@ */ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefilter="", $sortcriteria="name", $sortorder=SORT_ASC, $mode=0) { - dol_syslog("files.lib.php::dol_dir_list $path"); + dol_syslog("files.lib.php::dol_dir_list path=".$path." types=".$types." recursive=".$recursive." filter=".$filter." excludefilter=".$excludefilter); $loaddate=$mode?true:false; $loadsize=$mode?true:false; // Clean parameters - $path=eregi_replace('[\\/]+$','',utf8_check($path)?utf8_decode($path):$path); + $path=eregi_replace('[\\/]+$','',$path); + $newpath=(utf8_check($path)?utf8_decode($path):$path); - if (! is_dir($path)) return array(); + if (! is_dir($newpath)) return array(); - if ($dir = opendir($path)) + if ($dir = opendir($newpath)) { $file_list = array(); while (false !== ($file = readdir($dir))) { // readdir return value in ISO and we want UTF8 in memory + $newfile=$file; if (! utf8_check($file)) $file=utf8_encode($file); $qualified=1; @@ -64,11 +66,11 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil if ($qualified) { // Check whether this is a file or directory and whether we're interested in that type - if (is_dir($path."/".$file) && (($types=="directories") || ($types=="all"))) + if (is_dir($newpath."/".$newfile) && (($types=="directories") || ($types=="all"))) { // Add entry into file_list array - if ($loaddate || $sortcriteria == 'date') $filedate=filemtime(utf8_check($path."/".$file)?utf8_decode($path."/".$file):$path."/".$file); - if ($loadsize || $sortcriteria == 'size') $filesize=filesize(utf8_check($path."/".$file)?utf8_decode($path."/".$file):$path."/".$file); + if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file); + if ($loadsize || $sortcriteria == 'size') $filesize=dol_filesize($path."/".$file); if (! $filter || eregi($filter,$path.'/'.$file)) { @@ -84,14 +86,14 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil // if we're in a directory and we want recursive behavior, call this function again if ($recursive) { - $file_list = array_merge($file_list, dol_dir_list($path."/".$file."/", $types, $recursive, $filter, $excludefilter, $sortcriteria, $sortorder)); + $file_list = array_merge($file_list,dol_dir_list($path."/".$file."/", $types, $recursive, $filter, $excludefilter, $sortcriteria, $sortorder)); } } - else if (! is_dir($path."/".$file) && (($types == "files") || ($types == "all"))) + else if (! is_dir($newpath."/".$newfile) && (($types == "files") || ($types == "all"))) { // Add file into file_list array - if ($loaddate || $sortcriteria == 'date') $filedate=filemtime(utf8_check($path."/".$file)?utf8_decode($path."/".$file):$path."/".$file); - if ($loadsize || $sortcriteria == 'size') $filesize=filesize(utf8_check($path."/".$file)?utf8_decode($path."/".$file):$path."/".$file); + if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file); + if ($loadsize || $sortcriteria == 'size') $filesize=dol_filesize($path."/".$file); if (! $filter || eregi($filter,$path.'/'.$file)) { $file_list[] = array( @@ -120,7 +122,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil } else { - return false; + return array(); } } diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php index 70f3223a4e2..cd176e324c6 100644 --- a/htdocs/lib/functions.lib.php +++ b/htdocs/lib/functions.lib.php @@ -2190,22 +2190,26 @@ function dol_delete_dir_recursive($dir,$count=0) { while (false !== ($item = readdir($handle))) { + // readdir return value in ISO and we want UTF8 in memory + $newitem=$item; + if (! utf8_check($item)) $item=utf8_encode($item); + if ($item != "." && $item != "..") { - if (is_dir("$dir/$item")) + if (is_dir("$newdir/$newitem")) { $count=dol_delete_dir_recursive("$dir/$item",$count); } else { - unlink("$dir/$item"); + unlink("$newdir/$newitem"); $count++; //echo " removing $dir/$item
\n"; } } } closedir($handle); - rmdir($dir); + rmdir($newdir); $count++; //echo "removing $dir
\n"; }