Merge pull request #39930 from nextcloud/backport/39906/stable27

[stable27] Prevent PHP warning when CacheEntry extension keys are not set
This commit is contained in:
Ferdinand Thiessen 2023-08-17 15:59:41 +02:00 committed by GitHub
commit 362acd93aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 4 deletions

View file

@ -149,7 +149,7 @@ class Cache implements ICache {
* get the stored metadata of a file or folder
*
* @param string | int $file either the path of a file or folder or the file id for a file or folder
* @return ICacheEntry|false the cache entry as array of false if the file is not found in the cache
* @return ICacheEntry|false the cache entry as array or false if the file is not found in the cache
*/
public function get($file) {
$query = $this->getQueryBuilder();

View file

@ -114,15 +114,15 @@ class CacheEntry implements ICacheEntry {
}
public function getMetadataEtag(): ?string {
return $this->data['metadata_etag'];
return $this->data['metadata_etag'] ?? null;
}
public function getCreationTime(): ?int {
return $this->data['creation_time'];
return $this->data['creation_time'] ?? null;
}
public function getUploadTime(): ?int {
return $this->data['upload_time'];
return $this->data['upload_time'] ?? null;
}
public function getData() {

View file

@ -97,6 +97,31 @@ class CacheTest extends \Test\TestCase {
$this->assertEquals($cacheData1, $this->cache->get($id1));
}
public function testCacheEntryGetters() {
$file1 = 'foo';
$data1 = ['size' => 100, 'mtime' => 50, 'mimetype' => 'foo/file'];
$id1 = $this->cache->put($file1, $data1);
$entry = $this->cache->get($file1);
$this->assertEquals($entry->getId(), $id1);
$this->assertEquals($entry->getStorageId(), $this->cache->getNumericStorageId());
$this->assertEquals($entry->getPath(), 'foo');
$this->assertEquals($entry->getName(), 'foo');
$this->assertEquals($entry->getMimeType(), 'foo/file');
$this->assertEquals($entry->getMimePart(), 'foo');
$this->assertEquals($entry->getSize(), 100);
$this->assertEquals($entry->getMTime(), 50);
$this->assertEquals($entry->getStorageMTime(), 50);
$this->assertEquals($entry->getEtag(), null);
$this->assertEquals($entry->getPermissions(), 0);
$this->assertEquals($entry->isEncrypted(), false);
$this->assertEquals($entry->getMetadataEtag(), null);
$this->assertEquals($entry->getCreationTime(), null);
$this->assertEquals($entry->getUploadTime(), null);
$this->assertEquals($entry->getUnencryptedSize(), 100);
}
public function testPartial() {
$file1 = 'foo';