From e53bc13bb0f0dea92daf2977d482ea3ab4206635 Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Thu, 7 Dec 2023 17:35:20 +0100 Subject: [PATCH 01/14] KUNST-77: Applied security updates --- CHANGELOG.md | 3 + composer.lock | 858 +++++++++++++++++++++++++------------------------- 2 files changed, 438 insertions(+), 423 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcfdbff..c521100 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +* [PR-81](https://github.com/itk-dev/kunstdatabasen/pull/81) + Security updates. + ## [1.6.6] - 2023-11-09 * [PR-79](https://github.com/itk-dev/kunstdatabasen/pull/79) diff --git a/composer.lock b/composer.lock index d16409a..ff2c43e 100644 --- a/composer.lock +++ b/composer.lock @@ -403,16 +403,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.1", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2" + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/5b7bd66c9ff58c04c5474ab85edce442f8081cb2", - "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", "shasum": "" }, "require": { @@ -428,7 +428,7 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.35", + "phpstan/phpstan": "1.10.42", "phpstan/phpstan-strict-rules": "^1.5", "phpunit/phpunit": "9.6.13", "psalm/plugin-phpunit": "0.18.4", @@ -496,7 +496,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.1" + "source": "https://github.com/doctrine/dbal/tree/3.7.2" }, "funding": [ { @@ -512,7 +512,7 @@ "type": "tidelift" } ], - "time": "2023-10-06T05:06:20+00:00" + "time": "2023-11-19T08:06:58+00:00" }, { "name": "doctrine/deprecations", @@ -563,56 +563,59 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.10.2", + "version": "2.11.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "f28b1f78de3a2938ff05cfe751233097624cc756" + "reference": "4089f1424b724786c062aea50aae5f773449b94b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/f28b1f78de3a2938ff05cfe751233097624cc756", - "reference": "f28b1f78de3a2938ff05cfe751233097624cc756", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b", + "reference": "4089f1424b724786c062aea50aae5f773449b94b", "shasum": "" }, "require": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^3.6.0", + "doctrine/dbal": "^3.7.0 || ^4.0", "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", "php": "^7.4 || ^8.0", - "symfony/cache": "^5.4 || ^6.0", - "symfony/config": "^5.4 || ^6.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/dependency-injection": "^5.4 || ^6.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7", - "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { "doctrine/annotations": ">=3.0", - "doctrine/orm": "<2.11 || >=3.0", + "doctrine/orm": "<2.14 || >=4.0", "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^12", "doctrine/deprecations": "^1.0", - "doctrine/orm": "^2.11 || ^3.0", + "doctrine/orm": "^2.14 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", "phpunit/phpunit": "^9.5.26 || ^10.0", "psalm/plugin-phpunit": "^0.18.4", "psalm/plugin-symfony": "^4", "psr/log": "^1.1.4 || ^2.0 || ^3.0", - "symfony/phpunit-bridge": "^6.1", - "symfony/property-info": "^5.4 || ^6.0", - "symfony/proxy-manager-bridge": "^5.4 || ^6.0", - "symfony/security-bundle": "^5.4 || ^6.0", - "symfony/twig-bridge": "^5.4 || ^6.0", - "symfony/validator": "^5.4 || ^6.0", - "symfony/web-profiler-bundle": "^5.4 || ^6.0", - "symfony/yaml": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "twig/twig": "^1.34 || ^2.12 || ^3.0", "vimeo/psalm": "^4.30" }, @@ -659,7 +662,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.10.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1" }, "funding": [ { @@ -675,38 +678,44 @@ "type": "tidelift" } ], - "time": "2023-08-06T09:31:40+00:00" + "time": "2023-11-15T20:01:50+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.2.4", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e" + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", - "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/doctrine-bundle": "^2.4", "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3 ", "phpstan/phpstan": "^1.4", "phpstan/phpstan-deprecation-rules": "^1", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.3", "phpunit/phpunit": "^8.5|^9.5", - "vimeo/psalm": "^4.22" + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^3 || ^5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7", + "vimeo/psalm": "^4.30 || ^5.15" }, "type": "symfony-bundle", "autoload": { @@ -744,7 +753,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.4" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" }, "funding": [ { @@ -760,7 +769,7 @@ "type": "tidelift" } ], - "time": "2023-06-02T08:19:26+00:00" + "time": "2023-11-13T19:44:41+00:00" }, { "name": "doctrine/event-manager", @@ -1094,47 +1103,47 @@ }, { "name": "doctrine/migrations", - "version": "3.6.0", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "e542ad8bcd606d7a18d0875babb8a6d963c9c059" + "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/e542ad8bcd606d7a18d0875babb8a6d963c9c059", - "reference": "e542ad8bcd606d7a18d0875babb8a6d963c9c059", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/47af29eef49f29ebee545947e8b2a4b3be318c8a", + "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^3.5.1", + "doctrine/dbal": "^3.5.1 || ^4", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.2 || ^2.0", "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^4.4.16 || ^5.4 || ^6.0", - "symfony/stopwatch": "^4.4 || ^5.4 || ^6.0", - "symfony/var-exporter": "^6.2" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" }, "conflict": { - "doctrine/orm": "<2.12" + "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.13", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.1", - "phpunit/phpunit": "^9.5.24", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/process": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0" + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^10.3", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1176,7 +1185,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.6.0" + "source": "https://github.com/doctrine/migrations/tree/3.7.2" }, "funding": [ { @@ -1192,20 +1201,20 @@ "type": "tidelift" } ], - "time": "2023-02-15T18:49:46+00:00" + "time": "2023-12-05T11:35:05+00:00" }, { "name": "doctrine/orm", - "version": "2.16.2", + "version": "2.17.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0" + "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/17500f56eaa930f5cd14d765bc2cd851c7d37cc0", - "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0", + "url": "https://api.github.com/repos/doctrine/orm/zipball/1a4fe6e0bb67762370937a7e6cee3da40a9122d1", + "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1", "shasum": "" }, "require": { @@ -1223,7 +1232,7 @@ "ext-ctype": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^4.2 || ^5.0 || ^6.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.16" }, @@ -1234,14 +1243,14 @@ "doctrine/annotations": "^1.13 || ^2", "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.10.28", + "phpstan/phpstan": "~1.4.10 || 1.10.35", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.14.1" + "vimeo/psalm": "4.30.0 || 5.15.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1291,9 +1300,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.16.2" + "source": "https://github.com/doctrine/orm/tree/2.17.1" }, - "time": "2023-08-27T18:21:56+00:00" + "time": "2023-11-17T06:25:40+00:00" }, { "name": "doctrine/persistence", @@ -1447,20 +1456,20 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.17.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -1502,22 +1511,22 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" }, - "time": "2022-09-18T07:06:19+00:00" + "time": "2023-11-17T15:01:25+00:00" }, { "name": "gedmo/doctrine-extensions", - "version": "v3.13.0", + "version": "v3.14.0", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "291d0c527d2dc9ee07b888c9a4e2a179893f08ab" + "reference": "3b5b5cba476b4ae32a55ef69ef2e59d64d5893cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/291d0c527d2dc9ee07b888c9a4e2a179893f08ab", - "reference": "291d0c527d2dc9ee07b888c9a4e2a179893f08ab", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/3b5b5cba476b4ae32a55ef69ef2e59d64d5893cf", + "reference": "3b5b5cba476b4ae32a55ef69ef2e59d64d5893cf", "shasum": "" }, "require": { @@ -1527,33 +1536,33 @@ "doctrine/common": "^2.13 || ^3.0", "doctrine/event-manager": "^1.2 || ^2.0", "doctrine/persistence": "^2.2 || ^3.0", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/cache": "^4.4 || ^5.3 || ^6.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", "symfony/deprecation-contracts": "^2.1 || ^3.0" }, "conflict": { - "doctrine/dbal": "<2.13.1 || ^3.0 <3.2", + "doctrine/dbal": "<3.2", "doctrine/mongodb-odm": "<2.3", - "doctrine/orm": "<2.10.2 || 2.16.0 || 2.16.1", + "doctrine/orm": "<2.14.0 || 2.16.0 || 2.16.1", "sebastian/comparator": "<2.0" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13.1 || ^3.2", + "doctrine/dbal": "^3.2", "doctrine/doctrine-bundle": "^2.3", "doctrine/mongodb-odm": "^2.3", - "doctrine/orm": "^2.10.2", - "friendsofphp/php-cs-fixer": "^3.4.0 <3.10", - "nesbot/carbon": "^2.55", + "doctrine/orm": "^2.14.0", + "friendsofphp/php-cs-fixer": "^3.14.0", + "nesbot/carbon": "^2.71 || 3.x-dev as 3.0", "phpstan/phpstan": "^1.10.2", "phpstan/phpstan-doctrine": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^8.5 || ^9.5", - "rector/rector": "^0.15.20", - "symfony/console": "^4.4 || ^5.3 || ^6.0", - "symfony/phpunit-bridge": "^6.0", - "symfony/yaml": "^4.4 || ^5.3 || ^6.0" + "phpunit/phpunit": "^9.6", + "rector/rector": "^0.18", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", @@ -1610,7 +1619,7 @@ "support": { "email": "gediminas.morkevicius@gmail.com", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.13.0", + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.14.0", "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" }, "funding": [ @@ -1631,7 +1640,7 @@ "type": "github" } ], - "time": "2023-09-06T13:16:12+00:00" + "time": "2023-12-03T09:10:34+00:00" }, { "name": "imagine/imagine", @@ -1801,16 +1810,16 @@ }, { "name": "knplabs/knp-components", - "version": "v4.2.0", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/knp-components.git", - "reference": "1f6560cc1247c8fe7ba75fe4f80f16ffcc9379a0" + "reference": "ac704489426b090ea0e7ff4d1dd06e26baa49ee7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/knp-components/zipball/1f6560cc1247c8fe7ba75fe4f80f16ffcc9379a0", - "reference": "1f6560cc1247c8fe7ba75fe4f80f16ffcc9379a0", + "url": "https://api.github.com/repos/KnpLabs/knp-components/zipball/ac704489426b090ea0e7ff4d1dd06e26baa49ee7", + "reference": "ac704489426b090ea0e7ff4d1dd06e26baa49ee7", "shasum": "" }, "require": { @@ -1830,9 +1839,9 @@ "propel/propel1": "^1.7", "ruflin/elastica": "^7.0", "solarium/solarium": "^6.0", - "symfony/http-foundation": "^5.4 || ^6.0", - "symfony/http-kernel": "^5.4 || ^6.0", - "symfony/property-access": "^5.4 || ^6.0" + "symfony/http-foundation": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/property-access": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/common": "to allow usage pagination with Doctrine ArrayCollection", @@ -1881,41 +1890,41 @@ ], "support": { "issues": "https://github.com/KnpLabs/knp-components/issues", - "source": "https://github.com/KnpLabs/knp-components/tree/v4.2.0" + "source": "https://github.com/KnpLabs/knp-components/tree/v4.3.0" }, - "time": "2023-05-09T10:21:13+00:00" + "time": "2023-10-16T09:30:16+00:00" }, { "name": "knplabs/knp-paginator-bundle", - "version": "v6.2.0", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpPaginatorBundle.git", - "reference": "8da698f0856b1d9c9c02dcacbfc382c5c9440c80" + "reference": "f51fe26df07a08c1b3f272474401ef8a008b190c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpPaginatorBundle/zipball/8da698f0856b1d9c9c02dcacbfc382c5c9440c80", - "reference": "8da698f0856b1d9c9c02dcacbfc382c5c9440c80", + "url": "https://api.github.com/repos/KnpLabs/KnpPaginatorBundle/zipball/f51fe26df07a08c1b3f272474401ef8a008b190c", + "reference": "f51fe26df07a08c1b3f272474401ef8a008b190c", "shasum": "" }, "require": { "knplabs/knp-components": "^4.1", - "php": "^8.0", - "symfony/config": "^6.0", - "symfony/dependency-injection": "^6.0", - "symfony/event-dispatcher": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/routing": "^6.0", - "symfony/translation": "^6.0", + "php": "^8.1", + "symfony/config": "^6.3 || ^7.0", + "symfony/dependency-injection": "^6.3 || ^7.0", + "symfony/event-dispatcher": "^6.3 || ^7.0", + "symfony/http-foundation": "^6.3 || ^7.0", + "symfony/http-kernel": "^6.3 || ^7.0", + "symfony/routing": "^6.3 || ^7.0", + "symfony/translation": "^6.3 || ^7.0", "twig/twig": "^3.0" }, "require-dev": { "phpstan/phpstan": "^1.9", "phpunit/phpunit": "^9.5", - "symfony/expression-language": "^6.0", - "symfony/templating": "^6.0" + "symfony/expression-language": "^6.3 || ^7.0", + "symfony/templating": "^6.3 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -1955,39 +1964,39 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpPaginatorBundle/issues", - "source": "https://github.com/KnpLabs/KnpPaginatorBundle/tree/v6.2.0" + "source": "https://github.com/KnpLabs/KnpPaginatorBundle/tree/v6.3.0" }, - "time": "2023-03-25T06:51:40+00:00" + "time": "2023-11-19T08:15:37+00:00" }, { "name": "liip/imagine-bundle", - "version": "2.12.0", + "version": "2.12.1", "source": { "type": "git", "url": "https://github.com/liip/LiipImagineBundle.git", - "reference": "1f5d77626f7104bc98c17194ed9f2153b91564df" + "reference": "cc19da6a02cfc472627cd441186cc6d25f550a53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/1f5d77626f7104bc98c17194ed9f2153b91564df", - "reference": "1f5d77626f7104bc98c17194ed9f2153b91564df", + "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/cc19da6a02cfc472627cd441186cc6d25f550a53", + "reference": "cc19da6a02cfc472627cd441186cc6d25f550a53", "shasum": "" }, "require": { "ext-mbstring": "*", "imagine/imagine": "^1.3.2", "php": "^7.2|^8.0", - "symfony/filesystem": "^3.4|^4.4|^5.3|^6.0", - "symfony/finder": "^3.4|^4.4|^5.3|^6.0", - "symfony/framework-bundle": "^3.4.23|^4.4|^5.3|^6.0", - "symfony/mime": "^4.4|^5.3|^6.0", - "symfony/options-resolver": "^3.4|^4.4|^5.3|^6.0", - "symfony/process": "^3.4|^4.4|^5.3|^6.0", + "symfony/filesystem": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/finder": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/framework-bundle": "^3.4.23|^4.4|^5.3|^6.0|^7.0", + "symfony/mime": "^4.4|^5.3|^6.0|^7.0", + "symfony/options-resolver": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/process": "^3.4|^4.4|^5.3|^6.0|^7.0", "twig/twig": "^1.44|^2.9|^3.0" }, "require-dev": { "amazonwebservices/aws-sdk-for-php": "^1.0", - "aws/aws-sdk-php": "^2.4", + "aws/aws-sdk-php": "^2.4|^3.0", "doctrine/cache": "^1.11|^2.0", "doctrine/persistence": "^1.3|^2.0", "enqueue/enqueue-bundle": "^0.9|^0.10", @@ -1996,16 +2005,16 @@ "phpstan/phpstan": "^1.10.0", "psr/cache": "^1.0|^2.0|^3.0", "psr/log": "^1.0", - "symfony/browser-kit": "^3.4|^4.4|^5.3|^6.0", - "symfony/cache": "^3.4|^4.4|^5.3|^6.0", - "symfony/console": "^3.4|^4.4|^5.3|^6.0", - "symfony/dependency-injection": "^3.4|^4.4|^5.3|^6.0", - "symfony/form": "^3.4|^4.4|^5.3|^6.0", - "symfony/messenger": "^4.4|^5.3|^6.0", - "symfony/phpunit-bridge": "^5.3", + "symfony/browser-kit": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/cache": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/console": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/dependency-injection": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/form": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/messenger": "^4.4|^5.3|^6.0|^7.0", + "symfony/phpunit-bridge": "^5.3|^6.0|^7.0", "symfony/templating": "^3.4|^4.4|^5.3|^6.0", - "symfony/validator": "^3.4|^4.4|^5.3|^6.0", - "symfony/yaml": "^3.4|^4.4|^5.3|^6.0" + "symfony/validator": "^3.4|^4.4|^5.3|^6.0|^7.0", + "symfony/yaml": "^3.4|^4.4|^5.3|^6.0|^7.0" }, "suggest": { "alcaeus/mongo-php-adapter": "required for mongodb components", @@ -2044,7 +2053,7 @@ } ], "description": "This bundle provides an image manipulation abstraction toolkit for Symfony-based projects.", - "homepage": "http://liip.ch", + "homepage": "https://www.liip.ch", "keywords": [ "bundle", "image", @@ -2058,9 +2067,9 @@ ], "support": { "issues": "https://github.com/liip/LiipImagineBundle/issues", - "source": "https://github.com/liip/LiipImagineBundle/tree/2.12.0" + "source": "https://github.com/liip/LiipImagineBundle/tree/2.12.1" }, - "time": "2023-09-23T14:59:30+00:00" + "time": "2023-11-14T07:59:41+00:00" }, { "name": "maennchen/zipstream-php", @@ -2316,16 +2325,16 @@ }, { "name": "openspout/openspout", - "version": "v4.19.0", + "version": "v4.22.0", "source": { "type": "git", "url": "https://github.com/openspout/openspout.git", - "reference": "b2d9a007eff4cbdf0a3befe63d696c365ad1abc0" + "reference": "ad3dd535cf01623551da401fe170355f56f4f929" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/openspout/openspout/zipball/b2d9a007eff4cbdf0a3befe63d696c365ad1abc0", - "reference": "b2d9a007eff4cbdf0a3befe63d696c365ad1abc0", + "url": "https://api.github.com/repos/openspout/openspout/zipball/ad3dd535cf01623551da401fe170355f56f4f929", + "reference": "ad3dd535cf01623551da401fe170355f56f4f929", "shasum": "" }, "require": { @@ -2335,17 +2344,17 @@ "ext-libxml": "*", "ext-xmlreader": "*", "ext-zip": "*", - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "ext-zlib": "*", - "friendsofphp/php-cs-fixer": "^3.35.1", - "infection/infection": "^0.27.6", + "friendsofphp/php-cs-fixer": "^3.39.0", + "infection/infection": "^0.27.8", "phpbench/phpbench": "^1.2.14", - "phpstan/phpstan": "^1.10.39", + "phpstan/phpstan": "^1.10.44", "phpstan/phpstan-phpunit": "^1.3.15", - "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^10.4.1" + "phpstan/phpstan-strict-rules": "^1.5.2", + "phpunit/phpunit": "^10.4.2" }, "suggest": { "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", @@ -2393,7 +2402,7 @@ ], "support": { "issues": "https://github.com/openspout/openspout/issues", - "source": "https://github.com/openspout/openspout/tree/v4.19.0" + "source": "https://github.com/openspout/openspout/tree/v4.22.0" }, "funding": [ { @@ -2405,7 +2414,7 @@ "type": "github" } ], - "time": "2023-10-19T11:52:22+00:00" + "time": "2023-11-22T15:34:18+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2682,16 +2691,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.2", + "version": "1.24.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bcad8d995980440892759db0c32acae7c8e79442" + "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", - "reference": "bcad8d995980440892759db0c32acae7c8e79442", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", "shasum": "" }, "require": { @@ -2723,9 +2732,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/1.24.2" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4" }, - "time": "2023-09-26T12:28:12+00:00" + "time": "2023-11-26T18:29:22+00:00" }, { "name": "psr/cache", @@ -3265,16 +3274,16 @@ }, { "name": "symfony/asset", - "version": "v6.3.0", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "b77a4cc8e266b7e0db688de740f9ee7253aa411c" + "reference": "b2382a403f2111836301623d89e9af3d84989525" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/b77a4cc8e266b7e0db688de740f9ee7253aa411c", - "reference": "b77a4cc8e266b7e0db688de740f9ee7253aa411c", + "url": "https://api.github.com/repos/symfony/asset/zipball/b2382a403f2111836301623d89e9af3d84989525", + "reference": "b2382a403f2111836301623d89e9af3d84989525", "shasum": "" }, "require": { @@ -3314,7 +3323,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v6.3.0" + "source": "https://github.com/symfony/asset/tree/v6.3.8" }, "funding": [ { @@ -3330,20 +3339,20 @@ "type": "tidelift" } ], - "time": "2023-04-21T14:41:17+00:00" + "time": "2023-10-31T08:07:48+00:00" }, { "name": "symfony/cache", - "version": "v6.3.6", + "version": "v6.3.9", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "84aff8d948d6292d2b5a01ac622760be44dddc72" + "reference": "8c6e84272e4febbb1fed3c5b9f3c722537c2bd55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/84aff8d948d6292d2b5a01ac622760be44dddc72", - "reference": "84aff8d948d6292d2b5a01ac622760be44dddc72", + "url": "https://api.github.com/repos/symfony/cache/zipball/8c6e84272e4febbb1fed3c5b9f3c722537c2bd55", + "reference": "8c6e84272e4febbb1fed3c5b9f3c722537c2bd55", "shasum": "" }, "require": { @@ -3410,7 +3419,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.6" + "source": "https://github.com/symfony/cache/tree/v6.3.9" }, "funding": [ { @@ -3426,20 +3435,20 @@ "type": "tidelift" } ], - "time": "2023-10-17T14:44:58+00:00" + "time": "2023-11-24T13:24:35+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b" + "reference": "1d74b127da04ffa87aa940abe15446fa89653778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ad945640ccc0ae6e208bcea7d7de4b39b569896b", - "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778", "shasum": "" }, "require": { @@ -3486,7 +3495,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" }, "funding": [ { @@ -3502,7 +3511,7 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-09-25T12:52:38+00:00" }, { "name": "symfony/clock", @@ -3579,16 +3588,16 @@ }, { "name": "symfony/config", - "version": "v6.3.2", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467" + "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", - "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", + "url": "https://api.github.com/repos/symfony/config/zipball/b7a63887960359e5b59b15826fa9f9be10acbe88", + "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88", "shasum": "" }, "require": { @@ -3634,7 +3643,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.3.2" + "source": "https://github.com/symfony/config/tree/v6.3.8" }, "funding": [ { @@ -3650,20 +3659,20 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:22:16+00:00" + "time": "2023-11-09T08:28:21+00:00" }, { "name": "symfony/console", - "version": "v6.3.4", + "version": "v6.3.9", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + "reference": "0566dbd051f8648d980592c7849f5d90d2c7c60c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", + "url": "https://api.github.com/repos/symfony/console/zipball/0566dbd051f8648d980592c7849f5d90d2c7c60c", + "reference": "0566dbd051f8648d980592c7849f5d90d2c7c60c", "shasum": "" }, "require": { @@ -3724,7 +3733,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.4" + "source": "https://github.com/symfony/console/tree/v6.3.9" }, "funding": [ { @@ -3740,20 +3749,20 @@ "type": "tidelift" } ], - "time": "2023-08-16T10:10:12+00:00" + "time": "2023-11-20T16:36:29+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.3.5", + "version": "v6.3.10", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "2ed62b3bf98346e1f45529a7b6be2196739bb993" + "reference": "51383a1d9d7e93d5c3c76ddc32672de1b3e82c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2ed62b3bf98346e1f45529a7b6be2196739bb993", - "reference": "2ed62b3bf98346e1f45529a7b6be2196739bb993", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/51383a1d9d7e93d5c3c76ddc32672de1b3e82c77", + "reference": "51383a1d9d7e93d5c3c76ddc32672de1b3e82c77", "shasum": "" }, "require": { @@ -3805,7 +3814,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.3.5" + "source": "https://github.com/symfony/dependency-injection/tree/v6.3.10" }, "funding": [ { @@ -3821,11 +3830,11 @@ "type": "tidelift" } ], - "time": "2023-09-25T16:46:40+00:00" + "time": "2023-12-01T14:25:58+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -3872,7 +3881,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.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -3892,16 +3901,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.3.7", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "c8af292f733cc28149485639177c5f2b67dff200" + "reference": "8842d289d41320a0f725e996b4e58d84af398a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/c8af292f733cc28149485639177c5f2b67dff200", - "reference": "c8af292f733cc28149485639177c5f2b67dff200", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/8842d289d41320a0f725e996b4e58d84af398a9e", + "reference": "8842d289d41320a0f725e996b4e58d84af398a9e", "shasum": "" }, "require": { @@ -3982,7 +3991,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.7" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.8" }, "funding": [ { @@ -3998,7 +4007,7 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:11:45+00:00" + "time": "2023-10-31T08:07:48+00:00" }, { "name": "symfony/dotenv", @@ -4230,7 +4239,7 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -4286,7 +4295,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -4433,16 +4442,16 @@ }, { "name": "symfony/flex", - "version": "v2.4.1", + "version": "v2.4.2", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "ae6dea68771c5fca9d172e0c0910bdd06199f6f4" + "reference": "67ee785f1aedada76461de7a7ec10cd7f8ff8d36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/ae6dea68771c5fca9d172e0c0910bdd06199f6f4", - "reference": "ae6dea68771c5fca9d172e0c0910bdd06199f6f4", + "url": "https://api.github.com/repos/symfony/flex/zipball/67ee785f1aedada76461de7a7ec10cd7f8ff8d36", + "reference": "67ee785f1aedada76461de7a7ec10cd7f8ff8d36", "shasum": "" }, "require": { @@ -4478,7 +4487,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.4.1" + "source": "https://github.com/symfony/flex/tree/v2.4.2" }, "funding": [ { @@ -4494,20 +4503,20 @@ "type": "tidelift" } ], - "time": "2023-10-30T18:35:17+00:00" + "time": "2023-12-05T14:09:35+00:00" }, { "name": "symfony/form", - "version": "v6.3.7", + "version": "v6.3.10", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "e6743d188f168643cb247f65cbad09ddb1dfcfe5" + "reference": "5afc7334b9d60dd0799612faf3d103b25bc60ae4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/e6743d188f168643cb247f65cbad09ddb1dfcfe5", - "reference": "e6743d188f168643cb247f65cbad09ddb1dfcfe5", + "url": "https://api.github.com/repos/symfony/form/zipball/5afc7334b9d60dd0799612faf3d103b25bc60ae4", + "reference": "5afc7334b9d60dd0799612faf3d103b25bc60ae4", "shasum": "" }, "require": { @@ -4575,7 +4584,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.3.7" + "source": "https://github.com/symfony/form/tree/v6.3.10" }, "funding": [ { @@ -4591,20 +4600,20 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:11:45+00:00" + "time": "2023-11-30T11:08:22+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.3.7", + "version": "v6.3.9", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "dba20792c726c30d455626eddfb2db008f64085f" + "reference": "f83d20092e98c3ae8b5874b8f0787546c5c61cda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/dba20792c726c30d455626eddfb2db008f64085f", - "reference": "dba20792c726c30d455626eddfb2db008f64085f", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f83d20092e98c3ae8b5874b8f0787546c5c61cda", + "reference": "f83d20092e98c3ae8b5874b8f0787546c5c61cda", "shasum": "" }, "require": { @@ -4719,7 +4728,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.3.7" + "source": "https://github.com/symfony/framework-bundle/tree/v6.3.9" }, "funding": [ { @@ -4735,20 +4744,20 @@ "type": "tidelift" } ], - "time": "2023-10-26T18:15:14+00:00" + "time": "2023-11-24T10:25:33+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.7", + "version": "v6.3.9", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "59d1837d5d992d16c2628cd0d6b76acf8d69b33e" + "reference": "49a04fd3a21edc9ce503ab78e9f342805fefe780" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/59d1837d5d992d16c2628cd0d6b76acf8d69b33e", - "reference": "59d1837d5d992d16c2628cd0d6b76acf8d69b33e", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49a04fd3a21edc9ce503ab78e9f342805fefe780", + "reference": "49a04fd3a21edc9ce503ab78e9f342805fefe780", "shasum": "" }, "require": { @@ -4796,7 +4805,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.7" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.9" }, "funding": [ { @@ -4812,20 +4821,20 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:55:27+00:00" + "time": "2023-11-20T16:36:29+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.7", + "version": "v6.3.10", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "6d4098095f93279d9536a0e9124439560cc764d0" + "reference": "8d8e7aa60593fd0a2e3c1cea08cc687314841b61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6d4098095f93279d9536a0e9124439560cc764d0", - "reference": "6d4098095f93279d9536a0e9124439560cc764d0", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8d8e7aa60593fd0a2e3c1cea08cc687314841b61", + "reference": "8d8e7aa60593fd0a2e3c1cea08cc687314841b61", "shasum": "" }, "require": { @@ -4909,7 +4918,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.7" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.10" }, "funding": [ { @@ -4925,7 +4934,7 @@ "type": "tidelift" } ], - "time": "2023-10-29T14:31:45+00:00" + "time": "2023-12-01T16:57:27+00:00" }, { "name": "symfony/mime", @@ -5080,16 +5089,16 @@ }, { "name": "symfony/password-hasher", - "version": "v6.3.5", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "278d3a49715073879f75e372ad80b8cfeca949d3" + "reference": "82161c4bebf77900372083ec6e484b5f055b0cba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/278d3a49715073879f75e372ad80b8cfeca949d3", - "reference": "278d3a49715073879f75e372ad80b8cfeca949d3", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/82161c4bebf77900372083ec6e484b5f055b0cba", + "reference": "82161c4bebf77900372083ec6e484b5f055b0cba", "shasum": "" }, "require": { @@ -5132,7 +5141,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v6.3.5" + "source": "https://github.com/symfony/password-hasher/tree/v6.3.8" }, "funding": [ { @@ -5148,7 +5157,7 @@ "type": "tidelift" } ], - "time": "2023-09-25T17:05:16+00:00" + "time": "2023-11-06T10:58:05+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -5792,16 +5801,16 @@ }, { "name": "symfony/property-info", - "version": "v6.3.0", + "version": "v6.3.9", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "7f3a03716112269741fe2a809f8f791a371d1fcd" + "reference": "664ae7ad443d7cc591ff3e15496b954e4cefe729" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/7f3a03716112269741fe2a809f8f791a371d1fcd", - "reference": "7f3a03716112269741fe2a809f8f791a371d1fcd", + "url": "https://api.github.com/repos/symfony/property-info/zipball/664ae7ad443d7cc591ff3e15496b954e4cefe729", + "reference": "664ae7ad443d7cc591ff3e15496b954e4cefe729", "shasum": "" }, "require": { @@ -5855,7 +5864,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.3.0" + "source": "https://github.com/symfony/property-info/tree/v6.3.9" }, "funding": [ { @@ -5871,20 +5880,20 @@ "type": "tidelift" } ], - "time": "2023-05-19T08:06:44+00:00" + "time": "2023-11-24T11:57:32+00:00" }, { "name": "symfony/routing", - "version": "v6.3.5", + "version": "v6.3.10", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31" + "reference": "cb7404232d49dd11cc971b832fcbd49e7c22b049" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31", - "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31", + "url": "https://api.github.com/repos/symfony/routing/zipball/cb7404232d49dd11cc971b832fcbd49e7c22b049", + "reference": "cb7404232d49dd11cc971b832fcbd49e7c22b049", "shasum": "" }, "require": { @@ -5938,7 +5947,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.5" + "source": "https://github.com/symfony/routing/tree/v6.3.10" }, "funding": [ { @@ -5954,7 +5963,7 @@ "type": "tidelift" } ], - "time": "2023-09-20T16:05:51+00:00" + "time": "2023-12-01T14:25:58+00:00" }, { "name": "symfony/runtime", @@ -6037,16 +6046,16 @@ }, { "name": "symfony/security-bundle", - "version": "v6.3.7", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "8ece4fd6e242acbabad4461feae7c52fe1982c48" + "reference": "57889ebb1ac3403d550c787c4fde127261abacb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/8ece4fd6e242acbabad4461feae7c52fe1982c48", - "reference": "8ece4fd6e242acbabad4461feae7c52fe1982c48", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/57889ebb1ac3403d550c787c4fde127261abacb6", + "reference": "57889ebb1ac3403d550c787c4fde127261abacb6", "shasum": "" }, "require": { @@ -6128,7 +6137,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v6.3.7" + "source": "https://github.com/symfony/security-bundle/tree/v6.3.8" }, "funding": [ { @@ -6144,7 +6153,7 @@ "type": "tidelift" } ], - "time": "2023-10-26T18:15:14+00:00" + "time": "2023-11-09T09:33:10+00:00" }, { "name": "symfony/security-core", @@ -6301,16 +6310,16 @@ }, { "name": "symfony/security-http", - "version": "v6.3.6", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "573ef96ab62d509ac953362fa61f9d1bd283f3a7" + "reference": "19f7b5f5d20879a976d6d376e359bc975dfc6002" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/573ef96ab62d509ac953362fa61f9d1bd283f3a7", - "reference": "573ef96ab62d509ac953362fa61f9d1bd283f3a7", + "url": "https://api.github.com/repos/symfony/security-http/zipball/19f7b5f5d20879a976d6d376e359bc975dfc6002", + "reference": "19f7b5f5d20879a976d6d376e359bc975dfc6002", "shasum": "" }, "require": { @@ -6369,7 +6378,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.3.6" + "source": "https://github.com/symfony/security-http/tree/v6.3.8" }, "funding": [ { @@ -6385,20 +6394,20 @@ "type": "tidelift" } ], - "time": "2023-10-13T10:26:24+00:00" + "time": "2023-11-09T21:20:12+00:00" }, { "name": "symfony/serializer", - "version": "v6.3.7", + "version": "v6.3.10", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "641472dd3d6dc3c4d0fdd1496ebd1b55c72e43d9" + "reference": "6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/641472dd3d6dc3c4d0fdd1496ebd1b55c72e43d9", - "reference": "641472dd3d6dc3c4d0fdd1496ebd1b55c72e43d9", + "url": "https://api.github.com/repos/symfony/serializer/zipball/6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f", + "reference": "6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f", "shasum": "" }, "require": { @@ -6463,7 +6472,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.3.7" + "source": "https://github.com/symfony/serializer/tree/v6.3.10" }, "funding": [ { @@ -6479,20 +6488,20 @@ "type": "tidelift" } ], - "time": "2023-10-26T18:15:14+00:00" + "time": "2023-12-01T14:25:58+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", "shasum": "" }, "require": { @@ -6545,7 +6554,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" }, "funding": [ { @@ -6561,7 +6570,7 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-07-30T20:28:31+00:00" }, { "name": "symfony/stopwatch", @@ -6627,16 +6636,16 @@ }, { "name": "symfony/string", - "version": "v6.3.5", + "version": "v6.3.9", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" + "reference": "56427887aeaf540e9bbd121ad6c43f14ad3ce136" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", - "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", + "url": "https://api.github.com/repos/symfony/string/zipball/56427887aeaf540e9bbd121ad6c43f14ad3ce136", + "reference": "56427887aeaf540e9bbd121ad6c43f14ad3ce136", "shasum": "" }, "require": { @@ -6693,7 +6702,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.5" + "source": "https://github.com/symfony/string/tree/v6.3.9" }, "funding": [ { @@ -6709,7 +6718,7 @@ "type": "tidelift" } ], - "time": "2023-09-18T10:38:32+00:00" + "time": "2023-11-28T20:40:29+00:00" }, { "name": "symfony/translation", @@ -6808,16 +6817,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", "shasum": "" }, "require": { @@ -6866,7 +6875,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" }, "funding": [ { @@ -6882,20 +6891,20 @@ "type": "tidelift" } ], - "time": "2023-05-30T17:17:10+00:00" + "time": "2023-07-25T15:08:44+00:00" }, { "name": "symfony/twig-bridge", - "version": "v6.3.5", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "18f2cbe1d46ad43c4d3bd45e5e6279172068e064" + "reference": "c51407623959a626784ff302419026f56dc4e1ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/18f2cbe1d46ad43c4d3bd45e5e6279172068e064", - "reference": "18f2cbe1d46ad43c4d3bd45e5e6279172068e064", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/c51407623959a626784ff302419026f56dc4e1ba", + "reference": "c51407623959a626784ff302419026f56dc4e1ba", "shasum": "" }, "require": { @@ -6974,7 +6983,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.3.5" + "source": "https://github.com/symfony/twig-bridge/tree/v6.3.8" }, "funding": [ { @@ -6990,20 +6999,20 @@ "type": "tidelift" } ], - "time": "2023-09-12T06:57:20+00:00" + "time": "2023-11-09T21:20:12+00:00" }, { "name": "symfony/twig-bundle", - "version": "v6.3.0", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea" + "reference": "82429320fe931dd50825ec08140c54b3a315bf79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea", - "reference": "d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/82429320fe931dd50825ec08140c54b3a315bf79", + "reference": "82429320fe931dd50825ec08140c54b3a315bf79", "shasum": "" }, "require": { @@ -7059,7 +7068,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v6.3.0" + "source": "https://github.com/symfony/twig-bundle/tree/v6.3.8" }, "funding": [ { @@ -7075,20 +7084,20 @@ "type": "tidelift" } ], - "time": "2023-05-06T09:53:41+00:00" + "time": "2023-10-31T08:07:48+00:00" }, { "name": "symfony/validator", - "version": "v6.3.7", + "version": "v6.3.9", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "9cc736663fa5839b9710ac2c303bb0b951014fc1" + "reference": "c118889931856af47b0732b609f3ac2ddccd1da6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/9cc736663fa5839b9710ac2c303bb0b951014fc1", - "reference": "9cc736663fa5839b9710ac2c303bb0b951014fc1", + "url": "https://api.github.com/repos/symfony/validator/zipball/c118889931856af47b0732b609f3ac2ddccd1da6", + "reference": "c118889931856af47b0732b609f3ac2ddccd1da6", "shasum": "" }, "require": { @@ -7155,7 +7164,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.3.7" + "source": "https://github.com/symfony/validator/tree/v6.3.9" }, "funding": [ { @@ -7171,20 +7180,20 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:11:45+00:00" + "time": "2023-11-29T07:44:47+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.6", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97" + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/999ede244507c32b8e43aebaa10e9fce20de7c97", - "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/81acabba9046550e89634876ca64bfcd3c06aa0a", + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a", "shasum": "" }, "require": { @@ -7239,7 +7248,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.6" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.8" }, "funding": [ { @@ -7255,20 +7264,20 @@ "type": "tidelift" } ], - "time": "2023-10-12T18:45:56+00:00" + "time": "2023-11-08T10:42:36+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.6", + "version": "v6.3.10", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "374d289c13cb989027274c86206ddc63b16a2441" + "reference": "7bfcf232a9c7e4acad00e96774e340eb86d10bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/374d289c13cb989027274c86206ddc63b16a2441", - "reference": "374d289c13cb989027274c86206ddc63b16a2441", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/7bfcf232a9c7e4acad00e96774e340eb86d10bf0", + "reference": "7bfcf232a9c7e4acad00e96774e340eb86d10bf0", "shasum": "" }, "require": { @@ -7313,7 +7322,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.6" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.10" }, "funding": [ { @@ -7329,7 +7338,7 @@ "type": "tidelift" } ], - "time": "2023-10-13T09:16:49+00:00" + "time": "2023-11-29T16:00:50+00:00" }, { "name": "symfony/webpack-encore-bundle", @@ -7404,16 +7413,16 @@ }, { "name": "symfony/yaml", - "version": "v6.3.7", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "9758b6c69d179936435d0ffb577c3708d57e38a8" + "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/9758b6c69d179936435d0ffb577c3708d57e38a8", - "reference": "9758b6c69d179936435d0ffb577c3708d57e38a8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/3493af8a8dad7fa91c77fa473ba23ecd95334a92", + "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92", "shasum": "" }, "require": { @@ -7456,7 +7465,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.7" + "source": "https://github.com/symfony/yaml/tree/v6.3.8" }, "funding": [ { @@ -7472,31 +7481,31 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:31:00+00:00" + "time": "2023-11-06T10:58:05+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.7.1", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3" + "reference": "32807183753de0388c8e59f7ac2d13bb47311140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", - "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/32807183753de0388c8e59f7ac2d13bb47311140", + "reference": "32807183753de0388c8e59f7ac2d13bb47311140", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/framework-bundle": "^5.4|^6.0", - "symfony/twig-bundle": "^5.4|^6.0", - "twig/twig": "^2.7|^3.0" + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "twig/twig": "^3.0" }, "require-dev": { "league/commonmark": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4|^6.3", + "symfony/phpunit-bridge": "^6.4|^7.0", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^2.12|^3.0", "twig/html-extra": "^2.12|^3.0", @@ -7534,7 +7543,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.7.1" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.8.0" }, "funding": [ { @@ -7546,30 +7555,31 @@ "type": "tidelift" } ], - "time": "2023-07-29T15:34:56+00:00" + "time": "2023-11-21T14:02:01+00:00" }, { "name": "twig/twig", - "version": "v3.7.1", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554" + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", - "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4.9|^6.3" + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" }, "type": "library", "autoload": { @@ -7605,7 +7615,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.7.1" + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" }, "funding": [ { @@ -7617,7 +7627,7 @@ "type": "tidelift" } ], - "time": "2023-08-28T11:09:02+00:00" + "time": "2023-11-21T18:54:41+00:00" }, { "name": "vich/uploader-bundle", @@ -8008,38 +8018,40 @@ }, { "name": "doctrine/data-fixtures", - "version": "1.6.7", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "ae4e845decbe177348fdbecd04331f4fb96aa301" + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/ae4e845decbe177348fdbecd04331f4fb96aa301", - "reference": "ae4e845decbe177348fdbecd04331f4fb96aa301", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", "shasum": "" }, "require": { "doctrine/deprecations": "^0.5.3 || ^1.0", - "doctrine/persistence": "^1.3.3 || ^2.0 || ^3.0", - "php": "^7.2 || ^8.0" + "doctrine/persistence": "^2.0|^3.0", + "php": "^7.4 || ^8.0" }, "conflict": { - "doctrine/dbal": "<2.13", - "doctrine/orm": "<2.14", + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "doctrine/dbal": "^2.13 || ^3.0", + "doctrine/annotations": "^1.12 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", - "doctrine/orm": "^2.14", + "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^8.5 || ^9.5 || ^10.0", - "symfony/cache": "^5.0 || ^6.0", - "vimeo/psalm": "^4.10 || ^5.9" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6.13 || ^10.4.2", + "symfony/cache": "^5.4 || ^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6.3 || ^7", + "vimeo/psalm": "^5.9" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -8070,7 +8082,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.6.7" + "source": "https://github.com/doctrine/data-fixtures/tree/1.7.0" }, "funding": [ { @@ -8086,7 +8098,7 @@ "type": "tidelift" } ], - "time": "2023-08-17T21:15:33+00:00" + "time": "2023-11-24T11:18:31+00:00" }, { "name": "fakerphp/faker", @@ -8158,50 +8170,50 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.38.0", + "version": "v3.40.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "7e6070026e76aa09d77a47519625c86593fb8e31" + "reference": "4344562a516b76afe8f2d64b2e52214c30d64ed8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7e6070026e76aa09d77a47519625c86593fb8e31", - "reference": "7e6070026e76aa09d77a47519625c86593fb8e31", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4344562a516b76afe8f2d64b2e52214c30d64ed8", + "reference": "4344562a516b76afe8f2d64b2e52214c30d64ed8", "shasum": "" }, "require": { - "composer/semver": "^3.3", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", + "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpspec/prophecy": "^1.17", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "phpunit/phpunit": "^9.6", + "symfony/phpunit-bridge": "^6.3.8 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -8239,7 +8251,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.38.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.2" }, "funding": [ { @@ -8247,20 +8259,20 @@ "type": "github" } ], - "time": "2023-11-07T08:44:54+00:00" + "time": "2023-12-03T09:21:33+00:00" }, { "name": "friendsoftwig/twigcs", - "version": "6.2.0", + "version": "6.4.0", "source": { "type": "git", "url": "https://github.com/friendsoftwig/twigcs.git", - "reference": "da697cc1bf6bf22feb1d8dbefcbdb1451e6a35f6" + "reference": "954e1af488d649cf329f35deaedf2b8fe2cf4b56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/friendsoftwig/twigcs/zipball/da697cc1bf6bf22feb1d8dbefcbdb1451e6a35f6", - "reference": "da697cc1bf6bf22feb1d8dbefcbdb1451e6a35f6", + "url": "https://api.github.com/repos/friendsoftwig/twigcs/zipball/954e1af488d649cf329f35deaedf2b8fe2cf4b56", + "reference": "954e1af488d649cf329f35deaedf2b8fe2cf4b56", "shasum": "" }, "require": { @@ -8269,14 +8281,14 @@ "ext-json": "*", "ext-mbstring": "*", "ext-simplexml": "*", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", - "symfony/console": "^4.4 || ^5.3 || ^6.0", - "symfony/filesystem": "^4.4 || ^5.3 || ^6.0", - "symfony/finder": "^4.4 || ^5.3 || ^6.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "symfony/console": "^4.4 || ^5.3 || ^6.0 || ^7.0", + "symfony/filesystem": "^4.4 || ^5.3 || ^6.0 || ^7.0", + "symfony/finder": "^4.4 || ^5.3 || ^6.0 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.5.27", - "symfony/phpunit-bridge": "^6.2.3" + "phpunit/phpunit": "^9.6.15", + "symfony/phpunit-bridge": "^7.0.1" }, "bin": [ "bin/twigcs" @@ -8300,22 +8312,22 @@ "description": "Checkstyle automation for Twig", "support": { "issues": "https://github.com/friendsoftwig/twigcs/issues", - "source": "https://github.com/friendsoftwig/twigcs/tree/6.2.0" + "source": "https://github.com/friendsoftwig/twigcs/tree/6.4.0" }, - "time": "2023-01-13T16:02:00+00:00" + "time": "2023-12-05T07:36:35+00:00" }, { "name": "hautelook/alice-bundle", - "version": "2.12.1", + "version": "2.12.2", "source": { "type": "git", "url": "https://github.com/theofidry/AliceBundle.git", - "reference": "841ac01d0d4e1ea3381374360cdcc5d6b9c904cc" + "reference": "76485f14618725c3555e3c2737c68088d06104fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/841ac01d0d4e1ea3381374360cdcc5d6b9c904cc", - "reference": "841ac01d0d4e1ea3381374360cdcc5d6b9c904cc", + "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/76485f14618725c3555e3c2737c68088d06104fb", + "reference": "76485f14618725c3555e3c2737c68088d06104fb", "shasum": "" }, "require": { @@ -8373,9 +8385,9 @@ ], "support": { "issues": "https://github.com/theofidry/AliceBundle/issues", - "source": "https://github.com/theofidry/AliceBundle/tree/2.12.1" + "source": "https://github.com/theofidry/AliceBundle/tree/2.12.2" }, - "time": "2023-09-19T19:48:05+00:00" + "time": "2023-11-22T23:06:15+00:00" }, { "name": "myclabs/deep-copy", @@ -8873,16 +8885,16 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.51.1", + "version": "v1.52.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "0890fd3cf1e2a5221f9b3c6ee1769c537aef683d" + "reference": "112f9466c94a46ca33dc441eee59a12cd1790757" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/0890fd3cf1e2a5221f9b3c6ee1769c537aef683d", - "reference": "0890fd3cf1e2a5221f9b3c6ee1769c537aef683d", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/112f9466c94a46ca33dc441eee59a12cd1790757", + "reference": "112f9466c94a46ca33dc441eee59a12cd1790757", "shasum": "" }, "require": { @@ -8945,7 +8957,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.51.1" + "source": "https://github.com/symfony/maker-bundle/tree/v1.52.0" }, "funding": [ { @@ -8961,26 +8973,26 @@ "type": "tidelift" } ], - "time": "2023-09-18T18:17:31+00:00" + "time": "2023-10-31T18:23:49+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.3.6", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "249cb2486597d3ab810d8bcc8e4db5ad0fc3e3bd" + "reference": "4167c20cbdbb1152007fa731718c8c0362f28617" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/249cb2486597d3ab810d8bcc8e4db5ad0fc3e3bd", - "reference": "249cb2486597d3ab810d8bcc8e4db5ad0fc3e3bd", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4167c20cbdbb1152007fa731718c8c0362f28617", + "reference": "4167c20cbdbb1152007fa731718c8c0362f28617", "shasum": "" }, "require": { "php": ">=8.1", "symfony/config": "^5.4|^6.0", - "symfony/framework-bundle": "^5.4|^6.0", + "symfony/framework-bundle": "^5.4|^6.0,<6.4", "symfony/http-kernel": "^6.3", "symfony/routing": "^5.4|^6.0", "symfony/twig-bundle": "^5.4|^6.0", @@ -9026,7 +9038,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.3.6" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.3.8" }, "funding": [ { @@ -9042,7 +9054,7 @@ "type": "tidelift" } ], - "time": "2023-10-11T18:18:20+00:00" + "time": "2023-10-31T14:41:59+00:00" }, { "name": "theofidry/alice-data-fixtures", From c56e35223d2f81d7c7f40825a41a77c5b925e6d5 Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Mon, 11 Dec 2023 09:19:38 +0100 Subject: [PATCH 02/14] KUNST-77: Rectorified and cleaned up --- .gitignore | 4 + composer.json | 1 + composer.lock | 120 +++++++++++++++- phpstan.dist.neon | 8 ++ public/index.php | 4 +- rector.php | 33 +++++ src/Command/ChangeUserRolesCommand.php | 19 +-- src/Command/CreateUserCommand.php | 2 +- src/Controller/AdminController.php | 3 +- src/Controller/BaseController.php | 8 +- src/Controller/FrontendController.php | 55 ++------ src/Controller/ItemController.php | 136 ++++++------------- src/Controller/SecurityController.php | 7 +- src/DataFixtures/Faker/Provider/Provider.php | 10 +- src/Entity/Artwork.php | 57 ++++---- src/Entity/Furniture.php | 2 +- src/Entity/Image.php | 31 ++--- src/Entity/Item.php | 104 +++++++------- src/Entity/Tag.php | 23 ++-- src/Entity/User.php | 23 ++-- src/EventSubscriber/TaggingSubscriber.php | 3 - src/Form/ArtworkType.php | 11 +- src/Form/FurnitureType.php | 11 +- src/Repository/ArtworkRepository.php | 1 - src/Repository/FurnitureRepository.php | 1 - src/Repository/ItemRepository.php | 1 - src/Repository/TagRepository.php | 3 - src/Repository/Traits/OrderByTrait.php | 3 +- src/Security/LoginFormAuthenticator.php | 17 +-- src/Service/ItemService.php | 34 ++--- src/Service/TagService.php | 27 +--- symfony.lock | 12 ++ 32 files changed, 388 insertions(+), 386 deletions(-) create mode 100644 phpstan.dist.neon create mode 100644 rector.php diff --git a/.gitignore b/.gitignore index 63e6556..f1f7c9d 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,7 @@ yarn-error.log public/images/artwork/* !public/images/artwork/fixtures/ + +###> phpstan/phpstan ### +phpstan.neon +###< phpstan/phpstan ### diff --git a/composer.json b/composer.json index 90c8b5d..b735fe1 100644 --- a/composer.json +++ b/composer.json @@ -41,6 +41,7 @@ "friendsofphp/php-cs-fixer": "^3.22", "friendsoftwig/twigcs": "^6.2", "hautelook/alice-bundle": "^2.12", + "rector/rector": "^0.18.12", "symfony/maker-bundle": "^1.51", "symfony/web-profiler-bundle": "6.3.*" }, diff --git a/composer.lock b/composer.lock index ff2c43e..0677432 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "58ccf26b589a02db85960fb3e9be9282", + "content-hash": "f131cf7c966881f1fe7ce008bfa29ccc", "packages": [ { "name": "behat/transliterator", @@ -8598,6 +8598,124 @@ }, "time": "2023-08-13T19:53:39+00:00" }, + { + "name": "phpstan/phpstan", + "version": "1.10.48", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "087ed4b5f4a7a6e8f3bbdfbfe98ce5c181380bc6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/087ed4b5f4a7a6e8f3bbdfbfe98ce5c181380bc6", + "reference": "087ed4b5f4a7a6e8f3bbdfbfe98ce5c181380bc6", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2023-12-08T14:34:28+00:00" + }, + { + "name": "rector/rector", + "version": "0.18.12", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "ed8d5352a3faa69e4a5e315896abffd4bc29c828" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/ed8d5352a3faa69e4a5e315896abffd4bc29c828", + "reference": "ed8d5352a3faa69e4a5e315896abffd4bc29c828", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.10.35" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/0.18.12" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2023-12-04T08:47:30+00:00" + }, { "name": "sebastian/comparator", "version": "5.0.1", diff --git a/phpstan.dist.neon b/phpstan.dist.neon new file mode 100644 index 0000000..e0de575 --- /dev/null +++ b/phpstan.dist.neon @@ -0,0 +1,8 @@ +parameters: + level: 6 + paths: + - bin/ + - config/ + - public/ + - src/ + - tests/ diff --git a/public/index.php b/public/index.php index 9982c21..cf18ce0 100644 --- a/public/index.php +++ b/public/index.php @@ -4,6 +4,4 @@ require_once dirname(__DIR__).'/vendor/autoload_runtime.php'; -return function (array $context) { - return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); -}; +return fn(array $context) => new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); diff --git a/rector.php b/rector.php new file mode 100644 index 0000000..6f51544 --- /dev/null +++ b/rector.php @@ -0,0 +1,33 @@ +paths([ + __DIR__.'/config', + __DIR__.'/public', + __DIR__.'/src', + ]); + + // register a single rule + $rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class); + + // define sets of rules + $rectorConfig->sets([ + LevelSetList::UP_TO_PHP_81, + DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES, + DoctrineSetList::DOCTRINE_DBAL_30, + DoctrineSetList::DOCTRINE_ORM_214, + DoctrineSetList::DOCTRINE_CODE_QUALITY, + SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES, + SymfonySetList::SYMFONY_63, + SymfonySetList::SYMFONY_CODE_QUALITY, + SymfonySetList::SYMFONY_CONSTRUCTOR_INJECTION, + ]); +}; diff --git a/src/Command/ChangeUserRolesCommand.php b/src/Command/ChangeUserRolesCommand.php index c4821b9..b0f8a74 100644 --- a/src/Command/ChangeUserRolesCommand.php +++ b/src/Command/ChangeUserRolesCommand.php @@ -25,22 +25,13 @@ )] class ChangeUserRolesCommand extends Command { - /* @var EntityManagerInterface $entityManager */ - private $entityManager; - /* @var UserRepository $userRepository */ - private $userRepository; - /** * ChangeUserRolesCommand constructor. - * - * @param \Doctrine\ORM\EntityManagerInterface $entityManager - * @param \App\Repository\UserRepository $userRepository */ - public function __construct(EntityManagerInterface $entityManager, UserRepository $userRepository) - { - $this->entityManager = $entityManager; - $this->userRepository = $userRepository; - + public function __construct( + private readonly EntityManagerInterface $entityManager, + private readonly UserRepository $userRepository + ) { parent::__construct(); } @@ -79,7 +70,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int return 1; } - $rolesArray = explode(',', $roles); + $rolesArray = explode(',', (string) $roles); $user->setRoles($rolesArray); $this->entityManager->flush(); diff --git a/src/Command/CreateUserCommand.php b/src/Command/CreateUserCommand.php index dabff69..88d6492 100644 --- a/src/Command/CreateUserCommand.php +++ b/src/Command/CreateUserCommand.php @@ -75,7 +75,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int return 1; } - $rolesArray = explode(',', $roles); + $rolesArray = explode(',', (string) $roles); $user = new User(); $user->setEmail($email); diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index b5119a5..63e8127 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -10,6 +10,7 @@ use App\Repository\ItemRepository; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; /** @@ -18,7 +19,7 @@ class AdminController extends BaseController { #[Route(path: '/admin', name: 'admin')] - public function index(Request $request, ItemRepository $itemRepository) + public function index(Request $request, ItemRepository $itemRepository): Response { $session = $request->getSession(); $session->start(); diff --git a/src/Controller/BaseController.php b/src/Controller/BaseController.php index 4f6c867..2923927 100644 --- a/src/Controller/BaseController.php +++ b/src/Controller/BaseController.php @@ -29,9 +29,9 @@ class BaseController extends AbstractController */ public function __construct( string $bindSupportMail, - readonly protected RequestStack $requestStack, - readonly protected ItemService $itemService, - readonly protected TagService $tagService + protected readonly RequestStack $requestStack, + protected readonly ItemService $itemService, + protected readonly TagService $tagService ) { $this->supportMail = $bindSupportMail; } @@ -42,8 +42,6 @@ public function __construct( * @param string $view * @param array $parameters * @param Response|null $response - * - * @return Response */ public function render(string $view, array $parameters = [], Response $response = null): Response { diff --git a/src/Controller/FrontendController.php b/src/Controller/FrontendController.php index 806d751..bfa2636 100644 --- a/src/Controller/FrontendController.php +++ b/src/Controller/FrontendController.php @@ -16,6 +16,7 @@ use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\SearchType; +use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; @@ -26,30 +27,17 @@ */ class FrontendController extends AbstractController { - private $uploaderHelper; - private $tagService; - /** * FrontendController constructor. - * - * @param \Vich\UploaderBundle\Templating\Helper\UploaderHelper $uploaderHelper - * @param \App\Service\TagService $tagService */ - public function __construct(UploaderHelper $uploaderHelper, TagService $tagService) - { - $this->uploaderHelper = $uploaderHelper; - $this->tagService = $tagService; + public function __construct( + private readonly UploaderHelper $uploaderHelper, + private readonly TagService $tagService + ) { } - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @param \App\Repository\ArtworkRepository $artworkRepository - * @param \Knp\Component\Pager\PaginatorInterface $paginator - * - * @return \Symfony\Component\HttpFoundation\Response - */ #[Route(path: '/', name: 'frontend_index')] - public function index(Request $request, ArtworkRepository $artworkRepository, PaginatorInterface $paginator) + public function index(Request $request, ArtworkRepository $artworkRepository, PaginatorInterface $paginator): Response { $parameters = []; $parameters['display_advanced_filters'] = false; @@ -61,8 +49,8 @@ public function index(Request $request, ArtworkRepository $artworkRepository, Pa if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); - $width = null !== $data['width'] ? json_decode($data['width']) : null; - $height = null !== $data['height'] ? json_decode($data['height']) : null; + $width = null !== $data['width'] ? json_decode((string) $data['width'], null, 512, \JSON_THROW_ON_ERROR) : null; + $height = null !== $data['height'] ? json_decode((string) $data['height'], null, 512, \JSON_THROW_ON_ERROR) : null; $query = $artworkRepository->getQuery( $data['search'] ?? null, @@ -116,11 +104,6 @@ public function index(Request $request, ArtworkRepository $artworkRepository, Pa ); } - /** - * @param \App\Entity\Artwork $artwork - * - * @return \Symfony\Component\HttpFoundation\Response - */ #[Route(path: '/display/{id}', name: 'frontend_artwork_show', methods: ['GET'])] public function show(Artwork $artwork): Response { @@ -140,11 +123,9 @@ public function show(Artwork $artwork): Response /** * Create render array for artwork. * - * @param \App\Entity\Artwork $artwork - * * @return object */ - private function artworkToRenderArray(Artwork $artwork) + private function artworkToRenderArray(Artwork $artwork): object { $imagePaths = []; foreach ($artwork->getImages() as $image) { @@ -177,14 +158,7 @@ private function artworkToRenderArray(Artwork $artwork) ]; } - /** - * Get dimensions. - * - * @param \App\Entity\Artwork $artwork - * - * @return string - */ - private function getDimensions(Artwork $artwork) + private function getDimensions(Artwork $artwork): ?string { $width = $artwork->getWidth(); $height = $artwork->getHeight(); @@ -197,19 +171,14 @@ private function getDimensions(Artwork $artwork) return sprintf('%d x %d', $width, $height); } - /** - * Create search form. - * - * @return \Symfony\Component\Form\FormInterface - */ - private function getSearchForm() + private function getSearchForm(): FormInterface { $typeChoices = $this->tagService->getChoices(Artwork::class, 'type'); $statusChoices = $this->tagService->getChoices(Artwork::class, 'status'); $formBuilder = $this->createFormBuilder(); $formBuilder - ->setMethod('GET') + ->setMethod(\Symfony\Component\HttpFoundation\Request::METHOD_GET) ->add( 'search', SearchType::class, diff --git a/src/Controller/ItemController.php b/src/Controller/ItemController.php index be1731c..c17be75 100644 --- a/src/Controller/ItemController.php +++ b/src/Controller/ItemController.php @@ -16,7 +16,6 @@ use App\Repository\ArtworkRepository; use App\Repository\ItemRepository; use Doctrine\ORM\EntityManagerInterface; -use Doctrine\ORM\Query; use DoctrineBatchUtils\BatchProcessing\SimpleBatchIteratorAggregate; use Knp\Component\Pager\PaginatorInterface; use OpenSpout\Common\Entity\Row; @@ -25,6 +24,7 @@ use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\SearchType; +use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -37,28 +37,13 @@ #[Route(path: '/admin/item')] class ItemController extends BaseController { - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @param \App\Repository\ItemRepository $itemRepository - * @param \Knp\Component\Pager\PaginatorInterface $paginator - * - * @return Response - */ #[Route(path: '/', name: 'item_index', methods: ['GET'])] - public function index(Request $request, ItemRepository $itemRepository, PaginatorInterface $paginator): Response + public function index(ItemRepository $itemRepository, PaginatorInterface $paginator): Response { return $this->redirectToRoute('item_list'); } /** - * @param string $itemType - * @param \Symfony\Component\HttpFoundation\Request $request - * @param \App\Repository\ItemRepository $itemRepository - * @param \App\Repository\ArtworkRepository $artworkRepository - * @param \Knp\Component\Pager\PaginatorInterface $paginator - * - * @return Response - * * @throws \Exception */ #[Route(path: '/list/{itemType}', name: 'item_list', methods: ['GET'], defaults: ['itemType' => Artwork::ITEM_TYPE])] @@ -94,10 +79,7 @@ public function list(string $itemType, Request $request, ItemRepository $itemRep } /** - * @param string $itemType - * The item type - * - * @return Response + * @param string $itemType The item type */ #[Route(path: '/{itemType}/export', name: 'item_export', methods: ['GET'])] public function export(string $itemType, Request $request, ItemRepository $itemRepository, ArtworkRepository $artworkRepository): Response @@ -122,9 +104,7 @@ public function export(string $itemType, Request $request, ItemRepository $itemR $serializer = new Serializer([new ObjectNormalizer()]); - $dateCallback = function ($innerObject) { - return $innerObject instanceof \DateTimeInterface ? $innerObject->format(\DateTime::ATOM) : ''; - }; + $dateCallback = fn ($innerObject) => $innerObject instanceof \DateTimeInterface ? $innerObject->format(\DateTime::ATOM) : ''; $defaultContext = [ AbstractNormalizer::CALLBACKS => [ @@ -215,11 +195,6 @@ public function export(string $itemType, Request $request, ItemRepository $itemR } /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @param string $itemType - * - * @return Response - * * @throws \Exception */ #[Route(path: '/{itemType}/new', name: 'item_new', methods: ['GET', 'POST'])] @@ -259,11 +234,6 @@ public function new(Request $request, string $itemType, EntityManagerInterface $ } /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @param \App\Entity\Item $item - * - * @return Response - * * @throws \Exception */ #[Route(path: '/{id}/edit', name: 'item_edit', methods: ['GET', 'POST'])] @@ -298,12 +268,6 @@ public function edit(Request $request, Item $item, EntityManagerInterface $entit ); } - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @param \App\Entity\Item $item - * - * @return Response - */ #[Route(path: '/{id}', name: 'item_delete', methods: ['DELETE'])] public function delete(Request $request, Item $item): Response { @@ -316,13 +280,8 @@ public function delete(Request $request, Item $item): Response return $this->redirectToRoute('item_index'); } - /** - * @param \App\Entity\Item $item - * - * @return \Symfony\Component\HttpFoundation\JsonResponse - */ #[Route(path: '/{id}/modal', name: 'item_modal', methods: ['GET'])] - public function getModal(Item $item) + public function getModal(Item $item): JsonResponse { $itemObject = $this->itemService->itemToRenderObject($item); @@ -342,10 +301,8 @@ public function getModal(Item $item) * Create search form. * * @param string $classname - * - * @return \Symfony\Component\Form\FormInterface */ - private function getSearchForm($classname = Artwork::class) + private function getSearchForm($classname = Artwork::class): FormInterface { $typeChoices = $this->tagService->getChoices($classname, 'type'); $statusChoices = $this->tagService->getChoices($classname, 'status'); @@ -354,7 +311,7 @@ private function getSearchForm($classname = Artwork::class) $formBuilder = $this->createFormBuilder(); $formBuilder - ->setMethod('GET') + ->setMethod(Request::METHOD_GET) ->add( 'type', ChoiceType::class, @@ -511,8 +468,7 @@ private function getItemTypeClass(string $itemType): string } /** - * @return array - * [Query, Form] + * @return array [Query, Form] */ private function getFilteredQuery(string $itemType, Request $request, ItemRepository $itemRepository, ArtworkRepository $artworkRepository, array &$parameters = []): array { @@ -535,51 +491,39 @@ private function getFilteredQuery(string $itemType, Request $request, ItemReposi $parameters['display_advanced_filters'] = true; } - $width = null !== $data['width'] ? json_decode($data['width']) : null; - $height = null !== $data['height'] ? json_decode($data['height']) : null; - - switch ($itemType) { - case 'artwork': - $query = $artworkRepository->getQuery( - $data['search'], - $data['type'], - $data['status'] ?? null, - null, - $data['building'] ?? null, - $data['yearFrom'] ?? null, - $data['yearTo'] ?? null, - $width->min ?? null, - $width->max ?? null, - $height->min ?? null, - $height->max ?? null, - $data['artistGender'] ?? null, - $data['priceFrom'] ?? null, - $data['priceTo'] ?? null - ); - break; - - case 'furniture': - default: - $query = $itemRepository->getQuery( - $itemTypeClass, - $data['search'], - $data['type'], - null, - $data['building'] - ); - break; - } + $width = null !== $data['width'] ? json_decode((string) $data['width'], null, 512, \JSON_THROW_ON_ERROR) : null; + $height = null !== $data['height'] ? json_decode((string) $data['height'], null, 512, \JSON_THROW_ON_ERROR) : null; + + $query = match ($itemType) { + 'artwork' => $artworkRepository->getQuery( + $data['search'], + $data['type'], + $data['status'] ?? null, + null, + $data['building'] ?? null, + $data['yearFrom'] ?? null, + $data['yearTo'] ?? null, + $width->min ?? null, + $width->max ?? null, + $height->min ?? null, + $height->max ?? null, + $data['artistGender'] ?? null, + $data['priceFrom'] ?? null, + $data['priceTo'] ?? null + ), + default => $itemRepository->getQuery( + $itemTypeClass, + $data['search'], + $data['type'], + null, + $data['building'] + ), + }; } else { - switch ($itemType) { - case 'artwork': - $query = $artworkRepository->getQuery(); - break; - - case 'furniture': - default: - $query = $itemRepository->getQuery($itemTypeClass); - break; - } + $query = match ($itemType) { + 'artwork' => $artworkRepository->getQuery(), + default => $itemRepository->getQuery($itemTypeClass), + }; } return [$query, $form]; diff --git a/src/Controller/SecurityController.php b/src/Controller/SecurityController.php index acb06dd..bfe6745 100644 --- a/src/Controller/SecurityController.php +++ b/src/Controller/SecurityController.php @@ -18,11 +18,6 @@ */ class SecurityController extends AbstractController { - /** - * @param \Symfony\Component\Security\Http\Authentication\AuthenticationUtils $authenticationUtils - * - * @return \Symfony\Component\HttpFoundation\Response - */ #[Route(path: '/login', name: 'app_login')] public function login(AuthenticationUtils $authenticationUtils): Response { @@ -35,7 +30,7 @@ public function login(AuthenticationUtils $authenticationUtils): Response } #[Route(path: '/logout', name: 'app_logout')] - public function logout() + public function logout(): never { throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.'); } diff --git a/src/DataFixtures/Faker/Provider/Provider.php b/src/DataFixtures/Faker/Provider/Provider.php index 86ba6ee..cc8d4ff 100644 --- a/src/DataFixtures/Faker/Provider/Provider.php +++ b/src/DataFixtures/Faker/Provider/Provider.php @@ -22,11 +22,11 @@ class Provider extends Base { public function __construct( Generator $generator, - readonly private FileSystem $filesystem, - readonly private MimeTypeGuesserInterface $mimeTypeGuesser, - readonly private UserPasswordHasherInterface $passwordHasher, - readonly private Twig $twig, - readonly private array $config + private readonly FileSystem $filesystem, + private readonly MimeTypeGuesserInterface $mimeTypeGuesser, + private readonly UserPasswordHasherInterface $passwordHasher, + private readonly Twig $twig, + private readonly array $config ) { parent::__construct($generator); } diff --git a/src/Entity/Artwork.php b/src/Entity/Artwork.php index 5a1c3b0..63f7ae1 100644 --- a/src/Entity/Artwork.php +++ b/src/Entity/Artwork.php @@ -9,48 +9,49 @@ namespace App\Entity; use App\Repository\ArtworkRepository; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: ArtworkRepository::class)] -class Artwork extends Item +class Artwork extends Item implements \Stringable { - public const ITEM_TYPE = 'artwork'; + final public const ITEM_TYPE = 'artwork'; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $artist; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $artist = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $artSerial; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $artSerial = null; - #[ORM\Column(type: 'integer', nullable: true)] - private $productionYear; + #[ORM\Column(type: Types::INTEGER, nullable: true)] + private ?int $productionYear = null; - #[ORM\Column(type: 'datetime', nullable: true)] - private $assessmentDate; + #[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)] + private ?\DateTimeInterface $assessmentDate = null; - #[ORM\Column(type: 'float', nullable: true)] - private $assessmentPrice; + #[ORM\Column(type: Types::FLOAT, nullable: true)] + private ?float $assessmentPrice = null; - #[ORM\Column(type: 'float', nullable: true)] - private $width; + #[ORM\Column(type: Types::FLOAT, nullable: true)] + private ?float $width = null; - #[ORM\Column(type: 'float', nullable: true)] - private $height; + #[ORM\Column(type: Types::FLOAT, nullable: true)] + private ?float $height = null; - #[ORM\Column(type: 'float', nullable: true)] - private $depth; + #[ORM\Column(type: Types::FLOAT, nullable: true)] + private ?float $depth = null; - #[ORM\Column(type: 'float', nullable: true)] - private $diameter; + #[ORM\Column(type: Types::FLOAT, nullable: true)] + private ?float $diameter = null; - #[ORM\Column(type: 'float', nullable: true)] - private $weight; + #[ORM\Column(type: Types::FLOAT, nullable: true)] + private ?float $weight = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $artistGender; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $artistGender = null; - #[ORM\Column(type: 'text', nullable: true)] - private $committeeDescription; + #[ORM\Column(type: Types::TEXT, nullable: true)] + private ?string $committeeDescription = null; /** * @return string|null @@ -155,9 +156,9 @@ public function setAssessmentPrice(?float $assessmentPrice): self /** * @return string */ - public function __toString() + public function __toString(): string { - return $this->getName(); + return (string) $this->getName(); } /** diff --git a/src/Entity/Furniture.php b/src/Entity/Furniture.php index db347a8..3ae48d6 100644 --- a/src/Entity/Furniture.php +++ b/src/Entity/Furniture.php @@ -14,5 +14,5 @@ #[ORM\Entity(repositoryClass: FurnitureRepository::class)] class Furniture extends Item { - public const ITEM_TYPE = 'furniture'; + final public const ITEM_TYPE = 'furniture'; } diff --git a/src/Entity/Image.php b/src/Entity/Image.php index 4e79ca1..b2bb96c 100644 --- a/src/Entity/Image.php +++ b/src/Entity/Image.php @@ -9,6 +9,7 @@ namespace App\Entity; use App\Repository\ImageRepository; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Gedmo\Timestampable\Traits\TimestampableEntity; use Symfony\Component\HttpFoundation\File\File; @@ -16,7 +17,7 @@ #[ORM\Entity(repositoryClass: ImageRepository::class)] #[Vich\Uploadable()] -class Image +class Image implements \Stringable { use TimestampableEntity; @@ -26,39 +27,31 @@ class Image private ?int $id = null; #[ORM\ManyToOne(targetEntity: Item::class, inversedBy: 'images')] - private $item; + private ?Item $item = null; /** * NOTE: This is not a mapped field of entity metadata, just a simple property. * * @Vich\UploadableField(mapping="artwork_image", fileNameProperty="imageName", size="imageSize") - * - * @var File|null */ #[Vich\UploadableField(mapping: 'artwork_image', fileNameProperty: 'imageName', size: 'imageSize')] - private $imageFile; + private ?File $imageFile = null; - /** - * @var string|null - */ - #[ORM\Column(type: 'string')] - private $imageName; + #[ORM\Column(type: Types::STRING)] + private ?string $imageName = null; - /** - * @var int|null - */ - #[ORM\Column(type: 'integer')] - private $imageSize; + #[ORM\Column(type: Types::INTEGER)] + private ?int $imageSize = null; - #[ORM\Column(type: 'boolean', nullable: true)] - private $primaryImage; + #[ORM\Column(type: Types::BOOLEAN, nullable: true)] + private ?bool $primaryImage = null; /** * @return string */ - public function __toString() + public function __toString(): string { - return $this->getImageName(); + return (string) $this->getImageName(); } /** diff --git a/src/Entity/Item.php b/src/Entity/Item.php index fc6e45f..3fe9ae3 100644 --- a/src/Entity/Item.php +++ b/src/Entity/Item.php @@ -11,7 +11,9 @@ use App\Repository\ItemRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; +use Doctrine\ORM\PersistentCollection; use Gedmo\Blameable\Traits\BlameableEntity; use Gedmo\Timestampable\Traits\TimestampableEntity; @@ -30,74 +32,77 @@ class Item #[ORM\Column] protected ?int $id = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $name; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $name = null; - #[ORM\Column(type: 'text', nullable: true)] - private $description; + #[ORM\Column(type: Types::TEXT, nullable: true)] + private ?string $description = null; + /** + * @var \Doctrine\Common\Collections\Collection|\App\Entity\Image[] + */ #[ORM\OneToMany(targetEntity: Image::class, mappedBy: 'item', cascade: ['persist'])] - private $images; + private ArrayCollection|PersistentCollection|iterable $images; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $status; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $status = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $type; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $type = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $organization; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $organization = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $location; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $location = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $building; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $building = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $room; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $room = null; - #[ORM\Column(type: 'string', length: 500, nullable: true)] - private $address; + #[ORM\Column(type: Types::STRING, length: 500, nullable: true)] + private ?string $address = null; - #[ORM\Column(type: 'integer', nullable: true)] - private $postalCode; + #[ORM\Column(type: Types::INTEGER, nullable: true)] + private ?int $postalCode = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $city; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $city = null; - #[ORM\Column(type: 'boolean', nullable: true)] - private $publiclyAccessible; + #[ORM\Column(type: Types::BOOLEAN, nullable: true)] + private ?bool $publiclyAccessible = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $geo; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $geo = null; - #[ORM\Column(type: 'text', nullable: true)] - private $comment; + #[ORM\Column(type: Types::TEXT, nullable: true)] + private ?string $comment = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $department; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $department = null; - #[ORM\Column(type: 'float', nullable: true)] - private $purchasePrice; + #[ORM\Column(type: Types::FLOAT, nullable: true)] + private ?float $purchasePrice = null; - #[ORM\Column(type: 'integer', nullable: true)] - private $inventoryId; + #[ORM\Column(type: Types::INTEGER, nullable: true)] + private ?int $inventoryId = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $purchasePlace; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $purchasePlace = null; - #[ORM\Column(type: 'datetime', nullable: true)] - private $purchaseDate; + #[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)] + private ?\DateTimeInterface $purchaseDate = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $purchasedBy; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $purchasedBy = null; - #[ORM\Column(type: 'string', length: 255, nullable: true)] - private $barcode; + #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] + private ?string $barcode = null; - #[ORM\Column(type: 'date', nullable: true)] - private $locationDate; + #[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)] + private ?\DateTimeInterface $locationDate = null; /** * Artwork constructor. @@ -136,10 +141,7 @@ public function getDescription() return $this->description; } - /** - * @param mixed $description - */ - public function setDescription($description): void + public function setDescription(mixed $description): void { $this->description = $description; } @@ -153,8 +155,6 @@ public function getImages(): Collection } /** - * @param \App\Entity\Image $image - * * @return $this */ public function addImage(Image $image): self @@ -168,8 +168,6 @@ public function addImage(Image $image): self } /** - * @param \App\Entity\Image $image - * * @return $this */ public function removeImage(Image $image): self diff --git a/src/Entity/Tag.php b/src/Entity/Tag.php index fd105ed..d6751d3 100644 --- a/src/Entity/Tag.php +++ b/src/Entity/Tag.php @@ -9,6 +9,7 @@ namespace App\Entity; use App\Repository\TagRepository; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: TagRepository::class)] @@ -16,17 +17,17 @@ class Tag { #[ORM\Id] #[ORM\GeneratedValue] - #[ORM\Column(type: 'integer')] - private $id; + #[ORM\Column(type: Types::INTEGER)] + private ?int $id = null; - #[ORM\Column(type: 'string', length: 255)] - private $class; + #[ORM\Column(type: Types::STRING, length: 255)] + private ?string $class = null; - #[ORM\Column(type: 'string', length: 255)] - private $value; + #[ORM\Column(type: Types::STRING, length: 255)] + private ?string $value = null; - #[ORM\Column(type: 'string', length: 255)] - private $field; + #[ORM\Column(type: Types::STRING, length: 255)] + private ?string $field = null; /** * @return int|null @@ -45,8 +46,6 @@ public function getClass(): ?string } /** - * @param string $class - * * @return $this */ public function setClass(string $class): self @@ -65,8 +64,6 @@ public function getValue(): ?string } /** - * @param string $value - * * @return $this */ public function setValue(string $value): self @@ -85,8 +82,6 @@ public function getField(): ?string } /** - * @param string $field - * * @return $this */ public function setField(string $field): self diff --git a/src/Entity/User.php b/src/Entity/User.php index 9c53d97..b83fbd1 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -9,6 +9,7 @@ namespace App\Entity; use App\Repository\UserRepository; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; use Symfony\Component\Security\Core\User\UserInterface; @@ -18,20 +19,20 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface { #[ORM\Id] #[ORM\GeneratedValue] - #[ORM\Column(type: 'integer')] - private $id; + #[ORM\Column(type: Types::INTEGER)] + private ?int $id = null; - #[ORM\Column(type: 'string', length: 180, unique: true)] - private $email; + #[ORM\Column(type: Types::STRING, length: 180, unique: true)] + private ?string $email = null; - #[ORM\Column(type: 'json')] - private $roles = []; + #[ORM\Column(type: Types::JSON)] + private array $roles = []; /** * @var string The hashed password */ - #[ORM\Column(type: 'string')] - private $password; + #[ORM\Column(type: Types::STRING)] + private ?string $password = null; /** * @return int|null @@ -55,8 +56,6 @@ public function getEmail(): ?string } /** - * @param string $email - * * @return $this */ public function setEmail(string $email): self @@ -93,8 +92,6 @@ public function getRoles(): array } /** - * @param array $roles - * * @return $this */ public function setRoles(array $roles): self @@ -115,8 +112,6 @@ public function getPassword(): string } /** - * @param string $password - * * @return $this */ public function setPassword(string $password): self diff --git a/src/EventSubscriber/TaggingSubscriber.php b/src/EventSubscriber/TaggingSubscriber.php index 8101690..eece81d 100644 --- a/src/EventSubscriber/TaggingSubscriber.php +++ b/src/EventSubscriber/TaggingSubscriber.php @@ -62,9 +62,6 @@ function (TerminateEvent $event) use ($args) { /** * Save the new tag. - * - * @param string $action - * @param LifecycleEventArgs $args */ private function changeTags(string $action, LifecycleEventArgs $args) { diff --git a/src/Form/ArtworkType.php b/src/Form/ArtworkType.php index 5960bd1..65bb7a6 100644 --- a/src/Form/ArtworkType.php +++ b/src/Form/ArtworkType.php @@ -23,17 +23,12 @@ */ class ArtworkType extends AbstractType { - /* @var TagService $tagService */ - private $tagService; - /** * ArtworkType constructor. - * - * @param \App\Service\TagService $tagService */ - public function __construct(TagService $tagService) - { - $this->tagService = $tagService; + public function __construct( + private readonly TagService $tagService + ) { } /** diff --git a/src/Form/FurnitureType.php b/src/Form/FurnitureType.php index 5f3ccef..e3e1baa 100644 --- a/src/Form/FurnitureType.php +++ b/src/Form/FurnitureType.php @@ -21,17 +21,12 @@ */ class FurnitureType extends AbstractType { - /* @var TagService $tagService */ - private $tagService; - /** * ArtworkType constructor. - * - * @param \App\Service\TagService $tagService */ - public function __construct(TagService $tagService) - { - $this->tagService = $tagService; + public function __construct( + private readonly TagService $tagService + ) { } /** diff --git a/src/Repository/ArtworkRepository.php b/src/Repository/ArtworkRepository.php index 5ca8810..717539c 100644 --- a/src/Repository/ArtworkRepository.php +++ b/src/Repository/ArtworkRepository.php @@ -54,7 +54,6 @@ public function __construct(ManagerRegistry $registry) * @param string|null $artistGender * @param int|null $priceFrom * @param int|null $priceTo - * @param array $orderBy * * @return \Doctrine\ORM\Query */ diff --git a/src/Repository/FurnitureRepository.php b/src/Repository/FurnitureRepository.php index 935b608..21b7f08 100644 --- a/src/Repository/FurnitureRepository.php +++ b/src/Repository/FurnitureRepository.php @@ -44,7 +44,6 @@ public function __construct(ManagerRegistry $registry) * @param string|null $type * @param string|null $category * @param string|null $building - * @param array $orderBy * * @return \Doctrine\ORM\Query */ diff --git a/src/Repository/ItemRepository.php b/src/Repository/ItemRepository.php index 00b9dfe..45d67c0 100644 --- a/src/Repository/ItemRepository.php +++ b/src/Repository/ItemRepository.php @@ -45,7 +45,6 @@ public function __construct(ManagerRegistry $registry) * @param string|null $type * @param string|null $category * @param string|null $building - * @param array $orderBy * * @return \Doctrine\ORM\Query */ diff --git a/src/Repository/TagRepository.php b/src/Repository/TagRepository.php index 2f6fc78..4397075 100644 --- a/src/Repository/TagRepository.php +++ b/src/Repository/TagRepository.php @@ -35,9 +35,6 @@ public function __construct(ManagerRegistry $registry) /** * Get tags by classname and field. * - * @param string $classname - * @param string $field - * * @return \App\Entity\Tag[] */ public function getByClassname(string $classname, string $field) diff --git a/src/Repository/Traits/OrderByTrait.php b/src/Repository/Traits/OrderByTrait.php index 0596374..0aa69cb 100644 --- a/src/Repository/Traits/OrderByTrait.php +++ b/src/Repository/Traits/OrderByTrait.php @@ -18,8 +18,7 @@ trait OrderByTrait /** * Add order by to query builder. * - * @param QueryBuilder $qb - * @param array $orderBy list of field, direction pairs + * @param array $orderBy list of field, direction pairs */ protected function addOrderBy(QueryBuilder $qb, array $orderBy) { diff --git a/src/Security/LoginFormAuthenticator.php b/src/Security/LoginFormAuthenticator.php index 87ba0bd..7b78311 100644 --- a/src/Security/LoginFormAuthenticator.php +++ b/src/Security/LoginFormAuthenticator.php @@ -33,21 +33,18 @@ class LoginFormAuthenticator extends AbstractFormLoginAuthenticator implements P { use TargetPathTrait; - public const LOGIN_ROUTE = 'app_login'; - - private $entityManager; - private $urlGenerator; - private $csrfTokenManager; + final public const LOGIN_ROUTE = 'app_login'; private $passwordEncoder; /** * {@inheritdoc} */ - public function __construct(EntityManagerInterface $entityManager, UrlGeneratorInterface $urlGenerator, CsrfTokenManagerInterface $csrfTokenManager, UserPasswordEncoderInterface $passwordEncoder) - { - $this->entityManager = $entityManager; - $this->urlGenerator = $urlGenerator; - $this->csrfTokenManager = $csrfTokenManager; + public function __construct( + private readonly EntityManagerInterface $entityManager, + private readonly UrlGeneratorInterface $urlGenerator, + private readonly CsrfTokenManagerInterface $csrfTokenManager, + UserPasswordEncoderInterface $passwordEncoder + ) { $this->passwordEncoder = $passwordEncoder; } diff --git a/src/Service/ItemService.php b/src/Service/ItemService.php index 443c851..a36649d 100644 --- a/src/Service/ItemService.php +++ b/src/Service/ItemService.php @@ -26,35 +26,21 @@ */ class ItemService { - protected $uploaderHelper; - protected $router; - protected $entityManager; - protected $itemRepository; - protected $tagService; - /** * ItemService constructor. - * - * @param UploaderHelper $uploaderHelper - * @param UrlGeneratorInterface $router - * @param EntityManagerInterface $entityManager - * @param ItemRepository $itemRepository - * @param TagService $tagService */ - public function __construct(UploaderHelper $uploaderHelper, UrlGeneratorInterface $router, EntityManagerInterface $entityManager, ItemRepository $itemRepository, TagService $tagService) - { - $this->uploaderHelper = $uploaderHelper; - $this->router = $router; - $this->entityManager = $entityManager; - $this->itemRepository = $itemRepository; - $this->tagService = $tagService; + public function __construct( + protected readonly UploaderHelper $uploaderHelper, + protected readonly UrlGeneratorInterface $router, + protected readonly EntityManagerInterface $entityManager, + protected readonly ItemRepository $itemRepository, + protected readonly TagService $tagService + ) { } /** * Create render object for item. * - * @param Item $item - * * @return object */ public function itemToRenderObject(Item $item) @@ -143,7 +129,7 @@ public function importFromSpreadsheet($file) $unMappable = []; - $barcode = !empty($entry[20]) ? str_pad($entry[20], 5, '0', \STR_PAD_LEFT) : null; + $barcode = !empty($entry[20]) ? str_pad((string) $entry[20], 5, '0', \STR_PAD_LEFT) : null; if ('Kunst' === $entry[0]) { $item = new Artwork(); @@ -245,7 +231,7 @@ public function importFromImages(string $folder) $this->entityManager->persist($image); echo $filename." found. Added image.\n"; - } catch (\Exception $exception) { + } catch (\Exception) { echo $filename." produced an error. Ignoring file.\n"; } } else { @@ -259,8 +245,6 @@ public function importFromImages(string $folder) /** * Get dimensions. * - * @param \App\Entity\Artwork $artwork - * * @return string */ private function getDimensions(Artwork $artwork) diff --git a/src/Service/TagService.php b/src/Service/TagService.php index 6896297..db240df 100644 --- a/src/Service/TagService.php +++ b/src/Service/TagService.php @@ -20,30 +20,19 @@ */ class TagService { - private $tagRepository; - private $entityManager; - private $itemRepository; - /** * TagService constructor. - * - * @param \App\Repository\TagRepository $tagRepository - * @param \Doctrine\ORM\EntityManagerInterface $entityManager - * @param ItemRepository $itemRepository */ - public function __construct(TagRepository $tagRepository, EntityManagerInterface $entityManager, ItemRepository $itemRepository) - { - $this->tagRepository = $tagRepository; - $this->entityManager = $entityManager; - $this->itemRepository = $itemRepository; + public function __construct( + private readonly TagRepository $tagRepository, + private readonly EntityManagerInterface $entityManager, + private readonly ItemRepository $itemRepository + ) { } /** * Get choices for a given classname and field. * - * @param string $classname - * @param string $field - * * @return array */ public function getChoices(string $classname, string $field) @@ -114,7 +103,7 @@ public function refreshTags() * @param array $changeSet * The change set for the field, if it exists */ - public function addTag(Item $item, string $field, $value, array $changeSet) + public function addTag(Item $item, string $field, mixed $value, array $changeSet) { $classname = $item::class; $tag = $this->tagRepository->findOneBy([ @@ -163,9 +152,7 @@ public function addTag(Item $item, string $field, $value, array $changeSet) /** * Add tag without removing old tags. * - * @param Item $item - * @param string $field - * @param $value + * @param $value */ private function addTagWithoutCleanup(Item $item, string $field, $value) { diff --git a/symfony.lock b/symfony.lock index 61dbecc..a95cbfe 100644 --- a/symfony.lock +++ b/symfony.lock @@ -215,6 +215,18 @@ "phpoffice/phpspreadsheet": { "version": "1.12.0" }, + "phpstan/phpstan": { + "version": "1.10", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "1.0", + "ref": "5e490cc197fb6bb1ae22e5abbc531ddc633b6767" + }, + "files": [ + "phpstan.dist.neon" + ] + }, "pimple/pimple": { "version": "v3.3.0" }, From cbd58be2e451bf3cc5944b49e8adb1260bd4a517 Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Mon, 11 Dec 2023 09:27:49 +0100 Subject: [PATCH 03/14] KUNST-77: Applied security updates --- composer.lock | 54 +++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/composer.lock b/composer.lock index 0677432..a47cde8 100644 --- a/composer.lock +++ b/composer.lock @@ -3199,31 +3199,31 @@ }, { "name": "stof/doctrine-extensions-bundle", - "version": "v1.9.0", + "version": "v1.10.1", "source": { "type": "git", "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", - "reference": "eb677bf8aa05d741029dc4874e1884498236d531" + "reference": "299d5333ce83941069852be36b949abbc776bf1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/eb677bf8aa05d741029dc4874e1884498236d531", - "reference": "eb677bf8aa05d741029dc4874e1884498236d531", + "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/299d5333ce83941069852be36b949abbc776bf1d", + "reference": "299d5333ce83941069852be36b949abbc776bf1d", "shasum": "" }, "require": { "gedmo/doctrine-extensions": "^3.5.0", "php": "^7.2.5 || ^8.0", - "symfony/cache": "^5.4 || ^6.0", - "symfony/config": "^5.4 || ^6.0", - "symfony/dependency-injection": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/http-kernel": "^5.4 || ^6.0" + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "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-kernel": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "symfony/mime": "^5.4 || ^6.0", - "symfony/phpunit-bridge": "^v5.4 || ^6.0", - "symfony/security-core": "^5.4 || ^6.0" + "symfony/mime": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^v6.4.1 || ^7.0.1", + "symfony/security-core": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/doctrine-bundle": "to use the ORM extensions", @@ -3268,9 +3268,9 @@ ], "support": { "issues": "https://github.com/stof/StofDoctrineExtensionsBundle/issues", - "source": "https://github.com/stof/StofDoctrineExtensionsBundle/tree/v1.9.0" + "source": "https://github.com/stof/StofDoctrineExtensionsBundle/tree/v1.10.1" }, - "time": "2023-08-31T08:08:51+00:00" + "time": "2023-12-09T09:33:39+00:00" }, { "name": "symfony/asset", @@ -8170,16 +8170,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.40.2", + "version": "v3.41.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "4344562a516b76afe8f2d64b2e52214c30d64ed8" + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4344562a516b76afe8f2d64b2e52214c30d64ed8", - "reference": "4344562a516b76afe8f2d64b2e52214c30d64ed8", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8b6ae8dcbaf23f09680643ab832a4a3a260265f6", + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6", "shasum": "" }, "require": { @@ -8209,8 +8209,6 @@ "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpspec/prophecy": "^1.17", - "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.6", "symfony/phpunit-bridge": "^6.3.8 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" @@ -8251,7 +8249,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.2" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.41.1" }, "funding": [ { @@ -8259,7 +8257,7 @@ "type": "github" } ], - "time": "2023-12-03T09:21:33+00:00" + "time": "2023-12-10T19:59:27+00:00" }, { "name": "friendsoftwig/twigcs", @@ -8544,16 +8542,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -8594,9 +8592,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "phpstan/phpstan", From 89af503de7dcfc1ce9e6fac2d792800e026b9013 Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Mon, 11 Dec 2023 09:38:35 +0100 Subject: [PATCH 04/14] KUNST-77: Fixed user menu --- templates/admin/_sidebar.html.twig | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/admin/_sidebar.html.twig b/templates/admin/_sidebar.html.twig index 54bb57e..c2a7abd 100644 --- a/templates/admin/_sidebar.html.twig +++ b/templates/admin/_sidebar.html.twig @@ -14,11 +14,11 @@ {% endfor %} -