Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/circles.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2022-04-20 16:47:32 +0300
committerCarl Schwan <carl@carlschwan.eu>2022-04-25 13:36:03 +0300
commite5abdde6cc00bebf2a149ddb2c008002fb66525b (patch)
treedae7a800928a2c3514b25cb8a137065b6b56364b
parentd154a50e8c6d787c16fcf216f7b227fdaf5032c8 (diff)
Add static analysisfeat/psalm
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
-rw-r--r--.github/workflows/static-analysis.yml26
-rw-r--r--.gitignore2
-rw-r--r--.php-cs-fixer.dist.php (renamed from .php_cs.dist)0
-rw-r--r--composer.json10
-rw-r--r--composer.lock978
-rw-r--r--lib/Circles/FileSharingBroadcaster.php5
-rw-r--r--lib/Command/CirclesMaintenance.php2
-rw-r--r--lib/Command/CirclesMemberships.php2
-rw-r--r--lib/Controller/AdminController.php34
-rw-r--r--lib/Controller/EventWrapperController.php2
-rw-r--r--lib/Controller/LocalController.php38
-rw-r--r--lib/Db/CircleProviderRequestBuilder.php2
-rw-r--r--lib/Db/MemberRequestBuilder.php2
-rw-r--r--lib/Db/ShareWrapperRequestBuilder.php6
-rw-r--r--lib/Model/ShareWrapper.php349
-rw-r--r--lib/Tools/Model/SimpleDataStore.php13
-rw-r--r--psalm.xml39
-rw-r--r--tests/psalm-baseline.xml916
-rw-r--r--tests/stub.phpstub1023
19 files changed, 2883 insertions, 566 deletions
diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml
new file mode 100644
index 00000000..8fa3c9ec
--- /dev/null
+++ b/.github/workflows/static-analysis.yml
@@ -0,0 +1,26 @@
+name: Static analysis
+
+on: [pull_request]
+
+jobs:
+ static-psalm-analysis:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ ocp-version: [ 'dev-master' ]
+ name: Nextcloud ${{ matrix.ocp-version }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ - name: Set up php
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: 7.4
+ tools: composer:v1
+ coverage: none
+ - name: Install dependencies
+ run: composer i
+ - name: Install dependencies
+ run: composer require --dev christophwurst/nextcloud:${{ matrix.ocp-version }}
+ - name: Run coding standards check
+ run: composer run psalm
diff --git a/.gitignore b/.gitignore
index fe87a0e4..b926d971 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,4 @@
build/
.settings/
vendor/
-.php_cs.cache
+.php-cs-fixer.cache
diff --git a/.php_cs.dist b/.php-cs-fixer.dist.php
index f7bbdd81..f7bbdd81 100644
--- a/.php_cs.dist
+++ b/.php-cs-fixer.dist.php
diff --git a/composer.json b/composer.json
index 16f5aef1..db9128ab 100644
--- a/composer.json
+++ b/composer.json
@@ -25,10 +25,16 @@
"scripts": {
"cs:check": "php-cs-fixer fix --dry-run --diff",
"cs:fix": "php-cs-fixer fix",
+ "psalm": "psalm --threads=1 --update-baseline",
+ "psalm:update-baseline": "psalm --threads=1 --update-baseline",
+ "psalm:clear": "psalm --clear-cache && psalm --clear-global-cache",
+ "psalm:fix": "psalm --alter --issues=InvalidReturnType,InvalidNullableReturnType,MissingParamType,InvalidFalsableReturnType",
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l"
},
"require-dev": {
- "nextcloud/coding-standard": "^0.5.0",
- "phpunit/phpunit": "^9.5"
+ "phpunit/phpunit": "^9.5",
+ "vimeo/psalm": "^4.22",
+ "christophwurst/nextcloud": "dev-master",
+ "nextcloud/coding-standard": "^1.0"
}
}
diff --git a/composer.lock b/composer.lock
index 5b4f10af..8ab9e6c9 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,10 +4,293 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "0a8df5b2ed4503b7107a5e84d632826e",
+ "content-hash": "77e116a2c846c4e9f1fc38400e07bbb5",
"packages": [],
"packages-dev": [
{
+ "name": "amphp/amp",
+ "version": "v2.6.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/amp.git",
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1",
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^7 | ^8 | ^9",
+ "psalm/phar": "^3.11@dev",
+ "react/promise": "^2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/functions.php",
+ "lib/Internal/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\": "lib"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A non-blocking concurrency framework for PHP applications.",
+ "homepage": "https://amphp.org/amp",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "awaitable",
+ "concurrency",
+ "event",
+ "event-loop",
+ "future",
+ "non-blocking",
+ "promise"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/amp/issues",
+ "source": "https://github.com/amphp/amp/tree/v2.6.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-20T17:52:18+00:00"
+ },
+ {
+ "name": "amphp/byte-stream",
+ "version": "v1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/byte-stream.git",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1.4",
+ "friendsofphp/php-cs-fixer": "^2.3",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^6 || ^7 || ^8",
+ "psalm/phar": "^3.11.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\ByteStream\\": "lib"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "homepage": "http://amphp.org/byte-stream",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "non-blocking",
+ "stream"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/byte-stream/issues",
+ "source": "https://github.com/amphp/byte-stream/tree/v1.8.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2021-03-30T17:13:30+00:00"
+ },
+ {
+ "name": "christophwurst/nextcloud",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ChristophWurst/nextcloud_composer.git",
+ "reference": "5e2c78469a4f669ed11016cf8a6668792efcbedf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ChristophWurst/nextcloud_composer/zipball/5e2c78469a4f669ed11016cf8a6668792efcbedf",
+ "reference": "5e2c78469a4f669ed11016cf8a6668792efcbedf",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ~8.0 || ~8.1",
+ "psr/container": "^1.0",
+ "psr/event-dispatcher": "^1.0",
+ "psr/log": "^1.1"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "24.0.0-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "AGPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Christoph Wurst",
+ "email": "christoph@winzerhof-wurst.at"
+ }
+ ],
+ "description": "Composer package containing Nextcloud's public API (classes, interfaces)",
+ "support": {
+ "issues": "https://github.com/ChristophWurst/nextcloud_composer/issues",
+ "source": "https://github.com/ChristophWurst/nextcloud_composer/tree/master"
+ },
+ "time": "2022-04-15T01:52:26+00:00"
+ },
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d",
+ "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13",
+ "phpunit/phpunit": "^6.5 || ^7"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PackageVersions\\Installer",
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "support": {
+ "issues": "https://github.com/composer/package-versions-deprecated/issues",
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-17T14:14:24+00:00"
+ },
+ {
"name": "composer/pcre",
"version": "1.0.1",
"source": {
@@ -226,6 +509,43 @@
"time": "2022-02-24T20:20:32+00:00"
},
{
+ "name": "dnoegel/php-xdg-base-dir",
+ "version": "v0.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "implementation of xdg base directory specification for php",
+ "support": {
+ "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues",
+ "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1"
+ },
+ "time": "2019-12-04T15:06:13+00:00"
+ },
+ {
"name": "doctrine/annotations",
"version": "1.13.2",
"source": {
@@ -444,86 +764,167 @@
"time": "2022-02-28T11:07:21+00:00"
},
{
+ "name": "felixfbecker/advanced-json-rpc",
+ "version": "v3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "shasum": ""
+ },
+ "require": {
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "php": "^7.1 || ^8.0",
+ "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "A more advanced JSONRPC implementation",
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
+ "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
+ },
+ "time": "2021-06-11T22:34:44+00:00"
+ },
+ {
+ "name": "felixfbecker/language-server-protocol",
+ "version": "v1.5.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
+ "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842",
+ "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "*",
+ "squizlabs/php_codesniffer": "^3.1",
+ "vimeo/psalm": "^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "LanguageServerProtocol\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "PHP classes for the Language Server Protocol",
+ "keywords": [
+ "language",
+ "microsoft",
+ "php",
+ "server"
+ ],
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
+ "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2"
+ },
+ "time": "2022-03-02T22:36:06+00:00"
+ },
+ {
"name": "friendsofphp/php-cs-fixer",
- "version": "v2.19.3",
+ "version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
- "reference": "75ac86f33fab4714ea5a39a396784d83ae3b5ed8"
+ "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/75ac86f33fab4714ea5a39a396784d83ae3b5ed8",
- "reference": "75ac86f33fab4714ea5a39a396784d83ae3b5ed8",
+ "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/47177af1cfb9dab5d1cc4daf91b7179c2efe7fad",
+ "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad",
"shasum": ""
},
"require": {
- "composer/semver": "^1.4 || ^2.0 || ^3.0",
- "composer/xdebug-handler": "^1.2 || ^2.0",
- "doctrine/annotations": "^1.2",
+ "composer/semver": "^3.2",
+ "composer/xdebug-handler": "^2.0",
+ "doctrine/annotations": "^1.12",
"ext-json": "*",
"ext-tokenizer": "*",
- "php": "^5.6 || ^7.0 || ^8.0",
- "php-cs-fixer/diff": "^1.3",
- "symfony/console": "^3.4.43 || ^4.1.6 || ^5.0",
- "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0",
- "symfony/filesystem": "^3.0 || ^4.0 || ^5.0",
- "symfony/finder": "^3.0 || ^4.0 || ^5.0",
- "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0",
- "symfony/polyfill-php70": "^1.0",
- "symfony/polyfill-php72": "^1.4",
- "symfony/process": "^3.0 || ^4.0 || ^5.0",
- "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0"
+ "php": "^7.2.5 || ^8.0",
+ "php-cs-fixer/diff": "^2.0",
+ "symfony/console": "^4.4.20 || ^5.1.3 || ^6.0",
+ "symfony/event-dispatcher": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/filesystem": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/finder": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/options-resolver": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/polyfill-mbstring": "^1.23",
+ "symfony/polyfill-php80": "^1.23",
+ "symfony/polyfill-php81": "^1.23",
+ "symfony/process": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/stopwatch": "^4.4.20 || ^5.0 || ^6.0"
},
"require-dev": {
- "justinrainbow/json-schema": "^5.0",
- "keradus/cli-executor": "^1.4",
- "mikey179/vfsstream": "^1.6",
- "php-coveralls/php-coveralls": "^2.4.2",
- "php-cs-fixer/accessible-object": "^1.0",
+ "justinrainbow/json-schema": "^5.2",
+ "keradus/cli-executor": "^1.5",
+ "mikey179/vfsstream": "^1.6.8",
+ "php-coveralls/php-coveralls": "^2.5.2",
+ "php-cs-fixer/accessible-object": "^1.1",
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2",
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1",
+ "phpspec/prophecy": "^1.15",
"phpspec/prophecy-phpunit": "^1.1 || ^2.0",
- "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.13 || ^9.5",
+ "phpunit/phpunit": "^8.5.21 || ^9.5",
"phpunitgoodpractices/polyfill": "^1.5",
"phpunitgoodpractices/traits": "^1.9.1",
- "sanmai/phpunit-legacy-adapter": "^6.4 || ^8.2.1",
- "symfony/phpunit-bridge": "^5.2.1",
- "symfony/yaml": "^3.0 || ^4.0 || ^5.0"
+ "symfony/phpunit-bridge": "^5.2.4 || ^6.0",
+ "symfony/yaml": "^4.4.20 || ^5.0 || ^6.0"
},
"suggest": {
"ext-dom": "For handling output formats in XML",
- "ext-mbstring": "For handling non-UTF8 characters.",
- "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.",
- "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.",
- "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
+ "ext-mbstring": "For handling non-UTF8 characters."
},
"bin": [
"php-cs-fixer"
],
"type": "application",
- "extra": {
- "branch-alias": {
- "dev-master": "2.19-dev"
- }
- },
"autoload": {
"psr-4": {
"PhpCsFixer\\": "src/"
- },
- "classmap": [
- "tests/Test/AbstractFixerTestCase.php",
- "tests/Test/AbstractIntegrationCaseFactory.php",
- "tests/Test/AbstractIntegrationTestCase.php",
- "tests/Test/Assert/AssertTokensTrait.php",
- "tests/Test/IntegrationCase.php",
- "tests/Test/IntegrationCaseFactory.php",
- "tests/Test/IntegrationCaseFactoryInterface.php",
- "tests/Test/InternalIntegrationCaseFactory.php",
- "tests/Test/IsIdenticalConstraint.php",
- "tests/Test/TokensWithObservedTransformers.php",
- "tests/TestCase.php"
- ]
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -542,7 +943,7 @@
"description": "A tool to automatically fix PHP code style",
"support": {
"issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues",
- "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.19.3"
+ "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.4.0"
},
"funding": [
{
@@ -550,7 +951,7 @@
"type": "github"
}
],
- "time": "2021-11-15T17:17:55+00:00"
+ "time": "2021-12-11T16:25:08+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -612,22 +1013,73 @@
"time": "2022-03-03T13:19:32+00:00"
},
{
+ "name": "netresearch/jsonmapper",
+ "version": "v4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cweiske/jsonmapper.git",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
+ "squizlabs/php_codesniffer": "~3.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JsonMapper": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "OSL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Christian Weiske",
+ "email": "cweiske@cweiske.de",
+ "homepage": "http://github.com/cweiske/jsonmapper/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Map nested JSON structures onto PHP classes",
+ "support": {
+ "email": "cweiske@cweiske.de",
+ "issues": "https://github.com/cweiske/jsonmapper/issues",
+ "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
+ },
+ "time": "2020-12-01T19:48:11+00:00"
+ },
+ {
"name": "nextcloud/coding-standard",
- "version": "v0.5.0",
+ "version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/nextcloud/coding-standard.git",
- "reference": "742ed895ae76c10daf95e08488cfb3f554199f40"
+ "reference": "f3d1f9375e89c605deb1734f59a9f51ecbe80578"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/742ed895ae76c10daf95e08488cfb3f554199f40",
- "reference": "742ed895ae76c10daf95e08488cfb3f554199f40",
+ "url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/f3d1f9375e89c605deb1734f59a9f51ecbe80578",
+ "reference": "f3d1f9375e89c605deb1734f59a9f51ecbe80578",
"shasum": ""
},
"require": {
- "friendsofphp/php-cs-fixer": "^2.17",
- "php": "^7.2|^8.0"
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "php": "^7.3|^8.0"
},
"type": "library",
"autoload": {
@@ -648,9 +1100,9 @@
"description": "Nextcloud coding standards for the php cs fixer",
"support": {
"issues": "https://github.com/nextcloud/coding-standard/issues",
- "source": "https://github.com/nextcloud/coding-standard/tree/v0.5.0"
+ "source": "https://github.com/nextcloud/coding-standard/tree/v1.0.0"
},
- "time": "2021-01-11T14:15:58+00:00"
+ "time": "2021-11-10T08:44:10+00:00"
},
{
"name": "nikic/php-parser",
@@ -709,6 +1161,59 @@
"time": "2021-11-30T19:35:32+00:00"
},
{
+ "name": "openlss/lib-array2xml",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nullivex/lib-array2xml.git",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "LSS": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Bryan Tong",
+ "email": "bryan@nullivex.com",
+ "homepage": "https://www.nullivex.com"
+ },
+ {
+ "name": "Tony Butler",
+ "email": "spudz76@gmail.com",
+ "homepage": "https://www.nullivex.com"
+ }
+ ],
+ "description": "Array2XML conversion library credit to lalit.org",
+ "homepage": "https://www.nullivex.com",
+ "keywords": [
+ "array",
+ "array conversion",
+ "xml",
+ "xml conversion"
+ ],
+ "support": {
+ "issues": "https://github.com/nullivex/lib-array2xml/issues",
+ "source": "https://github.com/nullivex/lib-array2xml/tree/master"
+ },
+ "time": "2019-03-29T20:06:56+00:00"
+ },
+ {
"name": "phar-io/manifest",
"version": "2.0.3",
"source": {
@@ -821,16 +1326,16 @@
},
{
"name": "php-cs-fixer/diff",
- "version": "v1.3.1",
+ "version": "v2.0.2",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/diff.git",
- "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759"
+ "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/dbd31aeb251639ac0b9e7e29405c1441907f5759",
- "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3",
+ "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3",
"shasum": ""
},
"require": {
@@ -858,21 +1363,18 @@
{
"name": "Kore Nordmann",
"email": "mail@kore-nordmann.de"
- },
- {
- "name": "SpacePossum"
}
],
- "description": "sebastian/diff v2 backport support for PHP5.6",
+ "description": "sebastian/diff v3 backport support for PHP 5.6+",
"homepage": "https://github.com/PHP-CS-Fixer",
"keywords": [
"diff"
],
"support": {
"issues": "https://github.com/PHP-CS-Fixer/diff/issues",
- "source": "https://github.com/PHP-CS-Fixer/diff/tree/v1.3.1"
+ "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2"
},
- "time": "2020-10-14T08:39:05+00:00"
+ "time": "2020-10-14T08:32:19+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -2936,16 +3438,16 @@
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v2.5.0",
+ "version": "v2.5.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a"
+ "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/66bea3b09be61613cd3b4043a65a8ec48cfa6d2a",
- "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1",
+ "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1",
"shasum": ""
},
"require": {
@@ -2995,7 +3497,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.1"
},
"funding": [
{
@@ -3011,20 +3513,20 @@
"type": "tidelift"
}
],
- "time": "2021-07-12T14:48:14+00:00"
+ "time": "2022-01-02T09:53:40+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v5.4.6",
+ "version": "v5.4.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "d53a45039974952af7f7ebc461ccdd4295e29440"
+ "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/d53a45039974952af7f7ebc461ccdd4295e29440",
- "reference": "d53a45039974952af7f7ebc461ccdd4295e29440",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/3a4442138d80c9f7b600fb297534ac718b61d37f",
+ "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f",
"shasum": ""
},
"require": {
@@ -3059,7 +3561,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.4.6"
+ "source": "https://github.com/symfony/filesystem/tree/v5.4.7"
},
"funding": [
{
@@ -3075,7 +3577,7 @@
"type": "tidelift"
}
],
- "time": "2022-03-02T12:42:23+00:00"
+ "time": "2022-04-01T12:33:59+00:00"
},
{
"name": "symfony/finder",
@@ -3540,85 +4042,17 @@
"time": "2021-11-30T18:21:41+00:00"
},
{
- "name": "symfony/polyfill-php70",
- "version": "v1.20.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php70.git",
- "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644",
- "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "metapackage",
- "extra": {
- "branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-10-23T14:02:19+00:00"
- },
- {
- "name": "symfony/polyfill-php72",
+ "name": "symfony/polyfill-php73",
"version": "v1.25.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
- "reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5",
+ "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5",
"shasum": ""
},
"require": {
@@ -3639,8 +4073,11 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- }
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -3656,7 +4093,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -3665,7 +4102,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0"
},
"funding": [
{
@@ -3681,20 +4118,20 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:17:38+00:00"
+ "time": "2021-06-05T21:20:04+00:00"
},
{
- "name": "symfony/polyfill-php73",
+ "name": "symfony/polyfill-php80",
"version": "v1.25.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5"
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5",
- "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c",
+ "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c",
"shasum": ""
},
"require": {
@@ -3715,7 +4152,7 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
+ "Symfony\\Polyfill\\Php80\\": ""
},
"classmap": [
"Resources/stubs"
@@ -3727,6 +4164,10 @@
],
"authors": [
{
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
@@ -3735,7 +4176,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -3744,7 +4185,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0"
},
"funding": [
{
@@ -3760,20 +4201,20 @@
"type": "tidelift"
}
],
- "time": "2021-06-05T21:20:04+00:00"
+ "time": "2022-03-04T08:16:47+00:00"
},
{
- "name": "symfony/polyfill-php80",
+ "name": "symfony/polyfill-php81",
"version": "v1.25.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c"
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c",
- "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
+ "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
"shasum": ""
},
"require": {
@@ -3794,7 +4235,7 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
+ "Symfony\\Polyfill\\Php81\\": ""
},
"classmap": [
"Resources/stubs"
@@ -3806,10 +4247,6 @@
],
"authors": [
{
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
@@ -3818,7 +4255,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -3827,7 +4264,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0"
},
"funding": [
{
@@ -3843,20 +4280,20 @@
"type": "tidelift"
}
],
- "time": "2022-03-04T08:16:47+00:00"
+ "time": "2021-09-13T13:58:11+00:00"
},
{
"name": "symfony/process",
- "version": "v5.4.5",
+ "version": "v5.4.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "95440409896f90a5f85db07a32b517ecec17fa4c"
+ "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/95440409896f90a5f85db07a32b517ecec17fa4c",
- "reference": "95440409896f90a5f85db07a32b517ecec17fa4c",
+ "url": "https://api.github.com/repos/symfony/process/zipball/38a44b2517b470a436e1c944bf9b9ba3961137fb",
+ "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb",
"shasum": ""
},
"require": {
@@ -3889,7 +4326,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v5.4.5"
+ "source": "https://github.com/symfony/process/tree/v5.4.7"
},
"funding": [
{
@@ -3905,7 +4342,7 @@
"type": "tidelift"
}
],
- "time": "2022-01-30T18:16:22+00:00"
+ "time": "2022-03-18T16:18:52+00:00"
},
{
"name": "symfony/service-contracts",
@@ -4189,6 +4626,112 @@
"time": "2021-07-28T10:34:58+00:00"
},
{
+ "name": "vimeo/psalm",
+ "version": "4.22.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vimeo/psalm.git",
+ "reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/fc2c6ab4d5fa5d644d8617089f012f3bb84b8703",
+ "reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2.4.2",
+ "amphp/byte-stream": "^1.5",
+ "composer/package-versions-deprecated": "^1.8.0",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0",
+ "dnoegel/php-xdg-base-dir": "^0.1.1",
+ "ext-ctype": "*",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "felixfbecker/advanced-json-rpc": "^3.0.3",
+ "felixfbecker/language-server-protocol": "^1.5",
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "nikic/php-parser": "^4.13",
+ "openlss/lib-array2xml": "^1.0",
+ "php": "^7.1|^8",
+ "sebastian/diff": "^3.0 || ^4.0",
+ "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0",
+ "webmozart/path-util": "^2.3"
+ },
+ "provide": {
+ "psalm/psalm": "self.version"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.2",
+ "brianium/paratest": "^4.0||^6.0",
+ "ext-curl": "*",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpdocumentor/reflection-docblock": "^5",
+ "phpmyadmin/sql-parser": "5.1.0||dev-master",
+ "phpspec/prophecy": ">=1.9.0",
+ "phpunit/phpunit": "^9.0",
+ "psalm/plugin-phpunit": "^0.16",
+ "slevomat/coding-standard": "^7.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "symfony/process": "^4.3 || ^5.0 || ^6.0",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "suggest": {
+ "ext-curl": "In order to send data to shepherd",
+ "ext-igbinary": "^2.0.5 is required, used to serialize caching data"
+ },
+ "bin": [
+ "psalm",
+ "psalm-language-server",
+ "psalm-plugin",
+ "psalm-refactor",
+ "psalter"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev",
+ "dev-3.x": "3.x-dev",
+ "dev-2.x": "2.x-dev",
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php",
+ "src/spl_object_id.php"
+ ],
+ "psr-4": {
+ "Psalm\\": "src/Psalm/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Brown"
+ }
+ ],
+ "description": "A static analysis tool for finding errors in PHP applications",
+ "keywords": [
+ "code",
+ "inspection",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/vimeo/psalm/issues",
+ "source": "https://github.com/vimeo/psalm/tree/4.22.0"
+ },
+ "time": "2022-02-24T20:34:05+00:00"
+ },
+ {
"name": "webmozart/assert",
"version": "1.10.0",
"source": {
@@ -4245,11 +4788,64 @@
"source": "https://github.com/webmozarts/assert/tree/1.10.0"
},
"time": "2021-03-09T10:59:23+00:00"
+ },
+ {
+ "name": "webmozart/path-util",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/path-util.git",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "webmozart/assert": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\PathUtil\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
+ "support": {
+ "issues": "https://github.com/webmozart/path-util/issues",
+ "source": "https://github.com/webmozart/path-util/tree/2.3.0"
+ },
+ "abandoned": "symfony/filesystem",
+ "time": "2015-12-17T08:42:14+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": [],
+ "stability-flags": {
+ "christophwurst/nextcloud": 20
+ },
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
@@ -4257,5 +4853,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.0.0"
+ "plugin-api-version": "2.2.0"
}
diff --git a/lib/Circles/FileSharingBroadcaster.php b/lib/Circles/FileSharingBroadcaster.php
index 316ab835..2a564319 100644
--- a/lib/Circles/FileSharingBroadcaster.php
+++ b/lib/Circles/FileSharingBroadcaster.php
@@ -453,9 +453,8 @@ class FileSharingBroadcaster implements IBroadcaster {
$senderName = $this->l10n->t('%s on %s', [$author, $instanceName]);
$message->setFrom([Util::getDefaultEmailAddress($instanceName) => $senderName]);
- $message->setSubject($subject);
- $message->setPlainBody($emailTemplate->renderText());
- $message->setHtmlBody($emailTemplate->renderHtml());
+ $emailTemplate->setSubject($subject);
+ $message->useTemplate($emailTemplate);
$message->setTo([$email]);
$this->mailer->send($message);
diff --git a/lib/Command/CirclesMaintenance.php b/lib/Command/CirclesMaintenance.php
index f479b9be..fe42cf9a 100644
--- a/lib/Command/CirclesMaintenance.php
+++ b/lib/Command/CirclesMaintenance.php
@@ -109,7 +109,7 @@ class CirclesMaintenance extends Base {
$level = (int)$input->getOption('level');
if ($reset || $uninstall) {
- $action = strtolower(($uninstall) ? 'uninstall' : 'reset');
+ $action = $uninstall ? 'uninstall' : 'reset';
$output->writeln('');
$output->writeln('');
diff --git a/lib/Command/CirclesMemberships.php b/lib/Command/CirclesMemberships.php
index 415c88bb..92483209 100644
--- a/lib/Command/CirclesMemberships.php
+++ b/lib/Command/CirclesMemberships.php
@@ -204,7 +204,7 @@ class CirclesMemberships extends Base {
}
$type = Member::parseTypeString($input->getOption('type'));
- $federatedUser = $this->federatedUserService->getFederatedUser($userId, (int)$type);
+ $federatedUser = $this->federatedUserService->getFederatedUser($userId, $type);
// if ($this->input->getOption('reset')) {
// $this->membershipsService->resetMemberships($federatedUser->getSingleId());
diff --git a/lib/Controller/AdminController.php b/lib/Controller/AdminController.php
index 37d7d31a..2b7f6bb9 100644
--- a/lib/Controller/AdminController.php
+++ b/lib/Controller/AdminController.php
@@ -63,7 +63,7 @@ use OCP\IUserSession;
*
* @package OCA\Circles\Controller
*/
-class AdminController extends OcsController {
+class AdminController extends OCSController {
use TDeserialize;
use TNCLogger;
@@ -156,7 +156,7 @@ class AdminController extends OcsController {
'local' => $local
]
);
- throw new OcsException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -176,7 +176,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($circle));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId]);
- throw new OcsException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -217,7 +217,7 @@ class AdminController extends OcsController {
'type' => $type
]
);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -254,7 +254,7 @@ class AdminController extends OcsController {
'level' => $level
]
);
- throw new OcsException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -280,7 +280,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($this->circleService->getCircles($probe)));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -302,7 +302,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serialize($this->circleService->getCircle($circleId, $probe)));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId]);
- throw new OcsException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -322,7 +322,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -342,7 +342,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -368,7 +368,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId, 'memberId' => $memberId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -391,7 +391,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId, 'memberId' => $memberId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -410,7 +410,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($this->memberService->getMembers($circleId)));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -432,7 +432,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($outcome));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId, 'value' => $value]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -454,7 +454,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($outcome));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId, 'value' => $value]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -477,7 +477,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($outcome));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'setting' => $setting, 'value' => $value]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -502,7 +502,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serializeArray($outcome));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId, 'value' => $value]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -523,7 +523,7 @@ class AdminController extends OcsController {
return new DataResponse($this->serialize($membership));
} catch (Exception $e) {
$this->e($e, ['emulated' => $emulated, 'circleId' => $circleId, 'singleId' => $singleId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
diff --git a/lib/Controller/EventWrapperController.php b/lib/Controller/EventWrapperController.php
index 0e09afe4..fd2ca5a8 100644
--- a/lib/Controller/EventWrapperController.php
+++ b/lib/Controller/EventWrapperController.php
@@ -118,7 +118,7 @@ class EventWrapperController extends Controller {
public function asyncBroadcast(string $token): DataResponse {
$wrappers = $this->remoteUpstreamService->getEventsByToken($token);
if (empty($wrappers) && $token !== 'test-dummy-token') {
- return new DataResponse(null, Http::STATUS_OK);
+ return new DataResponse([], Http::STATUS_OK);
}
// closing socket, keep current process running.
diff --git a/lib/Controller/LocalController.php b/lib/Controller/LocalController.php
index efa78363..8a3bf6db 100644
--- a/lib/Controller/LocalController.php
+++ b/lib/Controller/LocalController.php
@@ -61,7 +61,7 @@ use OCP\IUserSession;
*
* @package OCA\Circles\Controller
*/
-class LocalController extends OcsController {
+class LocalController extends OCSController {
use TDeserialize;
use TNCLogger;
@@ -145,7 +145,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($circle));
} catch (Exception $e) {
$this->e($e, ['name' => $name, 'members' => $personal, 'local' => $local]);
- throw new OcsException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -167,7 +167,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($circle));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId]);
- throw new OcsException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -187,7 +187,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($this->searchService->search($term)));
} catch (Exception $e) {
$this->e($e, ['term' => $term]);
- throw new OcsException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -210,7 +210,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serialize($this->circleService->getCircle($circleId, $probe)));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId]);
- throw new OcsException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -245,7 +245,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'userId' => $userId, 'type' => $type]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -277,7 +277,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'members' => $members]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -299,7 +299,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -321,7 +321,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -352,7 +352,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'memberId' => $memberId, 'level' => $level]);
- throw new OcsException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -379,7 +379,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'memberId' => $memberId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -403,7 +403,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($result));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'memberId' => $memberId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -431,7 +431,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($this->circleService->getCircles($probe)));
} catch (Exception $e) {
$this->e($e);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -451,7 +451,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($this->memberService->getMembers($circleId)));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -474,7 +474,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($outcome));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'value' => $value]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -497,7 +497,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($outcome));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'value' => $value]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -521,7 +521,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($outcome));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'setting' => $setting, 'value' => $value]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -544,7 +544,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serializeArray($outcome));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'value' => $value]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
@@ -566,7 +566,7 @@ class LocalController extends OcsController {
return new DataResponse($this->serialize($membership));
} catch (Exception $e) {
$this->e($e, ['circleId' => $circleId, 'singleId' => $singleId]);
- throw new OCSException($e->getMessage(), $e->getCode());
+ throw new OCSException($e->getMessage(), (int)$e->getCode());
}
}
diff --git a/lib/Db/CircleProviderRequestBuilder.php b/lib/Db/CircleProviderRequestBuilder.php
index b401151f..7f06e27a 100644
--- a/lib/Db/CircleProviderRequestBuilder.php
+++ b/lib/Db/CircleProviderRequestBuilder.php
@@ -410,7 +410,7 @@ class CircleProviderRequestBuilder extends DeprecatedRequestBuilder {
->setValue('password', $qb->createNamedParameter($password))
->setValue('permissions', $qb->createNamedParameter($share->getPermissions()))
->setValue('token', $qb->createNamedParameter($share->getToken()))
- ->setValue('stime', $qb->createFunction('UNIX_TIMESTAMP()'));
+ ->setValue('stime', (string)$qb->createFunction('UNIX_TIMESTAMP()'));
return $qb;
}
diff --git a/lib/Db/MemberRequestBuilder.php b/lib/Db/MemberRequestBuilder.php
index 6e87c0bb..9fa31f3c 100644
--- a/lib/Db/MemberRequestBuilder.php
+++ b/lib/Db/MemberRequestBuilder.php
@@ -130,7 +130,7 @@ class MemberRequestBuilder extends CoreRequestBuilder {
* @param CoreQueryBuilder $qb
* @param bool $asFederatedUser
*
- * @return Member|FederatedUser[]
+ * @return Member[]|FederatedUser[]
*/
public function getItemsFromRequest(CoreQueryBuilder $qb, bool $asFederatedUser = false): array {
$object = Member::class;
diff --git a/lib/Db/ShareWrapperRequestBuilder.php b/lib/Db/ShareWrapperRequestBuilder.php
index 87762143..19f6efc4 100644
--- a/lib/Db/ShareWrapperRequestBuilder.php
+++ b/lib/Db/ShareWrapperRequestBuilder.php
@@ -32,7 +32,7 @@ declare(strict_types=1);
namespace OCA\Circles\Db;
use OCA\Circles\Tools\Exceptions\RowNotFoundException;
-use OC\Share20\Share;
+use OCP\Share\IShare;
use OCA\Circles\Exceptions\ShareWrapperNotFoundException;
use OCA\Circles\Model\ShareWrapper;
@@ -74,7 +74,7 @@ class ShareWrapperRequestBuilder extends CoreRequestBuilder {
protected function getShareSelectSql(string $alias = CoreQueryBuilder::SHARE): CoreQueryBuilder {
$qb = $this->getQueryBuilder();
$qb->generateSelect(self::TABLE_SHARE, self::$outsideTables[self::TABLE_SHARE], $alias)
- ->limitToShareType(Share::TYPE_CIRCLE);
+ ->limitToShareType(IShare::TYPE_CIRCLE);
return $qb;
}
@@ -88,7 +88,7 @@ class ShareWrapperRequestBuilder extends CoreRequestBuilder {
protected function getShareDeleteSql(): CoreQueryBuilder {
$qb = $this->getQueryBuilder();
$qb->delete(self::TABLE_SHARE)
- ->limitToShareType(Share::TYPE_CIRCLE);
+ ->limitToShareType(IShare::TYPE_CIRCLE);
return $qb;
}
diff --git a/lib/Model/ShareWrapper.php b/lib/Model/ShareWrapper.php
index 2a242f99..1e2d656d 100644
--- a/lib/Model/ShareWrapper.php
+++ b/lib/Model/ShareWrapper.php
@@ -37,6 +37,7 @@ use OCA\Circles\Tools\IDeserializable;
use OCA\Circles\Tools\Traits\TDeserialize;
use OCA\Circles\Tools\Traits\TArrayTools;
use DateTime;
+use DateTimeInterface;
use JsonSerializable;
use OC;
use OC\Files\Cache\Cache;
@@ -58,555 +59,285 @@ class ShareWrapper extends ManagedModel implements IDeserializable, IQueryRow, J
use TArrayTools;
use TDeserialize;
+ private string $id = '';
+ private int $permissions = 0;
+ private string $itemType = '';
+ private int $itemSource = 0;
+ private string $itemTarget = '';
+ private int $fileSource = 0;
+ private string $fileTarget = '';
+ private string $token = '';
+ private int $status = 0;
+ private string $providerId = '';
+ private DateTimeInterface $shareTime;
+ private string $sharedWith = '';
+ private string $sharedBy = '';
+ private string $shareOwner = '';
+ private int $shareType = 0;
+ private ?Circle $circle = null;
+ private int $childId = 0;
+ private string $childFileTarget = '';
+ private int $childPermissions = 0;
+ private ?FileCacheWrapper $fileCache = null;
+ private ?Member $initiator = null;
+ private ?Member $owner = null;
+ private ?ShareToken $shareToken = null;
+
+ public function __construct() {
+ $this->shareTime = new DateTime();
+ }
- /** @var string */
- private $id = '';
-
- /** @var int */
- private $permissions = 0;
-
- /** @var string */
- private $itemType = '';
-
- /** @var int */
- private $itemSource = 0;
-
- /** @var string */
- private $itemTarget = '';
-
- /** @var int */
- private $fileSource = 0;
-
- /** @var string */
- private $fileTarget = '';
-
- /** @var string */
- private $token = '';
-
- /** @var int */
- private $status = 0;
-
- /** @var string */
- private $providerId = '';
-
- /** @var DateTime */
- private $shareTime = '';
-
- /** @var string */
- private $sharedWith = '';
-
- /** @var string */
- private $sharedBy = '';
-
- /** @var string */
- private $shareOwner = '';
-
- /** @var int */
- private $shareType = 0;
-
- /** @var Circle */
- private $circle;
-
- /** @var int */
- private $childId = 0;
-
- /** @var string */
- private $childFileTarget = '';
-
- /** @var int */
- private $childPermissions = 0;
-
- /** @var FileCacheWrapper */
- private $fileCache;
-
- /** @var Member */
- private $initiator;
-
- /** @var Member */
- private $owner;
-
- /** @var ShareToken */
- private $shareToken;
-
-
- /**
- * @param string $id
- *
- * @return ShareWrapper
- */
public function setId(string $id): self {
$this->id = $id;
return $this;
}
- /**
- * @return string
- */
public function getId(): string {
return $this->id;
}
-
- /**
- * @param int $permissions
- *
- * @return ShareWrapper
- */
public function setPermissions(int $permissions): self {
$this->permissions = $permissions;
return $this;
}
- /**
- * @return int
- */
public function getPermissions(): int {
return $this->permissions;
}
-
- /**
- * @param string $itemType
- *
- * @return ShareWrapper
- */
public function setItemType(string $itemType): self {
$this->itemType = $itemType;
return $this;
}
- /**
- * @return string
- */
public function getItemType(): string {
return $this->itemType;
}
-
- /**
- * @param int $itemSource
- *
- * @return ShareWrapper
- */
public function setItemSource(int $itemSource): self {
$this->itemSource = $itemSource;
return $this;
}
- /**
- * @return int
- */
public function getItemSource(): int {
return $this->itemSource;
}
-
- /**
- * @param string $itemTarget
- *
- * @return ShareWrapper
- */
public function setItemTarget(string $itemTarget): self {
$this->itemTarget = $itemTarget;
return $this;
}
- /**
- * @return string
- */
public function getItemTarget(): string {
return $this->itemTarget;
}
-
- /**
- * @param int $fileSource
- *
- * @return ShareWrapper
- */
public function setFileSource(int $fileSource): self {
$this->fileSource = $fileSource;
return $this;
}
- /**
- * @return int
- */
public function getFileSource(): int {
return $this->fileSource;
}
-
- /**
- * @param string $fileTarget
- *
- * @return ShareWrapper
- */
public function setFileTarget(string $fileTarget): self {
$this->fileTarget = $fileTarget;
return $this;
}
- /**
- * @return string
- */
public function getFileTarget(): string {
return $this->fileTarget;
}
-
- /**
- * @param string $token
- *
- * @return ShareWrapper
- */
public function setToken(string $token): self {
$this->token = $token;
return $this;
}
- /**
- * @return string
- */
public function getToken(): string {
return $this->token;
}
-
- /**
- * @param int $status
- *
- * @return ShareWrapper
- */
public function setStatus(int $status): self {
$this->status = $status;
return $this;
}
- /**
- * @return int
- */
public function getStatus(): int {
return $this->status;
}
-
- /**
- * @param string $providerId
- *
- * @return $this
- */
public function setProviderId(string $providerId): self {
$this->providerId = $providerId;
return $this;
}
- /**
- * @return string
- */
public function getProviderId(): string {
return $this->providerId;
}
-
- /**
- * @param DateTime $shareTime
- *
- * @return ShareWrapper
- */
- public function setShareTime(DateTime $shareTime): self {
+ public function setShareTime(DateTimeInterface $shareTime): self {
$this->shareTime = $shareTime;
return $this;
}
- /**
- * @return DateTime
- */
- public function getShareTime(): DateTime {
+ public function getShareTime(): DateTimeInterface {
return $this->shareTime;
}
-
- /**
- * @param string $sharedWith
- *
- * @return ShareWrapper
- */
public function setSharedWith(string $sharedWith): self {
$this->sharedWith = $sharedWith;
return $this;
}
- /**
- * @return string
- */
public function getSharedWith(): string {
return $this->sharedWith;
}
- /**
- * @param string $sharedBy
- *
- * @return ShareWrapper
- */
public function setSharedBy(string $sharedBy): self {
$this->sharedBy = $sharedBy;
return $this;
}
- /**
- * @return string
- */
public function getSharedBy(): string {
return $this->sharedBy;
}
-
- /**
- * @param string $shareOwner
- *
- * @return ShareWrapper
- */
public function setShareOwner(string $shareOwner): self {
$this->shareOwner = $shareOwner;
return $this;
}
- /**
- * @return string
- */
public function getShareOwner(): string {
return $this->shareOwner;
}
-
- /**
- * @param int $shareType
- *
- * @return ShareWrapper
- */
public function setShareType(int $shareType): self {
$this->shareType = $shareType;
return $this;
}
- /**
- * @return int
- */
public function getShareType(): int {
return $this->shareType;
}
-
- /**
- * @param Circle $circle
- *
- * @return ShareWrapper
- */
public function setCircle(Circle $circle): self {
$this->circle = $circle;
return $this;
}
- /**
- * @return Circle
- */
public function getCircle(): Circle {
return $this->circle;
}
- /**
- * @return bool
- */
public function hasCircle(): bool {
return (!is_null($this->circle));
}
-
- /**
- * @param int $childId
- *
- * @return ShareWrapper
- */
public function setChildId(int $childId): self {
$this->childId = $childId;
return $this;
}
- /**
- * @return int
- */
public function getChildId(): int {
return $this->childId;
}
-
- /**
- * @param string $childFileTarget
- *
- * @return ShareWrapper
- */
public function setChildFileTarget(string $childFileTarget): self {
$this->childFileTarget = $childFileTarget;
return $this;
}
- /**
- * @return string
- */
public function getChildFileTarget(): string {
return $this->childFileTarget;
}
-
- /**
- * @param int $childPermissions
- *
- * @return ShareWrapper
- */
public function setChildPermissions(int $childPermissions): self {
$this->childPermissions = $childPermissions;
return $this;
}
- /**
- * @return int
- */
public function getChildPermissions(): int {
return $this->childPermissions;
}
-
- /**
- * @param FileCacheWrapper $fileCache
- *
- * @return $this
- */
public function setFileCache(FileCacheWrapper $fileCache): self {
$this->fileCache = $fileCache;
return $this;
}
- /**
- * @return FileCacheWrapper
- */
public function getFileCache(): FileCacheWrapper {
return $this->fileCache;
}
- /**
- * @return bool
- */
public function hasFileCache(): bool {
return (!is_null($this->fileCache));
}
-
- /**
- * @param Member $initiator
- *
- * @return ShareWrapper
- */
public function setInitiator(Member $initiator): self {
$this->initiator = $initiator;
return $this;
}
- /**
- * @return Member
- */
public function getInitiator(): Member {
return $this->initiator;
}
- /**
- * @return bool
- */
public function hasInitiator(): bool {
return (!is_null($this->initiator));
}
-
- /**
- * @param Member $owner
- *
- * @return ShareWrapper
- */
public function setOwner(Member $owner): self {
$this->owner = $owner;
return $this;
}
- /**
- * @return Member
- */
public function getOwner(): Member {
return $this->owner;
}
- /**
- * @return bool
- */
public function hasOwner(): bool {
return (!is_null($this->owner));
}
-
- /**
- * @param ShareToken $shareToken
- *
- * @return ShareWrapper
- */
public function setShareToken(ShareToken $shareToken): self {
$this->shareToken = $shareToken;
return $this;
}
- /**
- * @return ShareToken
- */
public function getShareToken(): ShareToken {
return $this->shareToken;
}
- /**
- * @return bool
- */
public function hasShareToken(): bool {
return !is_null($this->shareToken);
}
-
/**
- * @param IRootFolder $rootFolder
- * @param IUserManager $userManager
- * @param IURLGenerator $urlGenerator
- * @param bool $nullOnMissingFileCache
- *
- * @return IShare
* @throws IllegalIDChangeException
*/
public function getShare(
@@ -656,12 +387,7 @@ class ShareWrapper extends ManagedModel implements IDeserializable, IQueryRow, J
return $share;
}
-
- /**
- * @param IShare $share
- * @param IURLGenerator $urlGenerator
- */
- private function setShareDisplay(IShare $share, IURLGenerator $urlGenerator) {
+ private function setShareDisplay(IShare $share, IURLGenerator $urlGenerator): void {
if (!$this->hasCircle()) {
return;
}
@@ -711,8 +437,6 @@ class ShareWrapper extends ManagedModel implements IDeserializable, IQueryRow, J
/**
* @param array $data
- *
- * @return IDeserializable
* @throws InvalidItemException
*/
public function import(array $data): IDeserializable {
@@ -776,13 +500,6 @@ class ShareWrapper extends ManagedModel implements IDeserializable, IQueryRow, J
return $this;
}
-
- /**
- * @param array $data
- * @param string $prefix
- *
- * @return IQueryRow
- */
public function importFromDatabase(array $data, string $prefix = ''): IQueryRow {
$shareTime = new DateTime();
$shareTime->setTimestamp($this->getInt($prefix . 'stime', $data));
@@ -818,10 +535,6 @@ class ShareWrapper extends ManagedModel implements IDeserializable, IQueryRow, J
return $this;
}
-
- /**
- * @return string[]
- */
public function jsonSerialize(): array {
$arr = [
'id' => $this->getId(),
diff --git a/lib/Tools/Model/SimpleDataStore.php b/lib/Tools/Model/SimpleDataStore.php
index 5c9a237f..09e672d1 100644
--- a/lib/Tools/Model/SimpleDataStore.php
+++ b/lib/Tools/Model/SimpleDataStore.php
@@ -43,7 +43,7 @@ class SimpleDataStore implements JsonSerializable {
use TArrayTools;
- /** @var array|JsonSerializable */
+ /** @var array */
private $data;
@@ -60,11 +60,7 @@ class SimpleDataStore implements JsonSerializable {
$this->data = $data;
}
-
- /**
- * @param array $default
- */
- public function default(array $default = []) {
+ public function default(array $default = []): void {
$this->data = array_merge($default, $this->data);
}
@@ -474,7 +470,10 @@ class SimpleDataStore implements JsonSerializable {
* @return $this
*/
public function obj(JsonSerializable $obj): self {
- $this->data = $obj;
+ $data = $obj->jsonSerialize();
+ if (is_array($data)) {
+ $this->data = $data;
+ }
return $this;
}
diff --git a/psalm.xml b/psalm.xml
new file mode 100644
index 00000000..eac4c173
--- /dev/null
+++ b/psalm.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<psalm
+ errorLevel="4"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ errorBaseline="tests/psalm-baseline.xml"
+>
+ <stubs>
+ <file name="tests/stub.phpstub" preloadClasses="true"/>
+ </stubs>
+ <projectFiles>
+ <directory name="lib" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+ <extraFiles>
+ <directory name="vendor" />
+ <ignoreFiles>
+ <directory name="vendor/phpunit/php-code-coverage" />
+ </ignoreFiles>
+ </extraFiles>
+ <issueHandlers>
+ <UndefinedClass>
+ <errorLevel type="suppress">
+ <referencedClass name="OC" />
+ </errorLevel>
+ </UndefinedClass>
+ <UndefinedDocblockClass>
+ <errorLevel type="suppress">
+ <referencedClass name="Doctrine\DBAL\Schema\Schema" />
+ <referencedClass name="Doctrine\DBAL\Schema\SchemaException" />
+ <referencedClass name="Doctrine\DBAL\Driver\Statement" />
+ <referencedClass name="Doctrine\DBAL\Schema\Table" />
+ </errorLevel>
+ </UndefinedDocblockClass>
+ </issueHandlers>
+</psalm>
diff --git a/tests/psalm-baseline.xml b/tests/psalm-baseline.xml
new file mode 100644
index 00000000..99644a99
--- /dev/null
+++ b/tests/psalm-baseline.xml
@@ -0,0 +1,916 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.22.0@fc2c6ab4d5fa5d644d8617089f012f3bb84b8703">
+ <file src="lib/Activity/Provider.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$lang</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/Activity/ProviderParser.php">
+ <InvalidNullableReturnType occurrences="1">
+ <code>array&lt;string,string|integer&gt;</code>
+ </InvalidNullableReturnType>
+ <NullableReturnStatement occurrences="1">
+ <code>null</code>
+ </NullableReturnStatement>
+ <UndefinedMethod occurrences="1">
+ <code>Circles::generateAbsoluteLink($circle-&gt;getUniqueId())</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Circles/FileSharingBroadcaster.php">
+ <InvalidScalarArgument occurrences="2">
+ <code>$share-&gt;getId()</code>
+ <code>$share-&gt;getId()</code>
+ </InvalidScalarArgument>
+ <TypeDoesNotContainType occurrences="2">
+ <code>!$sendPasswordByMail</code>
+ <code>$sendPasswordByMail</code>
+ </TypeDoesNotContainType>
+ <UndefinedClass occurrences="3">
+ <code>Notifications</code>
+ <code>Share</code>
+ <code>Share</code>
+ </UndefinedClass>
+ <UndefinedDocblockClass occurrences="2">
+ <code>$this-&gt;federationNotifications</code>
+ <code>Notifications</code>
+ </UndefinedDocblockClass>
+ <UndefinedFunction occurrences="1">
+ <code>setSubject($subject)</code>
+ </UndefinedFunction>
+ <UndefinedInterfaceMethod occurrences="4">
+ <code>getLazyRootFolder</code>
+ <code>setHtmlBody</code>
+ <code>setPlainBody</code>
+ <code>setSubject</code>
+ </UndefinedInterfaceMethod>
+ </file>
+ <file src="lib/CirclesManager.php">
+ <InvalidNullableReturnType occurrences="1">
+ <code>IFederatedUser</code>
+ </InvalidNullableReturnType>
+ <NullableReturnStatement occurrences="1">
+ <code>$this-&gt;federatedUserService-&gt;getCurrentUser()</code>
+ </NullableReturnStatement>
+ </file>
+ <file src="lib/Collaboration/v2/CollaboratorSearchPlugin.php">
+ <UndefinedClass occurrences="1">
+ <code>Share</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Command/CirclesCheck.php">
+ <UndefinedClass occurrences="1">
+ <code>AppConfig</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Command/CirclesRemote.php">
+ <UndefinedMethod occurrences="1">
+ <code>setType</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Command/CirclesReport.php">
+ <UndefinedClass occurrences="1">
+ <code>IInteractiveShellClient</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Command/CirclesTest.php">
+ <NullArgument occurrences="1">
+ <code>null</code>
+ </NullArgument>
+ <RedundantCondition occurrences="2">
+ <code>$compareToInitiator !== null</code>
+ <code>$compareToOwner !== null</code>
+ </RedundantCondition>
+ <TypeDoesNotContainNull occurrences="1">
+ <code>$owner === null</code>
+ </TypeDoesNotContainNull>
+ </file>
+ <file src="lib/Command/FixUniqueId.php">
+ <UndefinedClass occurrences="1">
+ <code>Share</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Command/MembersAdd.php">
+ <UndefinedMethod occurrences="1">
+ <code>retrieveJson</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Command/MembersList.php">
+ <UndefinedInterfaceMethod occurrences="7">
+ <code>getInstance</code>
+ <code>getInstance</code>
+ <code>getInvitedBy</code>
+ <code>getOwner</code>
+ <code>getSingleId</code>
+ <code>getStatus</code>
+ <code>hasInvitedBy</code>
+ </UndefinedInterfaceMethod>
+ </file>
+ <file src="lib/Command/SyncContact.php">
+ <InvalidReturnType occurrences="1">
+ <code>int|void|null</code>
+ </InvalidReturnType>
+ <UndefinedClass occurrences="1">
+ <code>CardDavBackend</code>
+ </UndefinedClass>
+ <UndefinedDocblockClass occurrences="3">
+ <code>$this-&gt;cardDavBackend</code>
+ <code>$this-&gt;cardDavBackend</code>
+ <code>CardDavBackend</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="lib/Controller/RemoteController.php">
+ <InvalidScalarArgument occurrences="1">
+ <code>($e-&gt;getCode() &gt; 0) ? $e-&gt;getCode() : $httpErrorCode</code>
+ </InvalidScalarArgument>
+ </file>
+ <file src="lib/Db/CoreRequestBuilder.php">
+ <UndefinedClass occurrences="1">
+ <code>Connection</code>
+ </UndefinedClass>
+ <UndefinedMethod occurrences="2">
+ <code>dropTable</code>
+ <code>hasTable</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Db/DeprecatedCirclesRequest.php">
+ <InvalidArgument occurrences="1">
+ <code>$circle-&gt;getType()</code>
+ </InvalidArgument>
+ <InvalidScalarArgument occurrences="5">
+ <code>$circle-&gt;getUniqueId(true)</code>
+ <code>$circleUniqueId</code>
+ <code>$circleUniqueId</code>
+ <code>(string)$uniqueId</code>
+ <code>-1</code>
+ </InvalidScalarArgument>
+ </file>
+ <file src="lib/Db/DeprecatedCirclesRequestBuilder.php">
+ <InvalidNullableReturnType occurrences="3">
+ <code>ICompositeExpression</code>
+ <code>string</code>
+ <code>string</code>
+ </InvalidNullableReturnType>
+ <InvalidReturnStatement occurrences="1"/>
+ <InvalidReturnType occurrences="1">
+ <code>string</code>
+ </InvalidReturnType>
+ <NullableReturnStatement occurrences="4">
+ <code>null</code>
+ <code>null</code>
+ <code>null</code>
+ <code>null</code>
+ </NullableReturnStatement>
+ </file>
+ <file src="lib/Db/DeprecatedMembersRequest.php">
+ <UndefinedClass occurrences="1">
+ <code>UniqueConstraintViolationException</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Db/FederatedLinksRequest.php">
+ <InvalidNullableReturnType occurrences="1">
+ <code>FederatedLink</code>
+ </InvalidNullableReturnType>
+ <InvalidScalarArgument occurrences="4">
+ <code>$linkUniqueId</code>
+ <code>$linkUniqueId</code>
+ <code>$status</code>
+ <code>(string)$uniqueId</code>
+ </InvalidScalarArgument>
+ <NullableReturnStatement occurrences="1">
+ <code>null</code>
+ </NullableReturnStatement>
+ <TypeDoesNotContainNull occurrences="1">
+ <code>$link === null</code>
+ </TypeDoesNotContainNull>
+ </file>
+ <file src="lib/Db/FileSharesRequest.php">
+ <InvalidScalarArgument occurrences="2">
+ <code>self::SHARE_TYPE</code>
+ <code>self::SHARE_TYPE</code>
+ </InvalidScalarArgument>
+ </file>
+ <file src="lib/Db/MemberRequest.php">
+ <InvalidReturnStatement occurrences="5">
+ <code>$this-&gt;getItemsFromRequest($qb)</code>
+ <code>$this-&gt;getItemsFromRequest($qb)</code>
+ <code>$this-&gt;getItemsFromRequest($qb)</code>
+ <code>$this-&gt;getItemsFromRequest($qb)</code>
+ <code>$this-&gt;getItemsFromRequest($qb, true)</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="5">
+ <code>FederatedUser[]</code>
+ <code>Member[]</code>
+ <code>Member[]</code>
+ <code>Member[]</code>
+ <code>Member[]</code>
+ </InvalidReturnType>
+ </file>
+ <file src="lib/Db/ShareWrapperRequest.php">
+ <InvalidScalarArgument occurrences="1">
+ <code>$id</code>
+ </InvalidScalarArgument>
+ <RedundantCondition occurrences="1">
+ <code>$getData</code>
+ </RedundantCondition>
+ </file>
+ <file src="lib/Db/TokensRequest.php">
+ <InvalidScalarArgument occurrences="2">
+ <code>$shareId</code>
+ <code>$shareId</code>
+ </InvalidScalarArgument>
+ <UndefinedClass occurrences="1">
+ <code>UniqueConstraintViolationException</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/FederatedItems/SharedItemsSync.php">
+ <UndefinedClass occurrences="1">
+ <code>CircleEventService</code>
+ </UndefinedClass>
+ <UndefinedDocblockClass occurrences="2">
+ <code>$this-&gt;circleEventService</code>
+ <code>CircleEventService</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="lib/GlobalScale/CircleCreate.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/CircleDestroy.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/CircleStatus.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/CircleUpdate.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/FileShare.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ <TypeDoesNotContainType occurrences="2">
+ <code>!$sendPasswordByMail</code>
+ <code>$sendPasswordByMail</code>
+ </TypeDoesNotContainType>
+ <UndefinedClass occurrences="1">
+ <code>Share</code>
+ </UndefinedClass>
+ <UndefinedInterfaceMethod occurrences="3">
+ <code>setHtmlBody</code>
+ <code>setPlainBody</code>
+ <code>setSubject</code>
+ </UndefinedInterfaceMethod>
+ </file>
+ <file src="lib/GlobalScale/FileUnshare.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/GSMount/Mount.php">
+ <UndefinedClass occurrences="1">
+ <code>MoveableMount</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/GlobalScale/GSMount/MountProvider.php">
+ <MissingDependency occurrences="2">
+ <code>Mount</code>
+ <code>Mount</code>
+ </MissingDependency>
+ <TooManyArguments occurrences="1">
+ <code>getCertificateManager</code>
+ </TooManyArguments>
+ <UndefinedMethod occurrences="1">
+ <code>isLocalNonSSL</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/GlobalScale/GlobalSync.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/MemberAdd.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ <UndefinedInterfaceMethod occurrences="3">
+ <code>setHtmlBody</code>
+ <code>setPlainBody</code>
+ <code>setSubject</code>
+ </UndefinedInterfaceMethod>
+ </file>
+ <file src="lib/GlobalScale/MemberJoin.php">
+ <InvalidScalarArgument occurrences="1">
+ <code>$circle-&gt;getType()</code>
+ </InvalidScalarArgument>
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/MemberLeave.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/MemberRemove.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/MemberUpdate.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/Test.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/GlobalScale/UserDeleted.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$mustBeChecked</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/Handlers/WebfingerHandler.php">
+ <InvalidPropertyAssignmentValue occurrences="1">
+ <code>$urlGenerator</code>
+ </InvalidPropertyAssignmentValue>
+ <InvalidScalarArgument occurrences="1">
+ <code>$info</code>
+ </InvalidScalarArgument>
+ <ParamNameMismatch occurrences="1">
+ <code>$response</code>
+ </ParamNameMismatch>
+ <UndefinedDocblockClass occurrences="1">
+ <code>URLGenerator</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="lib/Migration/ImportOwncloudCustomGroups.php">
+ <MissingDependency occurrences="2">
+ <code>Share</code>
+ <code>Share</code>
+ </MissingDependency>
+ <UndefinedConstant occurrences="1">
+ <code>Share::SHARE_TYPE_CIRCLE</code>
+ </UndefinedConstant>
+ </file>
+ <file src="lib/Migration/Version0022Date20220526111723.php">
+ <UndefinedClass occurrences="1">
+ <code>Connection</code>
+ </UndefinedClass>
+ <UndefinedDocblockClass occurrences="2">
+ <code>$this-&gt;connection</code>
+ <code>Connection</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="lib/Migration/Version0022Date20220526113601.php">
+ <UndefinedClass occurrences="1">
+ <code>Types</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Model/BaseCircle.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$this-&gt;type</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>string</code>
+ </InvalidReturnType>
+ <InvalidScalarArgument occurrences="1">
+ <code>$this-&gt;getUniqueId()</code>
+ </InvalidScalarArgument>
+ <RedundantCast occurrences="1">
+ <code>(array)self::CIRCLES_SETTINGS_DEFAULT</code>
+ </RedundantCast>
+ </file>
+ <file src="lib/Model/BaseMember.php">
+ <InvalidNullableReturnType occurrences="1">
+ <code>DeprecatedMember</code>
+ </InvalidNullableReturnType>
+ <InvalidScalarArgument occurrences="1">
+ <code>$member-&gt;getType()</code>
+ </InvalidScalarArgument>
+ <NullableReturnStatement occurrences="1">
+ <code>self::fromArray(json_decode($json, true))</code>
+ </NullableReturnStatement>
+ </file>
+ <file src="lib/Model/Circle.php">
+ <LessSpecificImplementedReturnType occurrences="1">
+ <code>self</code>
+ </LessSpecificImplementedReturnType>
+ </file>
+ <file src="lib/Model/DavCard.php">
+ <InvalidScalarArgument occurrences="1">
+ <code>$this-&gt;get('addressBookId', $data)</code>
+ </InvalidScalarArgument>
+ </file>
+ <file src="lib/Model/Federated/RemoteInstance.php">
+ <LessSpecificImplementedReturnType occurrences="1">
+ <code>NCSignatory</code>
+ </LessSpecificImplementedReturnType>
+ </file>
+ <file src="lib/Model/FederatedLink.php">
+ <InvalidPropertyAssignmentValue occurrences="1">
+ <code>$circleUniqueId</code>
+ </InvalidPropertyAssignmentValue>
+ <InvalidReturnStatement occurrences="1">
+ <code>$this-&gt;circleUniqueId</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>string</code>
+ </InvalidReturnType>
+ <InvalidScalarArgument occurrences="1">
+ <code>$this-&gt;circleUniqueId</code>
+ </InvalidScalarArgument>
+ </file>
+ <file src="lib/Model/FederatedUser.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$arr</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>string[]</code>
+ </InvalidReturnType>
+ <LessSpecificImplementedReturnType occurrences="1">
+ <code>self</code>
+ </LessSpecificImplementedReturnType>
+ <MismatchingDocblockParamType occurrences="1">
+ <code>Circle|null</code>
+ </MismatchingDocblockParamType>
+ </file>
+ <file src="lib/Model/FileCacheWrapper.php">
+ <InvalidReturnStatement occurrences="1"/>
+ <InvalidReturnType occurrences="1">
+ <code>string[]</code>
+ </InvalidReturnType>
+ </file>
+ <file src="lib/Model/ManagedModel.php">
+ <UndefinedMethod occurrences="6">
+ <code>setBasedOn</code>
+ <code>setDisplayName</code>
+ <code>setInstance</code>
+ <code>setSingleId</code>
+ <code>setUserId</code>
+ <code>setUserType</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Model/Member.php">
+ <InvalidClass occurrences="1">
+ <code>$inheritedBy</code>
+ </InvalidClass>
+ <InvalidReturnStatement occurrences="1">
+ <code>$arr</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>string[]</code>
+ </InvalidReturnType>
+ <LessSpecificImplementedReturnType occurrences="1">
+ <code>self</code>
+ </LessSpecificImplementedReturnType>
+ </file>
+ <file src="lib/Model/Probes/BasicProbe.php">
+ <InvalidReturnType occurrences="1">
+ <code>$this</code>
+ </InvalidReturnType>
+ </file>
+ <file src="lib/Model/ShareWrapper.php">
+ <InvalidNullableReturnType occurrences="5">
+ <code>Circle</code>
+ <code>FileCacheWrapper</code>
+ <code>Member</code>
+ <code>Member</code>
+ <code>ShareToken</code>
+ </InvalidNullableReturnType>
+ <NullableReturnStatement occurrences="5">
+ <code>$this-&gt;circle</code>
+ <code>$this-&gt;fileCache</code>
+ <code>$this-&gt;initiator</code>
+ <code>$this-&gt;owner</code>
+ <code>$this-&gt;shareToken</code>
+ </NullableReturnStatement>
+ <UndefinedClass occurrences="1">
+ <code>Share</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Model/SharesToken.php">
+ <InvalidScalarArgument occurrences="1">
+ <code>$this-&gt;get('share_id', $data, '')</code>
+ </InvalidScalarArgument>
+ </file>
+ <file src="lib/Model/SharingFrame.php">
+ <NullArgument occurrences="1">
+ <code>null</code>
+ </NullArgument>
+ <NullableReturnStatement occurrences="2">
+ <code>null</code>
+ <code>null</code>
+ </NullableReturnStatement>
+ </file>
+ <file src="lib/MountManager/CircleMount.php">
+ <UndefinedClass occurrences="1">
+ <code>MoveableMount</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/MountManager/CircleMountProvider.php">
+ <MissingDependency occurrences="1">
+ <code>CircleMount</code>
+ </MissingDependency>
+ <UndefinedClass occurrences="1">
+ <code>ExternalStorage</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Search/Contacts.php">
+ <InvalidArgument occurrences="1">
+ <code>false</code>
+ </InvalidArgument>
+ <InvalidReturnStatement occurrences="1">
+ <code>$result</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>search</code>
+ </InvalidReturnType>
+ <MethodSignatureMismatch occurrences="1">
+ <code>Contacts</code>
+ </MethodSignatureMismatch>
+ <ParamNameMismatch occurrences="1">
+ <code>$search</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/Search/FederatedUsers.php">
+ <LessSpecificImplementedReturnType occurrences="1">
+ <code>array</code>
+ </LessSpecificImplementedReturnType>
+ </file>
+ <file src="lib/Search/GlobalScaleUsers.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$result</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>array</code>
+ </InvalidReturnType>
+ <ParamNameMismatch occurrences="1">
+ <code>$search</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/Search/LocalGroups.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$result</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>search</code>
+ </InvalidReturnType>
+ <MethodSignatureMismatch occurrences="1">
+ <code>LocalGroups</code>
+ </MethodSignatureMismatch>
+ <ParamNameMismatch occurrences="1">
+ <code>$search</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/Search/LocalUsers.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$result</code>
+ </InvalidReturnStatement>
+ <MethodSignatureMismatch occurrences="1">
+ <code>LocalUsers</code>
+ </MethodSignatureMismatch>
+ <ParamNameMismatch occurrences="1">
+ <code>$search</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="lib/Service/CircleService.php">
+ <MismatchingDocblockParamType occurrences="1">
+ <code>CircleProbe|null</code>
+ </MismatchingDocblockParamType>
+ </file>
+ <file src="lib/Service/CirclesService.php">
+ <InvalidScalarArgument occurrences="1">
+ <code>$type</code>
+ </InvalidScalarArgument>
+ <MismatchingDocblockParamType occurrences="1">
+ <code>DeprecatedCircle</code>
+ </MismatchingDocblockParamType>
+ <MismatchingDocblockReturnType occurrences="1">
+ <code>null|DeprecatedMember</code>
+ </MismatchingDocblockReturnType>
+ <TypeDoesNotContainType occurrences="2">
+ <code>$type === ''</code>
+ <code>$type === ''</code>
+ </TypeDoesNotContainType>
+ <UndefinedClass occurrences="3">
+ <code>DeprecatedCircle</code>
+ <code>Member</code>
+ <code>Member</code>
+ </UndefinedClass>
+ <UndefinedMethod occurrences="1">
+ <code>isFederatedCirclesAllowed</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Service/ConfigService.php">
+ <UndefinedPropertyFetch occurrences="1">
+ <code>OC::$WEBROOT</code>
+ </UndefinedPropertyFetch>
+ </file>
+ <file src="lib/Service/ContactService.php">
+ <TypeDoesNotContainNull occurrences="1">
+ <code>is_null($contactId)</code>
+ </TypeDoesNotContainNull>
+ <UndefinedClass occurrences="1">
+ <code>ContactsManager</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Service/DavService.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$existing</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>DeprecatedCircle[]</code>
+ </InvalidReturnType>
+ <InvalidScalarArgument occurrences="3">
+ <code>$bookId</code>
+ <code>$bookId</code>
+ <code>$bookId</code>
+ </InvalidScalarArgument>
+ <UndefinedClass occurrences="1">
+ <code>CardDavBackend</code>
+ </UndefinedClass>
+ <UndefinedDocblockClass occurrences="6">
+ <code>$this-&gt;cardDavBackend</code>
+ <code>$this-&gt;cardDavBackend</code>
+ <code>$this-&gt;cardDavBackend</code>
+ <code>$this-&gt;cardDavBackend</code>
+ <code>$this-&gt;cardDavBackend</code>
+ <code>CardDavBackend</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="lib/Service/EventsService.php">
+ <InvalidArgument occurrences="2">
+ <code>$context</code>
+ <code>new GenericEvent(null, $arguments)</code>
+ </InvalidArgument>
+ </file>
+ <file src="lib/Service/FederatedShareService.php">
+ <InvalidMethodCall occurrences="1">
+ <code>gObj</code>
+ </InvalidMethodCall>
+ </file>
+ <file src="lib/Service/FederatedUserService.php">
+ <InvalidReturnType occurrences="1">
+ <code>FederatedUser</code>
+ </InvalidReturnType>
+ </file>
+ <file src="lib/Service/GSDownstreamService.php">
+ <UndefinedMethod occurrences="7">
+ <code>asyncBroadcast</code>
+ <code>checkEvent</code>
+ <code>checkEvent</code>
+ <code>checkEvent</code>
+ <code>getGlobalScaleEvent</code>
+ <code>getGlobalScaleEvent</code>
+ <code>getGlobalScaleEvent</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Service/GSUpstreamService.php">
+ <InvalidArgument occurrences="1">
+ <code>$wrapper</code>
+ </InvalidArgument>
+ <InvalidReturnStatement occurrences="1">
+ <code>$this-&gt;eventWrapperRequest-&gt;getByToken($token)</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>GSWrapper[]</code>
+ </InvalidReturnType>
+ <TooManyArguments occurrences="1">
+ <code>configureRequest</code>
+ </TooManyArguments>
+ <UndefinedMethod occurrences="6">
+ <code>asyncBroadcast</code>
+ <code>getGlobalScaleEvent</code>
+ <code>getGlobalScaleEvent</code>
+ <code>getInstances</code>
+ <code>getInstances</code>
+ <code>getKey</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Service/GlobalScaleService.php">
+ <UndefinedClass occurrences="1">
+ <code>Signer</code>
+ </UndefinedClass>
+ <UndefinedDocblockClass occurrences="1">
+ <code>Signer</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="lib/Service/MembersService.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$members</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>DeprecatedMember[]</code>
+ </InvalidReturnType>
+ <InvalidScalarArgument occurrences="1">
+ <code>$circle-&gt;getType()</code>
+ </InvalidScalarArgument>
+ <RedundantCast occurrences="1">
+ <code>(int)$level</code>
+ </RedundantCast>
+ <UndefinedMethod occurrences="1">
+ <code>isInvitationSkipped</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Service/MembershipService.php">
+ <ConflictingReferenceConstraint occurrences="1">
+ <code>if (!in_array($member-&gt;getCircleId(), $knownIds)) {</code>
+ </ConflictingReferenceConstraint>
+ </file>
+ <file src="lib/Service/MigrationService.php">
+ <UndefinedClass occurrences="1">
+ <code>ContactsManager</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Service/MiscService.php">
+ <InvalidReturnType occurrences="1">
+ <code>string</code>
+ </InvalidReturnType>
+ <TypeDoesNotContainType occurrences="1">
+ <code>is_array($contact)</code>
+ </TypeDoesNotContainType>
+ <UndefinedDocblockClass occurrences="2">
+ <code>$cManager</code>
+ <code>$cManager</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="lib/Service/RemoteStreamService.php">
+ <RedundantCondition occurrences="1">
+ <code>is_null($object)</code>
+ </RedundantCondition>
+ <TypeDoesNotContainNull occurrences="1">
+ <code>$signed === null</code>
+ </TypeDoesNotContainNull>
+ </file>
+ <file src="lib/Service/SendMailService.php">
+ <UndefinedInterfaceMethod occurrences="3">
+ <code>setHtmlBody</code>
+ <code>setPlainBody</code>
+ <code>setSubject</code>
+ </UndefinedInterfaceMethod>
+ </file>
+ <file src="lib/Service/SyncService.php">
+ <InvalidClass occurrences="2">
+ <code>federatedEventService</code>
+ <code>federatedEventService</code>
+ </InvalidClass>
+ </file>
+ <file src="lib/Service/TimezoneService.php">
+ <UndefinedClass occurrences="1">
+ <code>TimeFactory</code>
+ </UndefinedClass>
+ <UndefinedDocblockClass occurrences="2">
+ <code>$this-&gt;timeFactory</code>
+ <code>TimeFactory</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="lib/ShareByCircleProvider.php">
+ <ImplementedParamTypeMismatch occurrences="1">
+ <code>$shareId</code>
+ </ImplementedParamTypeMismatch>
+ <InvalidNullableReturnType occurrences="5">
+ <code>IShare</code>
+ <code>IShare</code>
+ <code>IShare</code>
+ <code>IShare</code>
+ <code>IShare</code>
+ </InvalidNullableReturnType>
+ <InvalidReturnType occurrences="1">
+ <code>iterable</code>
+ </InvalidReturnType>
+ <LessSpecificImplementedReturnType occurrences="1">
+ <code>array</code>
+ </LessSpecificImplementedReturnType>
+ <NullableReturnStatement occurrences="5">
+ <code>$wrappedShare-&gt;getShare($this-&gt;rootFolder, $this-&gt;userManager, $this-&gt;urlGenerator)</code>
+ <code>$wrappedShare-&gt;getShare($this-&gt;rootFolder, $this-&gt;userManager, $this-&gt;urlGenerator)</code>
+ <code>$wrappedShare-&gt;getShare($this-&gt;rootFolder, $this-&gt;userManager, $this-&gt;urlGenerator)</code>
+ <code>$wrappedShare-&gt;getShare($this-&gt;rootFolder, $this-&gt;userManager, $this-&gt;urlGenerator)</code>
+ <code>$wrappedShare-&gt;getShare($this-&gt;rootFolder, $this-&gt;userManager, $this-&gt;urlGenerator)</code>
+ </NullableReturnStatement>
+ <ParamNameMismatch occurrences="1">
+ <code>$shareId</code>
+ </ParamNameMismatch>
+ <RedundantCondition occurrences="1">
+ <code>!is_null($node)</code>
+ </RedundantCondition>
+ <TypeDoesNotContainNull occurrences="1">
+ <code>0</code>
+ </TypeDoesNotContainNull>
+ </file>
+ <file src="lib/ShareByCircleProviderDeprecated.php">
+ <ImplementedReturnTypeMismatch occurrences="4">
+ <code>IShare[]|null</code>
+ <code>Share</code>
+ <code>Share[]</code>
+ <code>Share[]</code>
+ </ImplementedReturnTypeMismatch>
+ <InvalidReturnStatement occurrences="4">
+ <code>$shares</code>
+ <code>$this-&gt;createShareChild($userId, $share)</code>
+ <code>$this-&gt;createShareObject($data)</code>
+ <code>$this-&gt;getShareById($share-&gt;getId())</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="3">
+ <code>IShare</code>
+ <code>Share</code>
+ <code>Share[]</code>
+ </InvalidReturnType>
+ <InvalidScalarArgument occurrences="6">
+ <code>$id</code>
+ <code>$share-&gt;getId()</code>
+ <code>$share-&gt;getId()</code>
+ <code>$share-&gt;getId()</code>
+ <code>$share-&gt;getId()</code>
+ <code>$share-&gt;getSharedWith()</code>
+ </InvalidScalarArgument>
+ <MissingDependency occurrences="2">
+ <code>\OCP\Share</code>
+ <code>\OCP\Share</code>
+ </MissingDependency>
+ <ParamNameMismatch occurrences="4">
+ <code>$reShares</code>
+ <code>$shareId</code>
+ <code>$userId</code>
+ <code>$userId</code>
+ </ParamNameMismatch>
+ <RedundantCast occurrences="1">
+ <code>(int)$id</code>
+ </RedundantCast>
+ <RedundantCondition occurrences="1"/>
+ <TypeDoesNotContainNull occurrences="1">
+ <code>$arr === null</code>
+ </TypeDoesNotContainNull>
+ <UndefinedClass occurrences="2">
+ <code>InvalidShare</code>
+ <code>Share</code>
+ </UndefinedClass>
+ <UndefinedDocblockClass occurrences="3">
+ <code>Share</code>
+ <code>Share[]</code>
+ <code>Share[]</code>
+ </UndefinedDocblockClass>
+ <UndefinedMethod occurrences="1"/>
+ </file>
+ <file src="lib/Tools/ActivityPub/NCSignature.php">
+ <RedundantCondition occurrences="1">
+ <code>$varr[0] !== null</code>
+ </RedundantCondition>
+ </file>
+ <file src="lib/Tools/Model/NCRequestResult.php">
+ <UndefinedClass occurrences="3">
+ <code>BadResponseException</code>
+ <code>BadResponseException</code>
+ <code>BadResponseException|null</code>
+ </UndefinedClass>
+ <UndefinedDocblockClass occurrences="2">
+ <code>BadResponseException</code>
+ <code>private $exception = null;</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="lib/Tools/Model/SimpleDataStore.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$item</code>
+ </InvalidReturnStatement>
+ </file>
+ <file src="lib/Tools/Traits/TArrayTools.php">
+ <TooManyArguments occurrences="1">
+ <code>getArray</code>
+ </TooManyArguments>
+ </file>
+ <file src="lib/Tools/Traits/TNCLogger.php">
+ <RedundantPropertyInitializationCheck occurrences="1">
+ <code>isset($this-&gt;logger)</code>
+ </RedundantPropertyInitializationCheck>
+ <UndefinedClass occurrences="1">
+ <code>HintException</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Tools/Traits/TNCRequest.php">
+ <InvalidArgument occurrences="1">
+ <code>$e</code>
+ </InvalidArgument>
+ <UndefinedClass occurrences="1">
+ <code>ClientException</code>
+ </UndefinedClass>
+ </file>
+ <file src="lib/Tools/Traits/TNCSignatory.php">
+ <UndefinedMethod occurrences="1">
+ <code>getOpenSSLAlgo</code>
+ </UndefinedMethod>
+ </file>
+ <file src="lib/Tools/Traits/TStringTools.php">
+ <InvalidArrayOffset occurrences="1">
+ <code>$s[$e]</code>
+ </InvalidArrayOffset>
+ </file>
+</files>
diff --git a/tests/stub.phpstub b/tests/stub.phpstub
new file mode 100644
index 00000000..291a8440
--- /dev/null
+++ b/tests/stub.phpstub
@@ -0,0 +1,1023 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Files_Trashbin\Trash {
+ use OCP\Files\Node;
+ use OCP\Files\Storage\IStorage;
+ use OCP\IUser;
+ use OCP\Files\FileInfo;
+
+ interface ITrashManager {
+ public function pauseTrash();
+
+ public function resumeTrash();
+ }
+
+ interface ITrashBackend {
+ /**
+ * @return ITrashItem[]
+ */
+ public function listTrashRoot(IUser $user): array;
+
+ /**
+ * @return ITrashItem[]
+ */
+ public function listTrashFolder(ITrashItem $folder): array;
+
+ /**
+ * @param ITrashItem $item
+ */
+ public function restoreItem(ITrashItem $item);
+
+ public function removeItem(ITrashItem $item);
+
+ public function moveToTrash(IStorage $storage, string $internalPath): bool;
+
+ /**
+ * @return Node|null
+ */
+ public function getTrashNodeById(IUser $user, int $fileId);
+ }
+
+ interface ITrashItem extends FileInfo {
+ public function getTrashBackend(): ITrashBackend;
+
+ public function getOriginalLocation(): string;
+
+ public function getDeletedTime(): int;
+
+ public function getTrashPath(): string;
+
+ public function isRootItem(): bool;
+
+ public function getUser(): IUser;
+
+ public function getTitle(): string;
+ }
+
+ class TrashItem implements ITrashItem {
+ public function getTrashBackend(): ITrashBackend {
+ throw new \Exception('stub');
+ }
+
+ public function getOriginalLocation(): string {
+ throw new \Exception('stub');
+ }
+
+ public function getDeletedTime(): int {
+ throw new \Exception('stub');
+ }
+
+ public function getTrashPath(): string {
+ throw new \Exception('stub');
+ }
+
+ public function isRootItem(): bool {
+ throw new \Exception('stub');
+ }
+
+ public function getUser(): IUser {
+ throw new \Exception('stub');
+ }
+
+ public function getEtag() {
+ }
+
+ public function getId() {
+ }
+
+ public function getSize($includeMounts = true) {
+ throw new \Exception('stub');
+ }
+
+ public function getMtime() {
+ throw new \Exception('stub');
+ }
+
+ public function getName() {
+ throw new \Exception('stub');
+ }
+
+ public function getInternalPath() {
+ throw new \Exception('stub');
+ }
+
+ public function getPath() {
+ throw new \Exception('stub');
+ }
+
+ public function getMimetype() {
+ throw new \Exception('stub');
+ }
+
+ public function getMimePart() {
+ throw new \Exception('stub');
+ }
+
+ public function getStorage() {
+ throw new \Exception('stub');
+ }
+
+ public function isEncrypted() {
+ throw new \Exception('stub');
+ }
+
+ public function getPermissions() {
+ throw new \Exception('stub');
+ }
+
+ public function getType() {
+ throw new \Exception('stub');
+ }
+
+ public function isReadable() {
+ throw new \Exception('stub');
+ }
+
+ public function isUpdateable() {
+ throw new \Exception('stub');
+ }
+
+ public function isCreatable() {
+ throw new \Exception('stub');
+ }
+
+ public function isDeletable() {
+ throw new \Exception('stub');
+ }
+
+ public function isShareable() {
+ throw new \Exception('stub');
+ }
+
+ public function isShared() {
+ throw new \Exception('stub');
+ }
+
+ public function isMounted() {
+ throw new \Exception('stub');
+ }
+
+ public function getMountPoint() {
+ throw new \Exception('stub');
+ }
+
+ public function getOwner() {
+ throw new \Exception('stub');
+ }
+
+ public function getChecksum() {
+ throw new \Exception('stub');
+ }
+
+ public function getExtension(): string {
+ throw new \Exception('stub');
+ }
+
+ public function getTitle(): string {
+ throw new \Exception('stub');
+ }
+
+ public function getCreationTime(): int {
+ throw new \Exception('stub');
+ }
+
+ public function getUploadTime(): int {
+ throw new \Exception('stub');
+ }
+ }
+}
+
+namespace OCA\Files_Trashbin {
+ class Expiration {
+
+ public const DEFAULT_RETENTION_OBLIGATION = 30;
+ public const NO_OBLIGATION = -1;
+
+ public function setRetentionObligation(string $obligation) {}
+
+ /** @return bool */
+ public function isEnabled() {}
+
+ /**
+ * @param int $timestamp
+ * @param bool $quotaExceeded
+ * @return bool
+ */
+ public function isExpired($timestamp, $quotaExceeded = false) {}
+ }
+}
+
+
+namespace OCA\Files_Versions\Versions {
+ use OCP\Files\File;
+ use OCP\Files\FileInfo;
+ use OCP\Files\NotFoundException;
+ use OCP\Files\Storage\IStorage;
+ use OCP\IUser;
+
+ interface IVersionBackend {
+ public function useBackendForStorage(IStorage $storage): bool;
+
+ /**
+ * @return IVersion[]
+ */
+ public function getVersionsForFile(IUser $user, FileInfo $file): array;
+
+ public function createVersion(IUser $user, FileInfo $file);
+
+ public function rollback(IVersion $version);
+
+ /**
+ * @return resource|false
+ * @throws NotFoundException
+ */
+ public function read(IVersion $version);
+
+ /**
+ * @param int|string $revision
+ */
+ public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): ?File;
+ }
+
+ interface IVersion {
+ public function getBackend(): IVersionBackend;
+
+ public function getSourceFile(): FileInfo;
+
+ /**
+ * @return int|string
+ */
+ public function getRevisionId();
+
+ public function getTimestamp(): int;
+
+ public function getSize(): int;
+
+ public function getSourceFileName(): string;
+
+ public function getMimeType(): string;
+
+ public function getVersionPath(): string;
+
+ public function getUser(): IUser;
+ }
+
+ class Version implements IVersion {
+ public function __construct(
+ int $timestamp,
+ $revisionId,
+ string $name,
+ int $size,
+ string $mimetype,
+ string $path,
+ FileInfo $sourceFileInfo,
+ IVersionBackend $backend,
+ IUser $user
+ ) {
+ }
+
+ public function getBackend(): IVersionBackend {
+ throw new \Exception('stub');
+ }
+
+ public function getSourceFile(): FileInfo {
+ throw new \Exception('stub');
+ }
+
+ public function getRevisionId() {
+ throw new \Exception('stub');
+ }
+
+ public function getTimestamp(): int {
+ throw new \Exception('stub');
+ }
+
+ public function getSize(): int {
+ throw new \Exception('stub');
+ }
+
+ public function getSourceFileName(): string {
+ throw new \Exception('stub');
+ }
+
+ public function getMimeType(): string {
+ throw new \Exception('stub');
+ }
+
+ public function getVersionPath(): string {
+ throw new \Exception('stub');
+ }
+
+ public function getUser(): IUser {
+ throw new \Exception('stub');
+ }
+ }
+}
+
+namespace OCA\Files_Versions {
+ class Expiration {
+ // how long do we keep files a version if no other value is defined in the config file (unit: days)
+ public const NO_OBLIGATION = -1;
+ /** @return bool */
+ public function isEnabled() {}
+
+ public function shouldAutoExpire() { }
+
+ /**
+ * @param int $timestamp
+ * @param bool $quotaExceeded
+ * @return bool
+ */
+ public function isExpired($timestamp, $quotaExceeded = false) {}
+
+ /** @return int */
+ public function getMaxAgeAsTimestamp() {}
+ }
+}
+
+namespace {
+
+ use OCP\IServerContainer;
+
+ class OC {
+ static $CLI = false;
+ /** @var IServerContainer */
+ static $server;
+ }
+}
+
+namespace OC\Files\Node {
+ use OCP\Files\FileInfo;
+ abstract class Node implements \OCP\Files\Node {
+ /** @return FileInfo|\ArrayAccess */
+ public function getFileInfo() {}
+
+ /** @return \OCP\Files\Mount\IMountPoint */
+ public function getMountPoint() {}
+ }
+}
+
+namespace OC\Hooks {
+ class Emitter {
+ public function emit(string $class, string $value, array $option) {}
+ /** Closure $closure */
+ public function listen(string $class, string $value, $closure) {}
+ }
+ class BasicEmitter extends Emitter {
+ }
+}
+
+namespace OC\Cache {
+ class CappedMemoryCache {
+ public function get($key) {}
+ public function set($key, $value, $ttl = '') {}
+ }
+}
+
+namespace OC\Core\Command {
+ use Symfony\Component\Console\Input\InputInterface;
+ use Symfony\Component\Console\Output\OutputInterface;
+ class Base {
+ public const OUTPUT_FORMAT_PLAIN = 'plain';
+ public const OUTPUT_FORMAT_JSON = 'json';
+ public const OUTPUT_FORMAT_JSON_PRETTY = 'json_pretty';
+
+ public function __construct() {}
+ protected function configure() {}
+ public function run(InputInterface $input, OutputInterface $output) {}
+ public function setName(string $name) {}
+ public function getHelper(string $name) {}
+ protected function writeArrayInOutputFormat(InputInterface $input, OutputInterface $output, $items, $prefix = ' - ') {
+ }
+ }
+}
+
+namespace OC\Files\ObjectStore {
+ class NoopScanner {}
+}
+
+namespace Symfony\Component\Console\Helper {
+ use Symfony\Component\Console\Output\OutputInterface;
+ class Table {
+ public function __construct(OutputInterface $text) {}
+ public function setHeaders(array $header) {}
+ public function setRows(array $rows) {}
+ public function render() {}
+ public function appendRow(array $row) {}
+ }
+}
+
+namespace Symfony\Component\Console\Input {
+ class InputInterface {
+ public function getOption(string $key) {}
+ public function getArgument(string $key) {}
+ }
+ class InputArgument {
+ const REQUIRED = 0;
+ const OPTIONAL = 1;
+ const IS_ARRAY = 1;
+ }
+ class InputOption {
+ const VALUE_NONE = 1;
+ const VALUE_REQUIRED = 1;
+ const VALUE_OPTIONAL = 1;
+ }
+}
+
+namespace Symfony\Component\Console\Question {
+ class ConfirmationQuestion {
+ public function __construct(string $text, bool $default, string $accept = 'y') {}
+ }
+}
+
+namespace Symfony\Component\Console\Output {
+ class OutputInterface {
+ public const VERBOSITY_VERBOSE = 1;
+ public function writeln(string $text, int $flat = 0) {}
+ public function write(string $text, int $flat = 0) {}
+ }
+}
+
+namespace OC\User {
+ class NoUserException extends \Exception {}
+}
+
+namespace OC\DB {
+ use OCP\IDBConnection;
+ class ConnectionAdapter {}
+
+ class SchemaWrapper {
+ public function __construct(IDBConnection $connection) {}
+
+ public function performDropTableCalls();
+ }
+}
+
+namespace OC {
+ class SystemConfig {}
+}
+
+namespace Doctrine\DBAL\Query {
+ class QueryBuilder {
+ public const SELECT = 'select';
+ }
+}
+
+namespace OC\DB\QueryBuilder {
+ use OCP\DB\IResult;
+ use OCP\DB\QueryBuilder\ICompositeExpression;
+ use OCP\DB\QueryBuilder\ILiteral;
+ use OCP\DB\QueryBuilder\IParameter;
+ use OCP\DB\QueryBuilder\IQueryBuilder;
+ use OCP\DB\QueryBuilder\IQueryFunction;
+ use Psr\Log\LoggerInterface;
+
+ class QueryBuilder implements IQueryBuilder {
+ public function __construct(ConnectionAdapter $connection, SystemConfig $systemConfig, LoggerInterface $logger) {
+ }
+ public function automaticTablePrefix($enabled) { }
+ public function expr() { }
+ public function func() { }
+ public function getType() { }
+ public function getConnection() { }
+ public function getState() { }
+ public function execute() { }
+ public function executeQuery(): IResult { }
+ public function executeUpdate(): int { }
+ public function executeStatement(): int { }
+ public function getSQL() { }
+ public function setParameter($key, $value, $type = null) { }
+ public function setParameters(array $params, array $types = []) { }
+ public function getParameters() { }
+ public function getParameter($key) { }
+ public function getParameterTypes() { }
+ public function getParameterType($key) { }
+ public function setFirstResult($firstResult) { }
+ public function getFirstResult() { }
+ public function setMaxResults($maxResults) { }
+ public function getMaxResults() { }
+ public function select(...$selects) { }
+ public function selectAlias($select, $alias) { }
+ public function selectDistinct($select) { }
+ public function addSelect(...$selects) { }
+ public function delete($delete = null, $alias = null) { }
+ public function update($update = null, $alias = null) { }
+ public function insert($insert = null) { }
+ public function from($from, $alias = null) { }
+ public function join($fromAlias, $join, $alias, $condition = null) { }
+ public function innerJoin($fromAlias, $join, $alias, $condition = null) { }
+ public function leftJoin($fromAlias, $join, $alias, $condition = null) { }
+ public function rightJoin($fromAlias, $join, $alias, $condition = null) { }
+ public function set($key, $value) { }
+ public function where(...$predicates) { }
+ public function andWhere(...$where) { }
+ public function orWhere(...$where) { }
+ public function groupBy(...$groupBys) { }
+ public function addGroupBy(...$groupBys) { }
+ public function setValue($column, $value) { }
+ public function values(array $values) { }
+ public function having(...$having) { }
+ public function andHaving(...$having) { }
+ public function orHaving(...$having) { }
+ public function orderBy($sort, $order = null) { }
+ public function addOrderBy($sort, $order = null) { }
+ public function getQueryPart($queryPartName) { }
+ public function getQueryParts() { }
+ public function resetQueryParts($queryPartNames = null) { }
+ public function resetQueryPart($queryPartName) { }
+ public function createNamedParameter($value, $type = IQueryBuilder::PARAM_STR, $placeHolder = null) { }
+ public function createPositionalParameter($value, $type = IQueryBuilder::PARAM_STR) { }
+ public function createParameter($name) { }
+ public function createFunction($call) { }
+ public function getLastInsertId(): int { }
+ public function getTableName($table) { }
+ protected function prefixTableName($table) { }
+ public function getColumnName($column, $tableAlias = '') { }
+ public function quoteAlias($alias) { }
+ }
+}
+
+namespace OC\Files\Cache {
+ use OCP\Files\Cache\ICache;
+ use OCP\Files\Cache\ICacheEntry;
+ use OCP\Files\Search\ISearchQuery;
+ use OCP\Files\Search\ISearchOperator;
+ use OCP\Files\Search\ISearchQuery;
+ use OCP\Files\IMimeTypeLoader;
+
+ class Cache implements ICache {
+ /**
+ * @param \OCP\Files\Cache\ICache $cache
+ */
+ public function __construct($cache) {
+ $this->cache = $cache;
+ }
+ public function getNumericStorageId() { }
+ public function get() { }
+ public function getIncomplete() {}
+ public function getPathById($id) {}
+ public function getAll() {}
+ public function get($file) {}
+ public function getFolderContents($folder) {}
+ public function getFolderContentsById($fileId) {}
+ public function put($file, array $data) {}
+ public function insert($file, array $data) {}
+ public function update($id, array $data) {}
+ public function getId($file) {}
+ public function getParentId($file) {}
+ public function inCache($file) {}
+ public function remove($file) {}
+ public function move($source, $target) {}
+ public function moveFromCache(ICache $sourceCache, $sourcePath, $targetPath) {}
+ public function clear() {}
+ public function getStatus($file) {}
+ public function search($pattern) {}
+ public function searchByMime($mimetype) {}
+ public function searchQuery(ISearchQuery $query) {}
+ public function correctFolderSize($path, $data = null, $isBackgroundScan = false) {}
+ public function copyFromCache(ICache $sourceCache, ICacheEntry $sourceEntry, string $targetPath): int {}
+ public function normalize($path) {}
+ public function getQueryFilterForStorage(): ISearchOperator {}
+ public function getCacheEntryFromSearchResult(ICacheEntry $rawEntry): ?ICacheEntry {}
+ public static function cacheEntryFromData($data, IMimeTypeLoader $mimetypeLoader): ICacheEntry {}
+ }
+}
+
+namespace OC\Files\Cache\Wrapper {
+ use OC\Files\Cache\Cache;
+ class CacheWrapper extends Cache {}
+}
+
+namespace OC\Files {
+ use OCP\Files\Cache\ICacheEntry;
+ use OCP\Files\Mount\IMountPoint;
+ use OCP\IUser;
+
+ class Filesystem {
+ public static function addStorageWrapper(string $wrapperName, callable $wrapper, int $priority = 50) {
+ }
+ }
+
+ class FileInfo implements \OCP\Files\FileInfo {
+ /**
+ * @param string|boolean $path
+ * @param \OCP\Files\Storage\IStorage $storage
+ * @param string $internalPath
+ * @param array|ICacheEntry $data
+ * @param \OCP\Files\Mount\IMountPoint $mount
+ * @param \OCP\IUser|null $owner
+ */
+ public function __construct($path, $storage, $internalPath, $data, $mount, $owner = null) {}
+ }
+ class View {
+ public function __construct(string $path) {}
+ public function unlink($path) {}
+ }
+}
+
+namespace OC\User {
+ use OCP\UserInterface;
+ use OCP\IUser;
+ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+ class User implements IUser {
+ public function __construct(string $uid, ?UserInterface $backend, EventDispatcherInterface $dispatcher, $emitter = null, IConfig $config = null, $urlGenerator = null) {}
+ }
+}
+
+namespace OCA\DAV\Upload {
+
+ use Sabre\DAV\File;
+
+ abstract class FutureFile extends File {}
+}
+
+namespace OCA\DAV\Connector\Sabre {
+
+ class Node {
+ public function getFileInfo(): \OCP\Files\FileInfo {}
+ }
+}
+
+namespace OC\BackgroundJob {
+
+ use OCP\BackgroundJob\IJob;
+ use OCP\BackgroundJob\IJobList;
+ use OCP\ILogger;
+
+ abstract class TimedJob implements IJob {
+ public function execute(IJobList $jobList, ILogger $logger = null) {
+ }
+
+ abstract protected function run($argument);
+
+ public function setId(int $id) {
+ }
+
+ public function setLastRun(int $lastRun) {
+ }
+
+ public function setArgument($argument) {
+ }
+
+ public function getId() {
+ }
+
+ public function getLastRun() {
+ }
+
+ public function getArgument() {
+ }
+ }
+}
+
+namespace OC\Files\Mount {
+ use OC\Files\Filesystem;
+ use OC\Files\Storage\Storage;
+ use OC\Files\Storage\StorageFactory;
+ use OCP\Files\Mount\IMountPoint;
+
+ class MountPoint implements IMountPoint {
+ /**
+ * @var \OC\Files\Storage\Storage $storage
+ */
+ protected $storage = null;
+ protected $class;
+ protected $storageId;
+ protected $rootId = null;
+
+ /** @var int|null */
+ protected $mountId;
+
+ /**
+ * @param string|\OCP\Files\Storage\IStorage $storage
+ * @param string $mountpoint
+ * @param array $arguments (optional) configuration for the storage backend
+ * @param \OCP\Files\Storage\IStorageFactory $loader
+ * @param array $mountOptions mount specific options
+ * @param int|null $mountId
+ * @throws \Exception
+ */
+ public function __construct($storage, $mountpoint, $arguments = null, $loader = null, $mountOptions = null, $mountId = null) {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * get complete path to the mount point, relative to data/
+ *
+ * @return string
+ */
+ public function getMountPoint() {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * Sets the mount point path, relative to data/
+ *
+ * @param string $mountPoint new mount point
+ */
+ public function setMountPoint($mountPoint) {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * @return \OCP\Files\Storage\IStorage
+ */
+ public function getStorage() {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * @return string
+ */
+ public function getStorageId() {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * @return int
+ */
+ public function getNumericStorageId() {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * @param string $path
+ * @return string
+ */
+ public function getInternalPath($path) {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * @param callable $wrapper
+ */
+ public function wrapStorage($wrapper) {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * Get a mount option
+ *
+ * @param string $name Name of the mount option to get
+ * @param mixed $default Default value for the mount option
+ * @return mixed
+ */
+ public function getOption($name, $default) {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * Get all options for the mount
+ *
+ * @return array
+ */
+ public function getOptions() {
+ throw new \Exception('stub');
+ }
+
+ /**
+ * @return int
+ */
+ public function getStorageRootId() {
+ throw new \Exception('stub');
+ }
+
+ public function getMountId() {
+ throw new \Exception('stub');
+ }
+
+ public function getMountType() {
+ throw new \Exception('stub');
+ }
+
+ public function getMountProvider(): string {
+ throw new \Exception('stub');
+ }
+ }
+}
+
+namespace OC\Files\Storage\Wrapper{
+
+ use OCP\Files\Cache\ICache;
+ use OCP\Files\Cache\ICacheEntry;
+ use OCP\Files\Search\ISearchQuery;
+ use OCP\Files\Storage\IStorage;
+
+ class Wrapper implements IStorage {
+ public function __construct(array $parameters) {
+ }
+
+ public function getWrapperStorage(): ?IStorage {}
+
+ public function getId() {}
+
+ public function mkdir($path) {}
+
+ public function rmdir($path) {}
+
+ public function opendir($path) {
+ throw new \Exception('stub');
+ }
+
+ public function is_dir($path) {
+ throw new \Exception('stub');
+ }
+
+ public function is_file($path) {
+ throw new \Exception('stub');
+ }
+
+ public function stat($path) {
+ throw new \Exception('stub');
+ }
+
+ public function filetype($path) {
+ throw new \Exception('stub');
+ }
+
+ public function filesize($path) {
+ throw new \Exception('stub');
+ }
+
+ public function isCreatable($path) {
+ throw new \Exception('stub');
+ }
+
+ public function isReadable($path) {
+ throw new \Exception('stub');
+ }
+
+ public function isUpdatable($path) {
+ throw new \Exception('stub');
+ }
+
+ public function isDeletable($path) {
+ throw new \Exception('stub');
+ }
+
+ public function isSharable($path) {
+ throw new \Exception('stub');
+ }
+
+ public function getPermissions($path) {
+ throw new \Exception('stub');
+ }
+
+ public function file_exists($path) {
+ throw new \Exception('stub');
+ }
+
+ public function filemtime($path) {
+ throw new \Exception('stub');
+ }
+
+ public function file_get_contents($path) {
+ throw new \Exception('stub');
+ }
+
+ public function file_put_contents($path, $data) {
+ throw new \Exception('stub');
+ }
+
+ public function unlink($path) {
+ throw new \Exception('stub');
+ }
+
+ public function rename($path1, $path2) {
+ throw new \Exception('stub');
+ }
+
+ public function copy($path1, $path2) {
+ throw new \Exception('stub');
+ }
+
+ public function fopen($path, $mode) {
+ throw new \Exception('stub');
+ }
+
+ public function getMimeType($path) {
+ throw new \Exception('stub');
+ }
+
+ public function hash($type, $path, $raw = false) {
+ throw new \Exception('stub');
+ }
+
+ public function free_space($path) {
+ throw new \Exception('stub');
+ }
+
+ public function touch($path, $mtime = null) {
+ throw new \Exception('stub');
+ }
+
+ public function getLocalFile($path) {
+ throw new \Exception('stub');
+ }
+
+ public function hasUpdated($path, $time) {
+ throw new \Exception('stub');
+ }
+
+ public function getETag($path) {
+ throw new \Exception('stub');
+ }
+
+ public function isLocal() {
+ throw new \Exception('stub');
+ }
+
+ public function instanceOfStorage($class) {
+ throw new \Exception('stub');
+ }
+
+ public function getDirectDownload($path) {
+ throw new \Exception('stub');
+ }
+
+ public function verifyPath($path, $fileName) {
+ throw new \Exception('stub');
+ }
+
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ throw new \Exception('stub');
+ }
+
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
+ throw new \Exception('stub');
+ }
+
+ public function test() {
+ throw new \Exception('stub');
+ }
+
+ public function getAvailability() {
+ throw new \Exception('stub');
+ }
+
+ public function setAvailability($isAvailable) {
+ throw new \Exception('stub');
+ }
+
+ public function getOwner($path) {
+ throw new \Exception('stub');
+ }
+
+ public function getCache() {
+ throw new \Exception('stub');
+ }
+
+ public function getPropagator() {
+ throw new \Exception('stub');
+ }
+
+ public function getScanner() {
+ throw new \Exception('stub');
+ }
+
+ public function getUpdater() {
+ throw new \Exception('stub');
+ }
+
+ public function getWatcher() {
+ throw new \Exception('stub');
+ }
+ }
+
+ class Jail extends Wrapper {
+ public function getUnjailedPath(string $path): string {}
+ }
+
+ class Quota extends Wrapper {
+ public function getQuota() {}
+ }
+
+ class PermissionsMask extends Wrapper {
+ public function getQuota() {}
+ }
+}
+
+namespace OC\AppFramework\Middleware\Security\Exceptions {
+ class NotLoggedInException extends \Exception {}
+}