Skip to content

Commit

Permalink
Merge pull request #1016 from jeffpardy/manage-acls
Browse files Browse the repository at this point in the history
Improve performance querying group_folders_manage
  • Loading branch information
juliusknorr authored Sep 1, 2020
2 parents e446183 + 510647a commit 900b736
Showing 1 changed file with 25 additions and 6 deletions.
31 changes: 25 additions & 6 deletions lib/Folder/FolderManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,29 +110,48 @@ public function getAllFoldersWithSize($rootStorageId) {

$rows = $query->execute()->fetchAll();

$folderMappings = $this->getAllFolderMappings();

$folderMap = [];
foreach ($rows as $row) {
$id = (int)$row['folder_id'];
$mappings = $folderMappings[$id] ?? [];
$folderMap[$id] = [
'id' => $id,
'mount_point' => $row['mount_point'],
'groups' => isset($applicableMap[$id]) ? $applicableMap[$id] : [],
'quota' => $row['quota'],
'size' => $row['size'] ? $row['size'] : 0,
'acl' => (bool)$row['acl'],
'manage' => $this->getManageAcl($id)
'manage' => $this->getManageAcl($mappings)
];
}

return $folderMap;
}

private function getManageAcl($folderId) {
private function getAllFolderMappings() {
$query = $this->connection->getQueryBuilder();
$query->select('*')
->from('group_folders_manage')
->where($query->expr()->eq('folder_id', $query->createNamedParameter($folderId)));
$result = $query->execute()->fetchAll();
->from('group_folders_manage');
$rows = $query->execute()->fetchAll();

$folderMap = [];
foreach ($rows as $row) {
$id = (int)$row['folder_id'];

if (!isset($folderMap[$id])) {
$folderMap[$id] = [$row];
}
else {
$folderMap[$id][] = $row;
}
}

return $folderMap;
}

private function getManageAcl($mappings) {
return array_filter(array_map(function ($entry) {
if ($entry['mapping_type'] === 'user') {
$user = \OC::$server->getUserManager()->get($entry['mapping_id']);
Expand All @@ -154,7 +173,7 @@ private function getManageAcl($folderId) {
'id' => $group->getGID(),
'displayname' => $group->getDisplayName()
];
}, $result), function($element) { return $element !== null; });
}, $mappings), function($element) { return $element !== null; });
}

public function getFolder($id, $rootStorageId) {
Expand Down

0 comments on commit 900b736

Please sign in to comment.