mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-15 12:34:33 +01:00
* Sharing/Collabora: allow to use Collabora on writable shares (EPL only)
This commit is contained in:
parent
ef7956f34b
commit
4ebf79d0e1
@ -1974,6 +1974,11 @@ class Vfs
|
|||||||
*/
|
*/
|
||||||
static public function get_home_dir()
|
static public function get_home_dir()
|
||||||
{
|
{
|
||||||
|
// with sharing active we have no home, use /
|
||||||
|
if ($GLOBALS['egw_info']['user']['account_id'] != self::$user)
|
||||||
|
{
|
||||||
|
return '/';
|
||||||
|
}
|
||||||
$start = '/home/'.$GLOBALS['egw_info']['user']['account_lid'];
|
$start = '/home/'.$GLOBALS['egw_info']['user']['account_lid'];
|
||||||
|
|
||||||
// check if user specified a valid startpath in his prefs --> use it
|
// check if user specified a valid startpath in his prefs --> use it
|
||||||
|
@ -286,6 +286,12 @@ class Sharing
|
|||||||
$GLOBALS['egw_info']['user']['apps'] = array(
|
$GLOBALS['egw_info']['user']['apps'] = array(
|
||||||
'filemanager' => $GLOBALS['egw_info']['apps']['filemanager']
|
'filemanager' => $GLOBALS['egw_info']['apps']['filemanager']
|
||||||
);
|
);
|
||||||
|
// check if sharee has Collabora run rights --> give is to share too
|
||||||
|
$apps = $GLOBALS['egw']->acl->get_user_applications($share['share_owner']);
|
||||||
|
if (!empty($apps['collabora']))
|
||||||
|
{
|
||||||
|
$GLOBALS['egw_info']['user']['apps']['collabora'] = $GLOBALS['egw_info']['apps']['collabora'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// we have a session we want to keep, but share owner is different from current user and we dont need filemanager UI
|
// we have a session we want to keep, but share owner is different from current user and we dont need filemanager UI
|
||||||
// --> we dont need session and close it, to not modifiy it
|
// --> we dont need session and close it, to not modifiy it
|
||||||
@ -412,9 +418,11 @@ class Sharing
|
|||||||
{
|
{
|
||||||
$path = 'vfs://default'.($path[0] == '/' ? '' : '/').$path;
|
$path = 'vfs://default'.($path[0] == '/' ? '' : '/').$path;
|
||||||
}
|
}
|
||||||
$stat = Vfs::stat($path);
|
|
||||||
$vfs_path = Vfs::parse_url($stat['url'], PHP_URL_PATH);
|
if (($exists = ($stat = Vfs::stat($path)) && Vfs::check_access($path, Vfs::READABLE, $stat)))
|
||||||
$exists = Vfs::file_exists($vfs_path) && Vfs::is_readable($vfs_path);
|
{
|
||||||
|
$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)
|
||||||
@ -425,7 +433,7 @@ class Sharing
|
|||||||
if (($mode != self::LINK || isset($path2tmp[$path])) &&
|
if (($mode != self::LINK || isset($path2tmp[$path])) &&
|
||||||
($share = self::$db->select(self::TABLE, '*', $extra+array(
|
($share = self::$db->select(self::TABLE, '*', $extra+array(
|
||||||
'share_path' => $mode == 'link' ? $path2tmp[$path] : $vfs_path,
|
'share_path' => $mode == 'link' ? $path2tmp[$path] : $vfs_path,
|
||||||
'share_owner' => $GLOBALS['egw_info']['user']['account_id'],
|
'share_owner' => Vfs::$user,
|
||||||
'share_expires' => null,
|
'share_expires' => null,
|
||||||
'share_passwd' => null,
|
'share_passwd' => null,
|
||||||
'share_writable'=> false,
|
'share_writable'=> false,
|
||||||
@ -501,8 +509,8 @@ class Sharing
|
|||||||
try {
|
try {
|
||||||
self::$db->insert(self::TABLE, $share = array(
|
self::$db->insert(self::TABLE, $share = array(
|
||||||
'share_token' => self::token(),
|
'share_token' => self::token(),
|
||||||
'share_path' => Vfs::parse_url($path, PHP_URL_PATH),
|
'share_path' => $vfs_path,
|
||||||
'share_owner' => $GLOBALS['egw_info']['user']['account_id'],
|
'share_owner' => Vfs::$user,
|
||||||
'share_with' => implode(',', (array)$recipients),
|
'share_with' => implode(',', (array)$recipients),
|
||||||
'share_created' => time(),
|
'share_created' => time(),
|
||||||
)+$extra, false, __LINE__, __FILE__);
|
)+$extra, false, __LINE__, __FILE__);
|
||||||
|
Loading…
Reference in New Issue
Block a user