Browse Source

Merge pull request #29432 from nextcloud/fix/support-php-8.1

Support PHP 8.1 - First batch
pull/29809/head
Vincent Petry 4 years ago
committed by GitHub
parent
commit
fd487c1a43
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      apps/dav/lib/Connector/Sabre/AnonymousOptionsPlugin.php
  2. 2
      apps/dav/lib/Connector/Sabre/Auth.php
  3. 2
      apps/dav/lib/Connector/Sabre/FilesReportPlugin.php
  4. 2
      apps/dav/lib/Upload/AssemblyStream.php
  5. 3
      apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php
  6. 4
      apps/files/tests/Controller/ApiControllerTest.php
  7. 4
      apps/files_external/lib/Lib/Auth/AuthMechanism.php
  8. 4
      apps/files_external/lib/Lib/Backend/Backend.php
  9. 4
      apps/files_external/lib/Lib/DefinitionParameter.php
  10. 4
      apps/files_external/lib/Lib/StorageConfig.php
  11. 2
      apps/theming/lib/Service/JSDataService.php
  12. 2
      apps/user_status/lib/Service/JSDataService.php
  13. 2
      core/Command/Broadcast/Test.php
  14. 5
      core/Controller/AvatarController.php
  15. 3
      lib/private/Accounts/Account.php
  16. 2
      lib/private/Accounts/AccountProperty.php
  17. 2
      lib/private/Accounts/AccountPropertyCollection.php
  18. 5
      lib/private/AppFramework/Http/Request.php
  19. 8
      lib/private/AppFramework/Utility/SimpleContainer.php
  20. 2
      lib/private/Authentication/Token/DefaultToken.php
  21. 2
      lib/private/Authentication/Token/PublicKeyToken.php
  22. 10
      lib/private/Cache/CappedMemoryCache.php
  23. 2
      lib/private/Collaboration/Collaborators/UserPlugin.php
  24. 5
      lib/private/Contacts/ContactsMenu/Actions/LinkAction.php
  25. 4
      lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php
  26. 14
      lib/private/EventDispatcher/GenericEventWrapper.php
  27. 10
      lib/private/Files/Cache/CacheEntry.php
  28. 10
      lib/private/Files/FileInfo.php
  29. 4
      lib/private/Files/ObjectStore/S3Signature.php
  30. 6
      lib/private/Files/ObjectStore/Swift.php
  31. 4
      lib/private/FullTextSearch/Model/IndexDocument.php
  32. 3
      lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php
  33. 5
      lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php
  34. 5
      lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
  35. 6
      lib/private/L10N/L10NString.php
  36. 4
      lib/private/L10N/LanguageIterator.php
  37. 2
      lib/private/Log/LogDetails.php
  38. 10
      lib/private/Memcache/Cache.php
  39. 5
      lib/private/Session/CryptoSessionData.php
  40. 5
      lib/private/Session/Session.php
  41. 2
      lib/private/Setup.php
  42. 2
      lib/private/Share20/DefaultShareProvider.php
  43. 9
      lib/private/User/Database.php
  44. 2
      lib/public/AppFramework/Services/InitialStateProvider.php
  45. 4
      lib/public/DB/QueryBuilder/IExpressionBuilder.php
  46. 4
      lib/public/Dashboard/Model/WidgetSetting.php
  47. 4
      lib/public/Dashboard/Model/WidgetSetup.php
  48. 4
      lib/public/Dashboard/Model/WidgetTemplate.php
  49. 3
      lib/public/DirectEditing/ATemplate.php
  50. 2
      lib/public/EventDispatcher/GenericEvent.php
  51. 2
      lib/public/Files/Template/Template.php
  52. 2
      lib/public/Files/Template/TemplateFileCreator.php
  53. 2
      lib/public/L10N/ILanguageIterator.php
  54. 7
      tests/Core/Command/Encryption/ChangeKeyStorageRootTest.php
  55. 3
      tests/Core/Command/Log/FileTest.php
  56. 7
      tests/Core/Command/Preview/RepairTest.php
  57. 6
      tests/Core/Controller/AvatarControllerTest.php
  58. 6
      tests/Core/Controller/CssControllerTest.php
  59. 2
      tests/Core/Controller/GuestAvatarControllerTest.php
  60. 6
      tests/Core/Controller/JsControllerTest.php
  61. 2
      tests/Core/Controller/PreviewControllerTest.php
  62. 2
      tests/lib/AppFramework/Http/DispatcherTest.php
  63. 6
      tests/lib/AppFramework/Http/ResponseTest.php
  64. 2
      tests/lib/Authentication/Listeners/RemoteWipeActivityListenerTest.php
  65. 2
      tests/lib/Authentication/Listeners/RemoteWipeNotificationsListenerTest.php
  66. 13
      tests/lib/Encryption/DecryptAllTest.php
  67. 13
      tests/lib/Files/Config/UserMountCacheTest.php
  68. 6
      tests/lib/Files/Node/FolderTest.php
  69. 4
      tests/lib/Http/Client/ResponseTest.php
  70. 2
      tests/lib/InitialStateServiceTest.php
  71. 4
      tests/lib/TempManagerTest.php
  72. 14
      tests/lib/User/ManagerTest.php

2
apps/dav/lib/Connector/Sabre/AnonymousOptionsPlugin.php

@ -62,7 +62,7 @@ class AnonymousOptionsPlugin extends ServerPlugin {
* @return bool
*/
public function handleAnonymousOptions(RequestInterface $request, ResponseInterface $response) {
$isOffice = preg_match('/Microsoft Office/i', $request->getHeader('User-Agent'));
$isOffice = preg_match('/Microsoft Office/i', $request->getHeader('User-Agent') ?? '');
$emptyAuth = $request->getHeader('Authorization') === null
|| $request->getHeader('Authorization') === ''
|| trim($request->getHeader('Authorization')) === 'Bearer';

2
apps/dav/lib/Connector/Sabre/Auth.php

@ -242,7 +242,7 @@ class Auth extends AbstractBasic {
}
}
if (!$this->userSession->isLoggedIn() && in_array('XMLHttpRequest', explode(',', $request->getHeader('X-Requested-With')))) {
if (!$this->userSession->isLoggedIn() && in_array('XMLHttpRequest', explode(',', $request->getHeader('X-Requested-With') ?? ''))) {
// do not re-authenticate over ajax, use dummy auth name to prevent browser popup
$response->addHeader('WWW-Authenticate','DummyBasic realm="' . $this->realm . '"');
$response->setStatus(401);

2
apps/dav/lib/Connector/Sabre/FilesReportPlugin.php

@ -241,7 +241,7 @@ class FilesReportPlugin extends ServerPlugin {
*
* @return string files base uri
*/
private function getFilesBaseUri($uri, $subPath) {
private function getFilesBaseUri(string $uri, string $subPath): string {
$uri = trim($uri, '/');
$subPath = trim($subPath, '/');
if (empty($subPath)) {

2
apps/dav/lib/Upload/AssemblyStream.php

@ -277,7 +277,7 @@ class AssemblyStream implements \Icewind\Streams\File {
]);
stream_wrapper_register('assembly', self::class);
try {
$wrapped = fopen('assembly://', 'r', null, $context);
$wrapped = fopen('assembly://', 'r', false, $context);
} catch (\BadMethodCallException $e) {
stream_wrapper_unregister('assembly');
throw $e;

3
apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php

@ -229,6 +229,9 @@ class FilesReportPluginTest extends \Test\TestCase {
$reportTargetNode = $this->getMockBuilder(Directory::class)
->disableOriginalConstructor()
->getMock();
$reportTargetNode->expects($this->any())
->method('getPath')
->willReturn('');
$response = $this->getMockBuilder(ResponseInterface::class)
->disableOriginalConstructor()

4
apps/files/tests/Controller/ApiControllerTest.php

@ -165,7 +165,7 @@ class ApiControllerTest extends TestCase {
$this->assertEquals($expected, $this->apiController->getThumbnail(0, 0, ''));
}
public function testGetThumbnailInvaidImage() {
public function testGetThumbnailInvalidImage() {
$file = $this->createMock(File::class);
$this->userFolder->method('get')
->with($this->equalTo('unknown.jpg'))
@ -184,6 +184,8 @@ class ApiControllerTest extends TestCase {
->with($this->equalTo('known.jpg'))
->willReturn($file);
$preview = $this->createMock(ISimpleFile::class);
$preview->method('getName')->willReturn('my name');
$preview->method('getMTime')->willReturn(42);
$this->preview->expects($this->once())
->method('getPreview')
->with($this->equalTo($file), 10, 10, true)

4
apps/files_external/lib/Lib/Auth/AuthMechanism.php

@ -90,10 +90,8 @@ class AuthMechanism implements \JsonSerializable {
/**
* Serialize into JSON for client-side JS
*
* @return array
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
$data = $this->jsonSerializeDefinition();
$data += $this->jsonSerializeIdentifier();

4
apps/files_external/lib/Lib/Backend/Backend.php

@ -137,10 +137,8 @@ class Backend implements \JsonSerializable {
/**
* Serialize into JSON for client-side JS
*
* @return array
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
$data = $this->jsonSerializeDefinition();
$data += $this->jsonSerializeIdentifier();

4
apps/files_external/lib/Lib/DefinitionParameter.php

@ -167,10 +167,8 @@ class DefinitionParameter implements \JsonSerializable {
/**
* Serialize into JSON for client-side JS
*
* @return string
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'value' => $this->getText(),
'flags' => $this->getFlags(),

4
apps/files_external/lib/Lib/StorageConfig.php

@ -396,10 +396,8 @@ class StorageConfig implements \JsonSerializable {
/**
* Serialize config to JSON
*
* @return array
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
$result = [];
if (!is_null($this->id)) {
$result['id'] = $this->id;

2
apps/theming/lib/Service/JSDataService.php

@ -50,7 +50,7 @@ class JSDataService implements \JsonSerializable {
$this->appConfig = $appConfig;
}
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'name' => $this->themingDefaults->getName(),
'url' => $this->themingDefaults->getBaseUrl(),

2
apps/user_status/lib/Service/JSDataService.php

@ -49,7 +49,7 @@ class JSDataService implements \JsonSerializable {
$this->statusService = $statusService;
}
public function jsonSerialize() {
public function jsonSerialize(): array {
$user = $this->userSession->getUser();
if ($user === null) {

2
core/Command/Broadcast/Test.php

@ -87,7 +87,7 @@ class Test extends Command {
];
}
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'description' => 'this is a test event',
];

5
core/Controller/AvatarController.php

@ -283,11 +283,12 @@ class AvatarController extends Controller {
$image = new \OC_Image();
$image->loadFromData($tmpAvatar);
$resp = new DataDisplayResponse($image->data(),
$resp = new DataDisplayResponse(
$image->data() ?? '',
Http::STATUS_OK,
['Content-Type' => $image->mimeType()]);
$resp->setETag((string)crc32($image->data()));
$resp->setETag((string)crc32($image->data() ?? ''));
$resp->cacheFor(0);
$resp->setLastModified(new \DateTime('now', new \DateTimeZone('GMT')));
return $resp;

3
lib/private/Accounts/Account.php

@ -104,7 +104,8 @@ class Account implements IAccount {
return $result;
}
public function jsonSerialize() {
/** @return IAccountPropertyCollection[]|IAccountProperty[] */
public function jsonSerialize(): array {
return $this->properties;
}

2
lib/private/Accounts/AccountProperty.php

@ -54,7 +54,7 @@ class AccountProperty implements IAccountProperty {
$this->verificationData = $verificationData;
}
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'name' => $this->getName(),
'value' => $this->getValue(),

2
lib/private/Accounts/AccountPropertyCollection.php

@ -102,7 +102,7 @@ class AccountPropertyCollection implements IAccountPropertyCollection {
return $this;
}
public function jsonSerialize() {
public function jsonSerialize(): array {
return [$this->collectionName => $this->properties];
}

5
lib/private/AppFramework/Http/Request.php

@ -199,6 +199,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @param string $offset
* @return mixed
*/
#[\ReturnTypeWillChange]
public function offsetGet($offset) {
return isset($this->items['parameters'][$offset])
? $this->items['parameters'][$offset]
@ -210,7 +211,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @param string $offset
* @param mixed $value
*/
public function offsetSet($offset, $value) {
public function offsetSet($offset, $value): void {
throw new \RuntimeException('You cannot change the contents of the request object');
}
@ -218,7 +219,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @see offsetExists
* @param string $offset
*/
public function offsetUnset($offset) {
public function offsetUnset($offset): void {
throw new \RuntimeException('You cannot change the contents of the request object');
}

8
lib/private/AppFramework/Utility/SimpleContainer.php

@ -197,13 +197,15 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
/**
* @deprecated 20.0.0 use \Psr\Container\ContainerInterface::has
*/
public function offsetExists($id) {
public function offsetExists($id): bool {
return $this->container->offsetExists($id);
}
/**
* @deprecated 20.0.0 use \Psr\Container\ContainerInterface::get
* @return mixed
*/
#[\ReturnTypeWillChange]
public function offsetGet($id) {
return $this->container->offsetGet($id);
}
@ -211,14 +213,14 @@ class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
/**
* @deprecated 20.0.0 use \OCP\IContainer::registerService
*/
public function offsetSet($id, $service) {
public function offsetSet($id, $service): void {
$this->container->offsetSet($id, $service);
}
/**
* @deprecated 20.0.0
*/
public function offsetUnset($offset) {
public function offsetUnset($offset): void {
$this->container->offsetUnset($offset);
}
}

2
lib/private/Authentication/Token/DefaultToken.php

@ -121,7 +121,7 @@ class DefaultToken extends Entity implements INamedToken {
return parent::getPassword();
}
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'id' => $this->id,
'name' => $this->name,

2
lib/private/Authentication/Token/PublicKeyToken.php

@ -138,7 +138,7 @@ class PublicKeyToken extends Entity implements INamedToken, IWipeableToken {
return parent::getPassword();
}
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'id' => $this->id,
'name' => $this->name,

10
lib/private/Cache/CappedMemoryCache.php

@ -63,19 +63,23 @@ class CappedMemoryCache implements ICache, \ArrayAccess {
return true;
}
public function offsetExists($offset) {
public function offsetExists($offset): bool {
return $this->hasKey($offset);
}
/**
* @return mixed
*/
#[\ReturnTypeWillChange]
public function &offsetGet($offset) {
return $this->cache[$offset];
}
public function offsetSet($offset, $value) {
public function offsetSet($offset, $value): void {
$this->set($offset, $value);
}
public function offsetUnset($offset) {
public function offsetUnset($offset): void {
$this->remove($offset);
}

2
lib/private/Collaboration/Collaborators/UserPlugin.php

@ -178,7 +178,7 @@ class UserPlugin implements ISearchPlugin {
$this->shareeEnumerationFullMatch &&
$lowerSearch !== '' && (strtolower($uid) === $lowerSearch ||
strtolower($userDisplayName) === $lowerSearch ||
strtolower($userEmail) === $lowerSearch)
strtolower($userEmail ?? '') === $lowerSearch)
) {
if (strtolower($uid) === $lowerSearch) {
$foundUserById = true;

5
lib/private/Contacts/ContactsMenu/Actions/LinkAction.php

@ -106,10 +106,7 @@ class LinkAction implements ILinkAction {
return $this->appId;
}
/**
* @return array
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'title' => $this->name,
'icon' => $this->icon,

4
lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php

@ -414,11 +414,11 @@ class ExpressionBuilder implements IExpressionBuilder {
* Quotes a given input parameter.
*
* @param mixed $input The parameter to be quoted.
* @param mixed|null $type One of the IQueryBuilder::PARAM_* constants
* @param int $type One of the IQueryBuilder::PARAM_* constants
*
* @return ILiteral
*/
public function literal($input, $type = null): ILiteral {
public function literal($input, $type = IQueryBuilder::PARAM_STR): ILiteral {
return new Literal($this->expressionBuilder->literal($input, $type));
}

14
lib/private/EventDispatcher/GenericEventWrapper.php

@ -100,19 +100,23 @@ class GenericEventWrapper extends GenericEvent {
return $this->event->hasArgument($key);
}
/**
* @return mixed
*/
#[\ReturnTypeWillChange]
public function offsetGet($key) {
return $this->event->offsetGet($key);
}
public function offsetSet($key, $value) {
return $this->event->offsetSet($key, $value);
public function offsetSet($key, $value): void {
$this->event->offsetSet($key, $value);
}
public function offsetUnset($key) {
return $this->event->offsetUnset($key);
public function offsetUnset($key): void {
$this->event->offsetUnset($key);
}
public function offsetExists($key) {
public function offsetExists($key): bool {
return $this->event->offsetExists($key);
}

10
lib/private/Files/Cache/CacheEntry.php

@ -37,18 +37,22 @@ class CacheEntry implements ICacheEntry {
$this->data = $data;
}
public function offsetSet($offset, $value) {
public function offsetSet($offset, $value): void {
$this->data[$offset] = $value;
}
public function offsetExists($offset) {
public function offsetExists($offset): bool {
return isset($this->data[$offset]);
}
public function offsetUnset($offset) {
public function offsetUnset($offset): void {
unset($this->data[$offset]);
}
/**
* @return mixed
*/
#[\ReturnTypeWillChange]
public function offsetGet($offset) {
if (isset($this->data[$offset])) {
return $this->data[$offset];

10
lib/private/Files/FileInfo.php

@ -104,18 +104,22 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
$this->rawSize = $this->data['size'] ?? 0;
}
public function offsetSet($offset, $value) {
public function offsetSet($offset, $value): void {
$this->data[$offset] = $value;
}
public function offsetExists($offset) {
public function offsetExists($offset): bool {
return isset($this->data[$offset]);
}
public function offsetUnset($offset) {
public function offsetUnset($offset): void {
unset($this->data[$offset]);
}
/**
* @return mixed
*/
#[\ReturnTypeWillChange]
public function offsetGet($offset) {
if ($offset === 'type') {
return $this->getType();

4
lib/private/Files/ObjectStore/S3Signature.php

@ -137,7 +137,7 @@ class S3Signature implements SignatureInterface {
$modify['set_headers']['X-Amz-Security-Token'] = $token;
}
return Psr7\modify_request($request, $modify);
return Psr7\Utils::modifyRequest($request, $modify);
}
private function signString($string, CredentialsInterface $credentials) {
@ -201,7 +201,7 @@ class S3Signature implements SignatureInterface {
$query = $request->getUri()->getQuery();
if ($query) {
$params = Psr7\parse_query($query);
$params = Psr7\Query::parse($query);
$first = true;
foreach ($this->signableQueryString as $key) {
if (array_key_exists($key, $params)) {

6
lib/private/Files/ObjectStore/Swift.php

@ -27,7 +27,7 @@ namespace OC\Files\ObjectStore;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\BadResponseException;
use function GuzzleHttp\Psr7\stream_for;
use GuzzleHttp\Psr7\Utils;
use Icewind\Streams\RetryWrapper;
use OCP\Files\NotFoundException;
use OCP\Files\ObjectStore\IObjectStore;
@ -81,13 +81,13 @@ class Swift implements IObjectStore {
if (filesize($tmpFile) < SWIFT_SEGMENT_SIZE) {
$this->getContainer()->createObject([
'name' => $urn,
'stream' => stream_for($handle),
'stream' => Utils::streamFor($handle),
'contentType' => $mimetype,
]);
} else {
$this->getContainer()->createLargeObject([
'name' => $urn,
'stream' => stream_for($handle),
'stream' => Utils::streamFor($handle),
'segmentSize' => SWIFT_SEGMENT_SIZE,
'contentType' => $mimetype,
]);

4
lib/private/FullTextSearch/Model/IndexDocument.php

@ -963,10 +963,8 @@ class IndexDocument implements IIndexDocument, JsonSerializable {
/**
* @since 15.0.0
*
* @return array
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'id' => $this->getId(),
'providerId' => $this->getProviderId(),

3
lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php

@ -168,10 +168,9 @@ final class SearchRequestSimpleQuery implements ISearchRequestSimpleQuery, JsonS
/**
* @return array|mixed
* @since 17.0.0
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'type' => $this->getType(),
'field' => $this->getField(),

5
lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php

@ -59,10 +59,7 @@ class ExcludeFileByNameFilterIterator extends \RecursiveFilterIterator {
'/^\.webapp-nextcloud-(\d+\.){2}(\d+)(-r\d+)?$/', // Gentoo/Funtoo & derivatives use a tool known as webapp-config to manage wep-apps.
];
/**
* @return bool
*/
public function accept() {
public function accept(): bool {
/** @var \SplFileInfo $current */
$current = $this->current();

5
lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php

@ -59,10 +59,7 @@ class ExcludeFoldersByPathFilterIterator extends \RecursiveFilterIterator {
$this->excludedFolders = array_merge($excludedFolders, $appFolders);
}
/**
* @return bool
*/
public function accept() {
public function accept(): bool {
return !\in_array(
$this->current()->getPathName(),
$this->excludedFolders,

6
lib/private/L10N/L10NString.php

@ -82,11 +82,7 @@ class L10NString implements \JsonSerializable {
return vsprintf($text, $this->parameters);
}
/**
* @return string
*/
public function jsonSerialize() {
public function jsonSerialize(): string {
return $this->__toString();
}
}

4
lib/private/L10N/LanguageIterator.php

@ -45,7 +45,7 @@ class LanguageIterator implements ILanguageIterator {
/**
* Rewind the Iterator to the first element
*/
public function rewind() {
public function rewind(): void {
$this->i = 0;
}
@ -112,7 +112,7 @@ class LanguageIterator implements ILanguageIterator {
*
* @since 14.0.0
*/
public function next() {
public function next(): void {
++$this->i;
}

2
lib/private/Log/LogDetails.php

@ -46,7 +46,7 @@ abstract class LogDetails {
}
$time = \DateTime::createFromFormat("U.u", number_format(microtime(true), 4, ".", ""));
if ($time === false) {
$time = new \DateTime(null, $timezone);
$time = new \DateTime('now', $timezone);
} else {
// apply timezone if $time is created from UNIX timestamp
$time->setTimezone($timezone);

10
lib/private/Memcache/Cache.php

@ -78,19 +78,23 @@ abstract class Cache implements \ArrayAccess, \OCP\ICache {
//implement the ArrayAccess interface
public function offsetExists($offset) {
public function offsetExists($offset): bool {
return $this->hasKey($offset);
}
public function offsetSet($offset, $value) {
public function offsetSet($offset, $value): void {
$this->set($offset, $value);
}
/**
* @return mixed
*/
#[\ReturnTypeWillChange]
public function offsetGet($offset) {
return $this->get($offset);
}
public function offsetUnset($offset) {
public function offsetUnset($offset): void {
$this->remove($offset);
}
}

5
lib/private/Session/CryptoSessionData.php

@ -195,6 +195,7 @@ class CryptoSessionData implements \ArrayAccess, ISession {
* @param mixed $offset
* @return mixed
*/
#[\ReturnTypeWillChange]
public function offsetGet($offset) {
return $this->get($offset);
}
@ -203,14 +204,14 @@ class CryptoSessionData implements \ArrayAccess, ISession {
* @param mixed $offset
* @param mixed $value
*/
public function offsetSet($offset, $value) {
public function offsetSet($offset, $value): void {
$this->set($offset, $value);
}
/**
* @param mixed $offset
*/
public function offsetUnset($offset) {
public function offsetUnset($offset): void {
$this->remove($offset);
}
}

5
lib/private/Session/Session.php

@ -55,6 +55,7 @@ abstract class Session implements \ArrayAccess, ISession {
* @param mixed $offset
* @return mixed
*/
#[\ReturnTypeWillChange]
public function offsetGet($offset) {
return $this->get($offset);
}
@ -63,14 +64,14 @@ abstract class Session implements \ArrayAccess, ISession {
* @param mixed $offset
* @param mixed $value
*/
public function offsetSet($offset, $value) {
public function offsetSet($offset, $value): void {
$this->set($offset, $value);
}
/**
* @param mixed $offset
*/
public function offsetUnset($offset) {
public function offsetUnset($offset): void {
$this->remove($offset);
}

2
lib/private/Setup.php

@ -480,7 +480,7 @@ class Setup {
if (!filter_var($webRoot, FILTER_VALIDATE_URL)) {
throw new InvalidArgumentException('invalid value for overwrite.cli.url');
}
$webRoot = rtrim(parse_url($webRoot, PHP_URL_PATH), '/');
$webRoot = rtrim((parse_url($webRoot, PHP_URL_PATH) ?? ''), '/');
} else {
$webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/';
}

2
lib/private/Share20/DefaultShareProvider.php

@ -1363,7 +1363,7 @@ class DefaultShareProvider implements IShareProvider {
$best = [];
$bestDepth = 0;
foreach ($shares as $id => $share) {
$depth = substr_count($share['file_target'], '/');
$depth = substr_count(($share['file_target'] ?? ''), '/');
if (empty($best) || $depth < $bestDepth) {
$bestDepth = $depth;
$best = [

9
lib/private/User/Database.php

@ -386,13 +386,14 @@ class Database extends ABackend implements
$row = $result->fetch();
$result->closeCursor();
$this->cache[$uid] = false;
// "uid" is primary key, so there can only be a single result
if ($row !== false) {
$this->cache[$uid]['uid'] = (string)$row['uid'];
$this->cache[$uid]['displayname'] = (string)$row['displayname'];
$this->cache[$uid] = [
'uid' => (string)$row['uid'],
'displayname' => (string)$row['displayname'],
];
} else {
$this->cache[$uid] = false;
return false;
}
}

2
lib/public/AppFramework/Services/InitialStateProvider.php

@ -42,7 +42,9 @@ abstract class InitialStateProvider implements \JsonSerializable {
/**
* @since 21.0.0
* @return mixed
*/
#[\ReturnTypeWillChange]
final public function jsonSerialize() {
return $this->getData();
}

4
lib/public/DB/QueryBuilder/IExpressionBuilder.php

@ -418,7 +418,7 @@ interface IExpressionBuilder {
* Quotes a given input parameter.
*
* @param mixed $input The parameter to be quoted.
* @param mixed|null $type One of the IQueryBuilder::PARAM_* constants
* @param int $type One of the IQueryBuilder::PARAM_* constants
*
* @return ILiteral
* @since 8.2.0
@ -426,7 +426,7 @@ interface IExpressionBuilder {
* @psalm-taint-sink sql $input
* @psalm-taint-sink sql $type
*/
public function literal($input, $type = null): ILiteral;
public function literal($input, $type = IQueryBuilder::PARAM_STR): ILiteral;
/**
* Returns a IQueryFunction that casts the column to the given type

4
lib/public/Dashboard/Model/WidgetSetting.php

@ -230,10 +230,8 @@ final class WidgetSetting implements JsonSerializable {
/**
* @since 15.0.0
* @deprecated 20.0.0
*
* @return array
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'name' => $this->getName(),
'title' => $this->getTitle(),

4
lib/public/Dashboard/Model/WidgetSetup.php

@ -261,10 +261,8 @@ final class WidgetSetup implements JsonSerializable {
/**
* @since 15.0.0
* @deprecated 20.0.0
*
* @return array
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'size' => $this->getSizes(),
'menu' => $this->getMenuEntries(),

4
lib/public/Dashboard/Model/WidgetTemplate.php

@ -312,10 +312,8 @@ final class WidgetTemplate implements JsonSerializable {
/**
* @since 15.0.0
* @deprecated 20.0.0
*
* @return array
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'icon' => $this->getIcon(),
'css' => $this->getCss(),

3
lib/public/DirectEditing/ATemplate.php

@ -57,9 +57,8 @@ abstract class ATemplate implements JsonSerializable {
/**
* @since 18.0.0
* @return array|mixed
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'id' => $this->getId(),
'title' => $this->getTitle(),

2
lib/public/EventDispatcher/GenericEvent.php

@ -156,7 +156,9 @@ class GenericEvent extends Event implements ArrayAccess, IteratorAggregate {
* @link https://php.net/manual/en/arrayaccess.offsetget.php
* @since 18.0.0
* @deprecated 22.0.0
* @return mixed
*/
#[\ReturnTypeWillChange]
public function offsetGet($offset) {
return $this->arguments[$offset];
}

2
lib/public/Files/Template/Template.php

@ -69,7 +69,7 @@ final class Template implements \JsonSerializable {
/**
* @since 21.0.0
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'templateType' => $this->templateType,
'templateId' => $this->templateId,

2
lib/public/Files/Template/TemplateFileCreator.php

@ -106,7 +106,7 @@ final class TemplateFileCreator implements \JsonSerializable {
/**
* @since 21.0.0
*/
public function jsonSerialize() {
public function jsonSerialize(): array {
return [
'app' => $this->appId,
'label' => $this->actionName,

2
lib/public/L10N/ILanguageIterator.php

@ -53,7 +53,9 @@ interface ILanguageIterator extends \Iterator {
* Move forward to next element
*
* @since 14.0.0
* @return void
*/
#[\ReturnTypeWillChange]
public function next();
/**

7
tests/Core/Command/Encryption/ChangeKeyStorageRootTest.php

@ -74,9 +74,12 @@ class ChangeKeyStorageRootTest extends TestCase {
$this->outputInterface = $this->getMockBuilder(OutputInterface::class)->getMock();
$this->userInterface = $this->getMockBuilder(UserInterface::class)->getMock();
$outputFormatterInterface = $this->getMockBuilder(OutputFormatterInterface::class)->getMock();
/* We need format method to return a string */
$outputFormatter = $this->createMock(OutputFormatterInterface::class);
$outputFormatter->method('format')->willReturnArgument(0);
$this->outputInterface->expects($this->any())->method('getFormatter')
->willReturn($outputFormatterInterface);
->willReturn($outputFormatter);
$this->changeKeyStorageRoot = new ChangeKeyStorageRoot(
$this->view,

3
tests/Core/Command/Log/FileTest.php

@ -51,6 +51,7 @@ class FileTest extends TestCase {
}
public function testEnable() {
$this->config->method('getSystemValue')->willReturnArgument(1);
$this->consoleInput->method('getOption')
->willReturnMap([
['enable', 'true']
@ -63,6 +64,7 @@ class FileTest extends TestCase {
}
public function testChangeFile() {
$this->config->method('getSystemValue')->willReturnArgument(1);
$this->consoleInput->method('getOption')
->willReturnMap([
['file', '/foo/bar/file.log']
@ -87,6 +89,7 @@ class FileTest extends TestCase {
* @dataProvider changeRotateSizeProvider
*/
public function testChangeRotateSize($optionValue, $configValue) {
$this->config->method('getSystemValue')->willReturnArgument(1);
$this->consoleInput->method('getOption')
->willReturnMap([
['rotate-size', $optionValue]

7
tests/Core/Command/Preview/RepairTest.php

@ -68,9 +68,14 @@ class RepairTest extends TestCase {
$this->output->expects($this->any())
->method('section')
->willReturn($this->output);
/* We need format method to return a string */
$outputFormatter = $this->createMock(OutputFormatterInterface::class);
$outputFormatter->method('format')->willReturnArgument(0);
$this->output->expects($this->any())
->method('getFormatter')
->willReturn($this->getMockBuilder(OutputFormatterInterface::class)->getMock());
->willReturn($outputFormatter);
$this->output->expects($this->any())
->method('writeln')
->willReturnCallback(function ($line) use ($self) {

6
tests/Core/Controller/AvatarControllerTest.php

@ -119,6 +119,8 @@ class AvatarControllerTest extends \Test\TestCase {
$this->avatarFile->method('getContent')->willReturn('image data');
$this->avatarFile->method('getMimeType')->willReturn('image type');
$this->avatarFile->method('getEtag')->willReturn('my etag');
$this->avatarFile->method('getName')->willReturn('my name');
$this->avatarFile->method('getMTime')->willReturn(42);
}
protected function tearDown(): void {
@ -290,7 +292,7 @@ class AvatarControllerTest extends \Test\TestCase {
*/
public function testPostAvatarFile() {
//Create temp file
$fileName = tempnam(null, "avatarTest");
$fileName = tempnam('', "avatarTest");
$copyRes = copy(\OC::$SERVERROOT.'/tests/data/testimage.jpg', $fileName);
$this->assertTrue($copyRes);
@ -328,7 +330,7 @@ class AvatarControllerTest extends \Test\TestCase {
*/
public function testPostAvatarFileGif() {
//Create temp file
$fileName = tempnam(null, "avatarTest");
$fileName = tempnam('', "avatarTest");
$copyRes = copy(\OC::$SERVERROOT.'/tests/data/testimage.gif', $fileName);
$this->assertTrue($copyRes);

6
tests/Core/Controller/CssControllerTest.php

@ -102,6 +102,8 @@ class CssControllerTest extends TestCase {
public function testGetFile() {
$folder = $this->createMock(ISimpleFolder::class);
$file = $this->createMock(ISimpleFile::class);
$file->method('getName')->willReturn('my name');
$file->method('getMTime')->willReturn(42);
$this->appData->method('getFolder')
->with('myapp')
->willReturn($folder);
@ -125,6 +127,8 @@ class CssControllerTest extends TestCase {
public function testGetGzipFile() {
$folder = $this->createMock(ISimpleFolder::class);
$gzipFile = $this->createMock(ISimpleFile::class);
$gzipFile->method('getName')->willReturn('my name');
$gzipFile->method('getMTime')->willReturn(42);
$this->appData->method('getFolder')
->with('myapp')
->willReturn($folder);
@ -153,6 +157,8 @@ class CssControllerTest extends TestCase {
public function testGetGzipFileNotFound() {
$folder = $this->createMock(ISimpleFolder::class);
$file = $this->createMock(ISimpleFile::class);
$file->method('getName')->willReturn('my name');
$file->method('getMTime')->willReturn(42);
$this->appData->method('getFolder')
->with('myapp')
->willReturn($folder);

2
tests/Core/Controller/GuestAvatarControllerTest.php

@ -56,6 +56,8 @@ class GuestAvatarControllerTest extends \Test\TestCase {
$this->avatar = $this->getMockBuilder(IAvatar::class)->getMock();
$this->avatarManager = $this->getMockBuilder(IAvatarManager::class)->getMock();
$this->file = $this->getMockBuilder(ISimpleFile::class)->getMock();
$this->file->method('getName')->willReturn('my name');
$this->file->method('getMTime')->willReturn(42);
$this->guestAvatarController = new GuestAvatarController(
'core',
$this->request,

6
tests/Core/Controller/JsControllerTest.php

@ -102,6 +102,8 @@ class JsControllerTest extends TestCase {
public function testGetFile() {
$folder = $this->createMock(ISimpleFolder::class);
$file = $this->createMock(ISimpleFile::class);
$file->method('getName')->willReturn('my name');
$file->method('getMTime')->willReturn(42);
$this->appData->method('getFolder')
->with('myapp')
->willReturn($folder);
@ -125,6 +127,8 @@ class JsControllerTest extends TestCase {
public function testGetGzipFile() {
$folder = $this->createMock(ISimpleFolder::class);
$gzipFile = $this->createMock(ISimpleFile::class);
$gzipFile->method('getName')->willReturn('my name');
$gzipFile->method('getMTime')->willReturn(42);
$this->appData->method('getFolder')
->with('myapp')
->willReturn($folder);
@ -153,6 +157,8 @@ class JsControllerTest extends TestCase {
public function testGetGzipFileNotFound() {
$folder = $this->createMock(ISimpleFolder::class);
$file = $this->createMock(ISimpleFile::class);
$file->method('getName')->willReturn('my name');
$file->method('getMTime')->willReturn(42);
$this->appData->method('getFolder')
->with('myapp')
->willReturn($folder);

2
tests/Core/Controller/PreviewControllerTest.php

@ -212,6 +212,8 @@ class PreviewControllerTest extends \Test\TestCase {
->willReturn(true);
$preview = $this->createMock(ISimpleFile::class);
$preview->method('getName')->willReturn('my name');
$preview->method('getMTime')->willReturn(42);
$this->previewManager->method('getPreview')
->with($this->equalTo($file), 10, 10, false, $this->equalTo('myMode'))
->willReturn($preview);

2
tests/lib/AppFramework/Http/DispatcherTest.php

@ -148,7 +148,7 @@ class DispatcherTest extends \Test\TestCase {
$this->response = $this->createMock(Response::class);
$this->lastModified = new \DateTime(null, new \DateTimeZone('GMT'));
$this->lastModified = new \DateTime('now', new \DateTimeZone('GMT'));
$this->etag = 'hi';
}

6
tests/lib/AppFramework/Http/ResponseTest.php

@ -216,7 +216,7 @@ class ResponseTest extends \Test\TestCase {
public function testGetLastModified() {
$lastModified = new \DateTime(null, new \DateTimeZone('GMT'));
$lastModified = new \DateTime('now', new \DateTimeZone('GMT'));
$lastModified->setTimestamp(1);
$this->childResponse->setLastModified($lastModified);
$this->assertEquals($lastModified, $this->childResponse->getLastModified());
@ -252,7 +252,7 @@ class ResponseTest extends \Test\TestCase {
public function testEtagLastModifiedHeaders() {
$lastModified = new \DateTime(null, new \DateTimeZone('GMT'));
$lastModified = new \DateTime('now', new \DateTimeZone('GMT'));
$lastModified->setTimestamp(1);
$this->childResponse->setLastModified($lastModified);
$headers = $this->childResponse->getHeaders();
@ -260,7 +260,7 @@ class ResponseTest extends \Test\TestCase {
}
public function testChainability() {
$lastModified = new \DateTime(null, new \DateTimeZone('GMT'));
$lastModified = new \DateTime('now', new \DateTimeZone('GMT'));
$lastModified->setTimestamp(1);
$this->childResponse->setEtag('hi')

2
tests/lib/Authentication/Listeners/RemoteWipeActivityListenerTest.php

@ -37,7 +37,7 @@ use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
class RemoteWipeActivityListenerTests extends TestCase {
class RemoteWipeActivityListenerTest extends TestCase {
/** @var IActivityManager|MockObject */
private $activityManager;

2
tests/lib/Authentication/Listeners/RemoteWipeNotificationsListenerTest.php

@ -38,7 +38,7 @@ use OCP\Notification\INotification;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class RemoteWipeNotificationListenerTests extends TestCase {
class RemoteWipeNotificationsListenerTest extends TestCase {
/** @var INotificationManager|MockObject */
private $notificationManager;

13
tests/lib/Encryption/DecryptAllTest.php

@ -81,8 +81,12 @@ class DecryptAllTest extends TestCase {
$this->userInterface = $this->getMockBuilder(UserInterface::class)
->disableOriginalConstructor()->getMock();
/* We need format method to return a string */
$outputFormatter = $this->createMock(OutputFormatterInterface::class);
$outputFormatter->method('format')->willReturn('foo');
$this->outputInterface->expects($this->any())->method('getFormatter')
->willReturn($this->createMock(OutputFormatterInterface::class));
->willReturn($outputFormatter);
$this->instance = new DecryptAll($this->encryptionManager, $this->userManager, $this->view);
@ -298,10 +302,15 @@ class DecryptAllTest extends TestCase {
->method('decryptFile')
->with('/user1/files/foo/subfile');
/* We need format method to return a string */
$outputFormatter = $this->createMock(OutputFormatterInterface::class);
$outputFormatter->method('format')->willReturn('foo');
$output = $this->createMock(OutputInterface::class);
$output->expects($this->any())
->method('getFormatter')
->willReturn($this->createMock(OutputFormatterInterface::class));
->willReturn($outputFormatter);
$progressBar = new ProgressBar($output);
$this->invokePrivate($instance, 'decryptUsersFiles', ['user1', $progressBar, '']);

13
tests/lib/Files/Config/UserMountCacheTest.php

@ -47,7 +47,18 @@ class UserMountCacheTest extends TestCase {
protected function setUp(): void {
$this->fileIds = [];
$this->connection = \OC::$server->getDatabaseConnection();
$this->userManager = new Manager($this->createMock(IConfig::class), $this->createMock(EventDispatcherInterface::class), $this->createMock(ICacheFactory::class), $this->createMock(IEventDispatcher::class));
$config = $this->getMockBuilder(IConfig::class)
->disableOriginalConstructor()
->getMock();
$config
->expects($this->any())
->method('getUserValue')
->willReturnArgument(3);
$config
->expects($this->any())
->method('getAppValue')
->willReturnArgument(2);
$this->userManager = new Manager($config, $this->createMock(EventDispatcherInterface::class), $this->createMock(ICacheFactory::class), $this->createMock(IEventDispatcher::class));
$userBackend = new Dummy();
$userBackend->createUser('u1', '');
$userBackend->createUser('u2', '');

6
tests/lib/Files/Node/FolderTest.php

@ -418,7 +418,7 @@ class FolderTest extends NodeTest {
$subStorage = $this->createMock(Storage::class);
$subStorage->method('getId')->willReturn('test::2');
$subCache = new Cache($subStorage);
$subMount = $this->getMockBuilder(MountPoint::class)->setConstructorArgs([null, ''])->getMock();
$subMount = $this->getMockBuilder(MountPoint::class)->setConstructorArgs([Temporary::class, ''])->getMock();
$mount = $this->createMock(IMountPoint::class);
$mount->method('getStorage')
@ -954,11 +954,11 @@ class FolderTest extends NodeTest {
$subStorage1 = $this->createMock(Storage::class);
$subStorage1->method('getId')->willReturn('test::2');
$subCache1 = new Cache($subStorage1);
$subMount1 = $this->getMockBuilder(MountPoint::class)->setConstructorArgs([null, ''])->getMock();
$subMount1 = $this->getMockBuilder(MountPoint::class)->setConstructorArgs([Temporary::class, ''])->getMock();
$subStorage2 = $this->createMock(Storage::class);
$subStorage2->method('getId')->willReturn('test::3');
$subCache2 = new Cache($subStorage2);
$subMount2 = $this->getMockBuilder(MountPoint::class)->setConstructorArgs([null, ''])->getMock();
$subMount2 = $this->getMockBuilder(MountPoint::class)->setConstructorArgs([Temporary::class, ''])->getMock();
$mount = $this->createMock(IMountPoint::class);
$mount->method('getStorage')

4
tests/lib/Http/Client/ResponseTest.php

@ -9,7 +9,7 @@
namespace Test\Http\Client;
use GuzzleHttp\Psr7\Response as GuzzleResponse;
use function GuzzleHttp\Psr7\stream_for;
use GuzzleHttp\Psr7\Utils;
use OC\Http\Client\Response;
/**
@ -25,7 +25,7 @@ class ResponseTest extends \Test\TestCase {
}
public function testGetBody() {
$response = new Response($this->guzzleResponse->withBody(stream_for('MyResponse')));
$response = new Response($this->guzzleResponse->withBody(Utils::streamFor('MyResponse')));
$this->assertSame('MyResponse', $response->getBody());
}

2
tests/lib/InitialStateServiceTest.php

@ -54,7 +54,7 @@ class InitialStateServiceTest extends TestCase {
[23],
[2.3],
[new class implements JsonSerializable {
public function jsonSerialize() {
public function jsonSerialize(): int {
return 3;
}
}],

4
tests/lib/TempManagerTest.php

@ -26,7 +26,9 @@ class TempManagerTest extends \Test\TestCase {
}
protected function tearDown(): void {
\OC_Helper::rmdirr($this->baseDir);
if ($this->baseDir !== null) {
\OC_Helper::rmdirr($this->baseDir);
}
$this->baseDir = null;
parent::tearDown();
}

14
tests/lib/User/ManagerTest.php

@ -667,7 +667,19 @@ class ManagerTest extends TestCase {
}
public function testDeleteUser() {
$manager = new \OC\User\Manager($this->config, $this->oldDispatcher, $this->cacheFactory, $this->eventDispatcher);
$config = $this->getMockBuilder(AllConfig::class)
->disableOriginalConstructor()
->getMock();
$config
->expects($this->any())
->method('getUserValue')
->willReturnArgument(3);
$config
->expects($this->any())
->method('getAppValue')
->willReturnArgument(2);
$manager = new \OC\User\Manager($config, $this->oldDispatcher, $this->cacheFactory, $this->eventDispatcher);
$backend = new \Test\Util\User\Dummy();
$manager->registerBackend($backend);

Loading…
Cancel
Save