mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-29 19:33:54 +01:00
* Filemanager/WebDAV: #?+ and chinese characters working now in filenames
This commit is contained in:
parent
a13dfef19e
commit
366bad914d
@ -915,15 +915,18 @@ function force_download(_action, _senders)
|
|||||||
{
|
{
|
||||||
$msg .= $_GET['msg'];
|
$msg .= $_GET['msg'];
|
||||||
}
|
}
|
||||||
if (!($path = $_GET['path']) || !($stat = egw_vfs::lstat($path)))
|
if (!($path = str_replace(array('#','?'),array('%23','%3F'),$_GET['path'])) || // ?, # need to stay encoded!
|
||||||
|
// actions enclose pathes containing comma with "
|
||||||
|
($path[0] == '"' && substr($path,-1) == '"' && !($path = substr(str_replace('""','"',$path),1,-1))) ||
|
||||||
|
!($stat = egw_vfs::lstat($path)))
|
||||||
{
|
{
|
||||||
$msg .= lang('File or directory not found!');
|
$msg .= lang('File or directory not found!')." path='$path', stat=".array2string($stat);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$content = $stat;
|
$content = $stat;
|
||||||
$content['name'] = egw_vfs::basename($path);
|
$content['name'] = egw_vfs::basename($path);
|
||||||
$content['dir'] = dirname($path);
|
$content['dir'] = egw_vfs::decodePath(egw_vfs::dirname($path));
|
||||||
$content['path'] = $path;
|
$content['path'] = $path;
|
||||||
$content['hsize'] = egw_vfs::hsize($stat['size']);
|
$content['hsize'] = egw_vfs::hsize($stat['size']);
|
||||||
$content['mime'] = egw_vfs::mime_content_type($path);
|
$content['mime'] = egw_vfs::mime_content_type($path);
|
||||||
|
@ -251,6 +251,9 @@ class vfs_webdav_server extends HTTP_WebDAV_Server_Filesystem
|
|||||||
*/
|
*/
|
||||||
function fileinfo($path)
|
function fileinfo($path)
|
||||||
{
|
{
|
||||||
|
// internally we require some url-encoding, as vfs_stream_wrapper uses URL's internally
|
||||||
|
$path = str_replace(array('#','?'),array('%23','%3F'),$path);
|
||||||
|
|
||||||
//error_log(__METHOD__."($path)");
|
//error_log(__METHOD__."($path)");
|
||||||
// map URI path to filesystem path
|
// map URI path to filesystem path
|
||||||
$fspath = $this->base . $path;
|
$fspath = $this->base . $path;
|
||||||
@ -259,10 +262,15 @@ class vfs_webdav_server extends HTTP_WebDAV_Server_Filesystem
|
|||||||
$info = array();
|
$info = array();
|
||||||
// TODO remove slash append code when base class is able to do it itself
|
// TODO remove slash append code when base class is able to do it itself
|
||||||
$info['path'] = is_dir($fspath) ? $this->_slashify($path) : $path;
|
$info['path'] = is_dir($fspath) ? $this->_slashify($path) : $path;
|
||||||
|
|
||||||
|
// remove all urlencoding we need internally in EGw, HTTP_WebDAV_Server will add it's own!
|
||||||
|
// rawurldecode does NOT touch +
|
||||||
|
$info['path'] = rawurldecode($info['path']);
|
||||||
|
|
||||||
$info['props'] = array();
|
$info['props'] = array();
|
||||||
|
|
||||||
// no special beautified displayname here ...
|
// no special beautified displayname here ...
|
||||||
$info['props'][] = HTTP_WebDAV_Server::mkprop ('displayname', egw_vfs::basename(self::_unslashify($path)));
|
$info['props'][] = HTTP_WebDAV_Server::mkprop ('displayname', egw_vfs::basename(self::_unslashify($info['path'])));
|
||||||
|
|
||||||
// creation and modification time
|
// creation and modification time
|
||||||
$info['props'][] = HTTP_WebDAV_Server::mkprop ('creationdate', filectime($fspath));
|
$info['props'][] = HTTP_WebDAV_Server::mkprop ('creationdate', filectime($fspath));
|
||||||
@ -304,7 +312,7 @@ class vfs_webdav_server extends HTTP_WebDAV_Server_Filesystem
|
|||||||
*/
|
*/
|
||||||
// ToDo: etag from inode and modification time
|
// ToDo: etag from inode and modification time
|
||||||
|
|
||||||
//error_log(__METHOD__."($path) info=".print_r($info,true));
|
//error_log(__METHOD__."($path) info=".array2string($info));
|
||||||
return $info;
|
return $info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user