Skip to content

Commit

Permalink
Update OCP
Browse files Browse the repository at this point in the history
  • Loading branch information
nextcloud-command committed Mar 26, 2024
1 parent 5da2030 commit 2505973
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 4 deletions.
99 changes: 99 additions & 0 deletions OCP/Files/Cache/IFileAccess.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<?php

declare(strict_types=1);

/**
* @copyright Copyright (c) 2024 Robin Appelman <robin@icewind.nl>
*
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCP\Files\Cache;

/**
* Low level access to the file cache.
*
* This is intended for use cases where data from the filecache needs to be loaded, but the full filesystem apis are
* insufficient or too inefficient for the use-case.
*
* @since 29.0.0
*/
interface IFileAccess {
/**
* Get a filecache data by file id from a specific storage.
*
* This is preferred over `getByFileId` when the storage id is known as it
* can be more efficient in some setups.
*
* @param int $fileId
* @param int $storageId
* @return ICacheEntry|null
*
* @since 29.0.0
*/
public function getByFileIdInStorage(int $fileId, int $storageId): ?ICacheEntry;

/**
* Get a filecache data by path and storage id.
*
* @param string $path
* @param int $storageId
* @return ICacheEntry|null
*
* @since 29.0.0
*/
public function getByPathInStorage(string $path, int $storageId): ?ICacheEntry;

/**
* Get a filecache data by file id.
*
* If the storage id is known then `getByFileIdInStorage` is preferred as it can be more efficient in some setups.
*
* @param int $fileId
* @return ICacheEntry|null
*
* @since 29.0.0
*/
public function getByFileId(int $fileId): ?ICacheEntry;

/**
* Get filecache data by file ids.
*
* If the storage id is known then `getByFileIdsInStorage` is preferred as it can be more efficient in some setups.
*
* @param int[] $fileIds
* @return array<int, ICacheEntry>
*
* @since 29.0.0
*/
public function getByFileIds(array $fileIds): array;

/**
* Get filecache data by file ids from a specific storage.
*
* This is prefered over `getByFileIds` when the storage id is known as it
* can be more efficient in some setups.
*
* @param int[] $fileIds
* @param int $storageId
* @return array<int, ICacheEntry>
*
* @since 29.0.0
*/
public function getByFileIdsInStorage(array $fileIds, int $storageId): array;
}
11 changes: 7 additions & 4 deletions OCP/Share/IManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -256,9 +256,10 @@ public function userDeletedFromGroup($uid, $gid);
* |-folder2 (32)
* |-fileA (42)
*
* fileA is shared with user1 and user1@server1
* fileA is shared with user1 and user1@server1 and email1@maildomain1
* folder2 is shared with group2 (user4 is a member of group2)
* folder1 is shared with user2 (renamed to "folder (1)") and user2@server2
* and email2@maildomain2
*
* Then the access list to '/folder1/folder2/fileA' with $currentAccess is:
* [
Expand All @@ -272,15 +273,17 @@ public function userDeletedFromGroup($uid, $gid);
* 'user2@server2' => ['node_id' => 23, 'token' => 'FooBaR'],
* ],
* public => bool
* mail => bool
* ]
* mail => [
* 'email1@maildomain1' => ['node_id' => 42, 'token' => 'aBcDeFg'],
* 'email2@maildomain2' => ['node_id' => 23, 'token' => 'hIjKlMn'],
* ]
*
* The access list to '/folder1/folder2/fileA' **without** $currentAccess is:
* [
* users => ['user1', 'user2', 'user4'],
* remote => bool,
* public => bool
* mail => bool
* mail => ['email1@maildomain1', 'email2@maildomain2']
* ]
*
* This is required for encryption/activity
Expand Down

0 comments on commit 2505973

Please sign in to comment.