Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>tags/v21.0.0beta4
@@ -1 +1 @@ | |||
Subproject commit aea1df9dcc0ae1b774e15edf07a470198b952e45 | |||
Subproject commit 8a030d70b84a7367c101bce29b1be044322c0a8f |
@@ -494,7 +494,7 @@ class File extends Node implements IFile { | |||
} | |||
/** | |||
* @return array|false | |||
* @return array|bool | |||
*/ | |||
public function getDirectDownload() { | |||
if (\OCP\App::isEnabled('encryption')) { |
@@ -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); |
@@ -1724,12 +1724,8 @@ | |||
</InvalidReturnType> | |||
</file> | |||
<file src="apps/files_sharing/lib/SharedStorage.php"> | |||
<FalsableReturnStatement occurrences="5"> | |||
<code>$this->nonMaskedStorage->fopen($this->getUnjailedPath($path), $mode)</code> | |||
<FalsableReturnStatement occurrences="1"> | |||
<code>$this->sourceRootInfo</code> | |||
<code>false</code> | |||
<code>false</code> | |||
<code>false</code> | |||
</FalsableReturnStatement> | |||
<InvalidNullableReturnType occurrences="1"> | |||
<code>ICacheEntry</code> | |||
@@ -2464,6 +2460,11 @@ | |||
<code>null</code> | |||
</NullArgument> | |||
</file> | |||
<file src="apps/workflowengine/lib/Check/FileMimeType.php"> | |||
<InvalidScalarArgument occurrences="1"> | |||
<code>$path</code> | |||
</InvalidScalarArgument> | |||
</file> | |||
<file src="apps/workflowengine/lib/Check/FileSize.php"> | |||
<FalsableReturnStatement occurrences="1"> | |||
<code>$this->size</code> | |||
@@ -2792,7 +2793,7 @@ | |||
<file src="core/routes.php"> | |||
<InvalidScope occurrences="2"> | |||
<code>$this</code> | |||
<code>$this</code> | |||
<code>$this->create('core_ajax_update', '/core/ajax/update.php')</code> | |||
</InvalidScope> | |||
</file> | |||
<file src="core/templates/layout.public.php"> | |||
@@ -3068,10 +3069,11 @@ | |||
<FalsableReturnStatement occurrences="1"> | |||
<code>false</code> | |||
</FalsableReturnStatement> | |||
<InvalidReturnStatement occurrences="1"> | |||
<InvalidReturnStatement occurrences="2"> | |||
<code>$this->tar->extractInString($path)</code> | |||
</InvalidReturnStatement> | |||
<InvalidReturnType occurrences="1"> | |||
<InvalidReturnType occurrences="2"> | |||
<code>resource</code> | |||
<code>string</code> | |||
</InvalidReturnType> | |||
<UndefinedDocblockClass occurrences="1"> | |||
@@ -3083,6 +3085,10 @@ | |||
<code>boolean|null</code> | |||
<code>boolean|null</code> | |||
</ImplementedReturnTypeMismatch> | |||
<InvalidReturnStatement occurrences="1"/> | |||
<InvalidReturnType occurrences="1"> | |||
<code>resource</code> | |||
</InvalidReturnType> | |||
</file> | |||
<file src="lib/private/Authentication/LoginCredentials/Store.php"> | |||
<RedundantCondition occurrences="1"> | |||
@@ -4213,29 +4219,6 @@ | |||
</InvalidReturnType> | |||
</file> | |||
<file src="lib/private/Files/Storage/Wrapper/Encoding.php"> | |||
<FalsableReturnStatement occurrences="12"> | |||
<code>$result</code> | |||
<code>$this->storage->file_get_contents($this->findPathToUse($path))</code> | |||
<code>$this->storage->filemtime($this->findPathToUse($path))</code> | |||
<code>$this->storage->filesize($this->findPathToUse($path))</code> | |||
<code>$this->storage->free_space($this->findPathToUse($path))</code> | |||
<code>$this->storage->getETag($this->findPathToUse($path))</code> | |||
<code>$this->storage->getLocalFile($this->findPathToUse($path))</code> | |||
<code>$this->storage->getMimeType($this->findPathToUse($path))</code> | |||
<code>$this->storage->hash($type, $this->findPathToUse($path), $raw)</code> | |||
<code>$this->storage->opendir($this->findPathToUse($path))</code> | |||
<code>$this->storage->search($query)</code> | |||
<code>$this->storage->stat($this->findPathToUse($path))</code> | |||
</FalsableReturnStatement> | |||
<ImplementedReturnTypeMismatch occurrences="1"> | |||
<code>bool</code> | |||
</ImplementedReturnTypeMismatch> | |||
<InvalidReturnStatement occurrences="1"> | |||
<code>$this->storage->filetype($this->findPathToUse($path))</code> | |||
</InvalidReturnStatement> | |||
<InvalidReturnType occurrences="1"> | |||
<code>bool</code> | |||
</InvalidReturnType> | |||
<UndefinedInterfaceMethod occurrences="13"> | |||
<code>$this->namesCache</code> | |||
<code>$this->namesCache</code> | |||
@@ -4253,16 +4236,9 @@ | |||
</UndefinedInterfaceMethod> | |||
</file> | |||
<file src="lib/private/Files/Storage/Wrapper/Encryption.php"> | |||
<FalsableReturnStatement occurrences="5"> | |||
<code>$stat</code> | |||
<code>$this->storage->file_get_contents($path)</code> | |||
<code>$this->storage->filesize($path)</code> | |||
<code>$this->storage->getLocalFile($path)</code> | |||
<FalsableReturnStatement occurrences="1"> | |||
<code>false</code> | |||
</FalsableReturnStatement> | |||
<ImplementedReturnTypeMismatch occurrences="1"> | |||
<code>resource|bool</code> | |||
</ImplementedReturnTypeMismatch> | |||
<InvalidArgument occurrences="2"> | |||
<code>$source</code> | |||
<code>$target</code> | |||
@@ -4275,38 +4251,31 @@ | |||
<code>$result</code> | |||
<code>$result</code> | |||
</InvalidOperand> | |||
<InvalidReturnStatement occurrences="1"> | |||
<InvalidReturnStatement occurrences="5"> | |||
<code>$newUnencryptedSize</code> | |||
<code>$stat</code> | |||
<code>$this->storage->file_get_contents($path)</code> | |||
<code>$this->storage->filesize($path)</code> | |||
<code>$this->storage->getLocalFile($path)</code> | |||
</InvalidReturnStatement> | |||
<InvalidReturnType occurrences="1"> | |||
<InvalidReturnType occurrences="4"> | |||
<code>array</code> | |||
<code>int</code> | |||
<code>string</code> | |||
<code>string</code> | |||
</InvalidReturnType> | |||
<InvalidScalarArgument occurrences="2"> | |||
<InvalidScalarArgument occurrences="5"> | |||
<code>$lastChunkPos</code> | |||
<code>$newUnencryptedSize</code> | |||
<code>$size</code> | |||
<code>$size</code> | |||
<code>$sourceStorage->filemtime($sourceInternalPath)</code> | |||
</InvalidScalarArgument> | |||
<NullableReturnStatement occurrences="1"> | |||
<code>null</code> | |||
</NullableReturnStatement> | |||
</file> | |||
<file src="lib/private/Files/Storage/Wrapper/Jail.php"> | |||
<FalsableReturnStatement occurrences="12"> | |||
<code>$this->getWrapperStorage()->file_get_contents($this->getUnjailedPath($path))</code> | |||
<code>$this->getWrapperStorage()->filemtime($this->getUnjailedPath($path))</code> | |||
<code>$this->getWrapperStorage()->filesize($this->getUnjailedPath($path))</code> | |||
<code>$this->getWrapperStorage()->fopen($this->getUnjailedPath($path), $mode)</code> | |||
<code>$this->getWrapperStorage()->free_space($this->getUnjailedPath($path))</code> | |||
<code>$this->getWrapperStorage()->getETag($this->getUnjailedPath($path))</code> | |||
<code>$this->getWrapperStorage()->getLocalFile($this->getUnjailedPath($path))</code> | |||
<code>$this->getWrapperStorage()->getMimeType($this->getUnjailedPath($path))</code> | |||
<code>$this->getWrapperStorage()->hash($type, $this->getUnjailedPath($path), $raw)</code> | |||
<code>$this->getWrapperStorage()->opendir($this->getUnjailedPath($path))</code> | |||
<code>$this->getWrapperStorage()->search($query)</code> | |||
<code>$this->getWrapperStorage()->stat($this->getUnjailedPath($path))</code> | |||
</FalsableReturnStatement> | |||
<ImplementedReturnTypeMismatch occurrences="1"> | |||
<code>bool</code> | |||
</ImplementedReturnTypeMismatch> | |||
<InvalidReturnStatement occurrences="1"> | |||
<code>$this->getWrapperStorage()->filetype($this->getUnjailedPath($path))</code> | |||
</InvalidReturnStatement> | |||
@@ -4314,16 +4283,7 @@ | |||
<code>bool</code> | |||
</InvalidReturnType> | |||
</file> | |||
<file src="lib/private/Files/Storage/Wrapper/PermissionsMask.php"> | |||
<FalsableReturnStatement occurrences="1"> | |||
<code>$this->checkMask($permissions) ? parent::fopen($path, $mode) : false</code> | |||
</FalsableReturnStatement> | |||
</file> | |||
<file src="lib/private/Files/Storage/Wrapper/Quota.php"> | |||
<FalsableReturnStatement occurrences="2"> | |||
<code>$source</code> | |||
<code>$this->storage->free_space($path)</code> | |||
</FalsableReturnStatement> | |||
<InvalidReturnStatement occurrences="1"> | |||
<code>$extension === 'part'</code> | |||
</InvalidReturnStatement> | |||
@@ -4339,30 +4299,10 @@ | |||
</ParamNameMismatch> | |||
</file> | |||
<file src="lib/private/Files/Storage/Wrapper/Wrapper.php"> | |||
<FalsableReturnStatement occurrences="13"> | |||
<code>$this->getWrapperStorage()->file_get_contents($path)</code> | |||
<code>$this->getWrapperStorage()->filemtime($path)</code> | |||
<code>$this->getWrapperStorage()->filesize($path)</code> | |||
<code>$this->getWrapperStorage()->fopen($path, $mode)</code> | |||
<code>$this->getWrapperStorage()->free_space($path)</code> | |||
<code>$this->getWrapperStorage()->getDirectDownload($path)</code> | |||
<code>$this->getWrapperStorage()->getETag($path)</code> | |||
<code>$this->getWrapperStorage()->getLocalFile($path)</code> | |||
<code>$this->getWrapperStorage()->getMimeType($path)</code> | |||
<code>$this->getWrapperStorage()->hash($type, $path, $raw)</code> | |||
<code>$this->getWrapperStorage()->opendir($path)</code> | |||
<code>$this->getWrapperStorage()->search($query)</code> | |||
<code>$this->getWrapperStorage()->stat($path)</code> | |||
</FalsableReturnStatement> | |||
<ImplementedReturnTypeMismatch occurrences="1"> | |||
<code>bool</code> | |||
</ImplementedReturnTypeMismatch> | |||
<InvalidReturnStatement occurrences="2"> | |||
<code>$this->getWrapperStorage()->filetype($path)</code> | |||
<InvalidReturnStatement occurrences="1"> | |||
<code>$this->getWrapperStorage()->test()</code> | |||
</InvalidReturnStatement> | |||
<InvalidReturnType occurrences="2"> | |||
<code>bool</code> | |||
<InvalidReturnType occurrences="1"> | |||
<code>true</code> | |||
</InvalidReturnType> | |||
</file> | |||
@@ -4774,9 +4714,12 @@ | |||
</InvalidReturnType> | |||
</file> | |||
<file src="lib/private/Preview/ProviderV2.php"> | |||
<FalsableReturnStatement occurrences="1"> | |||
<InvalidReturnStatement occurrences="1"> | |||
<code>$file->getStorage()->getLocalFile($file->getInternalPath())</code> | |||
</FalsableReturnStatement> | |||
</InvalidReturnStatement> | |||
<InvalidReturnType occurrences="1"> | |||
<code>string</code> | |||
</InvalidReturnType> | |||
</file> | |||
<file src="lib/private/Preview/SVG.php"> | |||
<ImplicitToStringCast occurrences="1"> |
@@ -1 +1,5 @@ | |||
[] | |||
{ | |||
"packages": [], | |||
"dev": false, | |||
"dev-package-names": [] | |||
} |
@@ -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(); | |||
} | |||
/** |
@@ -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 | |||
*/ |
@@ -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) { |
@@ -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)); |
@@ -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)); |
@@ -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); |
@@ -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); |
@@ -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 | |||
* |
@@ -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([ |
@@ -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 { |
@@ -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 | |||
*/ |
@@ -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); |
@@ -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); |