From d1e18dfbf2b5059f06db5dad951ec7855a64210a Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Mon, 26 Oct 2026 20:17:50 +0100 Subject: [PATCH 1/2] ci(dev-deps): bump psalm from 5.20 to 6.20.1 - along with its needed PHP dep, which should be at PHP 8.3 anyways Signed-off-by: Arthur Schiwon --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 861 ++++++++++++++++++++------------- 2 files changed, 513 insertions(+), 350 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 5050a84726..91132a29f8 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -4,7 +4,7 @@ }, "config": { "platform": { - "php": "8.1.17" + "php": "8.3.17" } } } diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index a91d496d70..33b6a16e8b 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/composer.lock @@ -4,21 +4,21 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8213a64b36972a05a20265830eecb0c5", + "content-hash": "18a15ebb5bb695f7090a2513a0008d67", "packages": [], "packages-dev": [ { "name": "amphp/amp", - "version": "v3.1.0", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9" + "reference": "73c38b323ff8d790abf0f76c56fcc892bda4111a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9", - "reference": "7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9", + "url": "https://api.github.com/repos/amphp/amp/zipball/73c38b323ff8d790abf0f76c56fcc892bda4111a", + "reference": "73c38b323ff8d790abf0f76c56fcc892bda4111a", "shasum": "" }, "require": { @@ -28,7 +28,7 @@ "require-dev": { "amphp/php-cs-fixer-config": "^2", "phpunit/phpunit": "^9", - "psalm/phar": "5.23.1" + "psalm/phar": "6.16.1" }, "type": "library", "autoload": { @@ -78,7 +78,7 @@ ], "support": { "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v3.1.0" + "source": "https://github.com/amphp/amp/tree/v3.1.3" }, "funding": [ { @@ -86,7 +86,7 @@ "type": "github" } ], - "time": "2025-01-26T16:07:39+00:00" + "time": "2026-07-19T17:59:20+00:00" }, { "name": "amphp/byte-stream", @@ -230,16 +230,16 @@ }, { "name": "amphp/dns", - "version": "v2.4.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/amphp/dns.git", - "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71" + "reference": "ec5948bfafac808f410406e18bc7b52a2d4629b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/dns/zipball/78eb3db5fc69bf2fc0cb503c4fcba667bc223c71", - "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71", + "url": "https://api.github.com/repos/amphp/dns/zipball/ec5948bfafac808f410406e18bc7b52a2d4629b7", + "reference": "ec5948bfafac808f410406e18bc7b52a2d4629b7", "shasum": "" }, "require": { @@ -258,7 +258,7 @@ "amphp/php-cs-fixer-config": "^2", "amphp/phpunit-util": "^3", "phpunit/phpunit": "^9", - "psalm/phar": "5.20" + "psalm/phar": "6.16.1" }, "type": "library", "autoload": { @@ -307,7 +307,7 @@ ], "support": { "issues": "https://github.com/amphp/dns/issues", - "source": "https://github.com/amphp/dns/tree/v2.4.0" + "source": "https://github.com/amphp/dns/tree/v2.4.1" }, "funding": [ { @@ -315,20 +315,20 @@ "type": "github" } ], - "time": "2025-01-19T15:43:40+00:00" + "time": "2026-07-26T17:53:54+00:00" }, { "name": "amphp/parallel", - "version": "v2.3.1", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/amphp/parallel.git", - "reference": "5113111de02796a782f5d90767455e7391cca190" + "reference": "37f5b2754fadc229c00f9416bd68fb8d04529a81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/parallel/zipball/5113111de02796a782f5d90767455e7391cca190", - "reference": "5113111de02796a782f5d90767455e7391cca190", + "url": "https://api.github.com/repos/amphp/parallel/zipball/37f5b2754fadc229c00f9416bd68fb8d04529a81", + "reference": "37f5b2754fadc229c00f9416bd68fb8d04529a81", "shasum": "" }, "require": { @@ -348,7 +348,7 @@ "amphp/php-cs-fixer-config": "^2", "amphp/phpunit-util": "^3", "phpunit/phpunit": "^9", - "psalm/phar": "^5.18" + "psalm/phar": "6.16.1" }, "type": "library", "autoload": { @@ -391,7 +391,7 @@ ], "support": { "issues": "https://github.com/amphp/parallel/issues", - "source": "https://github.com/amphp/parallel/tree/v2.3.1" + "source": "https://github.com/amphp/parallel/tree/v2.4.0" }, "funding": [ { @@ -399,7 +399,7 @@ "type": "github" } ], - "time": "2024-12-21T01:56:09+00:00" + "time": "2026-05-16T16:54:01+00:00" }, { "name": "amphp/parser", @@ -465,16 +465,16 @@ }, { "name": "amphp/pipeline", - "version": "v1.2.3", + "version": "v1.2.7", "source": { "type": "git", "url": "https://github.com/amphp/pipeline.git", - "reference": "7b52598c2e9105ebcddf247fc523161581930367" + "reference": "cf2d67696c2015ea7c7fd8f6ec5f8ed7c2d17c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/pipeline/zipball/7b52598c2e9105ebcddf247fc523161581930367", - "reference": "7b52598c2e9105ebcddf247fc523161581930367", + "url": "https://api.github.com/repos/amphp/pipeline/zipball/cf2d67696c2015ea7c7fd8f6ec5f8ed7c2d17c17", + "reference": "cf2d67696c2015ea7c7fd8f6ec5f8ed7c2d17c17", "shasum": "" }, "require": { @@ -486,7 +486,7 @@ "amphp/php-cs-fixer-config": "^2", "amphp/phpunit-util": "^3", "phpunit/phpunit": "^9", - "psalm/phar": "^5.18" + "psalm/phar": "6.16.1" }, "type": "library", "autoload": { @@ -520,7 +520,7 @@ ], "support": { "issues": "https://github.com/amphp/pipeline/issues", - "source": "https://github.com/amphp/pipeline/tree/v1.2.3" + "source": "https://github.com/amphp/pipeline/tree/v1.2.7" }, "funding": [ { @@ -528,20 +528,20 @@ "type": "github" } ], - "time": "2025-03-16T16:33:53+00:00" + "time": "2026-07-26T14:50:43+00:00" }, { "name": "amphp/process", - "version": "v2.0.3", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/amphp/process.git", - "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d" + "reference": "583959df17d00304ad7b0b32285373f985935643" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/process/zipball/52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d", - "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d", + "url": "https://api.github.com/repos/amphp/process/zipball/583959df17d00304ad7b0b32285373f985935643", + "reference": "583959df17d00304ad7b0b32285373f985935643", "shasum": "" }, "require": { @@ -555,7 +555,7 @@ "amphp/php-cs-fixer-config": "^2", "amphp/phpunit-util": "^3", "phpunit/phpunit": "^9", - "psalm/phar": "^5.4" + "psalm/phar": "6.16.1" }, "type": "library", "autoload": { @@ -588,7 +588,7 @@ "homepage": "https://amphp.org/process", "support": { "issues": "https://github.com/amphp/process/issues", - "source": "https://github.com/amphp/process/tree/v2.0.3" + "source": "https://github.com/amphp/process/tree/v2.1.0" }, "funding": [ { @@ -596,28 +596,31 @@ "type": "github" } ], - "time": "2024-04-19T03:13:44+00:00" + "time": "2026-05-31T15:11:55+00:00" }, { "name": "amphp/serialization", - "version": "v1.0.0", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/amphp/serialization.git", - "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1" + "reference": "fdf2834d78cebb0205fb2672676c1b1eb84371f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1", - "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1", + "url": "https://api.github.com/repos/amphp/serialization/zipball/fdf2834d78cebb0205fb2672676c1b1eb84371f0", + "reference": "fdf2834d78cebb0205fb2672676c1b1eb84371f0", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.4" }, "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "phpunit/phpunit": "^9 || ^8 || ^7" + "amphp/php-cs-fixer-config": "^2", + "ext-json": "*", + "ext-zlib": "*", + "phpunit/phpunit": "^9", + "psalm/phar": "6.16.1" }, "type": "library", "autoload": { @@ -652,22 +655,28 @@ ], "support": { "issues": "https://github.com/amphp/serialization/issues", - "source": "https://github.com/amphp/serialization/tree/master" + "source": "https://github.com/amphp/serialization/tree/v1.1.0" }, - "time": "2020-03-25T21:39:07+00:00" + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2026-04-05T15:59:53+00:00" }, { "name": "amphp/socket", - "version": "v2.3.1", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/amphp/socket.git", - "reference": "58e0422221825b79681b72c50c47a930be7bf1e1" + "reference": "b347be5aff6b2cc025208bb4d896607eb470c018" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/socket/zipball/58e0422221825b79681b72c50c47a930be7bf1e1", - "reference": "58e0422221825b79681b72c50c47a930be7bf1e1", + "url": "https://api.github.com/repos/amphp/socket/zipball/b347be5aff6b2cc025208bb4d896607eb470c018", + "reference": "b347be5aff6b2cc025208bb4d896607eb470c018", "shasum": "" }, "require": { @@ -676,17 +685,17 @@ "amphp/dns": "^2", "ext-openssl": "*", "kelunik/certificate": "^1.1", - "league/uri": "^6.5 | ^7", - "league/uri-interfaces": "^2.3 | ^7", + "league/uri": "^7", + "league/uri-interfaces": "^7", "php": ">=8.1", - "revolt/event-loop": "^1 || ^0.2" + "revolt/event-loop": "^1" }, "require-dev": { "amphp/php-cs-fixer-config": "^2", "amphp/phpunit-util": "^3", "amphp/process": "^2", "phpunit/phpunit": "^9", - "psalm/phar": "5.20" + "psalm/phar": "6.16.1" }, "type": "library", "autoload": { @@ -730,7 +739,7 @@ ], "support": { "issues": "https://github.com/amphp/socket/issues", - "source": "https://github.com/amphp/socket/tree/v2.3.1" + "source": "https://github.com/amphp/socket/tree/v2.4.1" }, "funding": [ { @@ -738,7 +747,7 @@ "type": "github" } ], - "time": "2024-04-21T14:33:03+00:00" + "time": "2026-08-22T18:13:20+00:00" }, { "name": "amphp/sync", @@ -817,28 +826,29 @@ }, { "name": "composer/pcre", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + "reference": "d5a341b3fb61f3001970940afb1d332968a183ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", - "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "url": "https://api.github.com/repos/composer/pcre/zipball/d5a341b3fb61f3001970940afb1d332968a183ed", + "reference": "d5a341b3fb61f3001970940afb1d332968a183ed", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, "conflict": { - "phpstan/phpstan": "<1.11.10" + "phpstan/phpstan": "<2.2.2" }, "require-dev": { - "phpstan/phpstan": "^1.12 || ^2", - "phpstan/phpstan-strict-rules": "^1 || ^2", - "phpunit/phpunit": "^8 || ^9" + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^9" }, "type": "library", "extra": { @@ -876,7 +886,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.3.2" + "source": "https://github.com/composer/pcre/tree/3.4.0" }, "funding": [ { @@ -886,26 +896,22 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-11-12T16:29:46+00:00" + "time": "2026-06-07T11:47:49+00:00" }, { "name": "composer/semver", - "version": "3.4.3", + "version": "3.5.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + "reference": "9dfce66f1e97360ea5e6d3e38ab14277e4cc591e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "url": "https://api.github.com/repos/composer/semver/zipball/9dfce66f1e97360ea5e6d3e38ab14277e4cc591e", + "reference": "9dfce66f1e97360ea5e6d3e38ab14277e4cc591e", "shasum": "" }, "require": { @@ -947,7 +953,7 @@ "homepage": "http://robbast.nl" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "Version comparison library that offers utilities, version constraint parsing and validation.", "keywords": [ "semantic", "semver", @@ -957,7 +963,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.3" + "source": "https://github.com/composer/semver/tree/3.5.2" }, "funding": [ { @@ -967,13 +973,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-09-19T14:15:21+00:00" + "time": "2026-10-22T15:37:26+00:00" }, { "name": "composer/xdebug-handler", @@ -1041,6 +1043,58 @@ ], "time": "2024-05-06T16:37:16+00:00" }, + { + "name": "danog/advanced-json-rpc", + "version": "v3.2.3", + "source": { + "type": "git", + "url": "https://github.com/danog/php-advanced-json-rpc.git", + "reference": "ae703ea7b4811797a10590b6078de05b3b33dd91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/danog/php-advanced-json-rpc/zipball/ae703ea7b4811797a10590b6078de05b3b33dd91", + "reference": "ae703ea7b4811797a10590b6078de05b3b33dd91", + "shasum": "" + }, + "require": { + "netresearch/jsonmapper": "^5", + "php": ">=8.1", + "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0 || ^6" + }, + "replace": { + "felixfbecker/php-advanced-json-rpc": "^3" + }, + "require-dev": { + "phpunit/phpunit": "^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "AdvancedJsonRpc\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + }, + { + "name": "Daniil Gentili", + "email": "daniil@daniil.it" + } + ], + "description": "A more advanced JSONRPC implementation", + "support": { + "issues": "https://github.com/danog/php-advanced-json-rpc/issues", + "source": "https://github.com/danog/php-advanced-json-rpc/tree/v3.2.3" + }, + "time": "2026-01-12T21:07:10+00:00" + }, { "name": "daverandom/libdns", "version": "v2.1.0", @@ -1124,29 +1178,29 @@ }, { "name": "doctrine/deprecations", - "version": "1.1.5", + "version": "1.1.6", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "conflict": { - "phpunit/phpunit": "<=7.5 || >=13" + "phpunit/phpunit": "<=7.5 || >=14" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^12 || ^13", - "phpstan/phpstan": "1.4.10 || 2.1.11", + "doctrine/coding-standard": "^9 || ^12 || ^14", + "phpstan/phpstan": "1.4.10 || 2.1.30", "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0", "psr/log": "^1 || ^2 || ^3" }, "suggest": { @@ -1166,54 +1220,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.5" + "source": "https://github.com/doctrine/deprecations/tree/1.1.6" }, - "time": "2025-04-07T20:06:18+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" + "time": "2026-02-07T07:09:04+00:00" }, { "name": "felixfbecker/language-server-protocol", @@ -1273,30 +1282,31 @@ }, { "name": "fidry/cpu-core-counter", - "version": "1.2.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "8520451a140d3f46ac33042715115e290cf5785f" + "reference": "d384a7d0d6e67aa497327260ca95023e92dc2032" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", - "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/d384a7d0d6e67aa497327260ca95023e92dc2032", + "reference": "d384a7d0d6e67aa497327260ca95023e92dc2032", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "fidry/makefile": "^0.2.0", + "fidry/makefile": "^0.2.0 || ^1.1.2", "fidry/php-cs-fixer-config": "^1.1.2", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "symfony/polyfill-mbstring": "^1.33", "webmozarts/strict-phpunit": "^7.5" }, "type": "library", @@ -1322,7 +1332,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.4.1" }, "funding": [ { @@ -1330,7 +1340,7 @@ "type": "github" } ], - "time": "2024-08-06T10:04:20+00:00" + "time": "2026-09-29T22:11:39+00:00" }, { "name": "kelunik/certificate", @@ -1392,33 +1402,39 @@ }, { "name": "league/uri", - "version": "7.5.1", + "version": "7.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "81fb5145d2644324614cc532b28efd0215bda430" + "reference": "fcc872a3d872aa13f935e0cd1887b9abb06da07f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", - "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/fcc872a3d872aa13f935e0cd1887b9abb06da07f", + "reference": "fcc872a3d872aa13f935e0cd1887b9abb06da07f", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.5", - "php": "^8.1" + "ext-mbstring": "*", + "league/uri-interfaces": "^7.9.0", + "php": "^8.1", + "psr/http-factory": "^1" }, "conflict": { "league/uri-schemes": "^1.0" }, "suggest": { "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", "ext-fileinfo": "to create Data URI from file contennts", "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", - "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", - "league/uri-components": "Needed to easily manipulate URI objects components", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -1446,6 +1462,7 @@ "description": "URI manipulation library", "homepage": "https://uri.thephpleague.com", "keywords": [ + "URN", "data-uri", "file-uri", "ftp", @@ -1458,9 +1475,11 @@ "psr-7", "query-string", "querystring", + "rfc2141", "rfc3986", "rfc3987", "rfc6570", + "rfc8141", "uri", "uri-template", "url", @@ -1470,7 +1489,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.5.1" + "source": "https://github.com/thephpleague/uri/tree/7.9.0" }, "funding": [ { @@ -1478,26 +1497,25 @@ "type": "github" } ], - "time": "2024-12-08T08:40:02+00:00" + "time": "2026-10-16T15:19:33+00:00" }, { "name": "league/uri-interfaces", - "version": "7.5.0", + "version": "7.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + "reference": "eb5f6d24e6a4fe0a8e9c78ded4eb1dfff1404f58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/eb5f6d24e6a4fe0a8e9c78ded4eb1dfff1404f58", + "reference": "eb5f6d24e6a4fe0a8e9c78ded4eb1dfff1404f58", "shasum": "" }, "require": { "ext-filter": "*", "php": "^8.1", - "psr/http-factory": "^1", "psr/http-message": "^1.1 || ^2.0" }, "suggest": { @@ -1505,6 +1523,7 @@ "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -1529,7 +1548,7 @@ "homepage": "https://nyamsprod.com" } ], - "description": "Common interfaces and classes for URI representation and interaction", + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", "homepage": "https://uri.thephpleague.com", "keywords": [ "data-uri", @@ -1554,7 +1573,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.9.0" }, "funding": [ { @@ -1562,20 +1581,20 @@ "type": "github" } ], - "time": "2024-12-08T08:18:47+00:00" + "time": "2026-10-16T15:19:33+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.5.0", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5" + "reference": "980674efdda65913492d29a8fd51c82270dd37bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8e76efb98ee8b6afc54687045e1b8dba55ac76e5", - "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/980674efdda65913492d29a8fd51c82270dd37bb", + "reference": "980674efdda65913492d29a8fd51c82270dd37bb", "shasum": "" }, "require": { @@ -1611,26 +1630,25 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.5.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v5.0.1" }, - "time": "2024-09-08T10:13:13+00:00" + "time": "2026-02-22T16:28:03+00:00" }, { "name": "nikic/php-parser", - "version": "v5.5.0", + "version": "v5.9.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9e33da9553fe7786f0962b35f4e4ecf01be89def", + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def", "shasum": "" }, "require": { - "ext-ctype": "*", "ext-json": "*", "ext-tokenizer": "*", "php": ">=7.4" @@ -1645,7 +1663,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -1669,26 +1687,31 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.9.0" }, - "time": "2025-05-31T08:24:38+00:00" + "time": "2026-09-13T18:51:52+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/ee15a5a2022c8383906b225055e9496a6a5e6e3b", + "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -1712,7 +1735,7 @@ } ], "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "homepage": "https://www.phpdoc.org", "keywords": [ "FQSEN", "phpDocumentor", @@ -1722,22 +1745,22 @@ ], "support": { "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.2.1" }, - "time": "2020-06-27T09:03:43+00:00" + "time": "2025-11-10T21:21:55+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.2", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62" + "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62", - "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/7bae67520aa9f5ecc506d646810bd40d9da54582", + "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582", "shasum": "" }, "require": { @@ -1745,9 +1768,9 @@ "ext-filter": "*", "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7|^2.0", - "webmozart/assert": "^1.9.1" + "phpdocumentor/type-resolver": "^2.0", + "phpstan/phpdoc-parser": "^2.0", + "webmozart/assert": "^1.9.1 || ^2" }, "require-dev": { "mockery/mockery": "~1.3.5 || ~1.6.0", @@ -1756,7 +1779,8 @@ "phpstan/phpstan-mockery": "^1.1", "phpstan/phpstan-webmozart-assert": "^1.2", "phpunit/phpunit": "^9.5", - "psalm/phar": "^5.26" + "psalm/phar": "^5.26", + "shipmonk/dead-code-detector": "^0.5.1" }, "type": "library", "extra": { @@ -1786,44 +1810,44 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.0.3" }, - "time": "2025-04-13T19:20:35+00:00" + "time": "2026-03-18T20:49:53+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.10.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" + "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dbe2133bb23e2e33a6834f4ed417f24a1b167769", + "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.3 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.18|^2.0" + "phpstan/phpdoc-parser": "^2.0" }, "require-dev": { "ext-tokenizer": "*", "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" + "psalm/phar": "^4" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-1.x": "1.x-dev", + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -1844,22 +1868,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.1.0" }, - "time": "2024-11-09T15:12:26+00:00" + "time": "2026-09-27T19:32:54+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "2.1.0", + "version": "2.3.7", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" + "reference": "3fcdcf021e840f1ec9383152e3603fc790c7c15b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/3fcdcf021e840f1ec9383152e3603fc790c7c15b", + "reference": "3fcdcf021e840f1ec9383152e3603fc790c7c15b", "shasum": "" }, "require": { @@ -1891,9 +1915,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.7" }, - "time": "2025-02-19T13:28:12+00:00" + "time": "2026-10-26T17:24:37+00:00" }, { "name": "psr/container", @@ -2108,16 +2132,16 @@ }, { "name": "revolt/event-loop", - "version": "v1.0.7", + "version": "v1.0.9", "source": { "type": "git", "url": "https://github.com/revoltphp/event-loop.git", - "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3" + "reference": "44061cf513e53c6200372fc935ac42271566295d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/09bf1bf7f7f574453efe43044b06fafe12216eb3", - "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3", + "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/44061cf513e53c6200372fc935ac42271566295d", + "reference": "44061cf513e53c6200372fc935ac42271566295d", "shasum": "" }, "require": { @@ -2127,7 +2151,7 @@ "ext-json": "*", "jetbrains/phpstorm-stubs": "^2019.3", "phpunit/phpunit": "^9", - "psalm/phar": "^5.15" + "psalm/phar": "6.16.*" }, "type": "library", "extra": { @@ -2174,35 +2198,35 @@ ], "support": { "issues": "https://github.com/revoltphp/event-loop/issues", - "source": "https://github.com/revoltphp/event-loop/tree/v1.0.7" + "source": "https://github.com/revoltphp/event-loop/tree/v1.0.9" }, - "time": "2025-01-25T19:27:39+00:00" + "time": "2026-05-16T17:55:38+00:00" }, { "name": "sebastian/diff", - "version": "5.1.1", + "version": "7.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + "reference": "cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6", + "reference": "cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" + "phpunit/phpunit": "^12.5.33", + "symfony/process": "^7.4.17" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -2235,28 +2259,40 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/diff", + "type": "tidelift" } ], - "time": "2024-03-02T07:15:17+00:00" + "time": "2026-08-25T15:35:54+00:00" }, { "name": "spatie/array-to-xml", - "version": "3.4.0", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67" + "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67", - "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/88b2f3852a922dd73177a68938f8eb2ec70c7224", + "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224", "shasum": "" }, "require": { @@ -2299,7 +2335,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.4.0" + "source": "https://github.com/spatie/array-to-xml/tree/3.4.4" }, "funding": [ { @@ -2311,51 +2347,51 @@ "type": "github" } ], - "time": "2024-12-16T12:45:15+00:00" + "time": "2025-12-15T09:00:41+00:00" }, { "name": "symfony/console", - "version": "v6.4.22", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3" + "reference": "21f1bc2296f7ff6043241a8dcbc09559b3732820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", - "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", + "url": "https://api.github.com/repos/symfony/console/zipball/21f1bc2296f7ff6043241a8dcbc09559b3732820", + "reference": "21f1bc2296f7ff6043241a8dcbc09559b3732820", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" + "symfony/string": "^7.2|^8.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2389,7 +2425,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.22" + "source": "https://github.com/symfony/console/tree/v7.4.21" }, "funding": [ { @@ -2400,25 +2436,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-07T07:05:04+00:00" + "time": "2026-10-12T18:45:38+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.6.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d", + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d", "shasum": "" }, "require": { @@ -2431,7 +2471,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.7-dev" } }, "autoload": { @@ -2456,7 +2496,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.1" }, "funding": [ { @@ -2467,34 +2507,38 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.13", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3" + "reference": "fd0e3462be6d32a0d130e8423e4940a7688162d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd0e3462be6d32a0d130e8423e4940a7688162d8", + "reference": "fd0e3462be6d32a0d130e8423e4940a7688162d8", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^5.4|^6.4|^7.0" + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2522,7 +2566,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.13" + "source": "https://github.com/symfony/filesystem/tree/v7.4.21" }, "funding": [ { @@ -2533,25 +2577,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2026-10-06T20:05:19+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.32.0", + "version": "v1.37.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", "shasum": "" }, "require": { @@ -2601,7 +2649,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" }, "funding": [ { @@ -2612,25 +2660,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.32.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5cac8f4db97208823aa353f59a01faad2da52c75", + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75", "shasum": "" }, "require": { @@ -2679,7 +2731,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.43.0" }, "funding": [ { @@ -2690,25 +2742,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-09-25T15:46:47+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.32.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/ebd57ccc7edb93d632e184efbe7693d2517bab3b", + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b", "shasum": "" }, "require": { @@ -2760,7 +2816,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.43.0" }, "funding": [ { @@ -2771,25 +2827,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-09-23T22:02:09+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.32.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", "shasum": "" }, "require": { @@ -2841,7 +2901,87 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-24T15:19:04+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/22c6548499cbe5c5bb072fc0c42312dff062a015", + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "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 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.43.0" }, "funding": [ { @@ -2852,25 +2992,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-23T08:48:59+00:00" + "time": "2026-09-23T22:01:09+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.6.0", + "version": "v3.7.3", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + "reference": "15e6a07ec2a2c75ceb1b21dd98105ee8456d2257" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/15e6a07ec2a2c75ceb1b21dd98105ee8456d2257", + "reference": "15e6a07ec2a2c75ceb1b21dd98105ee8456d2257", "shasum": "" }, "require": { @@ -2888,7 +3032,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.7-dev" } }, "autoload": { @@ -2924,7 +3068,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.7.3" }, "funding": [ { @@ -2935,31 +3079,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-25T09:37:31+00:00" + "time": "2026-07-27T15:39:01+00:00" }, { "name": "symfony/string", - "version": "v6.4.21", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "73e2c6966a5aef1d4892873ed5322245295370c6" + "reference": "9bc35d074ad16a58c21cd52b18c5cacc4f4c3981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/73e2c6966a5aef1d4892873ed5322245295370c6", - "reference": "73e2c6966a5aef1d4892873ed5322245295370c6", + "url": "https://api.github.com/repos/symfony/string/zipball/9bc35d074ad16a58c21cd52b18c5cacc4f4c3981", + "reference": "9bc35d074ad16a58c21cd52b18c5cacc4f4c3981", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.33", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, @@ -2967,11 +3116,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/intl": "^6.2|^7.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3010,7 +3159,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.21" + "source": "https://github.com/symfony/string/tree/v7.4.21" }, "funding": [ { @@ -3021,25 +3170,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-18T15:23:29+00:00" + "time": "2026-10-03T15:15:30+00:00" }, { "name": "vimeo/psalm", - "version": "6.5.0", + "version": "6.20.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "38fc8444edf0cebc9205296ee6e30e906ade783b" + "reference": "376425b8e67b79773add388e16b4f6be5693dc87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/38fc8444edf0cebc9205296ee6e30e906ade783b", - "reference": "38fc8444edf0cebc9205296ee6e30e906ade783b", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/376425b8e67b79773add388e16b4f6be5693dc87", + "reference": "376425b8e67b79773add388e16b4f6be5693dc87", "shasum": "" }, "require": { @@ -3049,6 +3202,7 @@ "composer-runtime-api": "^2", "composer/semver": "^1.4 || ^2.0 || ^3.0", "composer/xdebug-handler": "^2.0 || ^3.0", + "danog/advanced-json-rpc": "^3.1", "dnoegel/php-xdg-base-dir": "^0.1.1", "ext-ctype": "*", "ext-dom": "*", @@ -3057,16 +3211,16 @@ "ext-mbstring": "*", "ext-simplexml": "*", "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.1", "felixfbecker/language-server-protocol": "^1.5.3", "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^5.0.0", - "php": "~8.1.17 || ~8.2.4 || ~8.3.0 || ~8.4.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0", + "netresearch/jsonmapper": "^5.0", + "nikic/php-parser": "^5.2.0", + "php": "~8.1.31 || ~8.2.27 || ~8.3.16 || ~8.4.3 || ~8.5.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0", "spatie/array-to-xml": "^2.17.0 || ^3.0", - "symfony/console": "^6.0 || ^7.0", - "symfony/filesystem": "^6.0 || ^7.0" + "symfony/console": "^6.0 || ^7.0 || ^8.0", + "symfony/filesystem": "~6.3.12 || ~6.4.3 || ^7.0.3 || ^8.0", + "symfony/polyfill-php84": "^1.31.0" }, "provide": { "psalm/psalm": "self.version" @@ -3075,6 +3229,7 @@ "amphp/phpunit-util": "^3", "bamarni/composer-bin-plugin": "^1.4", "brianium/paratest": "^6.9", + "danog/class-finder": "^0.4.8", "dg/bypass-finals": "^1.5", "ext-curl": "*", "mockery/mockery": "^1.5", @@ -3086,7 +3241,7 @@ "psalm/plugin-phpunit": "^0.19", "slevomat/coding-standard": "^8.4", "squizlabs/php_codesniffer": "^3.6", - "symfony/process": "^6.0 || ^7.0" + "symfony/process": "^6.0 || ^7.0 || ^8.0" }, "suggest": { "ext-curl": "In order to send data to shepherd", @@ -3142,37 +3297,41 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2025-02-07T20:42:25+00:00" + "time": "2026-10-20T11:18:42+00:00" }, { "name": "webmozart/assert", - "version": "1.11.0", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "reference": "8a163706bbcac613733dba03f51e13b5eb1bb819" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/8a163706bbcac613733dba03f51e13b5eb1bb819", + "reference": "8a163706bbcac613733dba03f51e13b5eb1bb819", "shasum": "" }, "require": { "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" + "ext-date": "*", + "ext-filter": "*", + "php": "^8.2" }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" }, "type": "library", "extra": { + "psalm": { + "pluginClass": "Webmozart\\Assert\\PsalmPlugin" + }, "branch-alias": { - "dev-master": "1.10-dev" + "dev-master": "2.0-dev", + "dev-feature/2-0": "2.0-dev" } }, "autoload": { @@ -3188,6 +3347,10 @@ { "name": "Bernhard Schussek", "email": "bschussek@gmail.com" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com" } ], "description": "Assertions to validate method input/output with nice error messages.", @@ -3198,9 +3361,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "source": "https://github.com/webmozarts/assert/tree/2.5.0" }, - "time": "2022-06-03T18:03:27+00:00" + "time": "2026-10-05T23:14:19+00:00" } ], "aliases": [], @@ -3211,7 +3374,7 @@ "platform": {}, "platform-dev": {}, "platform-overrides": { - "php": "8.1.17" + "php": "8.3.17" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } From 48d842b6d4428f043f4d2d69169933d6cc660f0a Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Thu, 29 Oct 2026 13:15:26 +0100 Subject: [PATCH 2/2] fix(psalm): add Override attributes and drop redundant null coalesce Signed-off-by: Arthur Schiwon Assisted-by: Claude Code:claude-opus-5-5 --- lib/Activity/ChangeSet.php | 1 + lib/Activity/DeckProvider.php | 1 + lib/Activity/Filter.php | 6 ++++++ lib/Activity/SettingBase.php | 9 ++++++++ lib/Activity/SettingChanges.php | 7 +++++++ lib/Activity/SettingComment.php | 3 +++ lib/Activity/SettingDescription.php | 2 ++ lib/AppInfo/Application.php | 2 ++ lib/BadRequestException.php | 1 + lib/Capabilities.php | 1 + .../Resources/ResourceProvider.php | 3 +++ .../Resources/ResourceProviderCard.php | 3 +++ lib/Command/BoardImport.php | 2 ++ lib/Command/CalendarToggle.php | 2 ++ lib/Command/TransferOwnership.php | 2 ++ lib/Command/UserExport.php | 2 ++ lib/Cron/CardDescriptionActivity.php | 1 + lib/Cron/DeleteCron.php | 1 + lib/Cron/ScheduledNotifications.php | 1 + lib/Cron/SessionsCleanup.php | 1 + lib/Dashboard/DeckWidgetToday.php | 6 ++++++ lib/Dashboard/DeckWidgetTomorrow.php | 6 ++++++ lib/Dashboard/DeckWidgetUpcoming.php | 9 ++++++++ lib/Db/Acl.php | 1 + lib/Db/AclMapper.php | 4 ++++ lib/Db/AssignmentMapper.php | 3 +++ lib/Db/AttachmentMapper.php | 3 +++ lib/Db/Board.php | 1 + lib/Db/BoardMapper.php | 4 ++++ lib/Db/CardMapper.php | 5 +++++ lib/Db/Circle.php | 1 + lib/Db/FederatedUser.php | 1 + lib/Db/Group.php | 1 + lib/Db/LabelMapper.php | 5 +++++ lib/Db/RelationalEntity.php | 3 +++ lib/Db/RelationalObject.php | 1 + lib/Db/Session.php | 1 + lib/Db/Stack.php | 1 + lib/Db/StackMapper.php | 5 +++++ lib/Db/User.php | 1 + lib/Event/AAclEvent.php | 1 + lib/Event/ACardEvent.php | 1 + lib/Event/BoardUpdatedEvent.php | 1 + .../RegisterTextContextEventListener.php | 1 + lib/Exceptions/ConflictException.php | 1 + lib/Federation/DeckFederationProvider.php | 4 ++++ lib/Listeners/AclCreatedRemovedListener.php | 1 + .../BeforeTemplateRenderedListener.php | 1 + lib/Listeners/CommentEventListener.php | 1 + lib/Listeners/FullTextSearchEventListener.php | 1 + lib/Listeners/LiveUpdateListener.php | 1 + lib/Listeners/ParticipantCleanupListener.php | 1 + .../ResourceAdditionalScriptsListener.php | 1 + lib/Listeners/ResourceListener.php | 1 + .../ResourceTypeRegisterListener.php | 1 + lib/Listeners/TextDocumentContentListener.php | 1 + lib/Middleware/DefaultBoardMiddleware.php | 1 + lib/Middleware/ExceptionMiddleware.php | 1 + lib/Middleware/FederationMiddleware.php | 1 + lib/Migration/DeletedCircleCleanup.php | 2 ++ lib/Migration/LabelMismatchCleanup.php | 2 ++ .../Version1000Date20200306161713.php | 1 + .../Version1000Date20200308073933.php | 1 + .../Version1011Date20230901010840.php | 1 + .../Version1011Date20231106160059.php | 1 + .../Version10200Date20201111150114.php | 1 + .../Version10800Date20220422061816.php | 1 + .../Version10900Date202206151724222.php | 1 + .../Version11000Date20240222115515.php | 1 + .../Version11001Date20251009165313.php | 1 + .../Version11001Date20251020122010.php | 1 + .../Version11002Date20260228000000.php | 1 + .../Version11002Date20260312000000.php | 1 + .../Version11002Date20260317170905.php | 1 + .../Version11002Date20260410000000.php | 1 + .../Version11002Date20260611000000.php | 1 + .../Version11002Date20260812120000.php | 1 + lib/Model/BoardSummary.php | 3 +++ lib/Model/CardDetails.php | 3 +++ lib/NoPermissionException.php | 1 + lib/NotFoundException.php | 1 + lib/NotImplementedException.php | 1 + lib/Notification/Notifier.php | 3 +++ lib/Provider/DeckProvider.php | 17 +++++++++++++++ lib/Provider/TextContextProvider.php | 11 ++++++++++ lib/Provider/TextContextProviderFactory.php | 1 + lib/Reference/BoardReferenceProvider.php | 4 ++++ lib/Reference/CardReferenceProvider.php | 9 ++++++++ lib/Reference/CommentReferenceProvider.php | 4 ++++ lib/Reference/CreateCardReferenceProvider.php | 8 +++++++ lib/Search/CardCommentProvider.php | 4 ++++ lib/Search/DeckProvider.php | 4 ++++ lib/Service/FileService.php | 7 +++++++ lib/Service/FilesAppService.php | 10 +++++++++ .../Importer/BoardImportCommandService.php | 5 +++++ .../Importer/Systems/DeckJsonService.php | 16 +++++++++++++- .../Importer/Systems/TrelloApiService.php | 2 ++ .../Importer/Systems/TrelloJsonService.php | 13 ++++++++++++ lib/Sharing/DeckShareProvider.php | 21 +++++++++++++++++++ lib/Teams/DeckTeamResourceProvider.php | 6 ++++++ lib/UserMigration/DeckMigrator.php | 6 ++++++ lib/Validators/AssignmentServiceValidator.php | 1 + lib/Validators/AttachmentServiceValidator.php | 1 + lib/Validators/BoardServiceValidator.php | 1 + lib/Validators/CardServiceValidator.php | 1 + lib/Validators/LabelServiceValidator.php | 1 + lib/Validators/StackServiceValidator.php | 1 + 107 files changed, 320 insertions(+), 1 deletion(-) diff --git a/lib/Activity/ChangeSet.php b/lib/Activity/ChangeSet.php index 516bf6714e..23800f5fcb 100644 --- a/lib/Activity/ChangeSet.php +++ b/lib/Activity/ChangeSet.php @@ -53,6 +53,7 @@ public function getAfter() { return $this->after; } + #[\Override] public function jsonSerialize(): array { return [ 'before' => $this->getBefore(), diff --git a/lib/Activity/DeckProvider.php b/lib/Activity/DeckProvider.php index 78017f3eb5..16d17d3c91 100644 --- a/lib/Activity/DeckProvider.php +++ b/lib/Activity/DeckProvider.php @@ -65,6 +65,7 @@ public function __construct(IURLGenerator $urlGenerator, ActivityManager $activi * @throws UnknownActivityException Should be thrown if your provider does not know this event * @since 11.0.0 */ + #[\Override] public function parse($language, IEvent $event, ?IEvent $previousEvent = null): IEvent { if ($event->getApp() !== 'deck') { throw new UnknownActivityException(); diff --git a/lib/Activity/Filter.php b/lib/Activity/Filter.php index fa884276e4..e9b056937e 100644 --- a/lib/Activity/Filter.php +++ b/lib/Activity/Filter.php @@ -26,6 +26,7 @@ public function __construct( * @return string Lowercase a-z and underscore only identifier * @since 11.0.0 */ + #[\Override] public function getIdentifier(): string { return 'deck'; } @@ -34,6 +35,7 @@ public function getIdentifier(): string { * @return string A translated string * @since 11.0.0 */ + #[\Override] public function getName(): string { return $this->l10n->t('Deck'); } @@ -44,6 +46,7 @@ public function getName(): string { * priority values. It is required to return a value between 0 and 100. * @since 11.0.0 */ + #[\Override] public function getPriority(): int { return 90; } @@ -52,6 +55,7 @@ public function getPriority(): int { * @return string Full URL to an icon, empty string when none is given * @since 11.0.0 */ + #[\Override] public function getIcon(): string { return $this->urlGenerator->imagePath('deck', 'deck-dark.svg'); } @@ -61,6 +65,7 @@ public function getIcon(): string { * @return string[] An array of allowed apps from which activities should be displayed * @since 11.0.0 */ + #[\Override] public function filterTypes($types): array { return array_merge($types, ['deck_comment']); } @@ -69,6 +74,7 @@ public function filterTypes($types): array { * @return string[] An array of allowed apps from which activities should be displayed * @since 11.0.0 */ + #[\Override] public function allowedApps(): array { return ['deck']; } diff --git a/lib/Activity/SettingBase.php b/lib/Activity/SettingBase.php index 8d56e0fb99..bffd3b8e39 100644 --- a/lib/Activity/SettingBase.php +++ b/lib/Activity/SettingBase.php @@ -22,10 +22,12 @@ public function __construct(IL10N $l) { $this->l = $l; } + #[\Override] public function getGroupIdentifier() { return 'deck'; } + #[\Override] public function getGroupName() { return $this->l->t('Deck'); } @@ -34,6 +36,7 @@ public function getGroupName() { * @return string Lowercase a-z and underscore only identifier * @since 11.0.0 */ + #[\Override] public function getIdentifier(): string { return 'deck'; } @@ -42,6 +45,7 @@ public function getIdentifier(): string { * @return string A translated string * @since 11.0.0 */ + #[\Override] public function getName(): string { return $this->l->t('Changes in the Deck app'); } @@ -52,6 +56,7 @@ public function getName(): string { * priority values. It is required to return a value between 0 and 100. * @since 11.0.0 */ + #[\Override] public function getPriority(): int { return 90; } @@ -60,6 +65,7 @@ public function getPriority(): int { * @return bool True when the option can be changed for the stream * @since 11.0.0 */ + #[\Override] public function canChangeStream(): bool { return true; } @@ -68,6 +74,7 @@ public function canChangeStream(): bool { * @return bool True when the option can be changed for the stream * @since 11.0.0 */ + #[\Override] public function isDefaultEnabledStream(): bool { return true; } @@ -76,6 +83,7 @@ public function isDefaultEnabledStream(): bool { * @return bool True when the option can be changed for the mail * @since 11.0.0 */ + #[\Override] public function canChangeMail(): bool { return true; } @@ -84,6 +92,7 @@ public function canChangeMail(): bool { * @return bool True when the option can be changed for the stream * @since 11.0.0 */ + #[\Override] public function isDefaultEnabledMail(): bool { return false; } diff --git a/lib/Activity/SettingChanges.php b/lib/Activity/SettingChanges.php index b3da2e1b91..95467f4c3b 100644 --- a/lib/Activity/SettingChanges.php +++ b/lib/Activity/SettingChanges.php @@ -12,6 +12,7 @@ class SettingChanges extends SettingBase { * @return string Lowercase a-z and underscore only identifier * @since 11.0.0 */ + #[\Override] public function getIdentifier(): string { return 'deck'; } @@ -20,6 +21,7 @@ public function getIdentifier(): string { * @return string A translated string * @since 11.0.0 */ + #[\Override] public function getName(): string { return $this->l->t('A board, list or card was changed'); } @@ -30,6 +32,7 @@ public function getName(): string { * priority values. It is required to return a value between 0 and 100. * @since 11.0.0 */ + #[\Override] public function getPriority(): int { return 90; } @@ -38,6 +41,7 @@ public function getPriority(): int { * @return bool True when the option can be changed for the stream * @since 11.0.0 */ + #[\Override] public function canChangeStream(): bool { return true; } @@ -46,6 +50,7 @@ public function canChangeStream(): bool { * @return bool True when the option can be changed for the stream * @since 11.0.0 */ + #[\Override] public function isDefaultEnabledStream(): bool { return true; } @@ -54,6 +59,7 @@ public function isDefaultEnabledStream(): bool { * @return bool True when the option can be changed for the mail * @since 11.0.0 */ + #[\Override] public function canChangeMail(): bool { return true; } @@ -62,6 +68,7 @@ public function canChangeMail(): bool { * @return bool True when the option can be changed for the stream * @since 11.0.0 */ + #[\Override] public function isDefaultEnabledMail(): bool { return false; } diff --git a/lib/Activity/SettingComment.php b/lib/Activity/SettingComment.php index 0ab5959062..5a940e6196 100644 --- a/lib/Activity/SettingComment.php +++ b/lib/Activity/SettingComment.php @@ -16,6 +16,7 @@ class SettingComment extends SettingBase { * @return string Lowercase a-z and underscore only identifier * @since 11.0.0 */ + #[\Override] public function getIdentifier(): string { return 'deck_comment'; } @@ -24,6 +25,7 @@ public function getIdentifier(): string { * @return string A translated string * @since 11.0.0 */ + #[\Override] public function getName(): string { return $this->l->t('A comment was created on a card'); } @@ -32,6 +34,7 @@ public function getName(): string { * @return bool True when the option can be changed for the stream * @since 11.0.0 */ + #[\Override] public function canChangeStream(): bool { return false; } diff --git a/lib/Activity/SettingDescription.php b/lib/Activity/SettingDescription.php index 9f7ea58839..e4ad71d575 100644 --- a/lib/Activity/SettingDescription.php +++ b/lib/Activity/SettingDescription.php @@ -13,6 +13,7 @@ class SettingDescription extends SettingBase { * @return string Lowercase a-z and underscore only identifier * @since 11.0.0 */ + #[\Override] public function getIdentifier(): string { return 'deck_card_description'; } @@ -21,6 +22,7 @@ public function getIdentifier(): string { * @return string A translated string * @since 11.0.0 */ + #[\Override] public function getName(): string { return $this->l->t('A card description has been changed'); } diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index bd1399b7e9..6b6db49c84 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -106,6 +106,7 @@ public function __construct(array $urlParams = []) { }); } + #[\Override] public function boot(IBootContext $context): void { $context->injectFn($this->registerCommentsEntity(...)); $context->injectFn($this->registerCollaborationResources(...)); @@ -126,6 +127,7 @@ public function boot(IBootContext $context): void { $context->injectFn([$this, 'registerCloudFederationProviderManager']); } + #[\Override] public function register(IRegistrationContext $context): void { if ((@include_once __DIR__ . '/../../vendor/autoload.php') === false) { throw new Exception('Cannot include autoload. Did you run install dependencies using composer?'); diff --git a/lib/BadRequestException.php b/lib/BadRequestException.php index 2b0e973c49..2431319187 100644 --- a/lib/BadRequestException.php +++ b/lib/BadRequestException.php @@ -14,6 +14,7 @@ public function __construct($message) { parent::__construct($message); } + #[\Override] public function getStatus() { return HTTP::STATUS_BAD_REQUEST; } diff --git a/lib/Capabilities.php b/lib/Capabilities.php index 4f70229e25..a9583da35d 100644 --- a/lib/Capabilities.php +++ b/lib/Capabilities.php @@ -26,6 +26,7 @@ public function __construct(IAppManager $appManager, PermissionService $permissi * @return array{deck: array{version: string, canCreateBoards: bool, supportsDoneColumn:true, apiVersions: array}} * @since 8.2.0 */ + #[\Override] public function getCapabilities() { return [ 'deck' => [ diff --git a/lib/Collaboration/Resources/ResourceProvider.php b/lib/Collaboration/Resources/ResourceProvider.php index 879802c873..65a0ba814f 100644 --- a/lib/Collaboration/Resources/ResourceProvider.php +++ b/lib/Collaboration/Resources/ResourceProvider.php @@ -42,6 +42,7 @@ public function __construct(BoardMapper $boardMapper, PermissionService $permiss * @return string * @since 15.0.0 */ + #[\Override] public function getType(): string { return self::RESOURCE_TYPE; } @@ -55,6 +56,7 @@ public function getType(): string { * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException * @since 16.0.0 */ + #[\Override] public function getResourceRichObject(IResource $resource): array { $board = $this->getBoard($resource); $link = $this->urlGenerator->linkToRoute('deck.page.indexBoard', ['boardId' => $resource->getId()]); @@ -76,6 +78,7 @@ public function getResourceRichObject(IResource $resource): array { * @return bool * @since 16.0.0 */ + #[\Override] public function canAccessResource(IResource $resource, ?IUser $user): bool { if ($resource->getType() !== self::RESOURCE_TYPE || !$user instanceof IUser) { return false; diff --git a/lib/Collaboration/Resources/ResourceProviderCard.php b/lib/Collaboration/Resources/ResourceProviderCard.php index b58e286972..faafc6dd9a 100644 --- a/lib/Collaboration/Resources/ResourceProviderCard.php +++ b/lib/Collaboration/Resources/ResourceProviderCard.php @@ -45,6 +45,7 @@ public function __construct(CardMapper $cardMapper, BoardMapper $boardMapper, Pe * @return string * @since 15.0.0 */ + #[\Override] public function getType(): string { return self::RESOURCE_TYPE; } @@ -56,6 +57,7 @@ public function getType(): string { * @return array * @since 16.0.0 */ + #[\Override] public function getResourceRichObject(IResource $resource): array { try { $card = $this->cardMapper->find($resource->getId()); @@ -88,6 +90,7 @@ public function getResourceRichObject(IResource $resource): array { * @return bool * @since 16.0.0 */ + #[\Override] public function canAccessResource(IResource $resource, ?IUser $user): bool { if (!$user instanceof IUser || $resource->getType() !== self::RESOURCE_TYPE) { return false; diff --git a/lib/Command/BoardImport.php b/lib/Command/BoardImport.php index 7b1d4d1e99..8565641739 100644 --- a/lib/Command/BoardImport.php +++ b/lib/Command/BoardImport.php @@ -24,6 +24,7 @@ public function __construct( /** * @return void */ + #[\Override] protected function configure() { $allowedSystems = $this->boardImportCommandService->getAllowedImportSystems(); $names = array_map(function ($name) { @@ -67,6 +68,7 @@ protected function configure() { * * @return int */ + #[\Override] protected function execute(InputInterface $input, OutputInterface $output): int { $this ->boardImportCommandService diff --git a/lib/Command/CalendarToggle.php b/lib/Command/CalendarToggle.php index 56452dc8b2..d8028a48a4 100644 --- a/lib/Command/CalendarToggle.php +++ b/lib/Command/CalendarToggle.php @@ -24,6 +24,7 @@ public function __construct(IUserManager $userManager, IConfig $config) { $this->config = $config; } + #[\Override] protected function configure() { $this ->setName('deck:calendar-toggle') @@ -42,6 +43,7 @@ protected function configure() { ); } + #[\Override] protected function execute(InputInterface $input, OutputInterface $output): int { $enable = $input->getOption('on'); $disable = $input->getOption('off'); diff --git a/lib/Command/TransferOwnership.php b/lib/Command/TransferOwnership.php index 45fb703494..d0ff1c6107 100644 --- a/lib/Command/TransferOwnership.php +++ b/lib/Command/TransferOwnership.php @@ -33,6 +33,7 @@ public function __construct(BoardService $boardService, BoardMapper $boardMapper $this->questionHelper = $questionHelper; } + #[\Override] protected function configure() { $this ->setName('deck:transfer-ownership') @@ -61,6 +62,7 @@ protected function configure() { ; } + #[\Override] protected function execute(InputInterface $input, OutputInterface $output): int { $owner = $input->getArgument('owner'); $newOwner = $input->getArgument('newOwner'); diff --git a/lib/Command/UserExport.php b/lib/Command/UserExport.php index 7bbe53576e..46d8aac2f9 100644 --- a/lib/Command/UserExport.php +++ b/lib/Command/UserExport.php @@ -34,6 +34,7 @@ public function __construct( parent::__construct(); } + #[\Override] protected function configure() { $this ->setName('deck:export') @@ -50,6 +51,7 @@ protected function configure() { /** * @throws Exception */ + #[\Override] protected function execute(InputInterface $input, OutputInterface $output): int { $userId = $input->getArgument('user-id'); $legacyFormat = $input->getOption('legacy-format'); diff --git a/lib/Cron/CardDescriptionActivity.php b/lib/Cron/CardDescriptionActivity.php index e9e18af816..ec2e13a17f 100644 --- a/lib/Cron/CardDescriptionActivity.php +++ b/lib/Cron/CardDescriptionActivity.php @@ -29,6 +29,7 @@ public function __construct(ITimeFactory $time, ActivityManager $activityManager * @param $argument * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ + #[\Override] public function run($argument) { $cards = $this->cardMapper->findUnexposedDescriptionChances(); foreach ($cards as $card) { diff --git a/lib/Cron/DeleteCron.php b/lib/Cron/DeleteCron.php index 9ae63793ad..44873c3f0f 100644 --- a/lib/Cron/DeleteCron.php +++ b/lib/Cron/DeleteCron.php @@ -64,6 +64,7 @@ public function __construct( * @param $argument * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ + #[\Override] protected function run($argument) { $timeLimit = time() - $this->configService->getTrashRetention(); diff --git a/lib/Cron/ScheduledNotifications.php b/lib/Cron/ScheduledNotifications.php index 9c07d41d1c..192b9f2ffa 100644 --- a/lib/Cron/ScheduledNotifications.php +++ b/lib/Cron/ScheduledNotifications.php @@ -30,6 +30,7 @@ public function __construct( * @param $argument * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ + #[\Override] public function run($argument) { // Notify board owner and card creator about overdue cards $cards = $this->cardMapper->findOverdue(); diff --git a/lib/Cron/SessionsCleanup.php b/lib/Cron/SessionsCleanup.php index ea16f1096d..44788ee5a8 100644 --- a/lib/Cron/SessionsCleanup.php +++ b/lib/Cron/SessionsCleanup.php @@ -27,6 +27,7 @@ public function __construct( $this->setInterval(SessionService::SESSION_VALID_TIME); } + #[\Override] protected function run($argument) { $this->logger->debug('Run cleanup job for deck sessions'); diff --git a/lib/Dashboard/DeckWidgetToday.php b/lib/Dashboard/DeckWidgetToday.php index ce171713ad..04a73eeef2 100644 --- a/lib/Dashboard/DeckWidgetToday.php +++ b/lib/Dashboard/DeckWidgetToday.php @@ -27,6 +27,7 @@ public function __construct(IL10N $l10n) { /** * @inheritDoc */ + #[\Override] public function getId(): string { return 'deckToday'; } @@ -34,6 +35,7 @@ public function getId(): string { /** * @inheritDoc */ + #[\Override] public function getTitle(): string { return $this->l10n->t('Cards due today'); } @@ -41,6 +43,7 @@ public function getTitle(): string { /** * @inheritDoc */ + #[\Override] public function getOrder(): int { return 20; } @@ -48,6 +51,7 @@ public function getOrder(): int { /** * @inheritDoc */ + #[\Override] public function getIconClass(): string { return 'icon-deck'; } @@ -55,6 +59,7 @@ public function getIconClass(): string { /** * @inheritDoc */ + #[\Override] public function getUrl(): ?string { return null; } @@ -62,6 +67,7 @@ public function getUrl(): ?string { /** * @inheritDoc */ + #[\Override] public function load(): void { \OCP\Util::addScript('deck', 'deck-dashboard'); } diff --git a/lib/Dashboard/DeckWidgetTomorrow.php b/lib/Dashboard/DeckWidgetTomorrow.php index 6bb79274c0..3128e6992f 100644 --- a/lib/Dashboard/DeckWidgetTomorrow.php +++ b/lib/Dashboard/DeckWidgetTomorrow.php @@ -27,6 +27,7 @@ public function __construct(IL10N $l10n) { /** * @inheritDoc */ + #[\Override] public function getId(): string { return 'deckTomorrow'; } @@ -34,6 +35,7 @@ public function getId(): string { /** * @inheritDoc */ + #[\Override] public function getTitle(): string { return $this->l10n->t('Cards due tomorrow'); } @@ -41,6 +43,7 @@ public function getTitle(): string { /** * @inheritDoc */ + #[\Override] public function getOrder(): int { return 20; } @@ -48,6 +51,7 @@ public function getOrder(): int { /** * @inheritDoc */ + #[\Override] public function getIconClass(): string { return 'icon-deck'; } @@ -55,6 +59,7 @@ public function getIconClass(): string { /** * @inheritDoc */ + #[\Override] public function getUrl(): ?string { return null; } @@ -62,6 +67,7 @@ public function getUrl(): ?string { /** * @inheritDoc */ + #[\Override] public function load(): void { \OCP\Util::addScript('deck', 'deck-dashboard'); } diff --git a/lib/Dashboard/DeckWidgetUpcoming.php b/lib/Dashboard/DeckWidgetUpcoming.php index 4e46b435cd..00bcb1a003 100644 --- a/lib/Dashboard/DeckWidgetUpcoming.php +++ b/lib/Dashboard/DeckWidgetUpcoming.php @@ -42,6 +42,7 @@ public function __construct(IL10N $l10n, /** * @inheritDoc */ + #[\Override] public function getId(): string { return 'deck'; } @@ -49,6 +50,7 @@ public function getId(): string { /** * @inheritDoc */ + #[\Override] public function getTitle(): string { return $this->l10n->t('Upcoming cards'); } @@ -56,6 +58,7 @@ public function getTitle(): string { /** * @inheritDoc */ + #[\Override] public function getOrder(): int { return 20; } @@ -63,6 +66,7 @@ public function getOrder(): int { /** * @inheritDoc */ + #[\Override] public function getIconClass(): string { return 'icon-deck'; } @@ -70,6 +74,7 @@ public function getIconClass(): string { /** * @inheritDoc */ + #[\Override] public function getIconUrl(): string { return $this->urlGenerator->getAbsoluteURL( $this->urlGenerator->imagePath(Application::APP_ID, 'deck-dark.svg') @@ -79,6 +84,7 @@ public function getIconUrl(): string { /** * @inheritDoc */ + #[\Override] public function getUrl(): ?string { return $this->urlGenerator->getAbsoluteURL( $this->urlGenerator->linkToRoute(Application::APP_ID . '.page.index') @@ -88,6 +94,7 @@ public function getUrl(): ?string { /** * @inheritDoc */ + #[\Override] public function load(): void { Util::addScript('deck', 'deck-dashboard'); } @@ -95,6 +102,7 @@ public function load(): void { /** * @inheritDoc */ + #[\Override] public function getItems(string $userId, ?string $since = null, int $limit = 7): array { $upcomingCards = $this->dashboardService->findUpcomingCards($userId); $nowTimestamp = (new Datetime())->getTimestamp(); @@ -140,6 +148,7 @@ public function getItems(string $userId, ?string $since = null, int $limit = 7): /** * @inheritDoc */ + #[\Override] public function getWidgetButtons(string $userId): array { return [ new WidgetButton( diff --git a/lib/Db/Acl.php b/lib/Db/Acl.php index 52aba43b18..11eb1a467e 100644 --- a/lib/Db/Acl.php +++ b/lib/Db/Acl.php @@ -74,6 +74,7 @@ public function getPermission(int $permission): bool { }; } + #[\Override] public function jsonSerialize(): array { $json = parent::jsonSerialize(); unset($json['token']); diff --git a/lib/Db/AclMapper.php b/lib/Db/AclMapper.php index e853bb4765..8e10943d76 100644 --- a/lib/Db/AclMapper.php +++ b/lib/Db/AclMapper.php @@ -88,6 +88,7 @@ public function findIn(array $boardIds, ?int $limit = null, ?int $offset = null) /** * @throws \OCP\DB\Exception */ + #[\Override] public function isOwner(string $userId, int $id): bool { $aclId = $id; $qb = $this->db->getQueryBuilder(); @@ -100,6 +101,7 @@ public function isOwner(string $userId, int $id): bool { return count($qb->executeQuery()->fetchAll()) > 0; } + #[\Override] public function findBoardId(int $id): ?int { try { $entity = $this->find($id); @@ -156,6 +158,7 @@ public function findByType(int $type): array { return $this->findEntities($qb); } + #[\Override] public function insert(Entity $entity): Entity { /** @var Acl $entity */ $now = time(); @@ -164,6 +167,7 @@ public function insert(Entity $entity): Entity { return parent::insert($entity); } + #[\Override] public function update(Entity $entity): Entity { /** @var Acl $entity */ $entity->setLastModifiedAt(time()); diff --git a/lib/Db/AssignmentMapper.php b/lib/Db/AssignmentMapper.php index c57d3f0357..e25fd76969 100644 --- a/lib/Db/AssignmentMapper.php +++ b/lib/Db/AssignmentMapper.php @@ -111,10 +111,12 @@ public function deleteByParticipantOnBoard(string $participant, int $boardId, $t } } + #[\Override] public function isOwner(string $userId, int $id): bool { return $this->cardMapper->isOwner($userId, $id); } + #[\Override] public function findBoardId(int $id): ?int { return $this->cardMapper->findBoardId($id); } @@ -126,6 +128,7 @@ public function findBoardId(int $id): ?int { * @return Assignment * @throws NotFoundException */ + #[\Override] public function insert(Entity $entity): Entity { if (!($entity instanceof Assignment)) { throw new \LogicException('Trying to insert a ' . get_class($entity) . ' in the assignment mapper'); diff --git a/lib/Db/AttachmentMapper.php b/lib/Db/AttachmentMapper.php index d96a4f93af..1915d3c075 100644 --- a/lib/Db/AttachmentMapper.php +++ b/lib/Db/AttachmentMapper.php @@ -39,6 +39,7 @@ public function __construct(IDBConnection $db, CardMapper $cardMapper, IUserMana * @throws MultipleObjectsReturnedException * @throws \OCP\DB\Exception */ + #[\Override] public function find(int $id): Attachment { $qb = $this->db->getQueryBuilder(); $qb->select('*') @@ -128,6 +129,7 @@ public function findToDelete(int $timeLimit, ?int $cardId = null, bool $withOffs /** * Check if $userId is owner of Entity with $id */ + #[\Override] public function isOwner(string $userId, int $id): bool { try { $attachment = $this->find($id); @@ -144,6 +146,7 @@ public function isOwner(string $userId, int $id): bool { * @param $id int unique entity identifier * @return int|null id of Board */ + #[\Override] public function findBoardId(int $id): ?int { try { $attachment = $this->find($id); diff --git a/lib/Db/Board.php b/lib/Db/Board.php index 9714a0117f..7fc1350383 100644 --- a/lib/Db/Board.php +++ b/lib/Db/Board.php @@ -74,6 +74,7 @@ public function __construct() { $this->shared = -1; } + #[\Override] public function jsonSerialize(): array { $json = parent::jsonSerialize(); if ($this->shared === -1) { diff --git a/lib/Db/BoardMapper.php b/lib/Db/BoardMapper.php index 8093f931b1..89da7d9121 100644 --- a/lib/Db/BoardMapper.php +++ b/lib/Db/BoardMapper.php @@ -49,6 +49,7 @@ public function __construct( * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException * @throws DoesNotExistException */ + #[\Override] public function find(int $id, bool $withLabels = false, bool $withAcl = false, bool $allowDeleted = false): Board { $cacheKey = (string)$id; if (!isset($this->boardCache[$cacheKey])) { @@ -517,6 +518,7 @@ public function findToDelete(int $timeLimit) { return $this->findEntities($qb); } + #[\Override] public function delete(/** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */ \OCP\AppFramework\Db\Entity $entity): \OCP\AppFramework\Db\Entity { // delete acl @@ -539,11 +541,13 @@ public function delete(/** @noinspection PhpUnnecessaryFullyQualifiedNameInspect return parent::delete($entity); } + #[\Override] public function isOwner(string $userId, int $id): bool { $board = $this->find($id); return ($board->getOwner() === $userId); } + #[\Override] public function findBoardId(int $id): ?int { return $id; } diff --git a/lib/Db/CardMapper.php b/lib/Db/CardMapper.php index 47f3e58af3..5df66fd515 100644 --- a/lib/Db/CardMapper.php +++ b/lib/Db/CardMapper.php @@ -59,6 +59,7 @@ public function __construct( $this->database4ByteSupport = $database4ByteSupport; } + #[\Override] public function insert(Entity $entity): Entity { $entity->setDatabaseType($this->databaseType); $entity->setCreatedAt(time()); @@ -72,6 +73,7 @@ public function insert(Entity $entity): Entity { return $entity; } + #[\Override] public function update(Entity $entity, $updateModified = true): Entity { if (!$this->database4ByteSupport) { $description = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $entity->getDescription()); @@ -612,6 +614,7 @@ public function searchRaw($boardIds, $term, $limit = null, $offset = null) { return $all; } + #[\Override] public function delete(Entity $entity): Entity { $this->labelMapper->deleteLabelAssignmentsForCard($entity->getId()); $this->removeDependenciesForCard($entity->getId()); @@ -714,6 +717,7 @@ private function hasDependency(int $cardId, int $dependentCardId): bool { return $qb->executeQuery()->fetchOne() !== false; } + #[\Override] public function isOwner(string $userId, int $id): bool { $qb = $this->db->getQueryBuilder(); $qb->select('c.id') @@ -726,6 +730,7 @@ public function isOwner(string $userId, int $id): bool { return count($qb->executeQuery()->fetchAll()) > 0; } + #[\Override] public function findBoardId(int $id): ?int { $result = $this->cache->get('findBoardId:' . $id); if ($result === null) { diff --git a/lib/Db/Circle.php b/lib/Db/Circle.php index ea615b548e..1c7973611b 100644 --- a/lib/Db/Circle.php +++ b/lib/Db/Circle.php @@ -17,6 +17,7 @@ public function __construct(\OCA\Circles\Model\Circle $circle) { parent::__construct($primaryKey, $circle); } + #[\Override] public function getObjectSerialization() { return [ 'uid' => $this->object->getUniqueId(), diff --git a/lib/Db/FederatedUser.php b/lib/Db/FederatedUser.php index 31f2bfff0d..0aed357c7f 100644 --- a/lib/Db/FederatedUser.php +++ b/lib/Db/FederatedUser.php @@ -25,6 +25,7 @@ public function getUID(): string { return $this->cloudId->getId(); } + #[\Override] public function getObjectSerialization(): array { return [ 'uid' => $this->cloudId->getId(), diff --git a/lib/Db/Group.php b/lib/Db/Group.php index 47fb22fa31..defe972bf6 100644 --- a/lib/Db/Group.php +++ b/lib/Db/Group.php @@ -15,6 +15,7 @@ public function __construct(IGroup $group) { parent::__construct($primaryKey, $group); } + #[\Override] public function getObjectSerialization() { return [ 'uid' => $this->object->getGID(), diff --git a/lib/Db/LabelMapper.php b/lib/Db/LabelMapper.php index 8ec9cbe690..0ce48373ea 100644 --- a/lib/Db/LabelMapper.php +++ b/lib/Db/LabelMapper.php @@ -57,6 +57,7 @@ public function existsByBoardIdAndTitle(int $boardId, string $title, ?int $exclu return $exists; } + #[\Override] public function delete(Entity $entity): Entity { // delete assigned labels $this->deleteLabelAssignments($entity->getId()); @@ -113,6 +114,7 @@ public function findAssignedLabelsForBoard(int $boardId, ?int $limit = null, int return $this->findEntities($qb); } + #[\Override] public function insert(Entity $entity): Entity { if (!isset($entity->getUpdatedFields()['lastModified'])) { $entity->setLastModified(time()); @@ -120,6 +122,7 @@ public function insert(Entity $entity): Entity { return parent::insert($entity); } + #[\Override] public function update(Entity $entity, bool $updateModified = true): Entity { if ($updateModified) { $entity->setLastModified(time()); @@ -166,6 +169,7 @@ public function deleteLabelAssignmentsForCard(int $cardId): void { /** * @throws \OCP\DB\Exception */ + #[\Override] public function isOwner(string $userId, int $id): bool { $qb = $this->db->getQueryBuilder(); $qb->select('l.id') @@ -177,6 +181,7 @@ public function isOwner(string $userId, int $id): bool { return count($qb->executeQuery()->fetchAll()) > 0; } + #[\Override] public function findBoardId(int $id): ?int { try { $entity = $this->find($id); diff --git a/lib/Db/RelationalEntity.php b/lib/Db/RelationalEntity.php index b66b8c988b..6eaa695966 100644 --- a/lib/Db/RelationalEntity.php +++ b/lib/Db/RelationalEntity.php @@ -37,6 +37,7 @@ public function addResolvable($property) { * @param string $attribute the name of the attribute * @since 7.0.0 */ + #[\Override] protected function markFieldUpdated(string $attribute): void { if (!in_array($attribute, $this->_relations, true)) { parent::markFieldUpdated($attribute); @@ -47,6 +48,7 @@ protected function markFieldUpdated(string $attribute): void { * @return array serialized data * @throws \ReflectionException */ + #[\Override] public function jsonSerialize(): array { $properties = get_object_vars($this); $reflection = new \ReflectionClass($this); @@ -111,6 +113,7 @@ public function resolveRelation($property, $resolver) { } } + #[\Override] public function __call(string $methodName, array $args) { $attr = lcfirst(substr($methodName, 7)); if (array_key_exists($attr, $this->_resolvedProperties) && str_starts_with($methodName, 'resolve')) { diff --git a/lib/Db/RelationalObject.php b/lib/Db/RelationalObject.php index cc3b12125d..b15a7edf4f 100644 --- a/lib/Db/RelationalObject.php +++ b/lib/Db/RelationalObject.php @@ -24,6 +24,7 @@ public function __construct($primaryKey, $object) { $this->object = $object; } + #[\Override] public function jsonSerialize(): array { return array_merge( ['primaryKey' => $this->primaryKey], diff --git a/lib/Db/Session.php b/lib/Db/Session.php index 886fdfb4cd..50c79aa767 100644 --- a/lib/Db/Session.php +++ b/lib/Db/Session.php @@ -23,6 +23,7 @@ public function __construct() { $this->addType('lastContact', 'integer'); } + #[\Override] public function jsonSerialize(): array { return [ 'id' => $this->id, diff --git a/lib/Db/Stack.php b/lib/Db/Stack.php index 7e92911fd4..674bb3535b 100644 --- a/lib/Db/Stack.php +++ b/lib/Db/Stack.php @@ -47,6 +47,7 @@ public function setCards($cards) { $this->cards = $cards; } + #[\Override] public function jsonSerialize(): array { $json = parent::jsonSerialize(); if (empty($this->cards)) { diff --git a/lib/Db/StackMapper.php b/lib/Db/StackMapper.php index bbbd6e94bc..749fa86c30 100644 --- a/lib/Db/StackMapper.php +++ b/lib/Db/StackMapper.php @@ -38,6 +38,7 @@ public function __construct( * @throws MultipleObjectsReturnedException * @throws \OCP\DB\Exception */ + #[\Override] public function find(int $id): Stack { if (isset($this->stackCache[(string)$id])) { return $this->stackCache[(string)$id]; @@ -138,6 +139,7 @@ public function findDeleted(int $boardId, ?int $limit = null, int $offset = 0): return $this->findEntities($qb); } + #[\Override] public function update(Entity $entity): Entity { $result = parent::update($entity); $this->stackCache[(string)$entity->getId()] = $result; @@ -174,6 +176,7 @@ public function findDoneColumnForBoard(int $boardId): ?Stack { } } + #[\Override] public function delete(Entity $entity): Entity { // delete cards on stack $this->cardMapper->deleteByStack($entity->getId()); @@ -184,6 +187,7 @@ public function delete(Entity $entity): Entity { /** * @throws \OCP\DB\Exception */ + #[\Override] public function isOwner(string $userId, int $id): bool { $qb = $this->db->getQueryBuilder(); $qb->select('s.id') @@ -198,6 +202,7 @@ public function isOwner(string $userId, int $id): bool { /** * @throws \OCP\DB\Exception */ + #[\Override] public function findBoardId(int $id): ?int { $result = $this->cache->get('findBoardId:' . $id); if ($result !== null) { diff --git a/lib/Db/User.php b/lib/Db/User.php index 3902b177ee..e4ab887c83 100644 --- a/lib/Db/User.php +++ b/lib/Db/User.php @@ -19,6 +19,7 @@ public function __construct($uid, IUserManager $userManager) { }); } + #[\Override] public function getObjectSerialization(): array { return [ 'uid' => $this->getObject()->getUID(), diff --git a/lib/Event/AAclEvent.php b/lib/Event/AAclEvent.php index c649463f87..7821e5e88d 100644 --- a/lib/Event/AAclEvent.php +++ b/lib/Event/AAclEvent.php @@ -30,6 +30,7 @@ public function getBoardId(): int { return $this->acl->getBoardId(); } + #[\Override] public function getWebhookSerializable(): array { return [ 'acl' => $this->acl->jsonSerialize(), diff --git a/lib/Event/ACardEvent.php b/lib/Event/ACardEvent.php index 475560fbfb..aa40b53637 100644 --- a/lib/Event/ACardEvent.php +++ b/lib/Event/ACardEvent.php @@ -26,6 +26,7 @@ public function getCard(): Card { return $this->card; } + #[\Override] public function getWebhookSerializable(): array { return [ 'card' => $this->card->jsonSerialize(), diff --git a/lib/Event/BoardUpdatedEvent.php b/lib/Event/BoardUpdatedEvent.php index a3330a9810..e2b57ee586 100644 --- a/lib/Event/BoardUpdatedEvent.php +++ b/lib/Event/BoardUpdatedEvent.php @@ -25,6 +25,7 @@ public function getBoardId(): int { return $this->boardId; } + #[\Override] public function getWebhookSerializable(): array { return [ 'boardId' => $this->boardId, diff --git a/lib/Event/RegisterTextContextEventListener.php b/lib/Event/RegisterTextContextEventListener.php index 4a9bced537..bc2f251585 100644 --- a/lib/Event/RegisterTextContextEventListener.php +++ b/lib/Event/RegisterTextContextEventListener.php @@ -20,6 +20,7 @@ public function __construct( private readonly TextContextProviderFactory $textContextProviderFactory, ) { } + #[\Override] public function handle(Event $event): void { if (!$event instanceof RegisterContextEvent) { return; diff --git a/lib/Exceptions/ConflictException.php b/lib/Exceptions/ConflictException.php index 764b27ac83..e5ce0103f6 100644 --- a/lib/Exceptions/ConflictException.php +++ b/lib/Exceptions/ConflictException.php @@ -17,6 +17,7 @@ public function __construct($message, $data = null) { $this->data = $data; } + #[\Override] public function getStatus() { return 409; } diff --git a/lib/Federation/DeckFederationProvider.php b/lib/Federation/DeckFederationProvider.php index f05629badb..96b2584df1 100644 --- a/lib/Federation/DeckFederationProvider.php +++ b/lib/Federation/DeckFederationProvider.php @@ -39,10 +39,12 @@ public function __construct( ) { } + #[\Override] public function getShareType(): string { return self::PROVIDER_ID; } + #[\Override] public function shareReceived(ICloudFederationShare $share): string { $this->configService->ensureFederationEnabled(); @@ -87,6 +89,7 @@ public function shareReceived(ICloudFederationShare $share): string { return (string)$insertedBoard->getId(); } + #[\Override] public function notificationReceived($notificationType, $providerId, $notification): array { switch ($notificationType) { case 'update-permissions': @@ -121,6 +124,7 @@ public function notificationReceived($notificationType, $providerId, $notificati return []; } + #[\Override] public function getSupportedShareTypes(): array { return ['user']; } diff --git a/lib/Listeners/AclCreatedRemovedListener.php b/lib/Listeners/AclCreatedRemovedListener.php index 9330934e3b..5e428692d4 100644 --- a/lib/Listeners/AclCreatedRemovedListener.php +++ b/lib/Listeners/AclCreatedRemovedListener.php @@ -29,6 +29,7 @@ public function __construct( ) { } + #[\Override] public function handle(Event $event): void { if (!$event instanceof AclDeletedEvent && !$event instanceof AclCreatedEvent) { return; diff --git a/lib/Listeners/BeforeTemplateRenderedListener.php b/lib/Listeners/BeforeTemplateRenderedListener.php index 4d438aba41..0e74837713 100644 --- a/lib/Listeners/BeforeTemplateRenderedListener.php +++ b/lib/Listeners/BeforeTemplateRenderedListener.php @@ -23,6 +23,7 @@ public function __construct(IRequest $request) { $this->request = $request; } + #[\Override] public function handle(Event $event): void { if (!($event instanceof BeforeTemplateRenderedEvent)) { return; diff --git a/lib/Listeners/CommentEventListener.php b/lib/Listeners/CommentEventListener.php index 6392123a6d..a2fa20d102 100644 --- a/lib/Listeners/CommentEventListener.php +++ b/lib/Listeners/CommentEventListener.php @@ -27,6 +27,7 @@ public function __construct( ) { } + #[\Override] public function handle(Event $event): void { if (!$event instanceof CommentsEvent) { return; diff --git a/lib/Listeners/FullTextSearchEventListener.php b/lib/Listeners/FullTextSearchEventListener.php index 588c4f22aa..3bdad50503 100644 --- a/lib/Listeners/FullTextSearchEventListener.php +++ b/lib/Listeners/FullTextSearchEventListener.php @@ -48,6 +48,7 @@ public function __construct(ContainerInterface $container, $userId) { } } + #[\Override] public function handle(Event $event): void { if (!$event instanceof ACardEvent && !$event instanceof AAclEvent) { return; diff --git a/lib/Listeners/LiveUpdateListener.php b/lib/Listeners/LiveUpdateListener.php index e2c8a12cef..2b61f088bf 100644 --- a/lib/Listeners/LiveUpdateListener.php +++ b/lib/Listeners/LiveUpdateListener.php @@ -52,6 +52,7 @@ public function __construct( $this->stackMapper = $stackMapper; } + #[\Override] public function handle(Event $event): void { if (!$this->queue) { // notify_push is not active diff --git a/lib/Listeners/ParticipantCleanupListener.php b/lib/Listeners/ParticipantCleanupListener.php index ef7987869b..2b94d9ad3d 100644 --- a/lib/Listeners/ParticipantCleanupListener.php +++ b/lib/Listeners/ParticipantCleanupListener.php @@ -32,6 +32,7 @@ public function __construct( ) { } + #[\Override] public function handle(Event $event): void { if ($event instanceof UserDeletedEvent) { $userId = $event->getUser()->getUID(); diff --git a/lib/Listeners/ResourceAdditionalScriptsListener.php b/lib/Listeners/ResourceAdditionalScriptsListener.php index 7eb5998303..ad094c0ff4 100644 --- a/lib/Listeners/ResourceAdditionalScriptsListener.php +++ b/lib/Listeners/ResourceAdditionalScriptsListener.php @@ -21,6 +21,7 @@ public function __construct(IRequest $request) { $this->request = $request; } + #[\Override] public function handle(Event $event): void { if (!$event instanceof LoadAdditionalScriptsEvent) { return; diff --git a/lib/Listeners/ResourceListener.php b/lib/Listeners/ResourceListener.php index bfec714837..2a52e6fe36 100644 --- a/lib/Listeners/ResourceListener.php +++ b/lib/Listeners/ResourceListener.php @@ -25,6 +25,7 @@ public function __construct( ) { } + #[\Override] public function handle(Event $event): void { if (!$event instanceof AclDeletedEvent && !$event instanceof AclCreatedEvent) { return; diff --git a/lib/Listeners/ResourceTypeRegisterListener.php b/lib/Listeners/ResourceTypeRegisterListener.php index d74235d097..8e2e2c6e41 100644 --- a/lib/Listeners/ResourceTypeRegisterListener.php +++ b/lib/Listeners/ResourceTypeRegisterListener.php @@ -24,6 +24,7 @@ public function __construct( ) { } + #[\Override] public function handle(Event $event): void { if (!$event instanceof ResourceTypeRegisterEvent) { return; diff --git a/lib/Listeners/TextDocumentContentListener.php b/lib/Listeners/TextDocumentContentListener.php index 8836651aaf..75f7c8b2fa 100644 --- a/lib/Listeners/TextDocumentContentListener.php +++ b/lib/Listeners/TextDocumentContentListener.php @@ -28,6 +28,7 @@ public function __construct( ) { } + #[\Override] public function handle(Event $event): void { if (!($event instanceof CardUpdatedEvent) || !class_exists(DocumentContentUpdated::class)) { return; diff --git a/lib/Middleware/DefaultBoardMiddleware.php b/lib/Middleware/DefaultBoardMiddleware.php index d2dce250b5..5bda6ff51e 100644 --- a/lib/Middleware/DefaultBoardMiddleware.php +++ b/lib/Middleware/DefaultBoardMiddleware.php @@ -24,6 +24,7 @@ public function __construct( ) { } + #[\Override] public function beforeController($controller, $methodName) { try { if ($this->userId !== null && $this->defaultBoardService->checkFirstRun($this->userId) && $this->permissionService->canCreate()) { diff --git a/lib/Middleware/ExceptionMiddleware.php b/lib/Middleware/ExceptionMiddleware.php index bffc2a65ed..694176e17a 100644 --- a/lib/Middleware/ExceptionMiddleware.php +++ b/lib/Middleware/ExceptionMiddleware.php @@ -40,6 +40,7 @@ public function __construct( * @return JSONResponse * @throws \Exception */ + #[\Override] public function afterException($controller, $methodName, \Exception $exception) { if (get_class($controller) === PageController::class) { throw $exception; diff --git a/lib/Middleware/FederationMiddleware.php b/lib/Middleware/FederationMiddleware.php index ae5604d25a..9f6eaf9bc5 100644 --- a/lib/Middleware/FederationMiddleware.php +++ b/lib/Middleware/FederationMiddleware.php @@ -22,6 +22,7 @@ public function __construct( ) { } + #[\Override] public function beforeController($controller, $methodName): void { try { $this->configService->ensureFederationEnabled(); diff --git a/lib/Migration/DeletedCircleCleanup.php b/lib/Migration/DeletedCircleCleanup.php index 7fd52d56fc..f90ae87753 100644 --- a/lib/Migration/DeletedCircleCleanup.php +++ b/lib/Migration/DeletedCircleCleanup.php @@ -22,10 +22,12 @@ public function __construct(AclMapper $aclMapper, CirclesService $circlesService $this->circleService = $circlesService; } + #[\Override] public function getName() { return 'Cleanup Deck ACL entries for circles which have been already deleted'; } + #[\Override] public function run(IOutput $output) { if (!$this->circleService->isCirclesEnabled()) { return; diff --git a/lib/Migration/LabelMismatchCleanup.php b/lib/Migration/LabelMismatchCleanup.php index 75f8a21937..384e21df4d 100644 --- a/lib/Migration/LabelMismatchCleanup.php +++ b/lib/Migration/LabelMismatchCleanup.php @@ -18,10 +18,12 @@ public function __construct( ) { } + #[\Override] public function getName() { return 'Migrate labels with wrong board mapping'; } + #[\Override] public function run(IOutput $output) { // Find assingments where a label of another (wrong) board is used $qb = $this->db->getQueryBuilder(); diff --git a/lib/Migration/Version1000Date20200306161713.php b/lib/Migration/Version1000Date20200306161713.php index b09847dc30..c8ed9eb0df 100644 --- a/lib/Migration/Version1000Date20200306161713.php +++ b/lib/Migration/Version1000Date20200306161713.php @@ -14,6 +14,7 @@ use OCP\Migration\SimpleMigrationStep; class Version1000Date20200306161713 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { /** @var ISchemaWrapper $schema */ $schema = $schemaClosure(); diff --git a/lib/Migration/Version1000Date20200308073933.php b/lib/Migration/Version1000Date20200308073933.php index d88a95cece..c338da3859 100644 --- a/lib/Migration/Version1000Date20200308073933.php +++ b/lib/Migration/Version1000Date20200308073933.php @@ -17,6 +17,7 @@ * Auto-generated migration step: Please modify to your needs! */ class Version1000Date20200308073933 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { /** @var ISchemaWrapper $schema */ $schema = $schemaClosure(); diff --git a/lib/Migration/Version1011Date20230901010840.php b/lib/Migration/Version1011Date20230901010840.php index 88d8f3ed92..d9b5ee2b93 100644 --- a/lib/Migration/Version1011Date20230901010840.php +++ b/lib/Migration/Version1011Date20230901010840.php @@ -25,6 +25,7 @@ class Version1011Date20230901010840 extends SimpleMigrationStep { * @param array $options * @return null|ISchemaWrapper */ + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { /** @var ISchemaWrapper $schema */ $schema = $schemaClosure(); diff --git a/lib/Migration/Version1011Date20231106160059.php b/lib/Migration/Version1011Date20231106160059.php index 9c71847bf2..8bc9ec4be2 100644 --- a/lib/Migration/Version1011Date20231106160059.php +++ b/lib/Migration/Version1011Date20231106160059.php @@ -15,6 +15,7 @@ class Version1011Date20231106160059 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { $schema = $schemaClosure(); diff --git a/lib/Migration/Version10200Date20201111150114.php b/lib/Migration/Version10200Date20201111150114.php index 3ebb19e928..fb88e2089d 100644 --- a/lib/Migration/Version10200Date20201111150114.php +++ b/lib/Migration/Version10200Date20201111150114.php @@ -14,6 +14,7 @@ use OCP\Migration\SimpleMigrationStep; class Version10200Date20201111150114 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { /** @var ISchemaWrapper $schema */ $schema = $schemaClosure(); diff --git a/lib/Migration/Version10800Date20220422061816.php b/lib/Migration/Version10800Date20220422061816.php index c6f1620631..d92d21a461 100644 --- a/lib/Migration/Version10800Date20220422061816.php +++ b/lib/Migration/Version10800Date20220422061816.php @@ -23,6 +23,7 @@ class Version10800Date20220422061816 extends SimpleMigrationStep { * @return null|ISchemaWrapper * @throws SchemaException */ + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { $schema = $schemaClosure(); diff --git a/lib/Migration/Version10900Date202206151724222.php b/lib/Migration/Version10900Date202206151724222.php index 3dd12c45e8..801e06855e 100644 --- a/lib/Migration/Version10900Date202206151724222.php +++ b/lib/Migration/Version10900Date202206151724222.php @@ -16,6 +16,7 @@ use OCP\Migration\SimpleMigrationStep; class Version10900Date202206151724222 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { $schema = $schemaClosure(); diff --git a/lib/Migration/Version11000Date20240222115515.php b/lib/Migration/Version11000Date20240222115515.php index 591ece5d15..c9691a13d4 100644 --- a/lib/Migration/Version11000Date20240222115515.php +++ b/lib/Migration/Version11000Date20240222115515.php @@ -15,6 +15,7 @@ use OCP\Migration\SimpleMigrationStep; class Version11000Date20240222115515 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { $schema = $schemaClosure(); $returnValue = null; diff --git a/lib/Migration/Version11001Date20251009165313.php b/lib/Migration/Version11001Date20251009165313.php index 81823890b7..bb37c18bd5 100644 --- a/lib/Migration/Version11001Date20251009165313.php +++ b/lib/Migration/Version11001Date20251009165313.php @@ -15,6 +15,7 @@ use OCP\Migration\SimpleMigrationStep; class Version11001Date20251009165313 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { $schema = $schemaClosure(); diff --git a/lib/Migration/Version11001Date20251020122010.php b/lib/Migration/Version11001Date20251020122010.php index bda355353e..a7281359b8 100644 --- a/lib/Migration/Version11001Date20251020122010.php +++ b/lib/Migration/Version11001Date20251020122010.php @@ -14,6 +14,7 @@ use OCP\Migration\SimpleMigrationStep; class Version11001Date20251020122010 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) { $schema = $schemaClosure(); diff --git a/lib/Migration/Version11002Date20260228000000.php b/lib/Migration/Version11002Date20260228000000.php index 1dcce53429..115ce9149a 100644 --- a/lib/Migration/Version11002Date20260228000000.php +++ b/lib/Migration/Version11002Date20260228000000.php @@ -14,6 +14,7 @@ use OCP\Migration\SimpleMigrationStep; class Version11002Date20260228000000 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) { $schema = $schemaClosure(); diff --git a/lib/Migration/Version11002Date20260312000000.php b/lib/Migration/Version11002Date20260312000000.php index b0eb9e9915..4839a3a079 100644 --- a/lib/Migration/Version11002Date20260312000000.php +++ b/lib/Migration/Version11002Date20260312000000.php @@ -14,6 +14,7 @@ use OCP\Migration\SimpleMigrationStep; class Version11002Date20260312000000 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) { $schema = $schemaClosure(); diff --git a/lib/Migration/Version11002Date20260317170905.php b/lib/Migration/Version11002Date20260317170905.php index a360c2031d..564440417e 100644 --- a/lib/Migration/Version11002Date20260317170905.php +++ b/lib/Migration/Version11002Date20260317170905.php @@ -14,6 +14,7 @@ use OCP\Migration\SimpleMigrationStep; class Version11002Date20260317170905 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) { $schema = $schemaClosure(); diff --git a/lib/Migration/Version11002Date20260410000000.php b/lib/Migration/Version11002Date20260410000000.php index f765bf9b94..b0ab2fa4f6 100644 --- a/lib/Migration/Version11002Date20260410000000.php +++ b/lib/Migration/Version11002Date20260410000000.php @@ -14,6 +14,7 @@ use OCP\Migration\SimpleMigrationStep; class Version11002Date20260410000000 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) { $schema = $schemaClosure(); diff --git a/lib/Migration/Version11002Date20260611000000.php b/lib/Migration/Version11002Date20260611000000.php index 79b1cd601e..3388cd3fcc 100644 --- a/lib/Migration/Version11002Date20260611000000.php +++ b/lib/Migration/Version11002Date20260611000000.php @@ -15,6 +15,7 @@ use OCP\Migration\SimpleMigrationStep; class Version11002Date20260611000000 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { /** @var ISchemaWrapper $schema */ $schema = $schemaClosure(); diff --git a/lib/Migration/Version11002Date20260812120000.php b/lib/Migration/Version11002Date20260812120000.php index ab9996dff7..ef53e21f4f 100644 --- a/lib/Migration/Version11002Date20260812120000.php +++ b/lib/Migration/Version11002Date20260812120000.php @@ -15,6 +15,7 @@ use OCP\Migration\SimpleMigrationStep; class Version11002Date20260812120000 extends SimpleMigrationStep { + #[\Override] public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { /** @var ISchemaWrapper $schema */ $schema = $schemaClosure(); diff --git a/lib/Model/BoardSummary.php b/lib/Model/BoardSummary.php index adf33dabeb..6a9e8428bc 100644 --- a/lib/Model/BoardSummary.php +++ b/lib/Model/BoardSummary.php @@ -18,6 +18,7 @@ public function __construct(Board $board) { $this->board = $board; } + #[\Override] public function jsonSerialize(): array { return [ 'id' => $this->getId(), @@ -25,10 +26,12 @@ public function jsonSerialize(): array { ]; } + #[\Override] protected function getter(string $name): mixed { return $this->board->getter($name); } + #[\Override] public function __call($methodName, $args) { return $this->board->__call($methodName, $args); } diff --git a/lib/Model/CardDetails.php b/lib/Model/CardDetails.php index 28b89f7c31..a0b17fa904 100644 --- a/lib/Model/CardDetails.php +++ b/lib/Model/CardDetails.php @@ -31,6 +31,7 @@ public function setReferenceData(?Reference $data): void { $this->referenceData = $data; } + #[\Override] public function jsonSerialize(array $extras = []): array { $array = parent::jsonSerialize(); $array['overdue'] = $this->getDueStatus(); @@ -75,10 +76,12 @@ private function appendBoardDetails(&$array): void { $array['board'] = (new BoardSummary($this->board))->jsonSerialize(); } + #[\Override] protected function getter(string $name): mixed { return $this->card->getter($name); } + #[\Override] public function __call(string $methodName, array $args) { return $this->card->__call($methodName, $args); } diff --git a/lib/NoPermissionException.php b/lib/NoPermissionException.php index 112aca6aa8..960ccdf332 100644 --- a/lib/NoPermissionException.php +++ b/lib/NoPermissionException.php @@ -15,6 +15,7 @@ public function __construct($message, $controller = null, $method = null) { } } + #[\Override] public function getStatus() { return 403; } diff --git a/lib/NotFoundException.php b/lib/NotFoundException.php index 18baa581d5..7dc25a6cd3 100644 --- a/lib/NotFoundException.php +++ b/lib/NotFoundException.php @@ -12,6 +12,7 @@ public function __construct($message = '') { parent::__construct($message); } + #[\Override] public function getStatus() { return 404; } diff --git a/lib/NotImplementedException.php b/lib/NotImplementedException.php index 34d71d4973..827450c30d 100644 --- a/lib/NotImplementedException.php +++ b/lib/NotImplementedException.php @@ -14,6 +14,7 @@ public function __construct($message) { parent::__construct($message); } + #[\Override] public function getStatus() { return HTTP::STATUS_NOT_IMPLEMENTED; } diff --git a/lib/Notification/Notifier.php b/lib/Notification/Notifier.php index 87ee25941e..d06ffa46d4 100644 --- a/lib/Notification/Notifier.php +++ b/lib/Notification/Notifier.php @@ -35,6 +35,7 @@ public function __construct( * @return string * @since 17.0.0 */ + #[\Override] public function getID(): string { return 'deck'; } @@ -45,6 +46,7 @@ public function getID(): string { * @return string * @since 17.0.0 */ + #[\Override] public function getName(): string { return $this->l10nFactory->get('deck')->t('Deck'); } @@ -56,6 +58,7 @@ public function getName(): string { * @throws \InvalidArgumentException When the notification was not prepared by a notifier * @since 9.0.0 */ + #[\Override] public function prepare(INotification $notification, string $languageCode): INotification { $l = $this->l10nFactory->get('deck', $languageCode); if ($notification->getApp() !== 'deck' || $notification->getObjectType() === 'activity_notification') { diff --git a/lib/Provider/DeckProvider.php b/lib/Provider/DeckProvider.php index f0833b1aa2..77c71afa47 100644 --- a/lib/Provider/DeckProvider.php +++ b/lib/Provider/DeckProvider.php @@ -57,6 +57,7 @@ public function __construct( /** * return unique id of the provider */ + #[\Override] public function getId(): string { return self::DECK_PROVIDER_ID; } @@ -64,6 +65,7 @@ public function getId(): string { /** * return name of the provider */ + #[\Override] public function getName(): string { return 'Deck'; } @@ -71,6 +73,7 @@ public function getName(): string { /** * @return array */ + #[\Override] public function getConfiguration(): array { return []; } @@ -78,6 +81,7 @@ public function getConfiguration(): array { /** * @param IRunner $runner */ + #[\Override] public function setRunner(IRunner $runner) { $this->runner = $runner; } @@ -85,10 +89,12 @@ public function setRunner(IRunner $runner) { /** * @param IIndexOptions $options */ + #[\Override] public function setIndexOptions(IIndexOptions $options) { $this->indexOptions = $options; } + #[\Override] public function getSearchTemplate(): ISearchTemplate { /** @psalm-var ISearchTemplate */ $template = new SearchTemplate('icon-deck', 'deck'); @@ -99,6 +105,7 @@ public function getSearchTemplate(): ISearchTemplate { /** * */ + #[\Override] public function loadProvider() { } @@ -107,6 +114,7 @@ public function loadProvider() { * * @return string[] */ + #[\Override] public function generateChunks(string $userId): array { return []; } @@ -117,6 +125,7 @@ public function generateChunks(string $userId): array { * * @return IIndexDocument[] */ + #[\Override] public function generateIndexableDocuments(string $userId, string $chunk): array { $cards = $this->fullTextSearchService->getCardsFromUser($userId); @@ -134,6 +143,7 @@ public function generateIndexableDocuments(string $userId, string $chunk): array * @throws DoesNotExistException * @throws MultipleObjectsReturnedException */ + #[\Override] public function fillIndexDocument(IIndexDocument $document) { $this->fullTextSearchService->fillIndexDocument($document); $this->updateRunnerInfo('info', $document->getTitle()); @@ -144,6 +154,7 @@ public function fillIndexDocument(IIndexDocument $document) { * * @return bool */ + #[\Override] public function isDocumentUpToDate(IIndexDocument $document): bool { return false; } @@ -155,6 +166,7 @@ public function isDocumentUpToDate(IIndexDocument $document): bool { * @throws DoesNotExistException * @throws MultipleObjectsReturnedException */ + #[\Override] public function updateDocument(IIndex $index): IIndexDocument { /** @psalm-var IIndexDocument */ $document = new IndexDocument(DeckProvider::DECK_PROVIDER_ID, $index->getDocumentId()); @@ -168,18 +180,21 @@ public function updateDocument(IIndex $index): IIndexDocument { /** * @param IFullTextSearchPlatform $platform */ + #[\Override] public function onInitializingIndex(IFullTextSearchPlatform $platform) { } /** * @param IFullTextSearchPlatform $platform */ + #[\Override] public function onResettingIndex(IFullTextSearchPlatform $platform) { } /** * not used yet */ + #[\Override] public function unloadProvider() { } @@ -188,6 +203,7 @@ public function unloadProvider() { * * @param ISearchRequest $request */ + #[\Override] public function improveSearchRequest(ISearchRequest $searchRequest) { } @@ -196,6 +212,7 @@ public function improveSearchRequest(ISearchRequest $searchRequest) { * * @param ISearchResult $searchResult */ + #[\Override] public function improveSearchResult(ISearchResult $searchResult) { foreach ($searchResult->getDocuments() as $document) { try { diff --git a/lib/Provider/TextContextProvider.php b/lib/Provider/TextContextProvider.php index 65cfa3ab28..089cdacb34 100644 --- a/lib/Provider/TextContextProvider.php +++ b/lib/Provider/TextContextProvider.php @@ -35,18 +35,22 @@ public function __construct( private readonly int $cardId, ) { } + #[\Override] public function getId(): int { return $this->cardId; } + #[\Override] public function getType(): string { return self::CONTEXT_TYPE; } + #[\Override] public function toString(): string { return $this->getType() . ' (' . $this->getId() . ')'; } + #[\Override] public function buildDocument(): Document { $document = new Document(); $document->setContextType($this->getType()); @@ -60,6 +64,7 @@ public function buildDocument(): Document { return $document; } + #[\Override] public function prepareSession(): SessionInfo { $readonly = !$this->permissionService->checkPermission($this->cardMapper, $this->cardId, Acl::PERMISSION_EDIT, $this->userId); return new SessionInfo( @@ -69,10 +74,12 @@ public function prepareSession(): SessionInfo { ); } + #[\Override] public function isReadOnly(): bool { return !$this->permissionService->checkPermission($this->cardMapper, $this->cardId, Acl::PERMISSION_EDIT, $this->userId); } + #[\Override] public function updateDocument(Document $document): void { $document->setChecksum($this->computeChecksum()); $document->setLastSavedVersionTime($this->getLastModified()); @@ -101,6 +108,7 @@ private function getLastModified(): int { return (int)($card->getLastModified() ?: time()); } + #[\Override] public function getFile(): ?File { return null; } @@ -109,14 +117,17 @@ public function getFile(): ?File { * @throws NotFoundException * @throws NotPermittedException */ + #[\Override] public function loadContent(): ?string { $card = $this->findCard(); return $card->getDescription(); } + #[\Override] public function cleanup(): void { } + #[\Override] public function save(string $content, callable $afterSave): void { $this->cardService->updateDescription($this->cardId, $content); $afterSave(); diff --git a/lib/Provider/TextContextProviderFactory.php b/lib/Provider/TextContextProviderFactory.php index fd4b78c68c..e5223bc53e 100644 --- a/lib/Provider/TextContextProviderFactory.php +++ b/lib/Provider/TextContextProviderFactory.php @@ -26,6 +26,7 @@ public function __construct( ) { } + #[\Override] public function build(IUser|IShare $auth, string $type, int $id): IContext { return $this->buildForCard($id); } diff --git a/lib/Reference/BoardReferenceProvider.php b/lib/Reference/BoardReferenceProvider.php index 710c5df19f..c7108e4fc6 100644 --- a/lib/Reference/BoardReferenceProvider.php +++ b/lib/Reference/BoardReferenceProvider.php @@ -35,6 +35,7 @@ public function __construct(BoardService $boardService, /** * @inheritDoc */ + #[\Override] public function matchReference(string $referenceText): bool { $start = $this->urlGenerator->getAbsoluteURL('/apps/' . Application::APP_ID); $startIndex = $this->urlGenerator->getAbsoluteURL('/index.php/apps/' . Application::APP_ID); @@ -49,6 +50,7 @@ public function matchReference(string $referenceText): bool { /** * @inheritDoc */ + #[\Override] public function resolveReference(string $referenceText): ?IReference { if ($this->matchReference($referenceText)) { $boardId = $this->getBoardId($referenceText); @@ -105,6 +107,7 @@ private function getBoardId(string $url): ?int { return null; } + #[\Override] public function getCachePrefix(string $referenceId): string { $boardId = $this->getBoardId($referenceId); if ($boardId !== null) { @@ -114,6 +117,7 @@ public function getCachePrefix(string $referenceId): string { return $referenceId; } + #[\Override] public function getCacheKey(string $referenceId): ?string { return $this->userId ?? ''; } diff --git a/lib/Reference/CardReferenceProvider.php b/lib/Reference/CardReferenceProvider.php index 2a8a7e3f53..e62a45ec49 100644 --- a/lib/Reference/CardReferenceProvider.php +++ b/lib/Reference/CardReferenceProvider.php @@ -48,6 +48,7 @@ public function __construct(CardService $cardService, /** * @inheritDoc */ + #[\Override] public function getId(): string { return Application::APP_ID . '-ref-cards'; } @@ -55,6 +56,7 @@ public function getId(): string { /** * @inheritDoc */ + #[\Override] public function getTitle(): string { return $this->l10n->t('Deck boards, cards and comments'); } @@ -62,6 +64,7 @@ public function getTitle(): string { /** * @inheritDoc */ + #[\Override] public function getOrder(): int { return 10; } @@ -69,6 +72,7 @@ public function getOrder(): int { /** * @inheritDoc */ + #[\Override] public function getIconUrl(): string { return $this->urlGenerator->getAbsoluteURL( $this->urlGenerator->imagePath(Application::APP_ID, 'deck-dark.svg') @@ -78,6 +82,7 @@ public function getIconUrl(): string { /** * @inheritDoc */ + #[\Override] public function getSupportedSearchProviderIds(): array { return [ 'search-deck-card-board', @@ -88,6 +93,7 @@ public function getSupportedSearchProviderIds(): array { /** * @inheritDoc */ + #[\Override] public function matchReference(string $referenceText): bool { $start = $this->urlGenerator->getAbsoluteURL('/apps/' . Application::APP_ID); $startIndex = $this->urlGenerator->getAbsoluteURL('/index.php/apps/' . Application::APP_ID); @@ -106,6 +112,7 @@ public function matchReference(string $referenceText): bool { /** * @inheritDoc */ + #[\Override] public function resolveReference(string $referenceText): ?IReference { if ($this->matchReference($referenceText)) { $ids = $this->getBoardCardId($referenceText); @@ -205,6 +212,7 @@ private function getBoardCardId(string $url): ?array { return null; } + #[\Override] public function getCachePrefix(string $referenceId): string { $ids = $this->getBoardCardId($referenceId); if ($ids !== null) { @@ -215,6 +223,7 @@ public function getCachePrefix(string $referenceId): string { return $referenceId; } + #[\Override] public function getCacheKey(string $referenceId): ?string { return $this->userId ?? ''; } diff --git a/lib/Reference/CommentReferenceProvider.php b/lib/Reference/CommentReferenceProvider.php index ac0c026a6b..bff8667710 100644 --- a/lib/Reference/CommentReferenceProvider.php +++ b/lib/Reference/CommentReferenceProvider.php @@ -51,6 +51,7 @@ public function __construct(CardService $cardService, /** * @inheritDoc */ + #[\Override] public function matchReference(string $referenceText): bool { $start = $this->urlGenerator->getAbsoluteURL('/apps/' . Application::APP_ID); $startIndex = $this->urlGenerator->getAbsoluteURL('/index.php/apps/' . Application::APP_ID); @@ -65,6 +66,7 @@ public function matchReference(string $referenceText): bool { /** * @inheritDoc */ + #[\Override] public function resolveReference(string $referenceText): ?IReference { if ($this->matchReference($referenceText)) { $ids = $this->getIds($referenceText); @@ -173,10 +175,12 @@ private function getIds(string $url): ?array { return null; } + #[\Override] public function getCachePrefix(string $referenceId): string { return $referenceId; } + #[\Override] public function getCacheKey(string $referenceId): ?string { return $this->userId ?? ''; } diff --git a/lib/Reference/CreateCardReferenceProvider.php b/lib/Reference/CreateCardReferenceProvider.php index 6ddb17e703..ad7d6c95dd 100644 --- a/lib/Reference/CreateCardReferenceProvider.php +++ b/lib/Reference/CreateCardReferenceProvider.php @@ -25,6 +25,7 @@ public function __construct( /** * @inheritDoc */ + #[\Override] public function getId(): string { return 'create-new-deck-card'; } @@ -32,6 +33,7 @@ public function getId(): string { /** * @inheritDoc */ + #[\Override] public function getTitle(): string { return $this->l10n->t('Create a new deck card'); } @@ -39,6 +41,7 @@ public function getTitle(): string { /** * @inheritDoc */ + #[\Override] public function getOrder(): int { return 10; } @@ -46,6 +49,7 @@ public function getOrder(): int { /** * @inheritDoc */ + #[\Override] public function getIconUrl(): string { return $this->urlGenerator->getAbsoluteURL( $this->urlGenerator->imagePath(Application::APP_ID, 'deck-dark.svg') @@ -55,6 +59,7 @@ public function getIconUrl(): string { /** * @inheritDoc */ + #[\Override] public function matchReference(string $referenceText): bool { return false; } @@ -62,6 +67,7 @@ public function matchReference(string $referenceText): bool { /** * @inheritDoc */ + #[\Override] public function resolveReference(string $referenceText): ?IReference { return null; } @@ -69,6 +75,7 @@ public function resolveReference(string $referenceText): ?IReference { /** * @inheritDoc */ + #[\Override] public function getCachePrefix(string $referenceId): string { return $this->userId ?? ''; } @@ -77,6 +84,7 @@ public function getCachePrefix(string $referenceId): string { * We don't use the userId here but rather a reference unique id * @inheritDoc */ + #[\Override] public function getCacheKey(string $referenceId): ?string { return $referenceId; } diff --git a/lib/Search/CardCommentProvider.php b/lib/Search/CardCommentProvider.php index 3f02948f2e..065f53483c 100644 --- a/lib/Search/CardCommentProvider.php +++ b/lib/Search/CardCommentProvider.php @@ -31,14 +31,17 @@ public function __construct( $this->l10n = $l10n; } + #[\Override] public function getId(): string { return 'search-deck-comment'; } + #[\Override] public function getName(): string { return $this->l10n->t('Card comments'); } + #[\Override] public function search(IUser $user, ISearchQuery $query): SearchResult { $cursor = $query->getCursor() !== null ? (int)$query->getCursor() : null; $results = $this->searchService->searchComments($query->getTerm(), $query->getLimit(), $cursor); @@ -56,6 +59,7 @@ public function search(IUser $user, ISearchQuery $query): SearchResult { ); } + #[\Override] public function getOrder(string $route, array $routeParameters): int { // Negative value to force showing deck providers on first position if the app is opened // This provider always has an order 1 higher than the default DeckProvider diff --git a/lib/Search/DeckProvider.php b/lib/Search/DeckProvider.php index b9c16e35a9..ec1658d124 100644 --- a/lib/Search/DeckProvider.php +++ b/lib/Search/DeckProvider.php @@ -27,14 +27,17 @@ public function __construct( ) { } + #[\Override] public function getId(): string { return 'search-deck-card-board'; } + #[\Override] public function getName(): string { return $this->l10n->t('Deck boards and cards'); } + #[\Override] public function search(IUser $user, ISearchQuery $query): SearchResult { $cursor = $query->getCursor(); [$boardCursor, $cardCursor] = $this->parseCursor($cursor); @@ -85,6 +88,7 @@ public function search(IUser $user, ISearchQuery $query): SearchResult { ); } + #[\Override] public function getOrder(string $route, array $routeParameters): int { if ($route === 'deck.Page.index') { return -5; diff --git a/lib/Service/FileService.php b/lib/Service/FileService.php index df7bdbed84..07e3f0a69f 100644 --- a/lib/Service/FileService.php +++ b/lib/Service/FileService.php @@ -64,6 +64,7 @@ public function getFolder(Attachment $attachment) { return $folder; } + #[\Override] public function extendData(Attachment $attachment) { try { $file = $this->getFileForAttachment($attachment); @@ -118,6 +119,7 @@ private function getUploadedFile() { * @throws StatusException * @throws ConflictException */ + #[\Override] public function create(Attachment $attachment) { $file = $this->getUploadedFile(); $folder = $this->getFolder($attachment); @@ -145,6 +147,7 @@ public function create(Attachment $attachment) { * * @throws \Exception */ + #[\Override] public function update(Attachment $attachment) { $file = $this->getUploadedFile(); $fileName = $file['name']; @@ -167,6 +170,7 @@ public function update(Attachment $attachment) { * @param Attachment $attachment * @throws NotPermittedException */ + #[\Override] public function delete(Attachment $attachment) { try { $file = $this->getFileForAttachment($attachment); @@ -202,6 +206,7 @@ private function getFileFromRootFolder(Attachment $attachment) { * @return StreamResponse * @throws \Exception */ + #[\Override] public function display(Attachment $attachment) { $file = $this->getFileFromRootFolder($attachment); $response = new StreamResponse($file->fopen('rb')); @@ -215,6 +220,7 @@ public function display(Attachment $attachment) { * * @return bool */ + #[\Override] public function allowUndo() { return true; } @@ -224,6 +230,7 @@ public function allowUndo() { * * @param Attachment $attachment */ + #[\Override] public function markAsDeleted(Attachment $attachment) { $attachment->setDeletedAt(time()); } diff --git a/lib/Service/FilesAppService.php b/lib/Service/FilesAppService.php index d6824c51b6..e52e42ee71 100644 --- a/lib/Service/FilesAppService.php +++ b/lib/Service/FilesAppService.php @@ -91,6 +91,7 @@ public function __construct( $this->filenameValidator = $filenameValidator; } + #[\Override] public function listAttachments(int $cardId): array { $shares = $this->shareProvider->getSharedWithByType($cardId, IShare::TYPE_DECK, -1, 0); return array_filter(array_map(function (IShare $share) use ($cardId) { @@ -113,10 +114,12 @@ public function listAttachments(int $cardId): array { }, $shares)); } + #[\Override] public function getAttachmentCount(int $cardId): int { return $this->getAttachmentCountForCards([$cardId])[$cardId] ?? 0; } + #[\Override] public function getAttachmentCountForCards(array $cardIds): array { if (empty($cardIds)) { return []; @@ -146,6 +149,7 @@ public function getAttachmentCountForCards(array $cardIds): array { return $counts; } + #[\Override] public function extendData(Attachment $attachment) { $userFolder = $this->rootFolder->getUserFolder($this->userId); $share = $this->getShareForAttachment($attachment); @@ -167,6 +171,7 @@ public function extendData(Attachment $attachment) { return $attachment; } + #[\Override] public function display(Attachment $attachment) { // Problem: Folders /** @psalm-suppress InvalidCatch */ @@ -186,6 +191,7 @@ public function display(Attachment $attachment) { return $response; } + #[\Override] public function create(Attachment $attachment) { if ($attachment->getData() === 'DEFAULT_SAMPLE_FILE' && !$this->request->getUploadedFile('file')) { $file = [ @@ -380,6 +386,7 @@ private function getUploadedFile() { return $file; } + #[\Override] public function update(Attachment $attachment) { $share = $this->getShareForAttachment($attachment); $target = $share->getNode(); @@ -406,6 +413,7 @@ public function update(Attachment $attachment) { * @throws NotFoundException * @throws ShareNotFound */ + #[\Override] public function delete(Attachment $attachment) { $share = $this->getShareForAttachment($attachment); $file = $share->getNode(); @@ -423,10 +431,12 @@ public function delete(Attachment $attachment) { throw new NoPermissionException('No permission to remove the attachment from the card'); } + #[\Override] public function allowUndo() { return false; } + #[\Override] public function markAsDeleted(Attachment $attachment) { throw new \Exception('Not implemented'); } diff --git a/lib/Service/Importer/BoardImportCommandService.php b/lib/Service/Importer/BoardImportCommandService.php index ddaef57796..a4dacf7fa5 100644 --- a/lib/Service/Importer/BoardImportCommandService.php +++ b/lib/Service/Importer/BoardImportCommandService.php @@ -59,6 +59,7 @@ public function getOutput(): OutputInterface { return $this->output; } + #[\Override] protected function validateConfig(): void { try { $config = $this->getInput()->getOption('config'); @@ -108,6 +109,7 @@ protected function validateConfig(): void { $this->validateConfig(); } + #[\Override] public function validateSystem(): void { try { parent::validateSystem(); @@ -129,6 +131,7 @@ public function validateSystem(): void { return; } + #[\Override] protected function validateData(): void { if (!$this->getImportSystem()->needValidateData()) { return; @@ -171,6 +174,7 @@ protected function validateData(): void { $this->validateData(); } + #[\Override] public function bootstrap(): void { $this->setSystem($this->getInput()->getOption('system')); parent::bootstrap(); @@ -193,6 +197,7 @@ public function bootstrap(): void { }); } + #[\Override] public function import(): void { $this->getOutput()->writeln('Starting import...'); $this->bootstrap(); diff --git a/lib/Service/Importer/Systems/DeckJsonService.php b/lib/Service/Importer/Systems/DeckJsonService.php index 2aa7071d0c..43cd78386a 100644 --- a/lib/Service/Importer/Systems/DeckJsonService.php +++ b/lib/Service/Importer/Systems/DeckJsonService.php @@ -33,10 +33,12 @@ public function __construct( ) { } + #[\Override] public function bootstrap(): void { $this->validateUsers(); } + #[\Override] public function getJsonSchemaPath(): string { return implode(DIRECTORY_SEPARATOR, [ __DIR__, @@ -46,6 +48,7 @@ public function getJsonSchemaPath(): string { ]); } + #[\Override] public function validateUsers(): void { $relation = $this->getImportService()->getConfig('uidRelation'); if (empty($relation)) { @@ -72,7 +75,7 @@ public function mapMember($uid): ?string { return $ownerMap; } - $uidCandidate = isset($this->members[$uid]) ? $this->members[$uid]?->getUID() ?? null : null; + $uidCandidate = isset($this->members[$uid]) ? $this->members[$uid]?->getUID() : null; if ($uidCandidate) { return $uidCandidate; } @@ -93,6 +96,7 @@ public function mapOwner(string $uid): string { return $uid; } + #[\Override] public function getCardAssignments(): array { $assignments = []; foreach ($this->tmpCards as $sourceCard) { @@ -114,6 +118,7 @@ public function getCardAssignments(): array { * Parse comments from source cards and return them as an array of comments by card ID. * */ + #[\Override] public function getComments(): array { $comments = []; foreach ($this->tmpCards as $sourceCard) { @@ -147,6 +152,7 @@ public function getComments(): array { return $comments; } + #[\Override] public function importAttachments(): void { foreach ($this->tmpCards as $sourceCard) { $this->importAttachmentsForCard($sourceCard); @@ -205,6 +211,7 @@ private function importAttachmentsForCard(object $sourceCard): void { } } + #[\Override] public function getCardLabelAssignment(): array { $cardsLabels = []; foreach ($this->tmpCards as $sourceCard) { @@ -219,6 +226,7 @@ public function getCardLabelAssignment(): array { return $cardsLabels; } + #[\Override] public function getBoard(): Board { $board = $this->getImportService()->getBoard(); if (empty($this->getImportService()->getData()->title)) { @@ -237,6 +245,7 @@ public function getBoard(): Board { /** * @return Label[] */ + #[\Override] public function getLabels(): array { foreach ($this->getImportService()->getData()->labels as $label) { $newLabel = new Label(); @@ -252,6 +261,7 @@ public function getLabels(): array { /** * @return Stack[] */ + #[\Override] public function getStacks(): array { $return = []; foreach ($this->getImportService()->getData()->stacks as $index => $source) { @@ -277,6 +287,7 @@ public function getStacks(): array { /** * @return Card[] */ + #[\Override] public function getCards(): array { $cards = []; foreach ($this->tmpCards as $cardSource) { @@ -303,6 +314,7 @@ public function getCards(): array { /** * @return Acl[] */ + #[\Override] public function getAclList(): array { $board = $this->getImportService()->getData(); $return = []; @@ -332,12 +344,14 @@ private function replaceUsernames(string $text): string { return $text; } + #[\Override] public function getBoards(): array { // Old format has just the raw board data, new one a key boards $data = $this->getImportService()->getData(); return array_values((array)($data->boards ?? $data)); } + #[\Override] public function reset(): void { parent::reset(); $this->tmpCards = []; diff --git a/lib/Service/Importer/Systems/TrelloApiService.php b/lib/Service/Importer/Systems/TrelloApiService.php index 671556e16a..300d1c12f0 100644 --- a/lib/Service/Importer/Systems/TrelloApiService.php +++ b/lib/Service/Importer/Systems/TrelloApiService.php @@ -39,6 +39,7 @@ public function __construct( $this->httpClient = $httpClientService->newClient(); } + #[\Override] public function bootstrap(): void { $this->populateBoard(); $this->populateMembers(); @@ -50,6 +51,7 @@ public function bootstrap(): void { parent::bootstrap(); } + #[\Override] public function getJsonSchemaPath(): string { return implode(DIRECTORY_SEPARATOR, [ __DIR__, diff --git a/lib/Service/Importer/Systems/TrelloJsonService.php b/lib/Service/Importer/Systems/TrelloJsonService.php index 88cd5e930a..3104e53639 100644 --- a/lib/Service/Importer/Systems/TrelloJsonService.php +++ b/lib/Service/Importer/Systems/TrelloJsonService.php @@ -45,10 +45,12 @@ public function __construct( $this->l10n = $l10n; } + #[\Override] public function bootstrap(): void { $this->validateUsers(); } + #[\Override] public function getJsonSchemaPath(): string { return implode(DIRECTORY_SEPARATOR, [ __DIR__, @@ -58,6 +60,7 @@ public function getJsonSchemaPath(): string { ]); } + #[\Override] public function validateUsers(): void { if (empty($this->getImportService()->getConfig('uidRelation'))) { return; @@ -82,6 +85,7 @@ public function validateUsers(): void { } } + #[\Override] public function getCardAssignments(): array { $assignments = []; foreach ($this->getImportService()->getData()->cards as $trelloCard) { @@ -99,6 +103,7 @@ public function getCardAssignments(): array { return $assignments; } + #[\Override] public function getComments(): array { $comments = []; foreach ($this->getImportService()->getData()->cards as $trelloCard) { @@ -163,6 +168,7 @@ function (\stdClass $a) use ($trelloCard) { return $comments; } + #[\Override] public function importAttachments(): void { } @@ -178,6 +184,7 @@ private function sortComments(array $comments): array { return $comments; } + #[\Override] public function getCardLabelAssignment(): array { $cardsLabels = []; foreach ($this->getImportService()->getData()->cards as $trelloCard) { @@ -190,6 +197,7 @@ public function getCardLabelAssignment(): array { return $cardsLabels; } + #[\Override] public function getBoard(): Board { $board = $this->getImportService()->getBoard(); if (empty($this->getImportService()->getData()->name)) { @@ -204,6 +212,7 @@ public function getBoard(): Board { /** * @return Label[] */ + #[\Override] public function getLabels(): array { foreach ($this->getImportService()->getData()->labels as $trelloLabel) { $label = new Label(); @@ -222,6 +231,7 @@ public function getLabels(): array { /** * @return Stack[] */ + #[\Override] public function getStacks(): array { $return = []; foreach ($this->getImportService()->getData()->lists as $order => $list) { @@ -240,6 +250,7 @@ public function getStacks(): array { /** * @return Card[] */ + #[\Override] public function getCards(): array { $checklists = []; foreach ($this->getImportService()->getData()->checklists as $checklist) { @@ -302,6 +313,7 @@ function (\stdClass $a) use ($trelloCard) { /** * @return Acl[] */ + #[\Override] public function getAclList(): array { $return = []; foreach ($this->members as $member) { @@ -375,6 +387,7 @@ private function appendAttachmentsToDescription(\stdClass $trelloCard): void { } } + #[\Override] public function getBoards(): array { if ($this->getImportService()->getData()->boards) { return $this->getImportService()->getData()->boards; diff --git a/lib/Sharing/DeckShareProvider.php b/lib/Sharing/DeckShareProvider.php index ef41e4301e..a0792ac308 100644 --- a/lib/Sharing/DeckShareProvider.php +++ b/lib/Sharing/DeckShareProvider.php @@ -73,6 +73,7 @@ public static function register(IEventDispatcher $dispatcher): void { /** * @inheritDoc */ + #[\Override] public function identifier() { return 'deck'; } @@ -80,6 +81,7 @@ public function identifier() { /** * @inheritDoc */ + #[\Override] public function create(IShare $share) { $cardId = (int)$share->getSharedWith(); $boardId = $this->cardMapper->findBoardId($cardId); @@ -272,6 +274,7 @@ private function createShareObject(array $data): IShare { /** * @inheritDoc */ + #[\Override] public function update(IShare $share) { $this->dbConnection->beginTransaction(); try { @@ -336,6 +339,7 @@ public function update(IShare $share) { /** * @inheritDoc */ + #[\Override] public function delete(IShare $share) { $qb = $this->dbConnection->getQueryBuilder(); $qb->delete('share') @@ -351,6 +355,7 @@ public function delete(IShare $share) { /** * @inheritDoc */ + #[\Override] public function deleteFromSelf(IShare $share, $recipient) { // Check if there is a deck_user share $qb = $this->dbConnection->getQueryBuilder(); @@ -398,6 +403,7 @@ public function deleteFromSelf(IShare $share, $recipient) { /** * @inheritDoc */ + #[\Override] public function restore(IShare $share, string $recipient): IShare { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('permissions') @@ -430,6 +436,7 @@ public function restore(IShare $share, string $recipient): IShare { /** * @inheritDoc */ + #[\Override] public function move(IShare $share, $recipient) { // Check if there is a deck user share $qb = $this->dbConnection->getQueryBuilder(); @@ -481,6 +488,7 @@ public function move(IShare $share, $recipient) { * @inheritDoc * @returns */ + #[\Override] public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true) { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('*') @@ -530,6 +538,7 @@ public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = t /** * @inheritDoc */ + #[\Override] public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offset) { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('*') @@ -576,6 +585,7 @@ public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offs * @inheritDoc * @throws ShareNotFound */ + #[\Override] public function getShareById($id, $recipientId = null) { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('s.*', @@ -694,6 +704,7 @@ private function resolveSharesForRecipient(array $shares, string $userId): array * @param Node $path * @return IShare[] */ + #[\Override] public function getSharesByPath(Node $path): array { $qb = $this->dbConnection->getQueryBuilder(); @@ -722,10 +733,12 @@ public function getSharesByPath(Node $path): array { * @param int $offset * @return IShare[] */ + #[\Override] public function getSharedWith($userId, $shareType, $node, $limit, $offset): array { return $this->_getSharedWith($userId, $limit, $offset, $node); } + #[\Override] public function getSharedWithByPath( string $userId, int $shareType, @@ -936,6 +949,7 @@ public function isAccessibleResult(array $data): bool { * @inheritDoc * @psalm-suppress InvalidReturnType Not returning anything */ + #[\Override] public function getShareByToken($token) { throw new ShareNotFound(); /*$qb = $this->dbConnection->getQueryBuilder(); @@ -969,6 +983,7 @@ public function getShareByToken($token) { /** * @inheritDoc */ + #[\Override] public function userDeleted($uid, $shareType) { // TODO: Implement userDeleted() method. } @@ -976,6 +991,7 @@ public function userDeleted($uid, $shareType) { /** * @inheritDoc */ + #[\Override] public function groupDeleted($gid) { // TODO: Implement groupDeleted() method. } @@ -983,6 +999,7 @@ public function groupDeleted($gid) { /** * @inheritDoc */ + #[\Override] public function userDeletedFromGroup($uid, $gid) { // TODO: Implement userDeletedFromGroup() method. } @@ -996,6 +1013,7 @@ public function userDeletedFromGroup($uid, $gid) { * @param bool $currentAccess If current access is required (like for removed shares that might get revived later) * @return array */ + #[\Override] public function getAccessList($nodes, $currentAccess) { $ids = []; foreach ($nodes as $node) { @@ -1098,6 +1116,7 @@ protected function filterSharesOfUser(array $shares): array { * @param IShare $parent * @return IShare[] */ + #[\Override] public function getChildren(IShare $parent): array { $children = []; @@ -1120,6 +1139,7 @@ public function getChildren(IShare $parent): array { /** * @inheritDoc */ + #[\Override] public function getAllShares(): iterable { $qb = $this->dbConnection->getQueryBuilder(); @@ -1200,6 +1220,7 @@ public function getOrphanedAttachmentShares(): array { return $shares; } + #[\Override] public function getUsersForShare(IShare $share): iterable { if ($share->getShareType() === IShare::TYPE_DECK) { $cardId = (int)$share->getSharedWith(); diff --git a/lib/Teams/DeckTeamResourceProvider.php b/lib/Teams/DeckTeamResourceProvider.php index 40cef2343c..cfe0be7a9b 100644 --- a/lib/Teams/DeckTeamResourceProvider.php +++ b/lib/Teams/DeckTeamResourceProvider.php @@ -23,18 +23,22 @@ public function __construct( ) { } + #[\Override] public function getId(): string { return Application::APP_ID; } + #[\Override] public function getName(): string { return 'Deck'; } + #[\Override] public function getIconSvg(): string { return file_get_contents(__DIR__ . '/../../img/deck-current.svg'); } + #[\Override] public function getSharedWith($teamId): array { $boards = $this->boardMapper->findAllByTeam($teamId); return array_map(function (Board $board) { @@ -49,10 +53,12 @@ public function getSharedWith($teamId): array { }, $boards); } + #[\Override] public function isSharedWithTeam(string $teamId, string $resourceId): bool { return $this->boardMapper->isSharedWithTeam((int)$resourceId, $teamId); } + #[\Override] public function getTeamsForResource(string $resourceId): array { return $this->boardMapper->findTeamsForBoard((int)$resourceId); } diff --git a/lib/UserMigration/DeckMigrator.php b/lib/UserMigration/DeckMigrator.php index 7b4caf2545..1b683093c9 100644 --- a/lib/UserMigration/DeckMigrator.php +++ b/lib/UserMigration/DeckMigrator.php @@ -61,6 +61,7 @@ public function __construct( /** * {@inheritDoc} */ + #[\Override] public function getEstimatedExportSize(IUser $user): int|float { return 0; } @@ -68,6 +69,7 @@ public function getEstimatedExportSize(IUser $user): int|float { /** * {@inheritDoc} */ + #[\Override] public function export( IUser $user, IExportDestination $exportDestination, @@ -93,6 +95,7 @@ public function export( /** * {@inheritDoc} */ + #[\Override] public function import( IUser $user, IImportSource $importSource, @@ -251,6 +254,7 @@ private function configureImportService(string $userId, array $data): void { /** * {@inheritDoc} */ + #[\Override] public function getId(): string { return 'deck'; } @@ -258,6 +262,7 @@ public function getId(): string { /** * {@inheritDoc} */ + #[\Override] public function getDisplayName(): string { return $this->l10n->t('Deck'); } @@ -265,6 +270,7 @@ public function getDisplayName(): string { /** * {@inheritDoc} */ + #[\Override] public function getDescription(): string { return $this->l10n->t('All boards owned by you including stacks, cards, labels, assignments, and comments'); } diff --git a/lib/Validators/AssignmentServiceValidator.php b/lib/Validators/AssignmentServiceValidator.php index 5c318de234..b170cc0a1f 100644 --- a/lib/Validators/AssignmentServiceValidator.php +++ b/lib/Validators/AssignmentServiceValidator.php @@ -10,6 +10,7 @@ namespace OCA\Deck\Validators; class AssignmentServiceValidator extends BaseValidator { + #[\Override] public function rules() { return [ 'cardId' => ['numeric'], diff --git a/lib/Validators/AttachmentServiceValidator.php b/lib/Validators/AttachmentServiceValidator.php index 81921bba27..d949765e72 100644 --- a/lib/Validators/AttachmentServiceValidator.php +++ b/lib/Validators/AttachmentServiceValidator.php @@ -9,6 +9,7 @@ namespace OCA\Deck\Validators; class AttachmentServiceValidator extends BaseValidator { + #[\Override] public function rules() { return [ 'cardId' => ['numeric'], diff --git a/lib/Validators/BoardServiceValidator.php b/lib/Validators/BoardServiceValidator.php index ab0a604bcb..d30b345d43 100644 --- a/lib/Validators/BoardServiceValidator.php +++ b/lib/Validators/BoardServiceValidator.php @@ -10,6 +10,7 @@ namespace OCA\Deck\Validators; class BoardServiceValidator extends BaseValidator { + #[\Override] public function rules() { return [ 'id' => ['numeric'], diff --git a/lib/Validators/CardServiceValidator.php b/lib/Validators/CardServiceValidator.php index ddbcf8738c..17f0174c51 100644 --- a/lib/Validators/CardServiceValidator.php +++ b/lib/Validators/CardServiceValidator.php @@ -10,6 +10,7 @@ namespace OCA\Deck\Validators; class CardServiceValidator extends BaseValidator { + #[\Override] public function rules() { return [ 'id' => ['numeric'], diff --git a/lib/Validators/LabelServiceValidator.php b/lib/Validators/LabelServiceValidator.php index 720994bceb..87e1d1c663 100644 --- a/lib/Validators/LabelServiceValidator.php +++ b/lib/Validators/LabelServiceValidator.php @@ -14,6 +14,7 @@ protected function hex_color(string $value): bool { return preg_match('/[A-Fa-f0-9]{6}/', $value) === 1; } + #[\Override] public function rules() { return [ 'id' => ['numeric'], diff --git a/lib/Validators/StackServiceValidator.php b/lib/Validators/StackServiceValidator.php index 1ba2b76483..f644d9d617 100644 --- a/lib/Validators/StackServiceValidator.php +++ b/lib/Validators/StackServiceValidator.php @@ -10,6 +10,7 @@ namespace OCA\Deck\Validators; class StackServiceValidator extends BaseValidator { + #[\Override] public function rules() { return [ 'id' => ['numeric'],