diff --git a/3rdparty b/3rdparty index aea1df9dcc..8a030d70b8 160000 --- a/3rdparty +++ b/3rdparty @@ -1 +1 @@ -Subproject commit aea1df9dcc0ae1b774e15edf07a470198b952e45 +Subproject commit 8a030d70b84a7367c101bce29b1be044322c0a8f diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index 3087b752f0..a4948a795a 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -494,7 +494,7 @@ class File extends Node implements IFile { } /** - * @return array|false + * @return array|bool */ public function getDirectDownload() { if (\OCP\App::isEnabled('encryption')) { diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php index d995a016db..0f67877d14 100644 --- a/apps/files_external/lib/Lib/Storage/SMB.php +++ b/apps/files_external/lib/Lib/Storage/SMB.php @@ -441,7 +441,7 @@ class SMB extends Common implements INotifyStorage { /** * @param string $path * @param string $mode - * @return resource|false + * @return resource|bool */ public function fopen($path, $mode) { $fullPath = $this->buildPath($path); diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index 32b9c8d8e0..9aabac976a 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -1724,12 +1724,8 @@ - - $this->nonMaskedStorage->fopen($this->getUnjailedPath($path), $mode) + $this->sourceRootInfo - false - false - false ICacheEntry @@ -2464,6 +2460,11 @@ null + + + $path + + $this->size @@ -2792,7 +2793,7 @@ $this - $this + $this->create('core_ajax_update', '/core/ajax/update.php') @@ -3068,10 +3069,11 @@ false - + $this->tar->extractInString($path) - + + resource string @@ -3083,6 +3085,10 @@ boolean|null boolean|null + + + resource + @@ -4213,29 +4219,6 @@ - - $result - $this->storage->file_get_contents($this->findPathToUse($path)) - $this->storage->filemtime($this->findPathToUse($path)) - $this->storage->filesize($this->findPathToUse($path)) - $this->storage->free_space($this->findPathToUse($path)) - $this->storage->getETag($this->findPathToUse($path)) - $this->storage->getLocalFile($this->findPathToUse($path)) - $this->storage->getMimeType($this->findPathToUse($path)) - $this->storage->hash($type, $this->findPathToUse($path), $raw) - $this->storage->opendir($this->findPathToUse($path)) - $this->storage->search($query) - $this->storage->stat($this->findPathToUse($path)) - - - bool - - - $this->storage->filetype($this->findPathToUse($path)) - - - bool - $this->namesCache $this->namesCache @@ -4253,16 +4236,9 @@ - - $stat - $this->storage->file_get_contents($path) - $this->storage->filesize($path) - $this->storage->getLocalFile($path) + false - - resource|bool - $source $target @@ -4275,38 +4251,31 @@ $result $result - + $newUnencryptedSize + $stat + $this->storage->file_get_contents($path) + $this->storage->filesize($path) + $this->storage->getLocalFile($path) - + + array int + string + string - + $lastChunkPos $newUnencryptedSize + $size + $size + $sourceStorage->filemtime($sourceInternalPath) null - - $this->getWrapperStorage()->file_get_contents($this->getUnjailedPath($path)) - $this->getWrapperStorage()->filemtime($this->getUnjailedPath($path)) - $this->getWrapperStorage()->filesize($this->getUnjailedPath($path)) - $this->getWrapperStorage()->fopen($this->getUnjailedPath($path), $mode) - $this->getWrapperStorage()->free_space($this->getUnjailedPath($path)) - $this->getWrapperStorage()->getETag($this->getUnjailedPath($path)) - $this->getWrapperStorage()->getLocalFile($this->getUnjailedPath($path)) - $this->getWrapperStorage()->getMimeType($this->getUnjailedPath($path)) - $this->getWrapperStorage()->hash($type, $this->getUnjailedPath($path), $raw) - $this->getWrapperStorage()->opendir($this->getUnjailedPath($path)) - $this->getWrapperStorage()->search($query) - $this->getWrapperStorage()->stat($this->getUnjailedPath($path)) - - - bool - $this->getWrapperStorage()->filetype($this->getUnjailedPath($path)) @@ -4314,16 +4283,7 @@ bool - - - $this->checkMask($permissions) ? parent::fopen($path, $mode) : false - - - - $source - $this->storage->free_space($path) - $extension === 'part' @@ -4339,30 +4299,10 @@ - - $this->getWrapperStorage()->file_get_contents($path) - $this->getWrapperStorage()->filemtime($path) - $this->getWrapperStorage()->filesize($path) - $this->getWrapperStorage()->fopen($path, $mode) - $this->getWrapperStorage()->free_space($path) - $this->getWrapperStorage()->getDirectDownload($path) - $this->getWrapperStorage()->getETag($path) - $this->getWrapperStorage()->getLocalFile($path) - $this->getWrapperStorage()->getMimeType($path) - $this->getWrapperStorage()->hash($type, $path, $raw) - $this->getWrapperStorage()->opendir($path) - $this->getWrapperStorage()->search($query) - $this->getWrapperStorage()->stat($path) - - - bool - - - $this->getWrapperStorage()->filetype($path) + $this->getWrapperStorage()->test() - - bool + true @@ -4774,9 +4714,12 @@ - + $file->getStorage()->getLocalFile($file->getInternalPath()) - + + + string + diff --git a/lib/composer/composer/installed.json b/lib/composer/composer/installed.json index fe51488c70..f20a6c47c6 100644 --- a/lib/composer/composer/installed.json +++ b/lib/composer/composer/installed.json @@ -1 +1,5 @@ -[] +{ + "packages": [], + "dev": false, + "dev-package-names": [] +} diff --git a/lib/private/Files/ObjectStore/StorageObjectStore.php b/lib/private/Files/ObjectStore/StorageObjectStore.php index acf4675895..2076bb3f88 100644 --- a/lib/private/Files/ObjectStore/StorageObjectStore.php +++ b/lib/private/Files/ObjectStore/StorageObjectStore.php @@ -26,6 +26,7 @@ namespace OC\Files\ObjectStore; use OCP\Files\ObjectStore\IObjectStore; use OCP\Files\Storage\IStorage; +use function is_resource; /** * Object store that wraps a storage backend, mostly for testing purposes @@ -57,11 +58,11 @@ class StorageObjectStore implements IObjectStore { */ public function readObject($urn) { $handle = $this->storage->fopen($urn, 'r'); - if ($handle) { + if (is_resource($handle)) { return $handle; - } else { - throw new \Exception(); } + + throw new \Exception(); } /** diff --git a/lib/private/Files/SimpleFS/NewSimpleFile.php b/lib/private/Files/SimpleFS/NewSimpleFile.php index b8e50941e5..fb4346aae0 100644 --- a/lib/private/Files/SimpleFS/NewSimpleFile.php +++ b/lib/private/Files/SimpleFS/NewSimpleFile.php @@ -208,7 +208,7 @@ class NewSimpleFile implements ISimpleFile { /** * Open the file as stream for writing, resulting resource can be operated as stream like the result from php's own fopen * - * @return resource + * @return resource|bool * @throws \OCP\Files\NotPermittedException * @since 14.0.0 */ diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php index 6a530877f4..bddb1f4a29 100644 --- a/lib/private/Files/Storage/Common.php +++ b/lib/private/Files/Storage/Common.php @@ -630,8 +630,9 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage { } } - if ($result and $preserveMtime) { - $this->touch($targetInternalPath, $sourceStorage->filemtime($sourceInternalPath)); + if ($result && $preserveMtime) { + $mtime = $sourceStorage->filemtime($sourceInternalPath); + $this->touch($targetInternalPath, is_int($mtime) ? $mtime : null); } if (!$result) { diff --git a/lib/private/Files/Storage/Wrapper/Encoding.php b/lib/private/Files/Storage/Wrapper/Encoding.php index 02e82211da..33a599ee46 100644 --- a/lib/private/Files/Storage/Wrapper/Encoding.php +++ b/lib/private/Files/Storage/Wrapper/Encoding.php @@ -156,7 +156,7 @@ class Encoding extends Wrapper { * see https://www.php.net/manual/en/function.opendir.php * * @param string $path - * @return resource + * @return resource|bool */ public function opendir($path) { return $this->storage->opendir($this->findPathToUse($path)); @@ -187,7 +187,7 @@ class Encoding extends Wrapper { * only the following keys are required in the result: size and mtime * * @param string $path - * @return array + * @return array|bool */ public function stat($path) { return $this->storage->stat($this->findPathToUse($path)); @@ -197,7 +197,7 @@ class Encoding extends Wrapper { * see https://www.php.net/manual/en/function.filetype.php * * @param string $path - * @return bool + * @return string|bool */ public function filetype($path) { return $this->storage->filetype($this->findPathToUse($path)); @@ -208,7 +208,7 @@ class Encoding extends Wrapper { * The result for filesize when called on a folder is required to be 0 * * @param string $path - * @return int + * @return int|bool */ public function filesize($path) { return $this->storage->filesize($this->findPathToUse($path)); @@ -289,7 +289,7 @@ class Encoding extends Wrapper { * see https://www.php.net/manual/en/function.filemtime.php * * @param string $path - * @return int + * @return int|bool */ public function filemtime($path) { return $this->storage->filemtime($this->findPathToUse($path)); @@ -299,7 +299,7 @@ class Encoding extends Wrapper { * see https://www.php.net/manual/en/function.file_get_contents.php * * @param string $path - * @return string + * @return string|bool */ public function file_get_contents($path) { return $this->storage->file_get_contents($this->findPathToUse($path)); @@ -358,7 +358,7 @@ class Encoding extends Wrapper { * * @param string $path * @param string $mode - * @return resource + * @return resource|bool */ public function fopen($path, $mode) { $result = $this->storage->fopen($this->findPathToUse($path), $mode); @@ -373,7 +373,7 @@ class Encoding extends Wrapper { * The mimetype for a folder is required to be "httpd/unix-directory" * * @param string $path - * @return string + * @return string|bool */ public function getMimeType($path) { return $this->storage->getMimeType($this->findPathToUse($path)); @@ -385,7 +385,7 @@ class Encoding extends Wrapper { * @param string $type * @param string $path * @param bool $raw - * @return string + * @return string|bool */ public function hash($type, $path, $raw = false) { return $this->storage->hash($type, $this->findPathToUse($path), $raw); @@ -395,7 +395,7 @@ class Encoding extends Wrapper { * see https://www.php.net/manual/en/function.free_space.php * * @param string $path - * @return int + * @return int|bool */ public function free_space($path) { return $this->storage->free_space($this->findPathToUse($path)); @@ -405,7 +405,7 @@ class Encoding extends Wrapper { * search for occurrences of $query in file names * * @param string $query - * @return array + * @return array|bool */ public function search($query) { return $this->storage->search($query); @@ -428,7 +428,7 @@ class Encoding extends Wrapper { * The local version of the file can be temporary and doesn't have to be persistent across requests * * @param string $path - * @return string + * @return string|bool */ public function getLocalFile($path) { return $this->storage->getLocalFile($this->findPathToUse($path)); @@ -480,7 +480,7 @@ class Encoding extends Wrapper { * get the ETag for a file or folder * * @param string $path - * @return string + * @return string|bool */ public function getETag($path) { return $this->storage->getETag($this->findPathToUse($path)); diff --git a/lib/private/Files/Storage/Wrapper/Jail.php b/lib/private/Files/Storage/Wrapper/Jail.php index 26ad82816c..a534ec8a49 100644 --- a/lib/private/Files/Storage/Wrapper/Jail.php +++ b/lib/private/Files/Storage/Wrapper/Jail.php @@ -106,7 +106,7 @@ class Jail extends Wrapper { * see https://www.php.net/manual/en/function.opendir.php * * @param string $path - * @return resource + * @return resource|bool */ public function opendir($path) { return $this->getWrapperStorage()->opendir($this->getUnjailedPath($path)); @@ -137,7 +137,7 @@ class Jail extends Wrapper { * only the following keys are required in the result: size and mtime * * @param string $path - * @return array + * @return array|bool */ public function stat($path) { return $this->getWrapperStorage()->stat($this->getUnjailedPath($path)); @@ -158,7 +158,7 @@ class Jail extends Wrapper { * The result for filesize when called on a folder is required to be 0 * * @param string $path - * @return int + * @return int|bool */ public function filesize($path) { return $this->getWrapperStorage()->filesize($this->getUnjailedPath($path)); @@ -239,7 +239,7 @@ class Jail extends Wrapper { * see https://www.php.net/manual/en/function.filemtime.php * * @param string $path - * @return int + * @return int|bool */ public function filemtime($path) { return $this->getWrapperStorage()->filemtime($this->getUnjailedPath($path)); @@ -249,7 +249,7 @@ class Jail extends Wrapper { * see https://www.php.net/manual/en/function.file_get_contents.php * * @param string $path - * @return string + * @return string|bool */ public function file_get_contents($path) { return $this->getWrapperStorage()->file_get_contents($this->getUnjailedPath($path)); @@ -303,7 +303,7 @@ class Jail extends Wrapper { * * @param string $path * @param string $mode - * @return resource + * @return resource|bool */ public function fopen($path, $mode) { return $this->getWrapperStorage()->fopen($this->getUnjailedPath($path), $mode); @@ -314,7 +314,7 @@ class Jail extends Wrapper { * The mimetype for a folder is required to be "httpd/unix-directory" * * @param string $path - * @return string + * @return string|bool */ public function getMimeType($path) { return $this->getWrapperStorage()->getMimeType($this->getUnjailedPath($path)); @@ -326,7 +326,7 @@ class Jail extends Wrapper { * @param string $type * @param string $path * @param bool $raw - * @return string + * @return string|bool */ public function hash($type, $path, $raw = false) { return $this->getWrapperStorage()->hash($type, $this->getUnjailedPath($path), $raw); @@ -336,7 +336,7 @@ class Jail extends Wrapper { * see https://www.php.net/manual/en/function.free_space.php * * @param string $path - * @return int + * @return int|bool */ public function free_space($path) { return $this->getWrapperStorage()->free_space($this->getUnjailedPath($path)); @@ -346,7 +346,7 @@ class Jail extends Wrapper { * search for occurrences of $query in file names * * @param string $query - * @return array + * @return array|bool */ public function search($query) { return $this->getWrapperStorage()->search($query); @@ -369,7 +369,7 @@ class Jail extends Wrapper { * The local version of the file can be temporary and doesn't have to be persistent across requests * * @param string $path - * @return string + * @return string|bool */ public function getLocalFile($path) { return $this->getWrapperStorage()->getLocalFile($this->getUnjailedPath($path)); @@ -432,7 +432,7 @@ class Jail extends Wrapper { * get the ETag for a file or folder * * @param string $path - * @return string + * @return string|bool */ public function getETag($path) { return $this->getWrapperStorage()->getETag($this->getUnjailedPath($path)); diff --git a/lib/private/Files/Storage/Wrapper/Quota.php b/lib/private/Files/Storage/Wrapper/Quota.php index 55fbbb0a60..e9a6847e58 100644 --- a/lib/private/Files/Storage/Wrapper/Quota.php +++ b/lib/private/Files/Storage/Wrapper/Quota.php @@ -95,7 +95,7 @@ class Quota extends Wrapper { * Get free space as limited by the quota * * @param string $path - * @return int + * @return int|bool */ public function free_space($path) { if ($this->quota < 0 || strpos($path, 'cache') === 0 || strpos($path, 'uploads') === 0) { @@ -155,7 +155,7 @@ class Quota extends Wrapper { * * @param string $path * @param string $mode - * @return resource + * @return resource|bool */ public function fopen($path, $mode) { $source = $this->storage->fopen($path, $mode); @@ -163,7 +163,7 @@ class Quota extends Wrapper { // don't apply quota for part files if (!$this->isPartFile($path)) { $free = $this->free_space($path); - if ($source && $free >= 0 && $mode !== 'r' && $mode !== 'rb') { + if ($source && is_int($free) && $free >= 0 && $mode !== 'r' && $mode !== 'rb') { // only apply quota for files, not metadata, trash or others if ($this->shouldApplyQuota($path)) { return \OC\Files\Stream\Quota::wrap($source, $free); diff --git a/lib/private/Files/Storage/Wrapper/Wrapper.php b/lib/private/Files/Storage/Wrapper/Wrapper.php index 43e57c688d..3754956034 100644 --- a/lib/private/Files/Storage/Wrapper/Wrapper.php +++ b/lib/private/Files/Storage/Wrapper/Wrapper.php @@ -97,7 +97,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * see https://www.php.net/manual/en/function.opendir.php * * @param string $path - * @return resource + * @return resource|bool */ public function opendir($path) { return $this->getWrapperStorage()->opendir($path); @@ -128,7 +128,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * only the following keys are required in the result: size and mtime * * @param string $path - * @return array + * @return array|bool */ public function stat($path) { return $this->getWrapperStorage()->stat($path); @@ -138,7 +138,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * see https://www.php.net/manual/en/function.filetype.php * * @param string $path - * @return bool + * @return string|bool */ public function filetype($path) { return $this->getWrapperStorage()->filetype($path); @@ -149,7 +149,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * The result for filesize when called on a folder is required to be 0 * * @param string $path - * @return int + * @return int|bool */ public function filesize($path) { return $this->getWrapperStorage()->filesize($path); @@ -230,7 +230,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * see https://www.php.net/manual/en/function.filemtime.php * * @param string $path - * @return int + * @return int|bool */ public function filemtime($path) { return $this->getWrapperStorage()->filemtime($path); @@ -240,7 +240,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * see https://www.php.net/manual/en/function.file_get_contents.php * * @param string $path - * @return string + * @return string|bool */ public function file_get_contents($path) { return $this->getWrapperStorage()->file_get_contents($path); @@ -294,7 +294,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * * @param string $path * @param string $mode - * @return resource + * @return resource|bool */ public function fopen($path, $mode) { return $this->getWrapperStorage()->fopen($path, $mode); @@ -305,7 +305,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * The mimetype for a folder is required to be "httpd/unix-directory" * * @param string $path - * @return string + * @return string|bool */ public function getMimeType($path) { return $this->getWrapperStorage()->getMimeType($path); @@ -317,7 +317,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * @param string $type * @param string $path * @param bool $raw - * @return string + * @return string|bool */ public function hash($type, $path, $raw = false) { return $this->getWrapperStorage()->hash($type, $path, $raw); @@ -327,7 +327,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * see https://www.php.net/manual/en/function.free_space.php * * @param string $path - * @return int + * @return int|bool */ public function free_space($path) { return $this->getWrapperStorage()->free_space($path); @@ -337,7 +337,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * search for occurrences of $query in file names * * @param string $query - * @return array + * @return array|bool */ public function search($query) { return $this->getWrapperStorage()->search($query); @@ -360,7 +360,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * The local version of the file can be temporary and doesn't have to be persistent across requests * * @param string $path - * @return string + * @return string|bool */ public function getLocalFile($path) { return $this->getWrapperStorage()->getLocalFile($path); @@ -458,7 +458,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * get the ETag for a file or folder * * @param string $path - * @return string + * @return string|bool */ public function getETag($path) { return $this->getWrapperStorage()->getETag($path); @@ -513,7 +513,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea * For now the returned array can hold the parameter url - in future more attributes might follow. * * @param string $path - * @return array + * @return array|bool */ public function getDirectDownload($path) { return $this->getWrapperStorage()->getDirectDownload($path); diff --git a/lib/private/Files/Stream/Encryption.php b/lib/private/Files/Stream/Encryption.php index 577d155410..16d2ca3ce9 100644 --- a/lib/private/Files/Stream/Encryption.php +++ b/lib/private/Files/Stream/Encryption.php @@ -34,6 +34,8 @@ namespace OC\Files\Stream; use Icewind\Streams\Wrapper; use OC\Encryption\Exceptions\EncryptionHeaderKeyExistsException; +use function is_array; +use function stream_context_create; class Encryption extends Wrapper { @@ -190,17 +192,22 @@ class Encryption extends Wrapper { /** * add stream wrapper * - * @param resource $source + * @param resource|int $source + * @param resource|array $context + * @param string|null $protocol + * @param string|null $class * @param string $mode - * @param resource $context - * @param string $protocol - * @param string $class * @return resource * @throws \BadMethodCallException */ - protected static function wrapSource($source, $context, $protocol, $class, $mode = 'r+') { + protected static function wrapSource($source, $context = [], $protocol = null, $class = null, $mode = 'r+') { try { + if ($protocol === null) { + $protocol = self::getProtocol($class); + } + stream_wrapper_register($protocol, $class); + $context = self::buildContext($protocol, $context, $source); if (self::isDirectoryHandle($source)) { $wrapped = opendir($protocol . '://', $context); } else { @@ -214,14 +221,26 @@ class Encryption extends Wrapper { return $wrapped; } + /** + * @todo this is a copy of \Icewind\Streams\WrapperHandler::buildContext -> combine to one shared method? + */ + private static function buildContext($protocol, $context, $source) { + if (is_array($context)) { + $context['source'] = $source; + return stream_context_create([$protocol => $context]); + } + + return $context; + } + /** * Load the source from the stream context and return the context options * - * @param string $name + * @param string|null $name * @return array * @throws \BadMethodCallException */ - protected function loadContext($name) { + protected function loadContext($name = null) { $context = parent::loadContext($name); foreach ($this->expectedContextProperties as $property) { @@ -314,7 +333,7 @@ class Encryption extends Wrapper { } return $result; } - + /** * stream_read_block * diff --git a/lib/private/Files/Stream/Quota.php b/lib/private/Files/Stream/Quota.php index db5691187c..f5db662a0a 100644 --- a/lib/private/Files/Stream/Quota.php +++ b/lib/private/Files/Stream/Quota.php @@ -42,7 +42,7 @@ class Quota extends Wrapper { /** * @param resource $stream * @param int $limit - * @return resource + * @return bool|resource */ public static function wrap($stream, $limit) { $context = stream_context_create([ diff --git a/lib/private/Repair/Owncloud/MoveAvatarsBackgroundJob.php b/lib/private/Repair/Owncloud/MoveAvatarsBackgroundJob.php index e69beae7d6..a4209d70df 100644 --- a/lib/private/Repair/Owncloud/MoveAvatarsBackgroundJob.php +++ b/lib/private/Repair/Owncloud/MoveAvatarsBackgroundJob.php @@ -30,6 +30,7 @@ use OCP\IAvatarManager; use OCP\IUser; use OCP\IUserManager; use Psr\Log\LoggerInterface; +use function is_resource; class MoveAvatarsBackgroundJob extends QueuedJob { @@ -76,7 +77,7 @@ class MoveAvatarsBackgroundJob extends QueuedJob { try { $avatarPath = $path . '/avatar.' . $this->getExtension($path); $resource = $this->owncloudAvatarStorage->fopen($avatarPath, 'r'); - if ($resource) { + if (is_resource($resource)) { $avatar->set($resource); fclose($resource); } else { diff --git a/lib/public/Files/SimpleFS/ISimpleFile.php b/lib/public/Files/SimpleFS/ISimpleFile.php index 06039d5397..ad39460c4b 100644 --- a/lib/public/Files/SimpleFS/ISimpleFile.php +++ b/lib/public/Files/SimpleFS/ISimpleFile.php @@ -114,7 +114,7 @@ interface ISimpleFile { /** * Open the file as stream for writing, resulting resource can be operated as stream like the result from php's own fopen * - * @return resource + * @return resource|bool * @throws \OCP\Files\NotPermittedException * @since 14.0.0 */ diff --git a/lib/public/Files/Storage.php b/lib/public/Files/Storage.php index 2033fe5d28..82f96f805d 100644 --- a/lib/public/Files/Storage.php +++ b/lib/public/Files/Storage.php @@ -92,7 +92,7 @@ interface Storage extends IStorage { * see https://www.php.net/manual/en/function.opendir.php * * @param string $path - * @return resource|false + * @return resource|bool * @since 6.0.0 */ public function opendir($path); @@ -120,7 +120,7 @@ interface Storage extends IStorage { * only the following keys are required in the result: size and mtime * * @param string $path - * @return array|false + * @return array|bool * @since 6.0.0 */ public function stat($path); @@ -129,7 +129,7 @@ interface Storage extends IStorage { * see https://www.php.net/manual/en/function.filetype.php * * @param string $path - * @return string|false + * @return string|bool * @since 6.0.0 */ public function filetype($path); @@ -139,7 +139,7 @@ interface Storage extends IStorage { * The result for filesize when called on a folder is required to be 0 * * @param string $path - * @return int|false + * @return int|bool * @since 6.0.0 */ public function filesize($path); @@ -212,7 +212,7 @@ interface Storage extends IStorage { * see https://www.php.net/manual/en/function.filemtime.php * * @param string $path - * @return int|false + * @return int|bool * @since 6.0.0 */ public function filemtime($path); @@ -221,7 +221,7 @@ interface Storage extends IStorage { * see https://www.php.net/manual/en/function.file_get_contents.php * * @param string $path - * @return string|false + * @return string|bool * @since 6.0.0 */ public function file_get_contents($path); @@ -270,7 +270,7 @@ interface Storage extends IStorage { * * @param string $path * @param string $mode - * @return resource|false + * @return resource|bool * @since 6.0.0 */ public function fopen($path, $mode); @@ -280,7 +280,7 @@ interface Storage extends IStorage { * The mimetype for a folder is required to be "httpd/unix-directory" * * @param string $path - * @return string|false + * @return string|bool * @since 6.0.0 */ public function getMimeType($path); @@ -291,7 +291,7 @@ interface Storage extends IStorage { * @param string $type * @param string $path * @param bool $raw - * @return string|false + * @return string|bool * @since 6.0.0 */ public function hash($type, $path, $raw = false); @@ -300,7 +300,7 @@ interface Storage extends IStorage { * see https://www.php.net/manual/en/function.free_space.php * * @param string $path - * @return int|false + * @return int|bool * @since 6.0.0 */ public function free_space($path); @@ -309,7 +309,7 @@ interface Storage extends IStorage { * search for occurrences of $query in file names * * @param string $query - * @return array|false + * @return array|bool * @since 6.0.0 */ public function search($query); @@ -330,7 +330,7 @@ interface Storage extends IStorage { * The local version of the file can be temporary and doesn't have to be persistent across requests * * @param string $path - * @return string|false + * @return string|bool * @since 6.0.0 */ public function getLocalFile($path); @@ -352,7 +352,7 @@ interface Storage extends IStorage { * get the ETag for a file or folder * * @param string $path - * @return string|false + * @return string|bool * @since 6.0.0 */ public function getETag($path); @@ -384,7 +384,7 @@ interface Storage extends IStorage { * For now the returned array can hold the parameter url - in future more attributes might follow. * * @param string $path - * @return array|false + * @return array|bool * @since 8.0.0 */ public function getDirectDownload($path); diff --git a/lib/public/Files/Storage/IStorage.php b/lib/public/Files/Storage/IStorage.php index 0f5e3e5f30..e93278684f 100644 --- a/lib/public/Files/Storage/IStorage.php +++ b/lib/public/Files/Storage/IStorage.php @@ -88,7 +88,7 @@ interface IStorage { * see https://www.php.net/manual/en/function.opendir.php * * @param string $path - * @return resource|false + * @return resource|bool * @since 9.0.0 */ public function opendir($path); @@ -116,7 +116,7 @@ interface IStorage { * only the following keys are required in the result: size and mtime * * @param string $path - * @return array|false + * @return array|bool * @since 9.0.0 */ public function stat($path); @@ -125,7 +125,7 @@ interface IStorage { * see https://www.php.net/manual/en/function.filetype.php * * @param string $path - * @return string|false + * @return string|bool * @since 9.0.0 */ public function filetype($path); @@ -135,7 +135,7 @@ interface IStorage { * The result for filesize when called on a folder is required to be 0 * * @param string $path - * @return int|false + * @return int|bool * @since 9.0.0 */ public function filesize($path); @@ -208,7 +208,7 @@ interface IStorage { * see https://www.php.net/manual/en/function.filemtime.php * * @param string $path - * @return int|false + * @return int|bool * @since 9.0.0 */ public function filemtime($path); @@ -217,7 +217,7 @@ interface IStorage { * see https://www.php.net/manual/en/function.file_get_contents.php * * @param string $path - * @return string|false + * @return string|bool * @since 9.0.0 */ public function file_get_contents($path); @@ -266,7 +266,7 @@ interface IStorage { * * @param string $path * @param string $mode - * @return resource|false + * @return resource|bool * @since 9.0.0 */ public function fopen($path, $mode); @@ -276,7 +276,7 @@ interface IStorage { * The mimetype for a folder is required to be "httpd/unix-directory" * * @param string $path - * @return string|false + * @return string|bool * @since 9.0.0 */ public function getMimeType($path); @@ -287,7 +287,7 @@ interface IStorage { * @param string $type * @param string $path * @param bool $raw - * @return string|false + * @return string|bool * @since 9.0.0 */ public function hash($type, $path, $raw = false); @@ -296,7 +296,7 @@ interface IStorage { * see https://www.php.net/manual/en/function.free_space.php * * @param string $path - * @return int|false + * @return int|bool * @since 9.0.0 */ public function free_space($path); @@ -317,7 +317,7 @@ interface IStorage { * The local version of the file can be temporary and doesn't have to be persistent across requests * * @param string $path - * @return string|false + * @return string|bool * @since 9.0.0 */ public function getLocalFile($path); @@ -339,7 +339,7 @@ interface IStorage { * get the ETag for a file or folder * * @param string $path - * @return string|false + * @return string|bool * @since 9.0.0 */ public function getETag($path); @@ -371,7 +371,7 @@ interface IStorage { * For now the returned array can hold the parameter url - in future more attributes might follow. * * @param string $path - * @return array|false + * @return array|bool * @since 9.0.0 */ public function getDirectDownload($path);