diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml
new file mode 100644
index 000000000..8fa3c9ec7
--- /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/composer.json b/composer.json
index 16f5aef13..263b97b58 100644
--- a/composer.json
+++ b/composer.json
@@ -25,9 +25,14 @@
"scripts": {
"cs:check": "php-cs-fixer fix --dry-run --diff",
"cs:fix": "php-cs-fixer fix",
- "lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l"
+ "lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
+ "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"
},
"require-dev": {
+ "vimeo/psalm": "^4.24",
"nextcloud/coding-standard": "^0.5.0",
"phpunit/phpunit": "^9.5"
}
diff --git a/composer.lock b/composer.lock
index 5b4f10afb..abc43c1c9 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,9 +4,248 @@
"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": "6e59f965e4812480a5366324b2e86b6d",
"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": "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",
@@ -225,6 +464,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",
@@ -443,6 +719,107 @@
],
"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",
@@ -611,6 +988,57 @@
],
"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",
@@ -708,6 +1136,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",
@@ -4188,6 +4669,113 @@
],
"time": "2021-07-28T10:34:58+00:00"
},
+ {
+ "name": "vimeo/psalm",
+ "version": "4.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vimeo/psalm.git",
+ "reference": "06dd975cb55d36af80f242561738f16c5f58264f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/06dd975cb55d36af80f242561738f16c5f58264f",
+ "reference": "06dd975cb55d36af80f242561738f16c5f58264f",
+ "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",
+ "symfony/polyfill-php80": "^1.25",
+ "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.24.0"
+ },
+ "time": "2022-06-26T11:47:54+00:00"
+ },
{
"name": "webmozart/assert",
"version": "1.10.0",
@@ -4245,6 +4833,57 @@
"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": [],
@@ -4257,5 +4896,5 @@
"platform-overrides": {
"php": "7.4"
},
- "plugin-api-version": "2.0.0"
+ "plugin-api-version": "2.2.0"
}
diff --git a/psalm.xml b/psalm.xml
new file mode 100644
index 000000000..eac4c1739
--- /dev/null
+++ b/psalm.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/psalm-baseline.xml b/tests/psalm-baseline.xml
new file mode 100644
index 000000000..a3c0419bd
--- /dev/null
+++ b/tests/psalm-baseline.xml
@@ -0,0 +1,3302 @@
+
+
+
+
+ IFilter
+
+
+
+
+ IProvider
+
+
+
+
+ array<string,string|integer>
+
+
+ null
+
+
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IL10N
+ IManager
+ IURLGenerator
+
+
+ IL10N
+ IManager
+ IURLGenerator
+
+
+ Circles::generateAbsoluteLink($circle->getUniqueId())
+
+
+
+
+ IEvent
+ IEvent
+
+
+
+
+ IEvent
+ IEvent
+ IEvent
+
+
+
+
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+
+
+
+
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+ IEvent
+
+
+
+
+ ISetting
+
+
+
+
+ ISetting
+
+
+
+
+ ISetting
+
+
+
+
+ \OC::$server
+ \OC::$server
+ \OC::$server
+ \OC::$server
+ \OC::$server
+ \OC::$server
+
+
+
+
+ App
+ IBootstrap
+
+
+
+
+ ICapability
+
+
+
+
+ Application
+
+
+ !$sendPasswordByMail
+ $sendPasswordByMail
+
+
+ $e
+ $share
+ $share
+ Defaults
+ IEMailTemplate
+ IEMailTemplate
+ IShare
+ IShare
+ IShare
+ IShare
+ IUser
+ Notifications
+ QueryException
+ QueryException
+ Util
+
+
+ $emailTemplate
+ $emailTemplate
+ $this->defaults
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->logger
+ $this->logger
+ $this->logger
+ $this->mailer
+ $this->mailer
+ $this->mailer
+ $this->mailer
+ $this->mailer
+ $this->urlGenerator
+ $this->userManager
+ Defaults
+ ICloudIdManager
+ IEMailTemplate
+ IEMailTemplate
+ IL10N
+ ILogger
+ IMailer
+ IRootFolder
+ IURLGenerator
+ IUserManager
+ IllegalIDChangeException
+ Notifications
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ private $l10n = null;
+
+
+
+
+ IFederatedUser
+
+
+ $this->federatedUserService->getCurrentUser()
+
+
+
+
+ $this->queryBuilder
+ $this->queryBuilder
+ $this->queryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+ ICompositeExpression
+ ICompositeExpression
+ IQueryBuilder
+
+
+
+
+ ISearchPlugin
+
+
+
+
+ $this->capabilities
+ Application
+ Application
+ Application
+ Capabilities
+ Capabilities
+
+
+ AppConfig
+
+
+ OC::$server
+
+
+
+
+ IL10N
+
+
+
+
+ strtolower
+
+
+
+
+ (int)$type
+
+
+ IUserManager
+
+
+ IUserManager
+
+
+
+
+ Application
+ Application
+ Application
+ Application
+
+
+ setType
+
+
+
+
+ IInteractiveShellClient
+
+
+
+
+ Application
+ Application
+
+
+ null
+
+
+ $compareToInitiator !== null
+ $compareToOwner !== null
+
+
+ $owner === null
+
+
+ \OC::$server
+
+
+
+
+ IDBConnection
+ Share
+
+
+ $this->connection
+ $this->connection
+ $this->connection
+ IDBConnection
+
+
+
+
+ IL10N
+
+
+ IL10N
+
+
+
+
+ retrieveJson
+
+
+
+
+ getInstance
+ getInstance
+ getInvitedBy
+ getOwner
+ getSingleId
+ getStatus
+ hasInvitedBy
+
+
+
+
+ int|void|null
+
+
+ CardDavBackend
+ IUserManager
+
+
+ $this->cardDavBackend
+ $this->cardDavBackend
+ $this->userManager
+ CardDavBackend
+ IUserManager
+
+
+
+
+ OcsController
+
+
+
+
+ Controller
+
+
+
+
+ OcsController
+
+
+
+
+ Controller
+
+
+
+
+ TimedJob
+
+
+
+
+ TimedJob
+
+
+
+
+ TimedJob
+
+
+
+
+ TimedJob
+
+
+
+
+ $qb
+
+
+ $qb
+
+
+
+
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+
+
+
+
+ $qb
+
+
+
+
+ ICompositeExpression
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IShare
+ IShare
+
+
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ ICompositeExpression
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IShare
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ ExtendedQueryBuilder
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ CoreQueryBuilder
+
+
+ Connection
+ IShare
+
+
+ \OC::$server
+
+
+ dropTable
+ hasTable
+
+
+
+
+ $circle->getType()
+
+
+ $circle->getUniqueId(true)
+ $circleUniqueId
+ $circleUniqueId
+ (string)$uniqueId
+ -1
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+
+
+
+
+ IDBConnection
+ IL10N
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+
+
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ ICompositeExpression
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ UniqueConstraintViolationException
+
+
+ $grp
+ $grp
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $this->groupManager
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+
+
+
+
+ IDBConnection
+ IGroupManager
+ IL10N
+
+
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ IGroupManager
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+
+
+
+
+ IDBConnection
+ IL10N
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+
+
+ IDBConnection
+ IL10N
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+
+
+
+
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ FederatedLink
+
+
+ $linkUniqueId
+ $linkUniqueId
+ $status
+ (string)$uniqueId
+
+
+ null
+
+
+ $link === null
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $this->l10n
+ $this->l10n
+ $this->l10n
+
+
+
+
+ IDBConnection
+ IL10N
+
+
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+
+
+
+
+ self::SHARE_TYPE
+ self::SHARE_TYPE
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+
+
+
+
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ IQueryBuilder
+ IQueryBuilder
+ ShareNotFound
+ ShareNotFound
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ ShareNotFound
+ ShareNotFound
+
+
+
+
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+
+
+
+
+
+ $this->getItemsFromRequest($qb)
+ $this->getItemsFromRequest($qb)
+ $this->getItemsFromRequest($qb)
+ $this->getItemsFromRequest($qb)
+ $this->getItemsFromRequest($qb, true)
+
+
+ FederatedUser[]
+ Member[]
+ Member[]
+ Member[]
+ Member[]
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ Member|FederatedUser[]
+
+
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ CoreQueryBuilder
+
+
+ IQueryBuilder
+
+
+
+
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+ IQueryBuilder
+
+
+
+
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+
+
+
+
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+
+
+
+
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+ $getData
+
+
+ IShare
+ IShare
+
+
+
+
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+
+
+ $shareId
+ $shareId
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ UniqueConstraintViolationException
+
+
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ $qb
+ \OC::$server
+ \OC::$server
+
+
+
+
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+ IQueryBuilder
+
+
+
+
+ CircleMemberGenericEvent
+
+
+
+
+ CircleResultGenericEvent
+
+
+
+
+ CircleResultGenericEvent
+
+
+
+
+ CircleResultGenericEvent
+
+
+
+
+ Event
+
+
+
+
+ CircleResultGenericEvent
+
+
+
+
+ CircleResultGenericEvent
+
+
+
+
+ CircleGenericEvent
+
+
+
+
+ CircleResultGenericEvent
+
+
+
+
+ CircleResultGenericEvent
+
+
+
+
+ Event
+
+
+
+
+ CircleGenericEvent
+
+
+
+
+ CircleGenericEvent
+
+
+
+
+ CircleGenericEvent
+
+
+
+
+ CircleMemberGenericEvent
+
+
+
+
+ CircleGenericEvent
+
+
+
+
+ CircleResultGenericEvent
+
+
+
+
+ CircleGenericEvent
+
+
+
+
+ Event
+
+
+
+
+ Event
+
+
+
+
+ Event
+
+
+
+
+ CircleMemberGenericEvent
+
+
+
+
+ CircleMemberGenericEvent
+
+
+
+
+ CircleMemberGenericEvent
+
+
+
+
+ Event
+
+
+
+
+ Http
+
+
+
+
+ Http
+
+
+
+
+ Http
+
+
+
+
+ Http
+
+
+
+
+ Http
+
+
+
+
+ Http
+
+
+
+
+ Http
+
+
+
+
+ Http
+
+
+
+
+ IUserManager
+
+
+ IUserManager
+
+
+
+
+ Application
+
+
+
+
+ CircleEventService
+
+
+ $this->circleEventService
+ CircleEventService
+
+
+
+
+ IUserManager
+
+
+ IUserManager
+
+
+
+
+ Defaults
+ IL10N
+ IMailer
+ IRootFolder
+ IURLGenerator
+ IUserManager
+
+
+ Defaults
+ IL10N
+ IMailer
+ IRootFolder
+ IURLGenerator
+ IUserManager
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+ !$sendPasswordByMail
+ $sendPasswordByMail
+
+
+ $e
+ IShare
+ IShare
+ IShare
+ NotFoundException
+ ShareNotFound
+ Util
+
+
+ $emailTemplate
+ $emailTemplate
+ $share
+ $share
+ $share
+ $share
+ $share
+ $this->defaults
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->mailer
+ $this->mailer
+ $this->mailer
+ IEMailTemplate
+ IShare
+ IllegalIDChangeException
+ ShareNotFound
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ MountPoint
+
+
+ MoveableMount
+
+
+
+
+ ShareNotFound
+ ShareNotFound
+
+
+
+
+ IMountProvider
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+ IEMailTemplate
+ IEMailTemplate
+ IEMailTemplate
+ IUser
+
+
+ $this->mailer
+ $this->urlGenerator
+ $this->userManager
+
+
+
+
+ $circle->getType()
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ $mustBeChecked
+
+
+
+
+ IHandler
+
+
+
+
+ IUser
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IEventListener
+
+
+
+
+ IRepairStep
+
+
+
+
+ IRepairStep
+
+
+
+
+ SimpleMigrationStep
+
+
+
+
+ SimpleMigrationStep
+
+
+
+
+ SimpleMigrationStep
+
+
+
+
+ SimpleMigrationStep
+
+
+
+
+ SimpleMigrationStep
+
+
+
+
+ SimpleMigrationStep
+
+
+
+
+ SimpleMigrationStep
+
+
+
+
+ $this->type
+
+
+ string
+
+
+ $this->getUniqueId()
+
+
+ Application
+
+
+ (array)self::CIRCLES_SETTINGS_DEFAULT
+
+
+ IL10N
+ OC::$server
+
+
+
+
+ DeprecatedMember
+
+
+ $member->getType()
+
+
+ Application
+
+
+ self::fromArray(json_decode($json, true))
+
+
+ IL10N
+ OC::$server
+
+
+
+
+ self
+
+
+ IHasher
+
+
+ $hasher
+ $hasher
+ \OC::$server
+ \OC::$server
+
+
+
+
+ $this->get('addressBookId', $data)
+
+
+
+
+ $this->l10n
+ $this->l10n
+
+
+
+
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+
+
+
+
+ NCSignatory
+
+
+
+
+ $circleUniqueId
+
+
+ $this->circleUniqueId
+
+
+ string
+
+
+ $this->circleUniqueId
+
+
+
+
+ $arr
+
+
+ string[]
+
+
+ self
+
+
+ Circle|null
+
+
+
+
+
+ string[]
+
+
+ CoreQueryBuilder
+
+
+
+
+ OC::$server
+
+
+ setBasedOn
+ setDisplayName
+ setInstance
+ setSingleId
+ setUserId
+ setUserType
+
+
+
+
+ $inheritedBy
+
+
+ $arr
+
+
+ string[]
+
+
+ self
+
+
+
+
+ $this->coreRequestBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+ CoreQueryBuilder
+
+
+ IURLGenerator
+
+
+ $this->urlGenerator
+ IURLGenerator
+
+
+
+
+ $this->getCloudIdManager()
+ IClientService
+ IClientService
+ ICloudIdManager
+ ICloudIdManager
+
+
+ IClientService
+ ICloudIdManager
+
+
+
+
+ $this
+
+
+
+
+ IShare
+ IShare
+ IShare
+
+
+
+
+ ''
+
+
+ $arr
+
+
+ string[]
+
+
+ ShareByCircleProvider
+ ShareByCircleProvider
+
+
+ ?IShare
+ IRootFolder
+ IShare
+ IURLGenerator
+ IURLGenerator
+ IUserManager
+ Ishare
+ Ishare
+
+
+
+
+ $this->get('share_id', $data, '')
+
+
+ IShare
+ IShare
+
+
+
+
+ Application
+
+
+ null
+
+
+ null
+ null
+
+
+
+
+ MountPoint
+
+
+ MoveableMount
+
+
+
+
+ ShareNotFound
+ ShareNotFound
+
+
+
+
+ IMountProvider
+
+
+
+
+ INotifier
+
+
+
+
+ false
+
+
+ $result
+
+
+ search
+
+
+ Contacts
+
+
+ $search
+
+
+ \OC::$server
+
+
+
+
+ array
+
+
+
+
+ $result
+
+
+ array
+
+
+ $search
+
+
+
+
+ $result
+
+
+ search
+
+
+ LocalGroups
+
+
+ $search
+
+
+ \OC::$server
+
+
+
+
+ $result
+
+
+ LocalUsers
+
+
+ $search
+
+
+ ICollaboratorSearch
+ IShare
+ IShare
+
+
+ $this->search
+ ICollaboratorSearch
+ \OC::$server
+
+
+
+
+ CircleProbe|null
+
+
+ IHasher
+ IL10N
+
+
+ $this->hasher
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ IHasher
+ IL10N
+
+
+
+
+ $type
+
+
+ DeprecatedCircle
+
+
+ null|DeprecatedMember
+
+
+ Application
+ Application
+ Application
+ Application
+ Application
+
+
+ $type === ''
+ $type === ''
+
+
+ DeprecatedCircle
+ IGroupManager
+ IL10N
+ IUserSession
+ Member
+ Member
+
+
+ $this->groupManager
+ $this->groupManager
+ $this->groupManager
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ IGroupManager
+ IL10N
+ OC::$server
+
+
+ isFederatedCirclesAllowed
+
+
+
+
+ Application
+ Application
+ Application
+ Application
+ Application
+
+
+ IConfig
+ IURLGenerator
+
+
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->config
+ $this->urlGenerator
+ IConfig
+ IURLGenerator
+
+
+ OC::$WEBROOT
+
+
+
+
+ is_null($contactId)
+
+
+ $addressBook
+ ContactsManager
+ IAddressBook
+ IAddressBook
+ IManager
+ IManager
+ IManager
+ IURLGenerator
+
+
+ IURLGenerator
+ OC::$server
+ OC::$server
+
+
+
+
+ $existing
+
+
+ DeprecatedCircle[]
+
+
+ $bookId
+ $bookId
+ $bookId
+
+
+ CardDavBackend
+ ICloudIdManager
+ IUserManager
+ ManagerEvent
+
+
+ $this->cardDavBackend
+ $this->cardDavBackend
+ $this->cardDavBackend
+ $this->cardDavBackend
+ $this->cardDavBackend
+ $this->userManager
+ $this->userManager
+ $this->userManager
+ $this->userManager
+ CardDavBackend
+ ICloudIdManager
+ IUserManager
+
+
+
+
+ AddingCircleMemberEvent
+ AddingCircleMemberEvent
+ CircleCreatedEvent
+ CircleDestroyedEvent
+ CircleEditedEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleGenericEvent
+ CircleMemberAddedEvent
+ CircleMemberAddedEvent
+ CircleMemberEditedEvent
+ CircleMemberEditedEvent
+ CircleMemberRemovedEvent
+ CircleMemberRemovedEvent
+ CircleMemberRequestedEvent
+ CircleMemberRequestedEvent
+ CreatingCircleEvent
+ CreatingFileShareEvent
+ DestroyingCircleEvent
+ EditingCircleEvent
+ EditingCircleMemberEvent
+ EditingCircleMemberEvent
+ FileShareCreatedEvent
+ MembershipsCreatedEvent
+ MembershipsRemovedEvent
+ PreparingCircleMemberEvent
+ PreparingFileShareEvent
+ RemovingCircleMemberEvent
+ RemovingCircleMemberEvent
+ RequestingCircleMemberEvent
+ RequestingCircleMemberEvent
+
+
+ IEventDispatcher
+
+
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ $this->eventDispatcher
+ IEventDispatcher
+
+
+
+
+ $context
+ new GenericEvent(null, $arguments)
+
+
+ Application
+
+
+ IActivityManager
+ IEvent
+ INotificationManager
+ ITimeFactory
+ IURLGenerator
+ IUserManager
+
+
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $event
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ $this->activityManager
+ $this->notificationManager
+ $this->notificationManager
+ $this->notificationManager
+ $this->notificationManager
+ $this->notificationManager
+ $this->notificationManager
+ $this->publishEvent($event, [$user]);
+ $this->time
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->userManager
+ IActivityManager
+ INotification
+ INotificationManager
+ ITimeFactory
+ IURLGenerator
+ IUserManager
+ \OCP\Activity\IEvent
+
+
+
+
+ OC::$server
+
+
+
+
+ gObj
+
+
+
+
+ FederatedUser
+
+
+ Application
+ Application
+ Application
+
+
+ ICacheFactory
+ IGroupManager
+ IUserManager
+ IUserSession
+ IUser|null
+
+
+ $this->cache
+ $this->cache
+ $this->cache
+ $this->groupManager
+ $this->userManager
+ $this->userSession
+ ICache
+ IGroupManager
+ IUserManager
+ IUserSession
+
+
+
+
+ IURLGenerator
+
+
+ IURLGenerator
+
+
+ asyncBroadcast
+ checkEvent
+ checkEvent
+ checkEvent
+ getGlobalScaleEvent
+ getGlobalScaleEvent
+ getGlobalScaleEvent
+
+
+
+
+ $wrapper
+
+
+ $this->eventWrapperRequest->getByToken($token)
+
+
+ GSWrapper[]
+
+
+ configureRequest
+
+
+ IURLGenerator
+
+
+ $this->urlGenerator
+ $this->urlGenerator
+ $this->urlGenerator
+ IURLGenerator
+
+
+ asyncBroadcast
+ getGlobalScaleEvent
+ getGlobalScaleEvent
+ getInstances
+ getInstances
+ getKey
+
+
+
+
+ IURLGenerator
+ IUserManager
+ IUserSession
+ Signer
+
+
+ IURLGenerator
+ IUserManager
+ IUserSession
+ Signer
+
+
+
+
+ IGroupManager
+ IL10N
+ IUserManager
+
+
+ $this->groupManager
+ $this->groupManager
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->userManager
+ IGroupManager
+ IL10N
+ IUserManager
+
+
+
+
+ IRequest
+ IURLGenerator
+
+
+ IURLGenerator
+
+
+
+
+ IGroupManager
+ IUserManager
+
+
+ $this->userManager
+ IGroupManager
+ IUserManager
+
+
+
+
+ $members
+
+
+ DeprecatedMember[]
+
+
+ $circle->getType()
+
+
+ (int)$level
+
+
+ IL10N
+ IUserManager
+
+
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->userManager
+ IL10N
+ IUserManager
+ OC::$server
+
+
+ isInvitationSkipped
+
+
+
+
+ if (!in_array($member->getCircleId(), $knownIds)) {
+
+
+
+
+ Application
+
+
+ $addressBook
+ ContactsManager
+ IDBConnection
+ IManager
+ IShare
+ IShare
+ IShare
+ IShare
+ IURLGenerator
+ \OCP\DB\Exception
+ \OCP\DB\Exception
+ \OCP\DB\Exception
+ \OCP\DB\Exception
+
+
+ $cm
+ $cm
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ $this->dbConnection
+ IDBConnection
+ IURLGenerator
+ OC::$server
+ OC::$server
+ \OCP\DB\Exception
+
+
+
+
+ string
+
+
+ Application
+ Application
+
+
+ is_array($contact)
+
+
+ DataResponse
+ DataResponse
+ Http
+ Http
+ IContactsStore
+ ILogger
+ IUserManager
+
+
+ $cManager
+ $cManager
+ $this->logger
+ $this->logger
+ $this->userManager
+ $this->userManager
+ $this->userManager
+ $this->userManager
+ DataResponse
+ DataResponse
+ IContactsStore
+ ILogger
+ IUserManager
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+
+
+
+
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ $notification
+ INotification
+ INotificationManager
+ IURLGenerator
+
+
+ $this->notificationManager
+ $this->notificationManager
+ $this->urlGenerator
+ INotificationManager
+ IURLGenerator
+
+
+
+
+ IOutput
+
+
+ $this->migrationOutput
+ $this->migrationOutput
+ $this->migrationOutput
+ $this->migrationOutput
+ IOutput
+
+
+
+
+ IL10N
+
+
+ $this->l10n
+ IL10N
+
+
+
+
+ Application
+ Application
+
+
+ is_null($object)
+
+
+ $signed === null
+
+
+ Http
+ IURLGenerator
+
+
+ IURLGenerator
+
+
+
+
+ OC::$server
+
+
+
+
+ Defaults
+ IEMailTemplate
+ IEMailTemplate
+ IEMailTemplate
+ IHasher
+ IL10N
+ IMailer
+ \OCP\Util
+
+
+ $this->defaults
+ $this->hasher
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->l10n
+ $this->mailer
+ $this->mailer
+ $this->mailer
+ Defaults
+ IHasher
+ IL10N
+ IMailer
+
+
+
+
+ IShare
+ IURLGenerator
+
+
+ IURLGenerator
+
+
+
+
+ $this->cache
+ $this->cache
+ $this->cache
+ $this->cache
+ $this->cache
+ $this->cache
+ $this->cache
+ ICache
+ ICacheFactory
+ IShare
+ IShare
+ IShare
+
+
+
+
+ federatedEventService
+ federatedEventService
+
+
+ Application
+ Application
+
+
+ IGroupManager
+ IUserManager
+
+
+ $this->groupManager
+ $this->groupManager
+ $this->userManager
+ IGroupManager
+ IUserManager
+
+
+
+
+ TimeFactory
+
+
+ $this->timeFactory
+ TimeFactory
+
+
+
+
+ IShareProvider
+
+
+
+
+ IShareProvider
+
+
+
+
+ $varr[0] !== null
+
+
+ $request
+ $request
+ $request
+ $request
+ $request
+ $request
+ $request
+ $request
+ $request
+ $signedRequest->getIncomingRequest()
+ IRequest
+
+
+ OC::$server
+
+
+
+
+ QueryBuilder
+
+
+
+
+ IClient
+ IClient
+
+
+ IClient
+
+
+
+
+ BadResponseException
+ BadResponseException
+ BadResponseException|null
+ IResponse|null
+
+
+ BadResponseException
+ private $exception = null;
+
+
+
+
+ IRequest
+ IRequest
+
+
+ IRequest
+
+
+
+
+ $item
+ $this->data
+ $this->data
+
+
+ array
+ array
+
+
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+ $this->data
+
+
+
+
+ getArray
+
+
+
+
+ IConfig
+ IConfig
+ IConfig
+ IConfig
+ IConfig
+
+
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+ OC::$server
+
+
+
+
+ HintException
+
+
+ OC::$server
+
+
+
+
+ $e
+
+
+ $this->clientService()
+ ClientException
+ IClientService
+ IResponse
+
+
+
+
+ IConfig
+
+
+ $config
+ $config
+ OC::$server
+
+
+
+
+ $s[$e]
+
+
+
+
+ IProvider
+
+
+
+
+ SearchResultEntry
+
+
+
diff --git a/tests/stub.phpstub b/tests/stub.phpstub
new file mode 100644
index 000000000..291a84402
--- /dev/null
+++ b/tests/stub.phpstub
@@ -0,0 +1,1023 @@
+
+ *
+ * @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 .
+ *
+ */
+
+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 {}
+}