Fix: File functions works with filename with special chars

This commit is contained in:
Laurent Destailleur 2009-12-15 11:02:01 +00:00
parent d10e87c8c1
commit 9c5f2c803d

View File

@ -20,7 +20,7 @@
/**
* \file htdocs/lib/files.lib.php
* \brief Library for file managing functions
* \version $Id$
* \version $Id$
*/
/**
@ -44,7 +44,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
// Clean parameters
$path=preg_replace('/([\\/]+)$/i','',$path);
$newpath=(utf8_check($path)?utf8_decode($path):$path);
$newpath=dol_osencode($path);
if (! is_dir($newpath)) return array();
@ -53,9 +53,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
$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);
if (! utf8_check($file)) $file=utf8_encode($file); // To be sure data is stored in utf8 in memory
$qualified=1;
@ -66,7 +64,7 @@ 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($newpath."/".$newfile) && (($types=="directories") || ($types=="all")))
if (is_dir(dol_osencode($path."/".$file)) && (($types=="directories") || ($types=="all")))
{
// Add entry into file_list array
if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file);
@ -89,7 +87,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
$file_list = array_merge($file_list,dol_dir_list($path."/".$file."/", $types, $recursive, $filter, $excludefilter, $sortcriteria, $sortorder));
}
}
else if (! is_dir($newpath."/".$newfile) && (($types == "files") || ($types == "all")))
else if (! is_dir(dol_osencode($path."/".$file)) && (($types == "files") || ($types == "all")))
{
// Add file into file_list array
if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file);
@ -127,7 +125,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
}
/**
* \brief Compare 2 files
* \brief Fast compare of 2 files identified by their properties ->name, ->date and ->size
*
* @param unknown_type $a File 1
* @param unknown_type $b File 2
@ -219,7 +217,7 @@ function dol_mimetype($file)
*/
function dol_dir_is_emtpy($folder)
{
$newfolder=utf8_check($folder)?dol_osencode($folder):$folder; // The is_dir and opendir need ISO strings
$newfolder=dol_osencode($folder);
if (is_dir($newfolder))
{
$handle = opendir($newfolder);
@ -247,7 +245,7 @@ function dol_count_nb_of_line($file)
{
$nb=0;
$newfile=utf8_check($file)?dol_osencode($file):$file; // The fopen need ISO strings
$newfile=dol_osencode($file);
//print 'x'.$file;
$fp=fopen($newfile,'r');
if ($fp)
@ -276,7 +274,7 @@ function dol_count_nb_of_line($file)
*/
function dol_filesize($pathoffile)
{
$newpathoffile=utf8_check($pathoffile)?dol_osencode($pathoffile):$pathoffile;
$newpathoffile=dol_osencode($pathoffile);
return filesize($newpathoffile);
}
@ -288,7 +286,7 @@ function dol_filesize($pathoffile)
*/
function dol_filemtime($pathoffile)
{
$newpathoffile=utf8_check($pathoffile)?dol_osencode($pathoffile):$pathoffile;
$newpathoffile=dol_osencode($pathoffile);
return filemtime($newpathoffile);
}
@ -300,7 +298,7 @@ function dol_filemtime($pathoffile)
*/
function dol_is_file($pathoffile)
{
$newpathoffile=utf8_check($pathoffile)?dol_osencode($pathoffile):$pathoffile;
$newpathoffile=dol_osencode($pathoffile);
return is_file($newpathoffile);
}