mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
Merge pull request #34471 from starypatyk/dav_read_share_notes
Reduce number of database queries during WebDAV propfind request
This commit is contained in:
commit
95d45c2058
2 changed files with 18 additions and 15 deletions
|
|
@ -355,23 +355,19 @@ abstract class Node implements \Sabre\DAV\INode {
|
|||
return '';
|
||||
}
|
||||
|
||||
$types = [
|
||||
IShare::TYPE_USER,
|
||||
IShare::TYPE_GROUP,
|
||||
IShare::TYPE_CIRCLE,
|
||||
IShare::TYPE_ROOM
|
||||
];
|
||||
|
||||
foreach ($types as $shareType) {
|
||||
$shares = $this->shareManager->getSharedWith($user, $shareType, $this, -1);
|
||||
foreach ($shares as $share) {
|
||||
$note = $share->getNote();
|
||||
if ($share->getShareOwner() !== $user && !empty($note)) {
|
||||
return $note;
|
||||
}
|
||||
}
|
||||
// Retrieve note from the share object already loaded into
|
||||
// memory, to avoid additional database queries.
|
||||
$storage = $this->getNode()->getStorage();
|
||||
if (!$storage->instanceOfStorage(\OCA\Files_Sharing\SharedStorage::class)) {
|
||||
return '';
|
||||
}
|
||||
/** @var \OCA\Files_Sharing\SharedStorage $storage */
|
||||
|
||||
$share = $storage->getShare();
|
||||
$note = $share->getNote();
|
||||
if ($share->getShareOwner() !== $user) {
|
||||
return $note;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -229,6 +229,13 @@ class MountProvider implements IMountProvider {
|
|||
->setShareType($shares[0]->getShareType())
|
||||
->setTarget($shares[0]->getTarget());
|
||||
|
||||
// Gather notes from all the shares.
|
||||
// Since these are readly available here, storing them
|
||||
// enables the DAV FilesPlugin to avoid executing many
|
||||
// DB queries to retrieve the same information.
|
||||
$allNotes = implode("\n", array_map(function ($sh) { return $sh->getNote(); }, $shares));
|
||||
$superShare->setNote($allNotes);
|
||||
|
||||
// use most permissive permissions
|
||||
// this covers the case where there are multiple shares for the same
|
||||
// file e.g. from different groups and different permissions
|
||||
|
|
|
|||
Loading…
Reference in a new issue