mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-26 16:48:49 +01:00
Fix editing a file through gave not found error if the symlink was in a versioned directory
This commit is contained in:
parent
98b2f3f4d3
commit
6be5b8f678
@ -449,22 +449,8 @@ class Sharing
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(parse_url($path, PHP_URL_SCHEME) !== 'vfs')
|
$vfs_path = static::resolve_path($path);
|
||||||
{
|
$exists = !!($vfs_path);
|
||||||
$path = 'vfs://default'.($path[0] == '/' ? '' : '/').$path;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (($exists = ($stat = Vfs::stat($path)) && Vfs::check_access($path, Vfs::READABLE, $stat)))
|
|
||||||
{
|
|
||||||
if (!preg_match("/^(sqlfs|vfs)/", $stat['url']))
|
|
||||||
{
|
|
||||||
$vfs_path = Vfs::parse_url($path, PHP_URL_PATH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$vfs_path = Vfs::parse_url($stat['url'], PHP_URL_PATH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// check if file exists and is readable
|
// check if file exists and is readable
|
||||||
if (!$exists)
|
if (!$exists)
|
||||||
@ -569,6 +555,36 @@ class Sharing
|
|||||||
return $share;
|
return $share;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the actual VFS path for the given path
|
||||||
|
*
|
||||||
|
* We follow links & resolve whatever is possible so that when the share is
|
||||||
|
* mounted later (possibly by anonymous) the file can be found.
|
||||||
|
*
|
||||||
|
* @param string $path
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function resolve_path($path)
|
||||||
|
{
|
||||||
|
$vfs_path = $path;
|
||||||
|
if(parse_url($path, PHP_URL_SCHEME) !== 'vfs')
|
||||||
|
{
|
||||||
|
$path = 'vfs://default'.($path[0] == '/' ? '' : '/').$path;
|
||||||
|
}
|
||||||
|
if (($exists = ($stat = Vfs::stat($path)) && Vfs::check_access($path, Vfs::READABLE, $stat)))
|
||||||
|
{
|
||||||
|
if (!preg_match("/^(sqlfs|vfs|stylite\.versioning)/", $stat['url']))
|
||||||
|
{
|
||||||
|
$vfs_path = Vfs::parse_url($path, PHP_URL_PATH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$vfs_path = Vfs::parse_url($stat['url'], PHP_URL_PATH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $vfs_path;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Api\Storage\Base instance for egw_sharing table
|
* Api\Storage\Base instance for egw_sharing table
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user