mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
fix: Use default share folder of the user on share accept
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
parent
f05ae48fdf
commit
12ceeacb0e
2 changed files with 19 additions and 7 deletions
|
|
@ -13,12 +13,14 @@ use OC\Share20\Exception\BackendError;
|
|||
use OC\Share20\Exception\InvalidShare;
|
||||
use OC\Share20\Exception\ProviderException;
|
||||
use OC\User\LazyUser;
|
||||
use OCA\Files_Sharing\AppInfo\Application;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\DB\QueryBuilder\IQueryBuilder;
|
||||
use OCP\Defaults;
|
||||
use OCP\Files\Folder;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\Files\Node;
|
||||
use OCP\IConfig;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IGroupManager;
|
||||
use OCP\IL10N;
|
||||
|
|
@ -58,6 +60,7 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
|
|||
private ITimeFactory $timeFactory,
|
||||
private LoggerInterface $logger,
|
||||
private IManager $shareManager,
|
||||
private IConfig $config,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -485,6 +488,15 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
|
|||
protected function createUserSpecificGroupShare(IShare $share, string $recipient): int {
|
||||
$type = $share->getNodeType();
|
||||
|
||||
$shareFolder = $this->config->getSystemValue('share_folder', '/');
|
||||
$allowCustomShareFolder = $this->config->getSystemValueBool('sharing.allow_custom_share_folder', true);
|
||||
if ($allowCustomShareFolder) {
|
||||
$shareFolder = $this->config->getUserValue($recipient, Application::APP_ID, 'share_folder', $shareFolder);
|
||||
}
|
||||
|
||||
$target = $shareFolder . '/' . $share->getNode()->getName();
|
||||
$target = \OC\Files\Filesystem::normalizePath($target);
|
||||
|
||||
$qb = $this->dbConn->getQueryBuilder();
|
||||
$qb->insert('share')
|
||||
->values([
|
||||
|
|
@ -496,7 +508,7 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
|
|||
'item_type' => $qb->createNamedParameter($type),
|
||||
'item_source' => $qb->createNamedParameter($share->getNodeId()),
|
||||
'file_source' => $qb->createNamedParameter($share->getNodeId()),
|
||||
'file_target' => $qb->createNamedParameter($share->getTarget()),
|
||||
'file_target' => $qb->createNamedParameter($target),
|
||||
'permissions' => $qb->createNamedParameter($share->getPermissions()),
|
||||
'stime' => $qb->createNamedParameter($share->getShareTime()->getTimestamp()),
|
||||
])->executeStatement();
|
||||
|
|
|
|||
|
|
@ -704,12 +704,12 @@ class Manager implements IManager {
|
|||
}
|
||||
|
||||
// Generate the target
|
||||
$defaultShareFolder = $this->config->getSystemValue('share_folder', '/');
|
||||
$allowCustomShareFolder = $this->config->getSystemValueBool('sharing.allow_custom_share_folder', true);
|
||||
if ($allowCustomShareFolder) {
|
||||
$shareFolder = $this->config->getUserValue($share->getSharedWith(), Application::APP_ID, 'share_folder', $defaultShareFolder);
|
||||
} else {
|
||||
$shareFolder = $defaultShareFolder;
|
||||
$shareFolder = $this->config->getSystemValue('share_folder', '/');
|
||||
if ($share->getShareType() === IShare::TYPE_USER) {
|
||||
$allowCustomShareFolder = $this->config->getSystemValueBool('sharing.allow_custom_share_folder', true);
|
||||
if ($allowCustomShareFolder) {
|
||||
$shareFolder = $this->config->getUserValue($share->getSharedWith(), Application::APP_ID, 'share_folder', $shareFolder);
|
||||
}
|
||||
}
|
||||
|
||||
$target = $shareFolder . '/' . $share->getNode()->getName();
|
||||
|
|
|
|||
Loading…
Reference in a new issue