From 76aeb101bde0d72229395239de6e4d712418d555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Tue, 2 Sep 2025 08:29:22 +0200 Subject: [PATCH 01/33] chore: update project dependencies --- composer.lock | 1563 ++++++++++++++++++++++++++++--------------------- 1 file changed, 884 insertions(+), 679 deletions(-) diff --git a/composer.lock b/composer.lock index 648a52b..651f50d 100644 --- a/composer.lock +++ b/composer.lock @@ -142,99 +142,6 @@ }, "time": "2023-06-19T06:10:36+00:00" }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2022-05-20T20:07:39+00:00" - }, { "name": "doctrine/collections", "version": "2.3.0", @@ -323,28 +230,31 @@ }, { "name": "doctrine/dbal", - "version": "3.9.5", + "version": "3.10.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "4a4e2eed3134036ee36a147ee0dac037dfa17868" + "reference": "3626601014388095d3af9de7e9e958623b7ef005" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/4a4e2eed3134036ee36a147ee0dac037dfa17868", - "reference": "4a4e2eed3134036ee36a147ee0dac037dfa17868", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/3626601014388095d3af9de7e9e958623b7ef005", + "reference": "3626601014388095d3af9de7e9e958623b7ef005", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3|^1", "doctrine/event-manager": "^1|^2", "php": "^7.4 || ^8.0", "psr/cache": "^1|^2|^3", "psr/log": "^1|^2|^3" }, + "conflict": { + "doctrine/cache": "< 1.11" + }, "require-dev": { + "doctrine/cache": "^1.11|^2.0", "doctrine/coding-standard": "13.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", @@ -414,7 +324,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.9.5" + "source": "https://github.com/doctrine/dbal/tree/3.10.1" }, "funding": [ { @@ -430,7 +340,7 @@ "type": "tidelift" } ], - "time": "2025-06-15T22:40:05+00:00" + "time": "2025-08-05T12:18:06+00:00" }, { "name": "doctrine/deprecations", @@ -482,16 +392,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.15.0", + "version": "2.15.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "d88294521a1bca943240adca65fa19ca8a7288c6" + "reference": "5a305c5e776f9d3eb87f5b94d40d50aff439211d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d88294521a1bca943240adca65fa19ca8a7288c6", - "reference": "d88294521a1bca943240adca65fa19ca8a7288c6", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5a305c5e776f9d3eb87f5b94d40d50aff439211d", + "reference": "5a305c5e776f9d3eb87f5b94d40d50aff439211d", "shasum": "" }, "require": { @@ -584,7 +494,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.15.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.15.1" }, "funding": [ { @@ -600,7 +510,7 @@ "type": "tidelift" } ], - "time": "2025-06-16T19:53:58+00:00" + "time": "2025-07-30T15:48:28+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -780,33 +690,32 @@ }, { "name": "doctrine/inflector", - "version": "2.0.10", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Inflector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -851,7 +760,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" + "source": "https://github.com/doctrine/inflector/tree/2.1.0" }, "funding": [ { @@ -867,7 +776,7 @@ "type": "tidelift" } ], - "time": "2024-02-18T20:23:39+00:00" + "time": "2025-08-10T19:31:58+00:00" }, { "name": "doctrine/instantiator", @@ -1018,16 +927,16 @@ }, { "name": "doctrine/migrations", - "version": "3.9.1", + "version": "3.9.4", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "0f1e0c960ac29866d648a4f50142a74fe1cb6999" + "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/0f1e0c960ac29866d648a4f50142a74fe1cb6999", - "reference": "0f1e0c960ac29866d648a4f50142a74fe1cb6999", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", + "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", "shasum": "" }, "require": { @@ -1045,18 +954,18 @@ "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^13", "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3 || ^4", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", "fig/log-test": "^1", - "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", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2", + "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", "symfony/cache": "^5.4 || ^6.0 || ^7.0", "symfony/process": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" @@ -1101,7 +1010,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.1" + "source": "https://github.com/doctrine/migrations/tree/3.9.4" }, "funding": [ { @@ -1117,20 +1026,20 @@ "type": "tidelift" } ], - "time": "2025-06-27T07:19:23+00:00" + "time": "2025-08-19T06:41:07+00:00" }, { "name": "doctrine/orm", - "version": "3.4.3", + "version": "3.5.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "ef607f26c2965fe460c55733cc7c031fb7e1f2fa" + "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/ef607f26c2965fe460c55733cc7c031fb7e1f2fa", - "reference": "ef607f26c2965fe460c55733cc7c031fb7e1f2fa", + "url": "https://api.github.com/repos/doctrine/orm/zipball/5a541b8b3a327ab1ea5f93b1615b4ff67a34e109", + "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109", "shasum": "" }, "require": { @@ -1205,22 +1114,22 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.4.3" + "source": "https://github.com/doctrine/orm/tree/3.5.2" }, - "time": "2025-06-27T12:14:15+00:00" + "time": "2025-08-08T17:00:40+00:00" }, { "name": "doctrine/persistence", - "version": "4.0.0", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "45004aca79189474f113cbe3a53847c2115a55fa" + "reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/45004aca79189474f113cbe3a53847c2115a55fa", - "reference": "45004aca79189474f113cbe3a53847c2115a55fa", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/dcbdfe4b211ae09478e192289cae7ab0987b29a4", + "reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4", "shasum": "" }, "require": { @@ -1228,16 +1137,14 @@ "php": "^8.1", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, - "conflict": { - "doctrine/common": "<2.10" - }, "require-dev": { "doctrine/coding-standard": "^12", "phpstan/phpstan": "1.12.7", "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-strict-rules": "^1.6", "phpunit/phpunit": "^9.6", - "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, "type": "library", "autoload": { @@ -1286,7 +1193,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/4.0.0" + "source": "https://github.com/doctrine/persistence/tree/4.1.0" }, "funding": [ { @@ -1302,7 +1209,7 @@ "type": "tidelift" } ], - "time": "2024-11-01T21:49:07+00:00" + "time": "2025-08-21T16:00:31+00:00" }, { "name": "doctrine/sql-formatter", @@ -1848,16 +1755,16 @@ }, { "name": "league/flysystem-bundle", - "version": "3.4.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-bundle.git", - "reference": "6493f7f2ab49bc5817e4b064b9b971d93faabc12" + "reference": "bf5ab3c072c0def47872e28f69876548d8669657" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-bundle/zipball/6493f7f2ab49bc5817e4b064b9b971d93faabc12", - "reference": "6493f7f2ab49bc5817e4b064b9b971d93faabc12", + "url": "https://api.github.com/repos/thephpleague/flysystem-bundle/zipball/bf5ab3c072c0def47872e28f69876548d8669657", + "reference": "bf5ab3c072c0def47872e28f69876548d8669657", "shasum": "" }, "require": { @@ -1881,6 +1788,7 @@ "league/flysystem-read-only": "^3.15", "league/flysystem-sftp-v3": "^3.1", "league/flysystem-webdav": "^3.29", + "platformcommunity/flysystem-bunnycdn": "^3.3", "symfony/dotenv": "^5.4 || ^6.0 || ^7.0", "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0", @@ -1912,9 +1820,9 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-bundle/issues", - "source": "https://github.com/thephpleague/flysystem-bundle/tree/3.4.0" + "source": "https://github.com/thephpleague/flysystem-bundle/tree/3.5.0" }, - "time": "2025-01-23T18:07:31+00:00" + "time": "2025-06-22T12:43:01+00:00" }, { "name": "league/flysystem-local", @@ -2418,16 +2326,16 @@ }, { "name": "masterminds/html5", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" + "reference": "fcf91eb64359852f00d921887b219479b4f21251" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251", + "reference": "fcf91eb64359852f00d921887b219479b4f21251", "shasum": "" }, "require": { @@ -2479,9 +2387,9 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" + "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" }, - "time": "2024-03-31T07:05:07+00:00" + "time": "2025-07-25T09:04:22+00:00" }, { "name": "monolog/monolog", @@ -2661,16 +2569,16 @@ }, { "name": "nesbot/carbon", - "version": "3.10.1", + "version": "3.10.2", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00" + "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/1fd1935b2d90aef2f093c5e35f7ae1257c448d00", - "reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24", + "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24", "shasum": "" }, "require": { @@ -2762,7 +2670,7 @@ "type": "tidelift" } ], - "time": "2025-06-21T15:19:35+00:00" + "time": "2025-08-02T09:36:06+00:00" }, { "name": "nyholm/psr7", @@ -3014,16 +2922,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.2", + "version": "5.6.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62" + "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62", - "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94f8051919d1b0369a6bcc7931d679a511c03fe9", + "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9", "shasum": "" }, "require": { @@ -3072,9 +2980,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.3" }, - "time": "2025-04-13T19:20:35+00:00" + "time": "2025-08-01T19:43:32+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -3136,16 +3044,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.45", + "version": "3.0.46", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "bd81b90d5963c6b9d87de50357585375223f4dd8" + "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/bd81b90d5963c6b9d87de50357585375223f4dd8", - "reference": "bd81b90d5963c6b9d87de50357585375223f4dd8", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", + "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", "shasum": "" }, "require": { @@ -3226,7 +3134,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.45" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.46" }, "funding": [ { @@ -3242,20 +3150,20 @@ "type": "tidelift" } ], - "time": "2025-06-22T22:54:43+00:00" + "time": "2025-06-26T16:29:55+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "2.1.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", "shasum": "" }, "require": { @@ -3287,9 +3195,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0" }, - "time": "2025-02-19T13:28:12+00:00" + "time": "2025-08-30T15:50:23+00:00" }, { "name": "psr/cache", @@ -3907,16 +3815,16 @@ }, { "name": "symfony/asset", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "2466c17d61d14539cddf77e57ebb9cc971185302" + "reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/2466c17d61d14539cddf77e57ebb9cc971185302", - "reference": "2466c17d61d14539cddf77e57ebb9cc971185302", + "url": "https://api.github.com/repos/symfony/asset/zipball/cfee7c0d64be113383db74a2fdd65d426b7f3aab", + "reference": "cfee7c0d64be113383db74a2fdd65d426b7f3aab", "shasum": "" }, "require": { @@ -3956,7 +3864,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.4.13" + "source": "https://github.com/symfony/asset/tree/v6.4.24" }, "funding": [ { @@ -3967,25 +3875,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/cache", - "version": "v6.4.23", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "c88690befb8d4a85dc321fb78d677507f5eb141b" + "reference": "d038cd3054aeaf1c674022a77048b2ef6376a175" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/c88690befb8d4a85dc321fb78d677507f5eb141b", - "reference": "c88690befb8d4a85dc321fb78d677507f5eb141b", + "url": "https://api.github.com/repos/symfony/cache/zipball/d038cd3054aeaf1c674022a77048b2ef6376a175", + "reference": "d038cd3054aeaf1c674022a77048b2ef6376a175", "shasum": "" }, "require": { @@ -4052,7 +3964,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.23" + "source": "https://github.com/symfony/cache/tree/v6.4.24" }, "funding": [ { @@ -4063,12 +3975,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-27T18:31:36+00:00" + "time": "2025-07-30T09:32:03+00:00" }, { "name": "symfony/cache-contracts", @@ -4148,16 +4064,16 @@ }, { "name": "symfony/clock", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "b2bf55c4dd115003309eafa87ee7df9ed3dde81b" + "reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b2bf55c4dd115003309eafa87ee7df9ed3dde81b", - "reference": "b2bf55c4dd115003309eafa87ee7df9ed3dde81b", + "url": "https://api.github.com/repos/symfony/clock/zipball/5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8", + "reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8", "shasum": "" }, "require": { @@ -4202,7 +4118,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v6.4.13" + "source": "https://github.com/symfony/clock/tree/v6.4.24" }, "funding": [ { @@ -4213,25 +4129,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/config", - "version": "v6.4.22", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "af5917a3b1571f54689e56677a3f06440d2fe4c7" + "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/af5917a3b1571f54689e56677a3f06440d2fe4c7", - "reference": "af5917a3b1571f54689e56677a3f06440d2fe4c7", + "url": "https://api.github.com/repos/symfony/config/zipball/80e2cf005cf17138c97193be0434cdcfd1b2212e", + "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e", "shasum": "" }, "require": { @@ -4277,7 +4197,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.4.22" + "source": "https://github.com/symfony/config/tree/v6.4.24" }, "funding": [ { @@ -4288,25 +4208,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-14T06:00:01+00:00" + "time": "2025-07-26T13:50:30+00:00" }, { "name": "symfony/console", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "9056771b8eca08d026cd3280deeec3cfd99c4d93" + "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/9056771b8eca08d026cd3280deeec3cfd99c4d93", - "reference": "9056771b8eca08d026cd3280deeec3cfd99c4d93", + "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", + "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", "shasum": "" }, "require": { @@ -4371,7 +4295,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.23" + "source": "https://github.com/symfony/console/tree/v6.4.25" }, "funding": [ { @@ -4382,25 +4306,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-27T19:37:22+00:00" + "time": "2025-08-22T10:21:53+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "0d9f24f3de0a83573fce5c9ed025d6306c6e166b" + "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/0d9f24f3de0a83573fce5c9ed025d6306c6e166b", - "reference": "0d9f24f3de0a83573fce5c9ed025d6306c6e166b", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/900da8a42eceeb4a13a0ec34caa7db49328daff3", + "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3", "shasum": "" }, "require": { @@ -4452,7 +4380,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.4.23" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.25" }, "funding": [ { @@ -4463,12 +4391,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-23T06:49:06+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4539,16 +4471,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "ef360932b8b342c0360b768b97776a12d5242db6" + "reference": "d6cda6208c77c4c1f28ba9ff9be4ceaa33416c8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/ef360932b8b342c0360b768b97776a12d5242db6", - "reference": "ef360932b8b342c0360b768b97776a12d5242db6", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/d6cda6208c77c4c1f28ba9ff9be4ceaa33416c8c", + "reference": "d6cda6208c77c4c1f28ba9ff9be4ceaa33416c8c", "shasum": "" }, "require": { @@ -4627,7 +4559,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.23" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.25" }, "funding": [ { @@ -4638,25 +4570,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-26T11:46:10+00:00" + "time": "2025-08-18T12:29:30+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v6.4.18", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "5437d2cde244a4a4b657bc7f3aceb1ce6c56ea7f" + "reference": "63c5dc72a14b4841cb2e932c3fdf39f110353545" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/5437d2cde244a4a4b657bc7f3aceb1ce6c56ea7f", - "reference": "5437d2cde244a4a4b657bc7f3aceb1ce6c56ea7f", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/63c5dc72a14b4841cb2e932c3fdf39f110353545", + "reference": "63c5dc72a14b4841cb2e932c3fdf39f110353545", "shasum": "" }, "require": { @@ -4699,7 +4635,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.18" + "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.24" }, "funding": [ { @@ -4710,25 +4646,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-06T15:50:19+00:00" + "time": "2025-07-30T10:11:46+00:00" }, { "name": "symfony/dom-crawler", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "22210aacb35dbadd772325d759d17bce2374a84d" + "reference": "976302990f9f2a6d4c07206836dd4ca77cae9524" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/22210aacb35dbadd772325d759d17bce2374a84d", - "reference": "22210aacb35dbadd772325d759d17bce2374a84d", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/976302990f9f2a6d4c07206836dd4ca77cae9524", + "reference": "976302990f9f2a6d4c07206836dd4ca77cae9524", "shasum": "" }, "require": { @@ -4766,7 +4706,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.4.23" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.25" }, "funding": [ { @@ -4777,25 +4717,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-13T12:10:00+00:00" + "time": "2025-08-05T18:56:08+00:00" }, { "name": "symfony/dotenv", - "version": "v6.4.16", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "1ac5e7e7e862d4d574258daf08bd569ba926e4a5" + "reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/1ac5e7e7e862d4d574258daf08bd569ba926e4a5", - "reference": "1ac5e7e7e862d4d574258daf08bd569ba926e4a5", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/234b6c602f12b00693f4b0d1054386fb30dfc8ff", + "reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff", "shasum": "" }, "require": { @@ -4840,7 +4784,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.4.16" + "source": "https://github.com/symfony/dotenv/tree/v6.4.24" }, "funding": [ { @@ -4851,25 +4795,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-27T11:08:19+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.23", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "b088e0b175c30b4e06d8085200fa465b586f44fa" + "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/b088e0b175c30b4e06d8085200fa465b586f44fa", - "reference": "b088e0b175c30b4e06d8085200fa465b586f44fa", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/30fd0b3cf0e972e82636038ce4db0e4fe777112c", + "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c", "shasum": "" }, "require": { @@ -4915,7 +4863,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.23" + "source": "https://github.com/symfony/error-handler/tree/v6.4.24" }, "funding": [ { @@ -4926,25 +4874,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-13T07:39:48+00:00" + "time": "2025-07-24T08:25:04+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.13", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e" + "reference": "b0cf3162020603587363f0551cd3be43958611ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", - "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff", + "reference": "b0cf3162020603587363f0551cd3be43958611ff", "shasum": "" }, "require": { @@ -4995,7 +4947,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.13" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.25" }, "funding": [ { @@ -5006,12 +4958,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -5091,16 +5047,16 @@ }, { "name": "symfony/expression-language", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "3524904fb026356a5230cd197f9a4e6a61e0e7df" + "reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/3524904fb026356a5230cd197f9a4e6a61e0e7df", - "reference": "3524904fb026356a5230cd197f9a4e6a61e0e7df", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/1ea0adaa53539ea7e70821ae9de49ebe03ae7091", + "reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091", "shasum": "" }, "require": { @@ -5135,7 +5091,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v6.4.13" + "source": "https://github.com/symfony/expression-language/tree/v6.4.24" }, "funding": [ { @@ -5146,25 +5102,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-09T08:40:40+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3" + "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", + "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", "shasum": "" }, "require": { @@ -5201,7 +5161,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.13" + "source": "https://github.com/symfony/filesystem/tree/v6.4.24" }, "funding": [ { @@ -5212,25 +5172,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/finder", - "version": "v6.4.17", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" + "reference": "73089124388c8510efb8d2d1689285d285937b08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08", + "reference": "73089124388c8510efb8d2d1689285d285937b08", "shasum": "" }, "require": { @@ -5265,7 +5229,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.17" + "source": "https://github.com/symfony/finder/tree/v6.4.24" }, "funding": [ { @@ -5276,25 +5240,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-29T13:51:37+00:00" + "time": "2025-07-15T12:02:45+00:00" }, { "name": "symfony/flex", - "version": "v2.7.1", + "version": "v2.8.2", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "4ae50d368415a06820739e54d38a4a29d6df9155" + "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/4ae50d368415a06820739e54d38a4a29d6df9155", - "reference": "4ae50d368415a06820739e54d38a4a29d6df9155", + "url": "https://api.github.com/repos/symfony/flex/zipball/f356aa35f3cf3d2f46c31d344c1098eb2d260426", + "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426", "shasum": "" }, "require": { @@ -5333,7 +5301,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.7.1" + "source": "https://github.com/symfony/flex/tree/v2.8.2" }, "funding": [ { @@ -5344,25 +5312,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-28T14:22:54+00:00" + "time": "2025-08-22T07:17:23+00:00" }, { "name": "symfony/form", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "6f60a2a9031c49fe92b8703764defa46481db155" + "reference": "ce4d50b8779556a18f72e6122107b3db2f116140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/6f60a2a9031c49fe92b8703764defa46481db155", - "reference": "6f60a2a9031c49fe92b8703764defa46481db155", + "url": "https://api.github.com/repos/symfony/form/zipball/ce4d50b8779556a18f72e6122107b3db2f116140", + "reference": "ce4d50b8779556a18f72e6122107b3db2f116140", "shasum": "" }, "require": { @@ -5430,7 +5402,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.4.23" + "source": "https://github.com/symfony/form/tree/v6.4.25" }, "funding": [ { @@ -5441,25 +5413,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-05T16:22:31+00:00" + "time": "2025-08-18T12:29:30+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "ff892d3ab4b8aa35921bc2120a4b31d57948fe22" + "reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ff892d3ab4b8aa35921bc2120a4b31d57948fe22", - "reference": "ff892d3ab4b8aa35921bc2120a4b31d57948fe22", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1d6a764b58e4f780df00f71c20ba3a61095ea447", + "reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447", "shasum": "" }, "require": { @@ -5579,7 +5555,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.4.23" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.25" }, "funding": [ { @@ -5590,25 +5566,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-26T21:24:02+00:00" + "time": "2025-08-26T10:44:20+00:00" }, { "name": "symfony/http-client", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "19f11e742b94dcfd968a54f5381bb9082a88cb57" + "reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/19f11e742b94dcfd968a54f5381bb9082a88cb57", - "reference": "19f11e742b94dcfd968a54f5381bb9082a88cb57", + "url": "https://api.github.com/repos/symfony/http-client/zipball/b8e9dce2d8acba3c32af467bb58e0c3656886181", + "reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181", "shasum": "" }, "require": { @@ -5616,6 +5596,7 @@ "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-client-contracts": "~3.4.4|^3.5.2", + "symfony/polyfill-php83": "^1.29", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -5672,7 +5653,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.23" + "source": "https://github.com/symfony/http-client/tree/v6.4.25" }, "funding": [ { @@ -5683,12 +5664,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-27T20:02:31+00:00" + "time": "2025-08-27T07:01:16+00:00" }, { "name": "symfony/http-client-contracts", @@ -5770,16 +5755,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "452d19f945ee41345fd8a50c18b60783546b7bd3" + "reference": "6bc974c0035b643aa497c58d46d9e25185e4b272" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/452d19f945ee41345fd8a50c18b60783546b7bd3", - "reference": "452d19f945ee41345fd8a50c18b60783546b7bd3", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6bc974c0035b643aa497c58d46d9e25185e4b272", + "reference": "6bc974c0035b643aa497c58d46d9e25185e4b272", "shasum": "" }, "require": { @@ -5827,7 +5812,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.4.23" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.25" }, "funding": [ { @@ -5838,25 +5823,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-26T09:17:58+00:00" + "time": "2025-08-20T06:48:20+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2bb2cba685aabd859f22cf6946554e8e7f3c329a" + "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2bb2cba685aabd859f22cf6946554e8e7f3c329a", - "reference": "2bb2cba685aabd859f22cf6946554e8e7f3c329a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15", + "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15", "shasum": "" }, "require": { @@ -5941,7 +5930,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.4.23" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.25" }, "funding": [ { @@ -5952,25 +5941,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-28T08:14:51+00:00" + "time": "2025-08-29T07:55:45+00:00" }, { "name": "symfony/intl", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "a3b12ce29a770d1f26c380dabf56a71bc2a88c84" + "reference": "84dc64e179360927eed8f3403b4927aa70702c4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/a3b12ce29a770d1f26c380dabf56a71bc2a88c84", - "reference": "a3b12ce29a770d1f26c380dabf56a71bc2a88c84", + "url": "https://api.github.com/repos/symfony/intl/zipball/84dc64e179360927eed8f3403b4927aa70702c4f", + "reference": "84dc64e179360927eed8f3403b4927aa70702c4f", "shasum": "" }, "require": { @@ -6024,7 +6017,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.23" + "source": "https://github.com/symfony/intl/tree/v6.4.25" }, "funding": [ { @@ -6035,25 +6028,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-06T07:42:46+00:00" + "time": "2025-08-19T13:57:48+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a480322ddf8e54de262c9bca31fdcbe26b553de5" + "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a480322ddf8e54de262c9bca31fdcbe26b553de5", - "reference": "a480322ddf8e54de262c9bca31fdcbe26b553de5", + "url": "https://api.github.com/repos/symfony/mailer/zipball/628b43b45a3e6b15c8a633fb22df547ed9b492a2", + "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2", "shasum": "" }, "require": { @@ -6104,7 +6101,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.23" + "source": "https://github.com/symfony/mailer/tree/v6.4.25" }, "funding": [ { @@ -6115,25 +6112,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-26T21:24:02+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/messenger", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "862d99460cd12a1e6cc2ef928b06ec4bae47d39f" + "reference": "4fef4c925e026cad3697ea13283e9b7a99a4d119" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/862d99460cd12a1e6cc2ef928b06ec4bae47d39f", - "reference": "862d99460cd12a1e6cc2ef928b06ec4bae47d39f", + "url": "https://api.github.com/repos/symfony/messenger/zipball/4fef4c925e026cad3697ea13283e9b7a99a4d119", + "reference": "4fef4c925e026cad3697ea13283e9b7a99a4d119", "shasum": "" }, "require": { @@ -6191,7 +6192,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v6.4.23" + "source": "https://github.com/symfony/messenger/tree/v6.4.25" }, "funding": [ { @@ -6202,25 +6203,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-26T21:24:02+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/mime", - "version": "v6.4.21", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "fec8aa5231f3904754955fad33c2db50594d22d1" + "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/fec8aa5231f3904754955fad33c2db50594d22d1", - "reference": "fec8aa5231f3904754955fad33c2db50594d22d1", + "url": "https://api.github.com/repos/symfony/mime/zipball/664d5e844a2de5e11c8255d0aef6bc15a9660ac7", + "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7", "shasum": "" }, "require": { @@ -6276,7 +6281,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.21" + "source": "https://github.com/symfony/mime/tree/v6.4.24" }, "funding": [ { @@ -6287,25 +6292,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-27T13:27:38+00:00" + "time": "2025-07-15T12:02:45+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v6.4.13", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "9d14621e59f22c2b6d030d92d37ffe5ae1e60452" + "reference": "6711737a4f6acc6cea94344d252fa5d457a5d647" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/9d14621e59f22c2b6d030d92d37ffe5ae1e60452", - "reference": "9d14621e59f22c2b6d030d92d37ffe5ae1e60452", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/6711737a4f6acc6cea94344d252fa5d457a5d647", + "reference": "6711737a4f6acc6cea94344d252fa5d457a5d647", "shasum": "" }, "require": { @@ -6355,7 +6364,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.13" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.25" }, "funding": [ { @@ -6366,12 +6375,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-14T08:49:08+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/monolog-bundle", @@ -6456,16 +6469,16 @@ }, { "name": "symfony/notifier", - "version": "v6.4.21", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/notifier.git", - "reference": "ece4caf82ee43b3f2ce543959272707c846011a3" + "reference": "698470067301f3d0c9b6fa25d196fa2520aa276b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/notifier/zipball/ece4caf82ee43b3f2ce543959272707c846011a3", - "reference": "ece4caf82ee43b3f2ce543959272707c846011a3", + "url": "https://api.github.com/repos/symfony/notifier/zipball/698470067301f3d0c9b6fa25d196fa2520aa276b", + "reference": "698470067301f3d0c9b6fa25d196fa2520aa276b", "shasum": "" }, "require": { @@ -6514,7 +6527,7 @@ "notifier" ], "support": { - "source": "https://github.com/symfony/notifier/tree/v6.4.21" + "source": "https://github.com/symfony/notifier/tree/v6.4.25" }, "funding": [ { @@ -6525,25 +6538,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-27T13:58:34+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.4.16", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "368128ad168f20e22c32159b9f761e456cec0c78" + "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/368128ad168f20e22c32159b9f761e456cec0c78", - "reference": "368128ad168f20e22c32159b9f761e456cec0c78", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe", + "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe", "shasum": "" }, "require": { @@ -6581,7 +6598,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.4.16" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.25" }, "funding": [ { @@ -6592,25 +6609,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-20T10:57:02+00:00" + "time": "2025-08-04T17:06:28+00:00" }, { "name": "symfony/password-hasher", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "e97a1b31f60b8bdfc1fdedab4398538da9441d47" + "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/e97a1b31f60b8bdfc1fdedab4398538da9441d47", - "reference": "e97a1b31f60b8bdfc1fdedab4398538da9441d47", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/dcab5ac87450aaed26483ba49c2ce86808da7557", + "reference": "dcab5ac87450aaed26483ba49c2ce86808da7557", "shasum": "" }, "require": { @@ -6653,7 +6674,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v6.4.13" + "source": "https://github.com/symfony/password-hasher/tree/v6.4.24" }, "funding": [ { @@ -6664,25 +6685,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { @@ -6731,7 +6756,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -6742,25 +6767,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "763d2a91fea5681509ca01acbc1c5e450d127811" + "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/763d2a91fea5681509ca01acbc1c5e450d127811", - "reference": "763d2a91fea5681509ca01acbc1c5e450d127811", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", + "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", "shasum": "" }, "require": { @@ -6815,7 +6844,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.33.0" }, "funding": [ { @@ -6826,16 +6855,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-21T18:38:29+00:00" + "time": "2025-06-20T22:24:30+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", @@ -6898,7 +6931,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.0" }, "funding": [ { @@ -6909,6 +6942,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -6918,7 +6955,7 @@ }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -6979,7 +7016,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" }, "funding": [ { @@ -6990,6 +7027,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -6999,7 +7040,7 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", @@ -7060,7 +7101,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -7071,6 +7112,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -7080,16 +7125,16 @@ }, { "name": "symfony/polyfill-php83", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", "shasum": "" }, "require": { @@ -7136,7 +7181,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0" }, "funding": [ { @@ -7147,25 +7192,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-07-08T02:45:35+00:00" }, { "name": "symfony/polyfill-php84", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "000df7860439609837bbe28670b0be15783b7fbf" + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/000df7860439609837bbe28670b0be15783b7fbf", - "reference": "000df7860439609837bbe28670b0be15783b7fbf", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", "shasum": "" }, "require": { @@ -7212,7 +7261,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" }, "funding": [ { @@ -7223,16 +7272,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-20T12:04:08+00:00" + "time": "2025-06-24T13:30:11+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", @@ -7291,7 +7344,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.33.0" }, "funding": [ { @@ -7302,6 +7355,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -7311,16 +7368,16 @@ }, { "name": "symfony/process", - "version": "v6.4.20", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20" + "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/e2a61c16af36c9a07e5c9906498b73e091949a20", - "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20", + "url": "https://api.github.com/repos/symfony/process/zipball/6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", + "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", "shasum": "" }, "require": { @@ -7352,7 +7409,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.20" + "source": "https://github.com/symfony/process/tree/v6.4.25" }, "funding": [ { @@ -7363,25 +7420,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-03-10T17:11:00+00:00" + "time": "2025-08-14T06:23:17+00:00" }, { "name": "symfony/property-access", - "version": "v6.4.18", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "80e0378f2f058b60d87dedc3c760caec882e992c" + "reference": "fedc771326d4978a7d3167fa009a509b06a2e168" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/80e0378f2f058b60d87dedc3c760caec882e992c", - "reference": "80e0378f2f058b60d87dedc3c760caec882e992c", + "url": "https://api.github.com/repos/symfony/property-access/zipball/fedc771326d4978a7d3167fa009a509b06a2e168", + "reference": "fedc771326d4978a7d3167fa009a509b06a2e168", "shasum": "" }, "require": { @@ -7429,7 +7490,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v6.4.18" + "source": "https://github.com/symfony/property-access/tree/v6.4.25" }, "funding": [ { @@ -7440,25 +7501,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-16T14:42:05+00:00" + "time": "2025-08-12T15:42:57+00:00" }, { "name": "symfony/property-info", - "version": "v6.4.18", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "94d18e5cc11a37fd92856d38b61d9cdf72536a1e" + "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/94d18e5cc11a37fd92856d38b61d9cdf72536a1e", - "reference": "94d18e5cc11a37fd92856d38b61d9cdf72536a1e", + "url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6", + "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6", "shasum": "" }, "require": { @@ -7515,7 +7580,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.4.18" + "source": "https://github.com/symfony/property-info/tree/v6.4.24" }, "funding": [ { @@ -7526,25 +7591,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-21T10:52:27+00:00" + "time": "2025-07-14T16:38:25+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "c9cf83326a1074f83a738fc5320945abf7fb7fec" + "reference": "6954b4e8aef0e5d46f8558c90edcf27bb01b4724" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/c9cf83326a1074f83a738fc5320945abf7fb7fec", - "reference": "c9cf83326a1074f83a738fc5320945abf7fb7fec", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/6954b4e8aef0e5d46f8558c90edcf27bb01b4724", + "reference": "6954b4e8aef0e5d46f8558c90edcf27bb01b4724", "shasum": "" }, "require": { @@ -7598,7 +7667,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.13" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.24" }, "funding": [ { @@ -7609,25 +7678,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/routing", - "version": "v6.4.22", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "1f5234e8457164a3a0038a4c0a4ba27876a9c670" + "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/1f5234e8457164a3a0038a4c0a4ba27876a9c670", - "reference": "1f5234e8457164a3a0038a4c0a4ba27876a9c670", + "url": "https://api.github.com/repos/symfony/routing/zipball/e4f94e625c8e6f910aa004a0042f7b2d398278f5", + "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5", "shasum": "" }, "require": { @@ -7681,7 +7754,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.22" + "source": "https://github.com/symfony/routing/tree/v6.4.24" }, "funding": [ { @@ -7692,25 +7765,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-27T16:08:38+00:00" + "time": "2025-07-15T08:46:37+00:00" }, { "name": "symfony/runtime", - "version": "v6.4.23", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "ef1f03c2ab1144ac4ef7744b9e026bdb06f2f88f" + "reference": "c1cc6721646f546627236c57f835272806087337" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/ef1f03c2ab1144ac4ef7744b9e026bdb06f2f88f", - "reference": "ef1f03c2ab1144ac4ef7744b9e026bdb06f2f88f", + "url": "https://api.github.com/repos/symfony/runtime/zipball/c1cc6721646f546627236c57f835272806087337", + "reference": "c1cc6721646f546627236c57f835272806087337", "shasum": "" }, "require": { @@ -7760,7 +7837,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v6.4.23" + "source": "https://github.com/symfony/runtime/tree/v6.4.24" }, "funding": [ { @@ -7771,25 +7848,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-13T07:44:14+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/security-bundle", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "3db1460f539b23e74a119981ea6b3002302250bc" + "reference": "9780abdfc2011f0998f3cb6c7c88ad8453bd34ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/3db1460f539b23e74a119981ea6b3002302250bc", - "reference": "3db1460f539b23e74a119981ea6b3002302250bc", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/9780abdfc2011f0998f3cb6c7c88ad8453bd34ef", + "reference": "9780abdfc2011f0998f3cb6c7c88ad8453bd34ef", "shasum": "" }, "require": { @@ -7872,7 +7953,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.4.23" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.25" }, "funding": [ { @@ -7883,25 +7964,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-23T20:18:57+00:00" + "time": "2025-08-05T13:23:39+00:00" }, { "name": "symfony/security-core", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "527780a0482e592530174ca90e6189f64cdf6569" + "reference": "b70b1ac76c89eb76faed5721b0dcad3b61a1d747" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/527780a0482e592530174ca90e6189f64cdf6569", - "reference": "527780a0482e592530174ca90e6189f64cdf6569", + "url": "https://api.github.com/repos/symfony/security-core/zipball/b70b1ac76c89eb76faed5721b0dcad3b61a1d747", + "reference": "b70b1ac76c89eb76faed5721b0dcad3b61a1d747", "shasum": "" }, "require": { @@ -7958,7 +8043,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.4.23" + "source": "https://github.com/symfony/security-core/tree/v6.4.25" }, "funding": [ { @@ -7969,25 +8054,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-30T08:33:44+00:00" + "time": "2025-08-21T19:23:36+00:00" }, { "name": "symfony/security-csrf", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "c34421b7d34efbaef5d611ab2e646a0ec464ffe3" + "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/c34421b7d34efbaef5d611ab2e646a0ec464ffe3", - "reference": "c34421b7d34efbaef5d611ab2e646a0ec464ffe3", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/9a1efc8c10b86bcedc9233affd10c716b54ca1b7", + "reference": "9a1efc8c10b86bcedc9233affd10c716b54ca1b7", "shasum": "" }, "require": { @@ -8026,7 +8115,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v6.4.13" + "source": "https://github.com/symfony/security-csrf/tree/v6.4.24" }, "funding": [ { @@ -8037,25 +8126,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/security-http", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "815fcda8122a7850bf6d5d842ce03c20445295bb" + "reference": "878667b04451f2e17b4161237379e5d062575181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/815fcda8122a7850bf6d5d842ce03c20445295bb", - "reference": "815fcda8122a7850bf6d5d842ce03c20445295bb", + "url": "https://api.github.com/repos/symfony/security-http/zipball/878667b04451f2e17b4161237379e5d062575181", + "reference": "878667b04451f2e17b4161237379e5d062575181", "shasum": "" }, "require": { @@ -8114,7 +8207,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.4.23" + "source": "https://github.com/symfony/security-http/tree/v6.4.25" }, "funding": [ { @@ -8125,25 +8218,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-23T20:18:57+00:00" + "time": "2025-08-21T13:09:57+00:00" }, { "name": "symfony/serializer", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "b40a697a2bb2c3d841a1f9e34a8a9f50bf9d1d06" + "reference": "26f877808e20da1c0f8bc366d54c726003b0088b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/b40a697a2bb2c3d841a1f9e34a8a9f50bf9d1d06", - "reference": "b40a697a2bb2c3d841a1f9e34a8a9f50bf9d1d06", + "url": "https://api.github.com/repos/symfony/serializer/zipball/26f877808e20da1c0f8bc366d54c726003b0088b", + "reference": "26f877808e20da1c0f8bc366d54c726003b0088b", "shasum": "" }, "require": { @@ -8212,7 +8309,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.4.23" + "source": "https://github.com/symfony/serializer/tree/v6.4.25" }, "funding": [ { @@ -8223,12 +8320,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-27T15:34:20+00:00" + "time": "2025-08-27T11:31:57+00:00" }, { "name": "symfony/service-contracts", @@ -8315,32 +8416,32 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.27.0", + "version": "v2.30.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "defaeb91bd366f9f43dbe54dbdfd9bc3c4138814" + "reference": "668b9efe9d0ab8b4e50091263171609e0459c0c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/defaeb91bd366f9f43dbe54dbdfd9bc3c4138814", - "reference": "defaeb91bd366f9f43dbe54dbdfd9bc3c4138814", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/668b9efe9d0ab8b4e50091263171609e0459c0c8", + "reference": "668b9efe9d0ab8b4e50091263171609e0459c0c8", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0|^8.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0|^8.0", "symfony/deprecation-contracts": "^2.0|^3.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0|^8.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0|^8.0", "twig/twig": "^2.15.3|^3.8" }, "require-dev": { - "symfony/asset-mapper": "^6.3|^7.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", - "symfony/phpunit-bridge": "^5.4|^6.0|^7.0", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.3|^7.0|^8.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0|^8.0", + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0|^8.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0|^8.0", "zenstruck/browser": "^1.4" }, "type": "symfony-bundle", @@ -8364,7 +8465,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.27.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.30.0" }, "funding": [ { @@ -8375,25 +8476,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-22T19:07:55+00:00" + "time": "2025-08-27T15:25:48+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.4.19", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "dfe1481c12c06266d0c3d58c0cb4b09bd497ab9c" + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/dfe1481c12c06266d0c3d58c0cb4b09bd497ab9c", - "reference": "dfe1481c12c06266d0c3d58c0cb4b09bd497ab9c", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b67e94e06a05d9572c2fa354483b3e13e3cb1898", + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898", "shasum": "" }, "require": { @@ -8426,7 +8531,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.19" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.24" }, "funding": [ { @@ -8437,25 +8542,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-21T10:06:30+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/string", - "version": "v6.4.21", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "73e2c6966a5aef1d4892873ed5322245295370c6" + "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/73e2c6966a5aef1d4892873ed5322245295370c6", - "reference": "73e2c6966a5aef1d4892873ed5322245295370c6", + "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", + "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", "shasum": "" }, "require": { @@ -8512,7 +8621,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.21" + "source": "https://github.com/symfony/string/tree/v6.4.25" }, "funding": [ { @@ -8523,25 +8632,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-18T15:23:29+00:00" + "time": "2025-08-22T12:33:20+00:00" }, { "name": "symfony/translation", - "version": "v6.4.23", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "de8afa521e04a5220e9e58a1dc99971ab7cac643" + "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/de8afa521e04a5220e9e58a1dc99971ab7cac643", - "reference": "de8afa521e04a5220e9e58a1dc99971ab7cac643", + "url": "https://api.github.com/repos/symfony/translation/zipball/300b72643e89de0734d99a9e3f8494a3ef6936e1", + "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1", "shasum": "" }, "require": { @@ -8607,7 +8720,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.23" + "source": "https://github.com/symfony/translation/tree/v6.4.24" }, "funding": [ { @@ -8618,12 +8731,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-26T21:24:02+00:00" + "time": "2025-07-30T17:30:48+00:00" }, { "name": "symfony/translation-contracts", @@ -8705,16 +8822,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v6.4.22", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "04ab306a2f2c9dbd46f4363383812954f704af9d" + "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/04ab306a2f2c9dbd46f4363383812954f704af9d", - "reference": "04ab306a2f2c9dbd46f4363383812954f704af9d", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9d13e87591c9de3221c8d6f23cd9a2b5958607bf", + "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf", "shasum": "" }, "require": { @@ -8794,7 +8911,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.22" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.25" }, "funding": [ { @@ -8805,25 +8922,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-16T08:23:44+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/twig-bundle", - "version": "v6.4.23", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "ef970ed7eb9e547d21628e4c803de0943759cbcd" + "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/ef970ed7eb9e547d21628e4c803de0943759cbcd", - "reference": "ef970ed7eb9e547d21628e4c803de0943759cbcd", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/3b48b6e8225495c6d2438828982b4d219ca565ba", + "reference": "3b48b6e8225495c6d2438828982b4d219ca565ba", "shasum": "" }, "require": { @@ -8878,7 +8999,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.4.23" + "source": "https://github.com/symfony/twig-bundle/tree/v6.4.24" }, "funding": [ { @@ -8889,25 +9010,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-20T20:02:07+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/uid", - "version": "v6.4.23", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "9c8592da78d7ee6af52011eef593350d87e814c0" + "reference": "17da16a750541a42cf2183935e0f6008316c23f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/9c8592da78d7ee6af52011eef593350d87e814c0", - "reference": "9c8592da78d7ee6af52011eef593350d87e814c0", + "url": "https://api.github.com/repos/symfony/uid/zipball/17da16a750541a42cf2183935e0f6008316c23f7", + "reference": "17da16a750541a42cf2183935e0f6008316c23f7", "shasum": "" }, "require": { @@ -8952,7 +9077,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.23" + "source": "https://github.com/symfony/uid/tree/v6.4.24" }, "funding": [ { @@ -8963,25 +9088,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-26T08:06:12+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/validator", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "6506760ab57e7cda5bde9cdaed736526162284bc" + "reference": "9352177c0e937793423053846f80bee805552324" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/6506760ab57e7cda5bde9cdaed736526162284bc", - "reference": "6506760ab57e7cda5bde9cdaed736526162284bc", + "url": "https://api.github.com/repos/symfony/validator/zipball/9352177c0e937793423053846f80bee805552324", + "reference": "9352177c0e937793423053846f80bee805552324", "shasum": "" }, "require": { @@ -9049,7 +9178,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.23" + "source": "https://github.com/symfony/validator/tree/v6.4.25" }, "funding": [ { @@ -9060,25 +9189,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-26T07:25:45+00:00" + "time": "2025-08-27T11:31:57+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "d55b1834cdbfcc31bc2cd7e095ba5ed9a88f6600" + "reference": "c6cd92486e9fc32506370822c57bc02353a5a92c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d55b1834cdbfcc31bc2cd7e095ba5ed9a88f6600", - "reference": "d55b1834cdbfcc31bc2cd7e095ba5ed9a88f6600", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6cd92486e9fc32506370822c57bc02353a5a92c", + "reference": "c6cd92486e9fc32506370822c57bc02353a5a92c", "shasum": "" }, "require": { @@ -9090,7 +9223,6 @@ "symfony/console": "<5.4" }, "require-dev": { - "ext-iconv": "*", "symfony/console": "^5.4|^6.0|^7.0", "symfony/error-handler": "^6.3|^7.0", "symfony/http-kernel": "^5.4|^6.0|^7.0", @@ -9134,7 +9266,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.23" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.25" }, "funding": [ { @@ -9145,25 +9277,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-27T15:05:27+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.22", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "f28cf841f5654955c9f88ceaf4b9dc29571988a9" + "reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/f28cf841f5654955c9f88ceaf4b9dc29571988a9", - "reference": "f28cf841f5654955c9f88ceaf4b9dc29571988a9", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/4ff50a1b7c75d1d596aca50899d0c8c7e3de8358", + "reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358", "shasum": "" }, "require": { @@ -9211,7 +9347,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.22" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.25" }, "funding": [ { @@ -9222,25 +9358,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-14T13:00:13+00:00" + "time": "2025-08-18T13:06:32+00:00" }, { "name": "symfony/web-link", - "version": "v6.4.22", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "8595204221c4307b5fd30644a225b0b952082b18" + "reference": "75ffbb304f26a716969863328c8c6a11eadcfa5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/8595204221c4307b5fd30644a225b0b952082b18", - "reference": "8595204221c4307b5fd30644a225b0b952082b18", + "url": "https://api.github.com/repos/symfony/web-link/zipball/75ffbb304f26a716969863328c8c6a11eadcfa5a", + "reference": "75ffbb304f26a716969863328c8c6a11eadcfa5a", "shasum": "" }, "require": { @@ -9294,7 +9434,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v6.4.22" + "source": "https://github.com/symfony/web-link/tree/v6.4.24" }, "funding": [ { @@ -9305,41 +9445,45 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-16T08:23:44+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/webpack-encore-bundle", - "version": "v2.2.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/symfony/webpack-encore-bundle.git", - "reference": "e335394b68a775a9b2bd173a8ba4fd2001f3870c" + "reference": "7ae70d44c24c3b913f308af8396169b5c6d9e0f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/e335394b68a775a9b2bd173a8ba4fd2001f3870c", - "reference": "e335394b68a775a9b2bd173a8ba4fd2001f3870c", + "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/7ae70d44c24c3b913f308af8396169b5c6d9e0f5", + "reference": "7ae70d44c24c3b913f308af8396169b5c6d9e0f5", "shasum": "" }, "require": { "php": ">=8.1.0", - "symfony/asset": "^5.4 || ^6.2 || ^7.0", - "symfony/config": "^5.4 || ^6.2 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0", + "symfony/asset": "^5.4 || ^6.2 || ^7.0 || ^8.0", + "symfony/config": "^5.4 || ^6.2 || ^7.0 || ^8.0", + "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0 || ^8.0", + "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0 || ^8.0", "symfony/service-contracts": "^1.1.9 || ^2.1.3 || ^3.0" }, "require-dev": { - "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0", - "symfony/http-client": "^5.4 || ^6.2 || ^7.0", - "symfony/phpunit-bridge": "^5.4 || ^6.2 || ^7.0", - "symfony/twig-bundle": "^5.4 || ^6.2 || ^7.0", - "symfony/web-link": "^5.4 || ^6.2 || ^7.0" + "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0 || ^8.0", + "symfony/http-client": "^5.4 || ^6.2 || ^7.0 || ^8.0", + "symfony/phpunit-bridge": "^5.4 || ^6.2 || ^7.0 || ^8.0", + "symfony/twig-bundle": "^5.4 || ^6.2 || ^7.0 || ^8.0", + "symfony/web-link": "^5.4 || ^6.2 || ^7.0 || ^8.0" }, "type": "symfony-bundle", "extra": { @@ -9366,7 +9510,7 @@ "description": "Integration of your Symfony app with Webpack Encore", "support": { "issues": "https://github.com/symfony/webpack-encore-bundle/issues", - "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.2.0" + "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.3.0" }, "funding": [ { @@ -9377,25 +9521,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-02T07:27:19+00:00" + "time": "2025-08-05T11:43:32+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.23", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "93e29e0deb5f1b2e360adfb389a20d25eb81a27b" + "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/93e29e0deb5f1b2e360adfb389a20d25eb81a27b", - "reference": "93e29e0deb5f1b2e360adfb389a20d25eb81a27b", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e54b060bc9c3dc3d4258bf0d165d0064e755f565", + "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565", "shasum": "" }, "require": { @@ -9438,7 +9586,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.23" + "source": "https://github.com/symfony/yaml/tree/v6.4.25" }, "funding": [ { @@ -9449,12 +9597,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-03T06:46:12+00:00" + "time": "2025-08-26T16:59:00+00:00" }, { "name": "twig/extra-bundle", @@ -10206,16 +10358,16 @@ }, { "name": "composer/semver", - "version": "3.4.3", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", "shasum": "" }, "require": { @@ -10267,7 +10419,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.3" + "source": "https://github.com/composer/semver/tree/3.4.4" }, "funding": [ { @@ -10277,13 +10429,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-09-19T14:15:21+00:00" + "time": "2025-08-20T19:15:30+00:00" }, { "name": "composer/xdebug-handler", @@ -10454,16 +10602,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "8520451a140d3f46ac33042715115e290cf5785f" + "reference": "db9508f7b1474469d9d3c53b86f817e344732678" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", - "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678", "shasum": "" }, "require": { @@ -10473,10 +10621,10 @@ "fidry/makefile": "^0.2.0", "fidry/php-cs-fixer-config": "^1.1.2", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^8.5.31 || ^9.5.26", "webmozarts/strict-phpunit": "^7.5" }, @@ -10503,7 +10651,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" }, "funding": [ { @@ -10511,62 +10659,63 @@ "type": "github" } ], - "time": "2024-08-06T10:04:20+00:00" + "time": "2025-08-14T07:29:31+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.75.0", + "version": "v3.86.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "399a128ff2fdaf4281e4e79b755693286cdf325c" + "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/399a128ff2fdaf4281e4e79b755693286cdf325c", - "reference": "399a128ff2fdaf4281e4e79b755693286cdf325c", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4a952bd19dc97879b0620f495552ef09b55f7d36", + "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36", "shasum": "" }, "require": { - "clue/ndjson-react": "^1.0", + "clue/ndjson-react": "^1.3", "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.3", + "composer/xdebug-handler": "^3.0.5", "ext-filter": "*", "ext-hash": "*", "ext-json": "*", "ext-tokenizer": "*", "fidry/cpu-core-counter": "^1.2", "php": "^7.4 || ^8.0", - "react/child-process": "^0.6.5", - "react/event-loop": "^1.0", - "react/promise": "^2.0 || ^3.0", - "react/socket": "^1.0", - "react/stream": "^1.0", - "sebastian/diff": "^4.0 || ^5.1 || ^6.0 || ^7.0", - "symfony/console": "^5.4 || ^6.4 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.4 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.4 || ^7.0", - "symfony/finder": "^5.4 || ^6.4 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.4 || ^7.0", - "symfony/polyfill-mbstring": "^1.31", - "symfony/polyfill-php80": "^1.31", - "symfony/polyfill-php81": "^1.31", - "symfony/process": "^5.4 || ^6.4 || ^7.2", - "symfony/stopwatch": "^5.4 || ^6.4 || ^7.0" + "react/child-process": "^0.6.6", + "react/event-loop": "^1.5", + "react/promise": "^3.2", + "react/socket": "^1.16", + "react/stream": "^1.4", + "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", + "symfony/console": "^5.4.47 || ^6.4.13 || ^7.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/filesystem": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/finder": "^5.4.45 || ^6.4.17 || ^7.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.16 || ^7.0", + "symfony/polyfill-mbstring": "^1.32", + "symfony/polyfill-php80": "^1.32", + "symfony/polyfill-php81": "^1.32", + "symfony/process": "^5.4.47 || ^6.4.20 || ^7.2", + "symfony/stopwatch": "^5.4.45 || ^6.4.19 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3.1 || ^2.6", "infection/infection": "^0.29.14", - "justinrainbow/json-schema": "^5.3 || ^6.2", - "keradus/cli-executor": "^2.1", + "justinrainbow/json-schema": "^5.3 || ^6.4", + "keradus/cli-executor": "^2.2", "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.7", + "php-coveralls/php-coveralls": "^2.8", "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", - "phpunit/phpunit": "^9.6.22 || ^10.5.45 || ^11.5.12", - "symfony/var-dumper": "^5.4.48 || ^6.4.18 || ^7.2.3", - "symfony/yaml": "^5.4.45 || ^6.4.18 || ^7.2.3" + "phpunit/phpunit": "^9.6.23 || ^10.5.47 || ^11.5.25", + "symfony/polyfill-php84": "^1.32", + "symfony/var-dumper": "^5.4.48 || ^6.4.23 || ^7.3.1", + "symfony/yaml": "^5.4.45 || ^6.4.23 || ^7.3.1" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -10607,7 +10756,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.75.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.86.0" }, "funding": [ { @@ -10615,20 +10764,20 @@ "type": "github" } ], - "time": "2025-03-31T18:40:42+00:00" + "time": "2025-08-13T22:36:21+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.13.1", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c", - "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -10667,7 +10816,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -10675,20 +10824,20 @@ "type": "tidelift" } ], - "time": "2025-04-29T12:36:36+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "nikic/php-parser", - "version": "v5.5.0", + "version": "v5.6.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", "shasum": "" }, "require": { @@ -10707,7 +10856,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -10731,9 +10880,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" }, - "time": "2025-05-31T08:24:38+00:00" + "time": "2025-08-13T20:13:15+00:00" }, { "name": "phar-io/manifest", @@ -11174,16 +11323,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.23", + "version": "9.6.25", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95" + "reference": "049c011e01be805202d8eebedef49f769a8ec7b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", - "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/049c011e01be805202d8eebedef49f769a8ec7b7", + "reference": "049c011e01be805202d8eebedef49f769a8ec7b7", "shasum": "" }, "require": { @@ -11194,7 +11343,7 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.1", + "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=7.3", @@ -11205,11 +11354,11 @@ "phpunit/php-timer": "^5.0.3", "sebastian/cli-parser": "^1.0.2", "sebastian/code-unit": "^1.0.8", - "sebastian/comparator": "^4.0.8", + "sebastian/comparator": "^4.0.9", "sebastian/diff": "^4.0.6", "sebastian/environment": "^5.1.5", "sebastian/exporter": "^4.0.6", - "sebastian/global-state": "^5.0.7", + "sebastian/global-state": "^5.0.8", "sebastian/object-enumerator": "^4.0.4", "sebastian/resource-operations": "^3.0.4", "sebastian/type": "^3.2.1", @@ -11257,7 +11406,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.23" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.25" }, "funding": [ { @@ -11281,7 +11430,7 @@ "type": "tidelift" } ], - "time": "2025-05-02T06:40:34+00:00" + "time": "2025-08-20T14:38:31+00:00" }, { "name": "react/cache", @@ -11580,23 +11729,23 @@ }, { "name": "react/promise", - "version": "v3.2.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", "shasum": "" }, "require": { "php": ">=7.1.0" }, "require-dev": { - "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpstan/phpstan": "1.12.28 || 1.4.10", "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", @@ -11641,7 +11790,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.2.0" + "source": "https://github.com/reactphp/promise/tree/v3.3.0" }, "funding": [ { @@ -11649,7 +11798,7 @@ "type": "open_collective" } ], - "time": "2024-05-24T10:39:05+00:00" + "time": "2025-08-19T18:57:03+00:00" }, { "name": "react/socket", @@ -11978,16 +12127,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "4.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5", + "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5", "shasum": "" }, "require": { @@ -12040,15 +12189,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2025-08-10T06:51:50+00:00" }, { "name": "sebastian/complexity", @@ -12315,16 +12476,16 @@ }, { "name": "sebastian/global-state", - "version": "5.0.7", + "version": "5.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6", + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6", "shasum": "" }, "require": { @@ -12367,15 +12528,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" } ], - "time": "2024-03-02T06:35:11+00:00" + "time": "2025-08-10T07:10:35+00:00" }, { "name": "sebastian/lines-of-code", @@ -12548,16 +12721,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0", + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0", "shasum": "" }, "require": { @@ -12599,15 +12772,27 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2023-02-03T06:07:39+00:00" + "time": "2025-08-10T06:57:39+00:00" }, { "name": "sebastian/resource-operations", @@ -12774,16 +12959,16 @@ }, { "name": "symfony/browser-kit", - "version": "v6.4.19", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "ce95f3e3239159e7fa3be7690c6ce95a4714637f" + "reference": "3537d17782f8c20795b194acb6859071b60c6fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/ce95f3e3239159e7fa3be7690c6ce95a4714637f", - "reference": "ce95f3e3239159e7fa3be7690c6ce95a4714637f", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/3537d17782f8c20795b194acb6859071b60c6fac", + "reference": "3537d17782f8c20795b194acb6859071b60c6fac", "shasum": "" }, "require": { @@ -12822,7 +13007,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.4.19" + "source": "https://github.com/symfony/browser-kit/tree/v6.4.24" }, "funding": [ { @@ -12833,25 +13018,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-14T11:23:16+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/css-selector", - "version": "v6.4.13", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "cb23e97813c5837a041b73a6d63a9ddff0778f5e" + "reference": "9b784413143701aa3c94ac1869a159a9e53e8761" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/cb23e97813c5837a041b73a6d63a9ddff0778f5e", - "reference": "cb23e97813c5837a041b73a6d63a9ddff0778f5e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/9b784413143701aa3c94ac1869a159a9e53e8761", + "reference": "9b784413143701aa3c94ac1869a159a9e53e8761", "shasum": "" }, "require": { @@ -12887,7 +13076,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.13" + "source": "https://github.com/symfony/css-selector/tree/v6.4.24" }, "funding": [ { @@ -12898,12 +13087,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/debug-bundle", @@ -12981,16 +13174,16 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.63.0", + "version": "v1.64.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "69478ab39bc303abfbe3293006a78b09a8512425" + "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/69478ab39bc303abfbe3293006a78b09a8512425", - "reference": "69478ab39bc303abfbe3293006a78b09a8512425", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c86da84640b0586e92aee2b276ee3638ef2f425a", + "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a", "shasum": "" }, "require": { @@ -13018,6 +13211,7 @@ "symfony/http-client": "^6.4|^7.0", "symfony/phpunit-bridge": "^6.4.1|^7.0", "symfony/security-core": "^6.4|^7.0", + "symfony/security-http": "^6.4|^7.0", "symfony/yaml": "^6.4|^7.0", "twig/twig": "^3.0|^4.x-dev" }, @@ -13053,7 +13247,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.63.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.64.0" }, "funding": [ { @@ -13069,20 +13263,20 @@ "type": "tidelift" } ], - "time": "2025-04-26T01:41:37+00:00" + "time": "2025-06-23T16:12:08+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v7.3.0", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "2eabda563921f21cbce1d1e3247b3c36568905e6" + "reference": "7954e563ed14f924593169f6c4645d58d9d9ac77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/2eabda563921f21cbce1d1e3247b3c36568905e6", - "reference": "2eabda563921f21cbce1d1e3247b3c36568905e6", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/7954e563ed14f924593169f6c4645d58d9d9ac77", + "reference": "7954e563ed14f924593169f6c4645d58d9d9ac77", "shasum": "" }, "require": { @@ -13134,8 +13328,11 @@ ], "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", + "keywords": [ + "testing" + ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.0" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.3" }, "funding": [ { @@ -13146,25 +13343,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-23T07:26:30+00:00" + "time": "2025-08-04T15:15:28+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.19", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "7d1026a8e950d416cb5148ae88ac23db5d264839" + "reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/7d1026a8e950d416cb5148ae88ac23db5d264839", - "reference": "7d1026a8e950d416cb5148ae88ac23db5d264839", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910", + "reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910", "shasum": "" }, "require": { @@ -13217,7 +13418,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.19" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.25" }, "funding": [ { @@ -13228,12 +13429,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-14T12:21:59+00:00" + "time": "2025-08-07T12:02:05+00:00" }, { "name": "theseer/tokenizer", From 1c2421fb7e7c9e0e56480efed5ef8868a75ad967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Tue, 2 Sep 2025 08:40:17 +0200 Subject: [PATCH 02/33] fix: respect environment variable to toggle BPN debug mode --- config/services.yaml | 1 + src/BusProNet/ApiClient.php | 9 +++++---- src/BusProNet/Model/Booking.php | 4 +++- src/Controller/Booking/EditController.php | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/config/services.yaml b/config/services.yaml index 7836f0e..290b05e 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -6,6 +6,7 @@ parameters: travel_info_base_url: '%env(APP_TRAVEL_INFO_BASE_URL)%' path_to_keys: '%kernel.project_dir%/config/secret' + bpn_debug: '%env(APP_BPN_DEBUG)%' services: # default configuration for services in *this* file diff --git a/src/BusProNet/ApiClient.php b/src/BusProNet/ApiClient.php index 9548b78..ea644ce 100644 --- a/src/BusProNet/ApiClient.php +++ b/src/BusProNet/ApiClient.php @@ -121,7 +121,7 @@ class ApiClient 'adressdaten' => $personalData->toPayload(), ]; - return $this->sendRequest(static::TYPE_CUSTOMER_DATA, $data, $debug); + return $this->sendRequest(static::TYPE_CUSTOMER_DATA, $data); } /** @@ -184,7 +184,7 @@ class ApiClient /** * @throws ApiClientException */ - public function updateBooking(BookingData $formData, bool $debug = false): Notification|BookingUpdate + public function updateBooking(BookingData $formData): Notification|BookingUpdate { $payload = (new BookingDataProcessor())->createUpdateRequestPayload($formData); @@ -196,7 +196,7 @@ class ApiClient ...$payload, ]; - return $this->sendRequest(static::TYPE_BOOKING_UPDATE, $data, $debug); + return $this->sendRequest(static::TYPE_BOOKING_UPDATE, $data); } /** @@ -282,9 +282,10 @@ class ApiClient /** * @throws ApiClientException */ - private function sendRequest(string $type, array $data, bool $debug = false): mixed + private function sendRequest(string $type, array $data): mixed { $requestId = date(DATE_ATOM).uniqid(); + $debug = $this->config['debug']; $body = $this ->serializer diff --git a/src/BusProNet/Model/Booking.php b/src/BusProNet/Model/Booking.php index 1e94cdc..cbb921c 100644 --- a/src/BusProNet/Model/Booking.php +++ b/src/BusProNet/Model/Booking.php @@ -146,6 +146,8 @@ class Booking public function isEditable(): bool { - return $this->travelDate > new \DateTimeImmutable() && false === in_array($this->status, ['S', 'U']); + $now = new \DateTimeImmutable(); + + return $this->travelDate > $now && false === in_array($this->status, ['S', 'U']); } } diff --git a/src/Controller/Booking/EditController.php b/src/Controller/Booking/EditController.php index 4bed922..9e1ba6d 100644 --- a/src/Controller/Booking/EditController.php +++ b/src/Controller/Booking/EditController.php @@ -105,7 +105,7 @@ class EditController extends AbstractController ]); try { - $response = $this->apiClient->updateBooking($formData, true); + $response = $this->apiClient->updateBooking($formData); if ($response instanceof Notification) { if (true === $response->isError()) { $this->addFlash('error', $response->message); From e98695ea060869310309ceb811ae4bb3bd4c9a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Tue, 2 Sep 2025 08:47:57 +0200 Subject: [PATCH 03/33] feat: integrate with zenstruck schedule bundle --- composer.json | 3 +- composer.lock | 146 +++++++++++++++++++++++- config/bundles.php | 1 + config/packages/zenstruck_schedule.yaml | 14 +++ symfony.lock | 3 + 5 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 config/packages/zenstruck_schedule.yaml diff --git a/composer.json b/composer.json index 19f9b09..71a8dbc 100644 --- a/composer.json +++ b/composer.json @@ -57,7 +57,8 @@ "twig/html-extra": "^3.15", "twig/intl-extra": "*", "twig/twig": "^2.12|^3.0", - "voku/anti-xss": "^4.1" + "voku/anti-xss": "^4.1", + "zenstruck/schedule-bundle": "^1.8" }, "config": { "allow-plugins": { diff --git a/composer.lock b/composer.lock index 651f50d..d317f89 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": "a9b6d7e03aaaf7cdf94102b79b8d581c", + "content-hash": "860b033f0e4af243f08c5e0634495f18", "packages": [ { "name": "carbonphp/carbon-doctrine-types", @@ -1266,6 +1266,71 @@ }, "time": "2025-01-24T11:45:48+00:00" }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "8c784d071debd117328803d86b2097615b457500" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2024-10-09T13:47:03+00:00" + }, { "name": "egulias/email-validator", "version": "4.0.4", @@ -10210,6 +10275,85 @@ "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, "time": "2022-06-03T18:03:27+00:00" + }, + { + "name": "zenstruck/schedule-bundle", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/zenstruck/schedule-bundle.git", + "reference": "c82f4d3e96566260796975a90a8d8075fca681c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zenstruck/schedule-bundle/zipball/c82f4d3e96566260796975a90a8d8075fca681c9", + "reference": "c82f4d3e96566260796975a90a8d8075fca681c9", + "shasum": "" + }, + "require": { + "dragonmantank/cron-expression": "^2.3|^3.0", + "php": ">=8.0", + "symfony/console": "^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": { + "lorisleiva/cron-translator": "^0.1.0|^0.3.1|^0.4.0", + "matthiasnoback/symfony-dependency-injection-test": "^4.1|^5.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5", + "psr/log": "^1.1", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/mailer": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/notifier": "^5.4|^6.0|^7.0", + "symfony/phpunit-bridge": "^6.2|^7.0", + "symfony/process": "^5.4|^6.0|^7.0" + }, + "suggest": { + "lorisleiva/cron-translator": "Displays human readable cron expression in schedule:list", + "symfony/http-client": "Allows usage of ping* extensions", + "symfony/lock": "Allows usage of withoutOverlapping and onSingleServer extensions", + "symfony/mailer": "Allows usage of email* extensions", + "symfony/notifier": "Allows usage of notify* extensions", + "symfony/process": "Allows usage of ProcessTask" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Zenstruck\\ScheduleBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Bond", + "email": "kevinbond@gmail.com" + } + ], + "description": "Schedule Cron jobs (commands/callbacks/bash scripts) within your Symfony application.", + "homepage": "https://github.com/zenstruck/schedule-bundle", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/zenstruck/schedule-bundle/issues", + "source": "https://github.com/zenstruck/schedule-bundle/tree/v1.8.1" + }, + "funding": [ + { + "url": "https://github.com/kbond", + "type": "github" + } + ], + "time": "2025-04-27T22:34:07+00:00" } ], "packages-dev": [ diff --git a/config/bundles.php b/config/bundles.php index 5f23f18..bf83205 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -16,4 +16,5 @@ return [ Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true], League\FlysystemBundle\FlysystemBundle::class => ['all' => true], League\Bundle\OAuth2ServerBundle\LeagueOAuth2ServerBundle::class => ['all' => true], + Zenstruck\ScheduleBundle\ZenstruckScheduleBundle::class => ['all' => true], ]; diff --git a/config/packages/zenstruck_schedule.yaml b/config/packages/zenstruck_schedule.yaml new file mode 100644 index 0000000..1fc8a43 --- /dev/null +++ b/config/packages/zenstruck_schedule.yaml @@ -0,0 +1,14 @@ +zenstruck_schedule: + timezone: Europe/Berlin + + mailer: + service: mailer + + schedule_extensions: + email_on_failure: + to: fromme@dreipunktnull.com + + tasks: + - task: app:cleanup:xml-dumps + frequency: '0 1 * * *' + description: "Removes XML dumps of BPN requests/responses older than a week" diff --git a/symfony.lock b/symfony.lock index 1e549ea..7dd436e 100644 --- a/symfony.lock +++ b/symfony.lock @@ -362,5 +362,8 @@ }, "twig/extra-bundle": { "version": "v3.15.0" + }, + "zenstruck/schedule-bundle": { + "version": "v1.8.1" } } From 2a5100e76de160daed84b3d2ab0fcb7a36263c1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Tue, 2 Sep 2025 08:51:12 +0200 Subject: [PATCH 04/33] feat: update scheduler config --- config/packages/zenstruck_schedule.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/packages/zenstruck_schedule.yaml b/config/packages/zenstruck_schedule.yaml index 1fc8a43..ff5c94f 100644 --- a/config/packages/zenstruck_schedule.yaml +++ b/config/packages/zenstruck_schedule.yaml @@ -12,3 +12,7 @@ zenstruck_schedule: - task: app:cleanup:xml-dumps frequency: '0 1 * * *' description: "Removes XML dumps of BPN requests/responses older than a week" + + - task: league:oauth2-server:clear-expired-tokens + frequency: '0 * * * *' + description: "Clean expired OAuth2 tokens" From 7b25fbf28bad5ab65990e40b1cef35c49439e97c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Tue, 2 Sep 2025 09:29:36 +0200 Subject: [PATCH 05/33] chore: adjust schedule for XML cleanup to run more often --- config/packages/zenstruck_schedule.yaml | 4 ++-- src/Command/CleanupXMLDumpsCommand.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/packages/zenstruck_schedule.yaml b/config/packages/zenstruck_schedule.yaml index ff5c94f..846a994 100644 --- a/config/packages/zenstruck_schedule.yaml +++ b/config/packages/zenstruck_schedule.yaml @@ -10,8 +10,8 @@ zenstruck_schedule: tasks: - task: app:cleanup:xml-dumps - frequency: '0 1 * * *' - description: "Removes XML dumps of BPN requests/responses older than a week" + frequency: '0 */6 * * *' + description: "Removes outdated XML dumps of BPN requests/responses" - task: league:oauth2-server:clear-expired-tokens frequency: '0 * * * *' diff --git a/src/Command/CleanupXMLDumpsCommand.php b/src/Command/CleanupXMLDumpsCommand.php index d78655d..2c89cc4 100644 --- a/src/Command/CleanupXMLDumpsCommand.php +++ b/src/Command/CleanupXMLDumpsCommand.php @@ -14,7 +14,7 @@ use Symfony\Component\Console\Style\SymfonyStyle; #[AsCommand( name: 'app:cleanup:xml-dumps', - description: 'Removes XML dumps of BPN requests/responses older than a week' + description: 'Removes outdated XML dumps of BPN requests/responses' )] class CleanupXMLDumpsCommand extends Command { @@ -30,7 +30,7 @@ class CleanupXMLDumpsCommand extends Command $io = new SymfonyStyle($input, $output); // we look for files older than 1 week - $maxDate = (new \DateTimeImmutable())->modify('-1 week')->getTimestamp(); + $maxDate = (new \DateTimeImmutable())->modify('-3 day')->getTimestamp(); try { $files = $this From 297becf7a0776e1ae7a2f1c91cb0c660cc7d5cad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 10 Sep 2025 15:25:30 +0200 Subject: [PATCH 06/33] fix: filter selectable services by participant's age --- src/BusProNet/Model/Service.php | 6 ++++ src/BusProNet/XmlLoader/TravelLoader.php | 2 ++ src/BusProNet/XmlParser/ServicesParser.php | 3 ++ src/Form/Model/ParticipantData.php | 11 ++++++ src/Form/ParticipantType.php | 42 +++++++++++++++++++--- 5 files changed, 59 insertions(+), 5 deletions(-) diff --git a/src/BusProNet/Model/Service.php b/src/BusProNet/Model/Service.php index 751f093..5c8c011 100644 --- a/src/BusProNet/Model/Service.php +++ b/src/BusProNet/Model/Service.php @@ -79,4 +79,10 @@ class Service #[Groups(['api:single', 'api:list'])] public ?string $direction = null; + + #[Groups(['api:single', 'api:list'])] + public ?int $ageFrom = null; + + #[Groups(['api:single', 'api:list'])] + public ?int $ageTo = null; } diff --git a/src/BusProNet/XmlLoader/TravelLoader.php b/src/BusProNet/XmlLoader/TravelLoader.php index d20edd2..8c6d241 100644 --- a/src/BusProNet/XmlLoader/TravelLoader.php +++ b/src/BusProNet/XmlLoader/TravelLoader.php @@ -203,6 +203,8 @@ class TravelLoader extends AbstractLoader $service->price = $this ->stringToFloat($this->getStringOrNullValue($serviceNode->filterXPath('//preis'))); $service->status = $this->getStringOrNullValue($serviceNode->filterXPath('//status')); + $service->ageFrom = $this->getIntOrNullValue($serviceNode->filterXPath('//altervon')); + $service->ageTo = $this->getIntOrNullValue($serviceNode->filterXPath('//alterbis')); $additionalServices[$serviceId] = $service; }); diff --git a/src/BusProNet/XmlParser/ServicesParser.php b/src/BusProNet/XmlParser/ServicesParser.php index 7142821..13e1d4d 100644 --- a/src/BusProNet/XmlParser/ServicesParser.php +++ b/src/BusProNet/XmlParser/ServicesParser.php @@ -34,6 +34,9 @@ class ServicesParser extends AbstractParser $service->direction = $node->attr('richtung'); } + $service->ageFrom = $this->getIntOrNullValue($node->filterXPath('//altervon')); + $service->ageTo = $this->getIntOrNullValue($node->filterXPath('//alterbis')); + $services[$service->id] = $service; }); diff --git a/src/Form/Model/ParticipantData.php b/src/Form/Model/ParticipantData.php index 2334f30..63158dd 100644 --- a/src/Form/Model/ParticipantData.php +++ b/src/Form/Model/ParticipantData.php @@ -68,6 +68,17 @@ class ParticipantData return $instance; } + public function getAge(): ?int + { + if (null === $this->dateOfBirth) { + return null; + } + + $today = new \DateTimeImmutable('today'); + + return $this->dateOfBirth->diff($today)->y; + } + public function isCanceled(): bool { return 'S' === $this->status; diff --git a/src/Form/ParticipantType.php b/src/Form/ParticipantType.php index 6a81ac8..580d6da 100644 --- a/src/Form/ParticipantType.php +++ b/src/Form/ParticipantType.php @@ -209,18 +209,20 @@ class ParticipantType extends AbstractType 'choices' => $options['selectable_courses'], ]); } - if (0 < count($options['selectable_services'])) { + $additionalServices = $this->filterServicesByAge($participantData->getAge(), $options['selectable_services']); + if (0 < count($additionalServices)) { $form->add('additionalServices', ChoiceType::class, [ ...$commonChoiceFieldOptions, 'label' => 'Zusatzleistungen', - 'choices' => $options['selectable_services'], + 'choices' => $additionalServices, ]); } - if (0 < count($options['selectable_ski_passes'])) { + $skiPasses = $this->filterServicesByAge($participantData->getAge(), $options['selectable_ski_passes']); + if (0 < count($skiPasses)) { $form->add('skiPass', ChoiceType::class, [ ...$commonChoiceFieldOptions, 'label' => 'Skipass', - 'choices' => $options['selectable_ski_passes'], + 'choices' => $skiPasses, ]); } if (0 < count($options['selectable_board'])) { @@ -336,8 +338,18 @@ class ParticipantType extends AbstractType unset($data['pickup']); } + // filter selectable services by participant's age + if (false === isset($data['dateOfBirth'])) { + $allServices = $options['selectable_services']; + } else { + $dateOfBirth = new \DateTimeImmutable($data['dateOfBirth']); + $today = new \DateTimeImmutable('today'); + $age = $dateOfBirth->diff($today)->y; + $allServices = $this->filterServicesByAge($age, $options['selectable_services']); + } + // forcibly select mandatory services that potentially have been disabled in PRE_SET_DATA - $mandatoryServices = array_filter($options['selectable_services'], function (Service $service) use ($form) { + $mandatoryServices = array_filter($allServices, function (Service $service) use ($form) { $participantIndex = $form->getData()->index; return true === $service->mandatory @@ -361,6 +373,26 @@ class ParticipantType extends AbstractType }); } + private function filterServicesByAge(?int $age, array $services): array + { + if (null === $age) { + return $services; + } + + return array_filter($services, function (Service $service) use ($age) { + if (null === $service->ageFrom && null === $service->ageTo) { + return true; + } + if ( + null !== $service->ageTo && $service->ageTo >= $age + && null !== $service->ageFrom && $service->ageFrom <= $age + ) { + return true; + } + return false; + }); + } + public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ From b197152f126b8cbfbf4cd6ecdbeba568ac8e07cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 10 Sep 2025 15:30:36 +0200 Subject: [PATCH 07/33] feat: restrict access to booking edit and invoice to applicant --- composer.lock | 96 +++++++++++----------- src/BusProNet/Model/Booking.php | 1 + src/BusProNet/XmlParser/BookingsParser.php | 1 + templates/booking/index.html.twig | 14 ++-- 4 files changed, 58 insertions(+), 54 deletions(-) diff --git a/composer.lock b/composer.lock index d317f89..e8518d5 100644 --- a/composer.lock +++ b/composer.lock @@ -230,16 +230,16 @@ }, { "name": "doctrine/dbal", - "version": "3.10.1", + "version": "3.10.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "3626601014388095d3af9de7e9e958623b7ef005" + "reference": "c6c16cf787eaba3112203dfcd715fa2059c62282" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/3626601014388095d3af9de7e9e958623b7ef005", - "reference": "3626601014388095d3af9de7e9e958623b7ef005", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/c6c16cf787eaba3112203dfcd715fa2059c62282", + "reference": "c6c16cf787eaba3112203dfcd715fa2059c62282", "shasum": "" }, "require": { @@ -255,10 +255,10 @@ }, "require-dev": { "doctrine/cache": "^1.11|^2.0", - "doctrine/coding-standard": "13.0.0", + "doctrine/coding-standard": "13.0.1", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "2.1.17", + "phpstan/phpstan": "2.1.22", "phpstan/phpstan-strict-rules": "^2", "phpunit/phpunit": "9.6.23", "slevomat/coding-standard": "8.16.2", @@ -324,7 +324,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.10.1" + "source": "https://github.com/doctrine/dbal/tree/3.10.2" }, "funding": [ { @@ -340,7 +340,7 @@ "type": "tidelift" } ], - "time": "2025-08-05T12:18:06+00:00" + "time": "2025-09-04T23:51:27+00:00" }, { "name": "doctrine/deprecations", @@ -392,16 +392,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.15.1", + "version": "2.16.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "5a305c5e776f9d3eb87f5b94d40d50aff439211d" + "reference": "152d5083f0cd205a278131dc4351a8c94d007fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5a305c5e776f9d3eb87f5b94d40d50aff439211d", - "reference": "5a305c5e776f9d3eb87f5b94d40d50aff439211d", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/152d5083f0cd205a278131dc4351a8c94d007fe1", + "reference": "152d5083f0cd205a278131dc4351a8c94d007fe1", "shasum": "" }, "require": { @@ -438,6 +438,7 @@ "phpunit/phpunit": "^9.6.22", "psr/log": "^1.1.4 || ^2.0 || ^3.0", "symfony/doctrine-messenger": "^6.4 || ^7.0", + "symfony/expression-language": "^6.4 || ^7.0", "symfony/messenger": "^6.4 || ^7.0", "symfony/phpunit-bridge": "^7.2", "symfony/property-info": "^6.4 || ^7.0", @@ -494,7 +495,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.15.1" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.16.1" }, "funding": [ { @@ -510,7 +511,7 @@ "type": "tidelift" } ], - "time": "2025-07-30T15:48:28+00:00" + "time": "2025-09-05T15:24:53+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -2634,16 +2635,16 @@ }, { "name": "nesbot/carbon", - "version": "3.10.2", + "version": "3.10.3", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24" + "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24", - "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", + "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", "shasum": "" }, "require": { @@ -2661,13 +2662,13 @@ "require-dev": { "doctrine/dbal": "^3.6.3 || ^4.0", "doctrine/orm": "^2.15.2 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.75.0", + "friendsofphp/php-cs-fixer": "^v3.87.1", "kylekatarnls/multi-tester": "^2.5.3", "phpmd/phpmd": "^2.15.0", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.1.17", - "phpunit/phpunit": "^10.5.46", - "squizlabs/php_codesniffer": "^3.13.0" + "phpstan/phpstan": "^2.1.22", + "phpunit/phpunit": "^10.5.53", + "squizlabs/php_codesniffer": "^3.13.4" }, "bin": [ "bin/carbon" @@ -2735,7 +2736,7 @@ "type": "tidelift" } ], - "time": "2025-08-02T09:36:06+00:00" + "time": "2025-09-06T13:39:36+00:00" }, { "name": "nyholm/psr7", @@ -10807,16 +10808,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.86.0", + "version": "v3.87.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36" + "reference": "da5f0a7858c79b56fc0b8c36d3efcfe5f37f0992" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4a952bd19dc97879b0620f495552ef09b55f7d36", - "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/da5f0a7858c79b56fc0b8c36d3efcfe5f37f0992", + "reference": "da5f0a7858c79b56fc0b8c36d3efcfe5f37f0992", "shasum": "" }, "require": { @@ -10827,39 +10828,38 @@ "ext-hash": "*", "ext-json": "*", "ext-tokenizer": "*", - "fidry/cpu-core-counter": "^1.2", + "fidry/cpu-core-counter": "^1.3", "php": "^7.4 || ^8.0", "react/child-process": "^0.6.6", "react/event-loop": "^1.5", - "react/promise": "^3.2", + "react/promise": "^3.3", "react/socket": "^1.16", "react/stream": "^1.4", "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", - "symfony/console": "^5.4.47 || ^6.4.13 || ^7.0", - "symfony/event-dispatcher": "^5.4.45 || ^6.4.13 || ^7.0", - "symfony/filesystem": "^5.4.45 || ^6.4.13 || ^7.0", - "symfony/finder": "^5.4.45 || ^6.4.17 || ^7.0", - "symfony/options-resolver": "^5.4.45 || ^6.4.16 || ^7.0", - "symfony/polyfill-mbstring": "^1.32", - "symfony/polyfill-php80": "^1.32", - "symfony/polyfill-php81": "^1.32", - "symfony/process": "^5.4.47 || ^6.4.20 || ^7.2", - "symfony/stopwatch": "^5.4.45 || ^6.4.19 || ^7.0" + "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0", + "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0", + "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0", + "symfony/polyfill-mbstring": "^1.33", + "symfony/polyfill-php80": "^1.33", + "symfony/polyfill-php81": "^1.33", + "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2", + "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.6", + "facile-it/paraunit": "^1.3.1 || ^2.7", "infection/infection": "^0.29.14", - "justinrainbow/json-schema": "^5.3 || ^6.4", + "justinrainbow/json-schema": "^6.5", "keradus/cli-executor": "^2.2", "mikey179/vfsstream": "^1.6.12", "php-coveralls/php-coveralls": "^2.8", - "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", - "phpunit/phpunit": "^9.6.23 || ^10.5.47 || ^11.5.25", - "symfony/polyfill-php84": "^1.32", - "symfony/var-dumper": "^5.4.48 || ^6.4.23 || ^7.3.1", - "symfony/yaml": "^5.4.45 || ^6.4.23 || ^7.3.1" + "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", + "symfony/polyfill-php84": "^1.33", + "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2", + "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -10900,7 +10900,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.86.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.87.2" }, "funding": [ { @@ -10908,7 +10908,7 @@ "type": "github" } ], - "time": "2025-08-13T22:36:21+00:00" + "time": "2025-09-10T09:51:40+00:00" }, { "name": "myclabs/deep-copy", diff --git a/src/BusProNet/Model/Booking.php b/src/BusProNet/Model/Booking.php index cbb921c..15ae6eb 100644 --- a/src/BusProNet/Model/Booking.php +++ b/src/BusProNet/Model/Booking.php @@ -8,6 +8,7 @@ class Booking public ?int $agencyId = null; public ?int $bookingNumber = null; public ?string $status = null; + public ?int $applicantId = null; public ?PersonalData $applicant = null; public ?int $participantCount = null; public ?float $price = null; diff --git a/src/BusProNet/XmlParser/BookingsParser.php b/src/BusProNet/XmlParser/BookingsParser.php index 2b6766d..19fe7e0 100644 --- a/src/BusProNet/XmlParser/BookingsParser.php +++ b/src/BusProNet/XmlParser/BookingsParser.php @@ -21,6 +21,7 @@ class BookingsParser extends AbstractParser $booking = new Booking(); $booking->id = $this->getIntOrNullValue($node->filterXPath('//id')); + $booking->applicantId = $this->getIntOrNullValue($node->filterXPath('//idadresse_anmelder')); $booking->bookingNumber = $this->getIntOrNullValue($node->filterXPath('//vorgangsnummer')); $booking->status = $this->getStringOrNullValue($node->filterXPath('//status')); $booking->participantCount = $this->getIntOrNullValue($node->filterXPath('//personen')); diff --git a/templates/booking/index.html.twig b/templates/booking/index.html.twig index 20ea033..834908e 100644 --- a/templates/booking/index.html.twig +++ b/templates/booking/index.html.twig @@ -64,18 +64,20 @@
- {% if booking.editable %} + {% if booking.editable and booking.applicantId == app.user.addressId %} bearbeiten {% endif %} - - Rechnung - + {% if booking.applicantId == app.user.addressId %} + + Rechnung + + {% endif %} {% if booking.travelInfoUrl is not null %} Date: Wed, 10 Sep 2025 16:26:58 +0200 Subject: [PATCH 08/33] fix: use correct ids for user validation --- src/Security/Voter/BookingVoter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Security/Voter/BookingVoter.php b/src/Security/Voter/BookingVoter.php index b8a742e..c17a890 100644 --- a/src/Security/Voter/BookingVoter.php +++ b/src/Security/Voter/BookingVoter.php @@ -33,7 +33,7 @@ class BookingVoter extends Voter /** @var Booking $booking */ $booking = $subject; - if ($booking->applicant->personId !== $user->getPersonId()) { + if ($booking->applicant->addressId !== $user->getAddressId()) { return false; } From da7b4dfb48036a4ff390f13276ad854e7242a31a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 27 Oct 2025 08:31:39 +0100 Subject: [PATCH 09/33] fix: temporarily disable all participant validation --- src/Form/Model/ParticipantData.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Form/Model/ParticipantData.php b/src/Form/Model/ParticipantData.php index 63158dd..6e5f50e 100644 --- a/src/Form/Model/ParticipantData.php +++ b/src/Form/Model/ParticipantData.php @@ -8,7 +8,7 @@ use App\BusProNet\Model\Service; use App\Validator\Constraints as AppAssert; use Symfony\Component\Validator\Constraints as Assert; -#[AppAssert\Participant] +#[AppAssert\Participant(groups: ['create'])] class ParticipantData { public ?int $index = null; @@ -17,10 +17,10 @@ class ParticipantData public ?string $status = null; public bool $mutable = false; - #[Assert\NotBlank(message: 'Bitte angeben')] + #[Assert\NotBlank(message: 'Bitte angeben', groups: ['create'])] public ?string $firstName = null; - #[Assert\NotBlank(message: 'Bitte angeben')] + #[Assert\NotBlank(message: 'Bitte angeben', groups: ['create'])] public ?string $lastName = null; public ?string $title = null; public ?string $gender = null; @@ -29,10 +29,10 @@ class ParticipantData public ?string $shoeSize = null; public ?string $weight = null; - #[Assert\NotNull(message: 'Bitte angeben')] + #[Assert\NotNull(message: 'Bitte angeben', groups: ['create'])] public ?\DateTimeImmutable $dateOfBirth = null; - #[Assert\NotBlank(message: 'Bitte angeben')] + #[Assert\NotBlank(message: 'Bitte angeben', groups: ['create'])] #[Assert\Email(message: 'Bitte eine gültige E-Mail Adresse angeben', mode: 'strict')] public ?string $email = null; From a50bd205cd3ec7c37b6d9cf72eb4d243dade45c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 27 Oct 2025 08:33:59 +0100 Subject: [PATCH 10/33] chore: update project dependencies --- composer.lock | 640 +++++++++++++++++++++++++------------------------- 1 file changed, 325 insertions(+), 315 deletions(-) diff --git a/composer.lock b/composer.lock index e8518d5..95154d5 100644 --- a/composer.lock +++ b/composer.lock @@ -144,16 +144,16 @@ }, { "name": "doctrine/collections", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d" + "reference": "9acfeea2e8666536edff3d77c531261c63680160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/2eb07e5953eed811ce1b309a7478a3b236f2273d", - "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d", + "url": "https://api.github.com/repos/doctrine/collections/zipball/9acfeea2e8666536edff3d77c531261c63680160", + "reference": "9acfeea2e8666536edff3d77c531261c63680160", "shasum": "" }, "require": { @@ -162,11 +162,11 @@ "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^14", "ext-json": "*", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^10.5" + "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" }, "type": "library", "autoload": { @@ -210,7 +210,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.3.0" + "source": "https://github.com/doctrine/collections/tree/2.4.0" }, "funding": [ { @@ -226,20 +226,20 @@ "type": "tidelift" } ], - "time": "2025-03-22T10:17:19+00:00" + "time": "2025-10-25T09:18:13+00:00" }, { "name": "doctrine/dbal", - "version": "3.10.2", + "version": "3.10.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "c6c16cf787eaba3112203dfcd715fa2059c62282" + "reference": "65edaca19a752730f290ec2fb89d593cb40afb43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/c6c16cf787eaba3112203dfcd715fa2059c62282", - "reference": "c6c16cf787eaba3112203dfcd715fa2059c62282", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/65edaca19a752730f290ec2fb89d593cb40afb43", + "reference": "65edaca19a752730f290ec2fb89d593cb40afb43", "shasum": "" }, "require": { @@ -255,14 +255,14 @@ }, "require-dev": { "doctrine/cache": "^1.11|^2.0", - "doctrine/coding-standard": "13.0.1", + "doctrine/coding-standard": "14.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "2.1.22", + "phpstan/phpstan": "2.1.30", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "9.6.23", - "slevomat/coding-standard": "8.16.2", - "squizlabs/php_codesniffer": "3.13.1", + "phpunit/phpunit": "9.6.29", + "slevomat/coding-standard": "8.24.0", + "squizlabs/php_codesniffer": "4.0.0", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.4|^6.0|^7.0" }, @@ -324,7 +324,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.10.2" + "source": "https://github.com/doctrine/dbal/tree/3.10.3" }, "funding": [ { @@ -340,7 +340,7 @@ "type": "tidelift" } ], - "time": "2025-09-04T23:51:27+00:00" + "time": "2025-10-09T09:05:12+00:00" }, { "name": "doctrine/deprecations", @@ -392,20 +392,21 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.16.1", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "152d5083f0cd205a278131dc4351a8c94d007fe1" + "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/152d5083f0cd205a278131dc4351a8c94d007fe1", - "reference": "152d5083f0cd205a278131dc4351a8c94d007fe1", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", + "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", "shasum": "" }, "require": { "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/deprecations": "^1.0", "doctrine/persistence": "^3.1 || ^4", "doctrine/sql-formatter": "^1.0.1", "php": "^8.1", @@ -413,7 +414,6 @@ "symfony/config": "^6.4 || ^7.0", "symfony/console": "^6.4 || ^7.0", "symfony/dependency-injection": "^6.4 || ^7.0", - "symfony/deprecation-contracts": "^2.1 || ^3", "symfony/doctrine-bridge": "^6.4.3 || ^7.0.3", "symfony/framework-bundle": "^6.4 || ^7.0", "symfony/service-contracts": "^2.5 || ^3" @@ -428,19 +428,17 @@ "require-dev": { "doctrine/annotations": "^1 || ^2", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^13", - "doctrine/deprecations": "^1.0", + "doctrine/coding-standard": "^14", "doctrine/orm": "^2.17 || ^3.1", "friendsofphp/proxy-manager-lts": "^1.0", "phpstan/phpstan": "2.1.1", "phpstan/phpstan-phpunit": "2.0.3", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "^9.6.22", + "phpunit/phpunit": "^10.5.53 || ^12.3.10", "psr/log": "^1.1.4 || ^2.0 || ^3.0", "symfony/doctrine-messenger": "^6.4 || ^7.0", "symfony/expression-language": "^6.4 || ^7.0", "symfony/messenger": "^6.4 || ^7.0", - "symfony/phpunit-bridge": "^7.2", "symfony/property-info": "^6.4 || ^7.0", "symfony/security-bundle": "^6.4 || ^7.0", "symfony/stopwatch": "^6.4 || ^7.0", @@ -450,7 +448,7 @@ "symfony/var-exporter": "^6.4.1 || ^7.0.1", "symfony/web-profiler-bundle": "^6.4 || ^7.0", "symfony/yaml": "^6.4 || ^7.0", - "twig/twig": "^2.13 || ^3.0.4" + "twig/twig": "^2.14.7 || ^3.0.4" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -495,7 +493,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.16.1" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.0" }, "funding": [ { @@ -511,24 +509,24 @@ "type": "tidelift" } ], - "time": "2025-09-05T15:24:53+00:00" + "time": "2025-10-11T04:43:27+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.4.2", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "5a6ac7120c2924c4c070a869d08b11ccf9e277b9" + "reference": "71c81279ca0e907c3edc718418b93fd63074856c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/5a6ac7120c2924c4c070a869d08b11ccf9e277b9", - "reference": "5a6ac7120c2924c4c070a869d08b11ccf9e277b9", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/71c81279ca0e907c3edc718418b93fd63074856c", + "reference": "71c81279ca0e907c3edc718418b93fd63074856c", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "^2.4", + "doctrine/doctrine-bundle": "^2.4 || ^3.0", "doctrine/migrations": "^3.2", "php": "^7.2 || ^8.0", "symfony/deprecation-contracts": "^2.1 || ^3", @@ -536,7 +534,7 @@ }, "require-dev": { "composer/semver": "^3.0", - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^12 || ^14", "doctrine/orm": "^2.6 || ^3", "phpstan/phpstan": "^1.4 || ^2", "phpstan/phpstan-deprecation-rules": "^1 || ^2", @@ -580,7 +578,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.4.2" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.5.0" }, "funding": [ { @@ -596,7 +594,7 @@ "type": "tidelift" } ], - "time": "2025-03-11T17:36:26+00:00" + "time": "2025-10-12T17:06:40+00:00" }, { "name": "doctrine/event-manager", @@ -1121,16 +1119,16 @@ }, { "name": "doctrine/persistence", - "version": "4.1.0", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4" + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/dcbdfe4b211ae09478e192289cae7ab0987b29a4", - "reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", "shasum": "" }, "require": { @@ -1139,11 +1137,11 @@ "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "1.12.7", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "^9.6", + "doctrine/coding-standard": "^14", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.58 || ^12", "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0", "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, @@ -1194,7 +1192,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/4.1.0" + "source": "https://github.com/doctrine/persistence/tree/4.1.1" }, "funding": [ { @@ -1210,30 +1208,30 @@ "type": "tidelift" } ], - "time": "2025-08-21T16:00:31+00:00" + "time": "2025-10-16T20:13:18+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8" + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d6d00aba6fd2957fe5216fe2b7673e9985db20c8", - "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a8af23a8e9d622505baa2997465782cbe8bb7fc7", + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^12", - "ergebnis/phpunit-slow-test-detector": "^2.14", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5" + "doctrine/coding-standard": "^14", + "ergebnis/phpunit-slow-test-detector": "^2.20", + "phpstan/phpstan": "^2.1.31", + "phpunit/phpunit": "^10.5.58" }, "bin": [ "bin/sql-formatter" @@ -1263,9 +1261,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.5.2" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.3" }, - "time": "2025-01-24T11:45:48+00:00" + "time": "2025-10-26T09:35:14+00:00" }, { "name": "dragonmantank/cron-expression", @@ -1606,22 +1604,22 @@ }, { "name": "lcobucci/jwt", - "version": "5.5.0", + "version": "5.6.0", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "a835af59b030d3f2967725697cf88300f579088e" + "reference": "bb3e9f21e4196e8afc41def81ef649c164bca25e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a835af59b030d3f2967725697cf88300f579088e", - "reference": "a835af59b030d3f2967725697cf88300f579088e", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/bb3e9f21e4196e8afc41def81ef649c164bca25e", + "reference": "bb3e9f21e4196e8afc41def81ef649c164bca25e", "shasum": "" }, "require": { "ext-openssl": "*", "ext-sodium": "*", - "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/clock": "^1.0" }, "require-dev": { @@ -1663,7 +1661,7 @@ ], "support": { "issues": "https://github.com/lcobucci/jwt/issues", - "source": "https://github.com/lcobucci/jwt/tree/5.5.0" + "source": "https://github.com/lcobucci/jwt/tree/5.6.0" }, "funding": [ { @@ -1675,7 +1673,7 @@ "type": "patreon" } ], - "time": "2025-01-26T21:29:45+00:00" + "time": "2025-10-17T11:30:53+00:00" }, { "name": "league/event", @@ -1738,16 +1736,16 @@ }, { "name": "league/flysystem", - "version": "3.30.0", + "version": "3.30.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "2203e3151755d874bb2943649dae1eb8533ac93e" + "reference": "c139fd65c1f796b926f4aec0df37f6caa959a8da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e", - "reference": "2203e3151755d874bb2943649dae1eb8533ac93e", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/c139fd65c1f796b926f4aec0df37f6caa959a8da", + "reference": "c139fd65c1f796b926f4aec0df37f6caa959a8da", "shasum": "" }, "require": { @@ -1815,9 +1813,9 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.30.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.30.1" }, - "time": "2025-06-25T13:29:59+00:00" + "time": "2025-10-20T15:35:26+00:00" }, { "name": "league/flysystem-bundle", @@ -2818,24 +2816,26 @@ }, { "name": "paragonie/constant_time_encoding", - "version": "v3.0.0", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512" + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", "shasum": "" }, "require": { "php": "^8" }, "require-dev": { - "phpunit/phpunit": "^9", - "vimeo/psalm": "^4|^5" + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" }, "type": "library", "autoload": { @@ -2881,7 +2881,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2024-05-08T12:36:18+00:00" + "time": "2025-09-24T15:06:41+00:00" }, { "name": "paragonie/random_compat", @@ -3110,16 +3110,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.46", + "version": "3.0.47", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6" + "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", - "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/9d6ca36a6c2dd434765b1071b2644a1c683b385d", + "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d", "shasum": "" }, "require": { @@ -3200,7 +3200,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.46" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.47" }, "funding": [ { @@ -3216,7 +3216,7 @@ "type": "tidelift" } ], - "time": "2025-06-26T16:29:55+00:00" + "time": "2025-10-06T01:07:24+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -3954,16 +3954,16 @@ }, { "name": "symfony/cache", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "d038cd3054aeaf1c674022a77048b2ef6376a175" + "reference": "66c853ddcbf85c1984169869be498c3e7597b367" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/d038cd3054aeaf1c674022a77048b2ef6376a175", - "reference": "d038cd3054aeaf1c674022a77048b2ef6376a175", + "url": "https://api.github.com/repos/symfony/cache/zipball/66c853ddcbf85c1984169869be498c3e7597b367", + "reference": "66c853ddcbf85c1984169869be498c3e7597b367", "shasum": "" }, "require": { @@ -4030,7 +4030,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.24" + "source": "https://github.com/symfony/cache/tree/v6.4.26" }, "funding": [ { @@ -4050,7 +4050,7 @@ "type": "tidelift" } ], - "time": "2025-07-30T09:32:03+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/cache-contracts", @@ -4208,16 +4208,16 @@ }, { "name": "symfony/config", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e" + "reference": "f18dc5926cb203e125956987def795d052ee774e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/80e2cf005cf17138c97193be0434cdcfd1b2212e", - "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e", + "url": "https://api.github.com/repos/symfony/config/zipball/f18dc5926cb203e125956987def795d052ee774e", + "reference": "f18dc5926cb203e125956987def795d052ee774e", "shasum": "" }, "require": { @@ -4263,7 +4263,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.4.24" + "source": "https://github.com/symfony/config/tree/v6.4.26" }, "funding": [ { @@ -4283,20 +4283,20 @@ "type": "tidelift" } ], - "time": "2025-07-26T13:50:30+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/console", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae" + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", + "url": "https://api.github.com/repos/symfony/console/zipball/492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", "shasum": "" }, "require": { @@ -4361,7 +4361,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.25" + "source": "https://github.com/symfony/console/tree/v6.4.26" }, "funding": [ { @@ -4381,20 +4381,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T10:21:53+00:00" + "time": "2025-09-26T12:13:46+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3" + "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/900da8a42eceeb4a13a0ec34caa7db49328daff3", - "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5f311eaf0b321f8ec640f6bae12da43a14026898", + "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898", "shasum": "" }, "require": { @@ -4446,7 +4446,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.4.25" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.26" }, "funding": [ { @@ -4466,7 +4466,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4537,16 +4537,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "d6cda6208c77c4c1f28ba9ff9be4ceaa33416c8c" + "reference": "c14bb5a9125c411e73354954940e06b6e7fcc344" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/d6cda6208c77c4c1f28ba9ff9be4ceaa33416c8c", - "reference": "d6cda6208c77c4c1f28ba9ff9be4ceaa33416c8c", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/c14bb5a9125c411e73354954940e06b6e7fcc344", + "reference": "c14bb5a9125c411e73354954940e06b6e7fcc344", "shasum": "" }, "require": { @@ -4625,7 +4625,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.25" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.26" }, "funding": [ { @@ -4645,20 +4645,20 @@ "type": "tidelift" } ], - "time": "2025-08-18T12:29:30+00:00" + "time": "2025-09-26T15:07:38+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "63c5dc72a14b4841cb2e932c3fdf39f110353545" + "reference": "10eb5e88576dcd1ad994a5eaa8744b22fb82f0bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/63c5dc72a14b4841cb2e932c3fdf39f110353545", - "reference": "63c5dc72a14b4841cb2e932c3fdf39f110353545", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/10eb5e88576dcd1ad994a5eaa8744b22fb82f0bd", + "reference": "10eb5e88576dcd1ad994a5eaa8744b22fb82f0bd", "shasum": "" }, "require": { @@ -4701,7 +4701,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.24" + "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.26" }, "funding": [ { @@ -4721,7 +4721,7 @@ "type": "tidelift" } ], - "time": "2025-07-30T10:11:46+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/dom-crawler", @@ -4874,16 +4874,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c" + "reference": "41bedcaec5b72640b0ec2096547b75fda72ead6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/30fd0b3cf0e972e82636038ce4db0e4fe777112c", - "reference": "30fd0b3cf0e972e82636038ce4db0e4fe777112c", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/41bedcaec5b72640b0ec2096547b75fda72ead6c", + "reference": "41bedcaec5b72640b0ec2096547b75fda72ead6c", "shasum": "" }, "require": { @@ -4929,7 +4929,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.24" + "source": "https://github.com/symfony/error-handler/tree/v6.4.26" }, "funding": [ { @@ -4949,7 +4949,7 @@ "type": "tidelift" } ], - "time": "2025-07-24T08:25:04+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/event-dispatcher", @@ -5391,16 +5391,16 @@ }, { "name": "symfony/form", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "ce4d50b8779556a18f72e6122107b3db2f116140" + "reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/ce4d50b8779556a18f72e6122107b3db2f116140", - "reference": "ce4d50b8779556a18f72e6122107b3db2f116140", + "url": "https://api.github.com/repos/symfony/form/zipball/b40cdbe70be9274ea807ef61da7d0f8d1c70dc51", + "reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51", "shasum": "" }, "require": { @@ -5468,7 +5468,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.4.25" + "source": "https://github.com/symfony/form/tree/v6.4.26" }, "funding": [ { @@ -5488,20 +5488,20 @@ "type": "tidelift" } ], - "time": "2025-08-18T12:29:30+00:00" + "time": "2025-09-20T07:40:41+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447" + "reference": "e16f6ddaf8f026d5f3323f3bbc0660654ccdd837" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1d6a764b58e4f780df00f71c20ba3a61095ea447", - "reference": "1d6a764b58e4f780df00f71c20ba3a61095ea447", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/e16f6ddaf8f026d5f3323f3bbc0660654ccdd837", + "reference": "e16f6ddaf8f026d5f3323f3bbc0660654ccdd837", "shasum": "" }, "require": { @@ -5621,7 +5621,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.4.25" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.26" }, "funding": [ { @@ -5641,20 +5641,20 @@ "type": "tidelift" } ], - "time": "2025-08-26T10:44:20+00:00" + "time": "2025-09-16T07:32:45+00:00" }, { "name": "symfony/http-client", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181" + "reference": "6740cdc1a3bffa127966b6056e883b3fe3709849" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/b8e9dce2d8acba3c32af467bb58e0c3656886181", - "reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181", + "url": "https://api.github.com/repos/symfony/http-client/zipball/6740cdc1a3bffa127966b6056e883b3fe3709849", + "reference": "6740cdc1a3bffa127966b6056e883b3fe3709849", "shasum": "" }, "require": { @@ -5719,7 +5719,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.25" + "source": "https://github.com/symfony/http-client/tree/v6.4.26" }, "funding": [ { @@ -5739,7 +5739,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T07:01:16+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/http-client-contracts", @@ -5821,16 +5821,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "6bc974c0035b643aa497c58d46d9e25185e4b272" + "reference": "369241591d92bb5dfb4c6ccd6ee94378a45b1521" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6bc974c0035b643aa497c58d46d9e25185e4b272", - "reference": "6bc974c0035b643aa497c58d46d9e25185e4b272", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/369241591d92bb5dfb4c6ccd6ee94378a45b1521", + "reference": "369241591d92bb5dfb4c6ccd6ee94378a45b1521", "shasum": "" }, "require": { @@ -5878,7 +5878,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.4.25" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.26" }, "funding": [ { @@ -5898,20 +5898,20 @@ "type": "tidelift" } ], - "time": "2025-08-20T06:48:20+00:00" + "time": "2025-09-16T08:22:30+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15" + "reference": "8b0f963293aede77593c9845c8c0af34752e893a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15", - "reference": "a0ee3cea5cabf4ed960fd2ef57668ceeacdb6e15", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8b0f963293aede77593c9845c8c0af34752e893a", + "reference": "8b0f963293aede77593c9845c8c0af34752e893a", "shasum": "" }, "require": { @@ -5996,7 +5996,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.4.25" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.26" }, "funding": [ { @@ -6016,20 +6016,20 @@ "type": "tidelift" } ], - "time": "2025-08-29T07:55:45+00:00" + "time": "2025-09-27T12:20:56+00:00" }, { "name": "symfony/intl", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "84dc64e179360927eed8f3403b4927aa70702c4f" + "reference": "0cd11e99e8c505f7ee7c6f0ccc8bccb8e14e652f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/84dc64e179360927eed8f3403b4927aa70702c4f", - "reference": "84dc64e179360927eed8f3403b4927aa70702c4f", + "url": "https://api.github.com/repos/symfony/intl/zipball/0cd11e99e8c505f7ee7c6f0ccc8bccb8e14e652f", + "reference": "0cd11e99e8c505f7ee7c6f0ccc8bccb8e14e652f", "shasum": "" }, "require": { @@ -6083,7 +6083,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.25" + "source": "https://github.com/symfony/intl/tree/v6.4.26" }, "funding": [ { @@ -6103,20 +6103,20 @@ "type": "tidelift" } ], - "time": "2025-08-19T13:57:48+00:00" + "time": "2025-09-07T21:26:26+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2" + "reference": "012185cd31689b799d39505bd706be6d3a57cd3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/628b43b45a3e6b15c8a633fb22df547ed9b492a2", - "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2", + "url": "https://api.github.com/repos/symfony/mailer/zipball/012185cd31689b799d39505bd706be6d3a57cd3f", + "reference": "012185cd31689b799d39505bd706be6d3a57cd3f", "shasum": "" }, "require": { @@ -6167,7 +6167,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.25" + "source": "https://github.com/symfony/mailer/tree/v6.4.26" }, "funding": [ { @@ -6187,7 +6187,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/messenger", @@ -6282,16 +6282,16 @@ }, { "name": "symfony/mime", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7" + "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/664d5e844a2de5e11c8255d0aef6bc15a9660ac7", - "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7", + "url": "https://api.github.com/repos/symfony/mime/zipball/61ab9681cdfe315071eb4fa79b6ad6ab030a9235", + "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235", "shasum": "" }, "require": { @@ -6347,7 +6347,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.24" + "source": "https://github.com/symfony/mime/tree/v6.4.26" }, "funding": [ { @@ -6367,20 +6367,20 @@ "type": "tidelift" } ], - "time": "2025-07-15T12:02:45+00:00" + "time": "2025-09-16T08:22:30+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "6711737a4f6acc6cea94344d252fa5d457a5d647" + "reference": "71f632717b17014f9673beec1c9df601304b0a2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/6711737a4f6acc6cea94344d252fa5d457a5d647", - "reference": "6711737a4f6acc6cea94344d252fa5d457a5d647", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/71f632717b17014f9673beec1c9df601304b0a2f", + "reference": "71f632717b17014f9673beec1c9df601304b0a2f", "shasum": "" }, "require": { @@ -6430,7 +6430,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.25" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.26" }, "funding": [ { @@ -6450,7 +6450,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/monolog-bundle", @@ -7434,16 +7434,16 @@ }, { "name": "symfony/process", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8" + "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", - "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", + "url": "https://api.github.com/repos/symfony/process/zipball/48bad913268c8cafabbf7034b39c8bb24fbc5ab8", + "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8", "shasum": "" }, "require": { @@ -7475,7 +7475,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.25" + "source": "https://github.com/symfony/process/tree/v6.4.26" }, "funding": [ { @@ -7495,7 +7495,7 @@ "type": "tidelift" } ], - "time": "2025-08-14T06:23:17+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/property-access", @@ -7757,16 +7757,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5" + "reference": "6fc4c445f22857d4b8b40a02b73f423ddab295de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e4f94e625c8e6f910aa004a0042f7b2d398278f5", - "reference": "e4f94e625c8e6f910aa004a0042f7b2d398278f5", + "url": "https://api.github.com/repos/symfony/routing/zipball/6fc4c445f22857d4b8b40a02b73f423ddab295de", + "reference": "6fc4c445f22857d4b8b40a02b73f423ddab295de", "shasum": "" }, "require": { @@ -7820,7 +7820,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.24" + "source": "https://github.com/symfony/routing/tree/v6.4.26" }, "funding": [ { @@ -7840,20 +7840,20 @@ "type": "tidelift" } ], - "time": "2025-07-15T08:46:37+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/runtime", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "c1cc6721646f546627236c57f835272806087337" + "reference": "59933ca737fd60fad548241b6d879cd0e4be31ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/c1cc6721646f546627236c57f835272806087337", - "reference": "c1cc6721646f546627236c57f835272806087337", + "url": "https://api.github.com/repos/symfony/runtime/zipball/59933ca737fd60fad548241b6d879cd0e4be31ab", + "reference": "59933ca737fd60fad548241b6d879cd0e4be31ab", "shasum": "" }, "require": { @@ -7903,7 +7903,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v6.4.24" + "source": "https://github.com/symfony/runtime/tree/v6.4.26" }, "funding": [ { @@ -7923,20 +7923,20 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-09-11T15:30:54+00:00" }, { "name": "symfony/security-bundle", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "9780abdfc2011f0998f3cb6c7c88ad8453bd34ef" + "reference": "b83773107a5b83a5507df9e88bd50d495f6e8b72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/9780abdfc2011f0998f3cb6c7c88ad8453bd34ef", - "reference": "9780abdfc2011f0998f3cb6c7c88ad8453bd34ef", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/b83773107a5b83a5507df9e88bd50d495f6e8b72", + "reference": "b83773107a5b83a5507df9e88bd50d495f6e8b72", "shasum": "" }, "require": { @@ -8019,7 +8019,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.4.25" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.26" }, "funding": [ { @@ -8039,20 +8039,20 @@ "type": "tidelift" } ], - "time": "2025-08-05T13:23:39+00:00" + "time": "2025-09-22T15:03:07+00:00" }, { "name": "symfony/security-core", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "b70b1ac76c89eb76faed5721b0dcad3b61a1d747" + "reference": "8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/b70b1ac76c89eb76faed5721b0dcad3b61a1d747", - "reference": "b70b1ac76c89eb76faed5721b0dcad3b61a1d747", + "url": "https://api.github.com/repos/symfony/security-core/zipball/8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0", + "reference": "8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0", "shasum": "" }, "require": { @@ -8109,7 +8109,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.4.25" + "source": "https://github.com/symfony/security-core/tree/v6.4.26" }, "funding": [ { @@ -8129,7 +8129,7 @@ "type": "tidelift" } ], - "time": "2025-08-21T19:23:36+00:00" + "time": "2025-09-02T19:15:26+00:00" }, { "name": "symfony/security-csrf", @@ -8205,16 +8205,16 @@ }, { "name": "symfony/security-http", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "878667b04451f2e17b4161237379e5d062575181" + "reference": "6c2e236f0fc3e0853770a5574ef7af471486ba4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/878667b04451f2e17b4161237379e5d062575181", - "reference": "878667b04451f2e17b4161237379e5d062575181", + "url": "https://api.github.com/repos/symfony/security-http/zipball/6c2e236f0fc3e0853770a5574ef7af471486ba4c", + "reference": "6c2e236f0fc3e0853770a5574ef7af471486ba4c", "shasum": "" }, "require": { @@ -8273,7 +8273,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.4.25" + "source": "https://github.com/symfony/security-http/tree/v6.4.26" }, "funding": [ { @@ -8293,20 +8293,20 @@ "type": "tidelift" } ], - "time": "2025-08-21T13:09:57+00:00" + "time": "2025-09-05T18:17:25+00:00" }, { "name": "symfony/serializer", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "26f877808e20da1c0f8bc366d54c726003b0088b" + "reference": "48d0477483614d615aa1d5e5d90a45e4c7bfa2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/26f877808e20da1c0f8bc366d54c726003b0088b", - "reference": "26f877808e20da1c0f8bc366d54c726003b0088b", + "url": "https://api.github.com/repos/symfony/serializer/zipball/48d0477483614d615aa1d5e5d90a45e4c7bfa2c9", + "reference": "48d0477483614d615aa1d5e5d90a45e4c7bfa2c9", "shasum": "" }, "require": { @@ -8375,7 +8375,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.4.25" + "source": "https://github.com/symfony/serializer/tree/v6.4.26" }, "funding": [ { @@ -8395,7 +8395,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T11:31:57+00:00" + "time": "2025-09-15T13:37:27+00:00" }, { "name": "symfony/service-contracts", @@ -8482,16 +8482,16 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.30.0", + "version": "v2.31.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "668b9efe9d0ab8b4e50091263171609e0459c0c8" + "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/668b9efe9d0ab8b4e50091263171609e0459c0c8", - "reference": "668b9efe9d0ab8b4e50091263171609e0459c0c8", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", + "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", "shasum": "" }, "require": { @@ -8531,7 +8531,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.30.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.31.0" }, "funding": [ { @@ -8551,7 +8551,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T15:25:48+00:00" + "time": "2025-09-24T13:27:42+00:00" }, { "name": "symfony/stopwatch", @@ -8621,16 +8621,16 @@ }, { "name": "symfony/string", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1" + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", + "url": "https://api.github.com/repos/symfony/string/zipball/5621f039a71a11c87c106c1c598bdcd04a19aeea", + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea", "shasum": "" }, "require": { @@ -8644,7 +8644,6 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/http-client": "^5.4|^6.0|^7.0", "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -8687,7 +8686,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.25" + "source": "https://github.com/symfony/string/tree/v6.4.26" }, "funding": [ { @@ -8707,20 +8706,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T12:33:20+00:00" + "time": "2025-09-11T14:32:46+00:00" }, { "name": "symfony/translation", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1" + "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/300b72643e89de0734d99a9e3f8494a3ef6936e1", - "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1", + "url": "https://api.github.com/repos/symfony/translation/zipball/c8559fe25c7ee7aa9d28f228903a46db008156a4", + "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4", "shasum": "" }, "require": { @@ -8786,7 +8785,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.24" + "source": "https://github.com/symfony/translation/tree/v6.4.26" }, "funding": [ { @@ -8806,7 +8805,7 @@ "type": "tidelift" } ], - "time": "2025-07-30T17:30:48+00:00" + "time": "2025-09-05T18:17:25+00:00" }, { "name": "symfony/translation-contracts", @@ -9167,16 +9166,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "9352177c0e937793423053846f80bee805552324" + "reference": "3ed456b3cd04e61fc7ed2601805fee3c1130663a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/9352177c0e937793423053846f80bee805552324", - "reference": "9352177c0e937793423053846f80bee805552324", + "url": "https://api.github.com/repos/symfony/validator/zipball/3ed456b3cd04e61fc7ed2601805fee3c1130663a", + "reference": "3ed456b3cd04e61fc7ed2601805fee3c1130663a", "shasum": "" }, "require": { @@ -9244,7 +9243,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.25" + "source": "https://github.com/symfony/validator/tree/v6.4.26" }, "funding": [ { @@ -9264,20 +9263,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T11:31:57+00:00" + "time": "2025-09-25T15:37:27+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c6cd92486e9fc32506370822c57bc02353a5a92c" + "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6cd92486e9fc32506370822c57bc02353a5a92c", - "reference": "c6cd92486e9fc32506370822c57bc02353a5a92c", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cfae1497a2f1eaad78dbc0590311c599c7178d4a", + "reference": "cfae1497a2f1eaad78dbc0590311c599c7178d4a", "shasum": "" }, "require": { @@ -9332,7 +9331,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.25" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.26" }, "funding": [ { @@ -9352,20 +9351,20 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-09-25T15:37:27+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358" + "reference": "466fcac5fa2e871f83d31173f80e9c2684743bfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/4ff50a1b7c75d1d596aca50899d0c8c7e3de8358", - "reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/466fcac5fa2e871f83d31173f80e9c2684743bfc", + "reference": "466fcac5fa2e871f83d31173f80e9c2684743bfc", "shasum": "" }, "require": { @@ -9413,7 +9412,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.25" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.26" }, "funding": [ { @@ -9433,7 +9432,7 @@ "type": "tidelift" } ], - "time": "2025-08-18T13:06:32+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/web-link", @@ -9600,16 +9599,16 @@ }, { "name": "symfony/yaml", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565" + "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e54b060bc9c3dc3d4258bf0d165d0064e755f565", - "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", + "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", "shasum": "" }, "require": { @@ -9652,7 +9651,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.25" + "source": "https://github.com/symfony/yaml/tree/v6.4.26" }, "funding": [ { @@ -9672,7 +9671,7 @@ "type": "tidelift" } ], - "time": "2025-08-26T16:59:00+00:00" + "time": "2025-09-26T15:07:38+00:00" }, { "name": "twig/extra-bundle", @@ -10221,28 +10220,28 @@ }, { "name": "webmozart/assert", - "version": "1.11.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "reference": "541057574806f942c94662b817a50f63f7345360" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/541057574806f942c94662b817a50f63f7345360", + "reference": "541057574806f942c94662b817a50f63f7345360", "shasum": "" }, "require": { "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", "php": "^7.2 || ^8.0" }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" }, "type": "library", "extra": { @@ -10273,9 +10272,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "source": "https://github.com/webmozarts/assert/tree/1.12.0" }, - "time": "2022-06-03T18:03:27+00:00" + "time": "2025-10-20T12:43:39+00:00" }, { "name": "zenstruck/schedule-bundle", @@ -10808,16 +10807,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.87.2", + "version": "v3.89.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "da5f0a7858c79b56fc0b8c36d3efcfe5f37f0992" + "reference": "f34967da2866ace090a2b447de1f357356474573" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/da5f0a7858c79b56fc0b8c36d3efcfe5f37f0992", - "reference": "da5f0a7858c79b56fc0b8c36d3efcfe5f37f0992", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/f34967da2866ace090a2b447de1f357356474573", + "reference": "f34967da2866ace090a2b447de1f357356474573", "shasum": "" }, "require": { @@ -10832,7 +10831,6 @@ "php": "^7.4 || ^8.0", "react/child-process": "^0.6.6", "react/event-loop": "^1.5", - "react/promise": "^3.3", "react/socket": "^1.16", "react/stream": "^1.4", "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", @@ -10844,12 +10842,13 @@ "symfony/polyfill-mbstring": "^1.33", "symfony/polyfill-php80": "^1.33", "symfony/polyfill-php81": "^1.33", + "symfony/polyfill-php84": "^1.33", "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2", "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3.1 || ^2.7", - "infection/infection": "^0.29.14", + "infection/infection": "^0.31.0", "justinrainbow/json-schema": "^6.5", "keradus/cli-executor": "^2.2", "mikey179/vfsstream": "^1.6.12", @@ -10857,7 +10856,6 @@ "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", - "symfony/polyfill-php84": "^1.33", "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2", "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2" }, @@ -10900,7 +10898,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.87.2" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.89.1" }, "funding": [ { @@ -10908,7 +10906,7 @@ "type": "github" } ], - "time": "2025-09-10T09:51:40+00:00" + "time": "2025-10-24T12:05:10+00:00" }, { "name": "myclabs/deep-copy", @@ -10972,16 +10970,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.6.1", + "version": "v5.6.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" + "reference": "3a454ca033b9e06b63282ce19562e892747449bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb", + "reference": "3a454ca033b9e06b63282ce19562e892747449bb", "shasum": "" }, "require": { @@ -11024,9 +11022,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2" }, - "time": "2025-08-13T20:13:15+00:00" + "time": "2025-10-21T19:32:17+00:00" }, { "name": "phar-io/manifest", @@ -11467,16 +11465,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.25", + "version": "9.6.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "049c011e01be805202d8eebedef49f769a8ec7b7" + "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/049c011e01be805202d8eebedef49f769a8ec7b7", - "reference": "049c011e01be805202d8eebedef49f769a8ec7b7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", + "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", "shasum": "" }, "require": { @@ -11501,7 +11499,7 @@ "sebastian/comparator": "^4.0.9", "sebastian/diff": "^4.0.6", "sebastian/environment": "^5.1.5", - "sebastian/exporter": "^4.0.6", + "sebastian/exporter": "^4.0.8", "sebastian/global-state": "^5.0.8", "sebastian/object-enumerator": "^4.0.4", "sebastian/resource-operations": "^3.0.4", @@ -11550,7 +11548,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.25" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.29" }, "funding": [ { @@ -11574,7 +11572,7 @@ "type": "tidelift" } ], - "time": "2025-08-20T14:38:31+00:00" + "time": "2025-09-24T06:29:11+00:00" }, { "name": "react/cache", @@ -12543,16 +12541,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/14c6ba52f95a36c3d27c835d65efc7123c446e8c", + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c", "shasum": "" }, "require": { @@ -12608,15 +12606,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2025-09-24T06:03:27+00:00" }, { "name": "sebastian/global-state", @@ -13411,16 +13421,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v7.3.3", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "7954e563ed14f924593169f6c4645d58d9d9ac77" + "reference": "ed77a629c13979e051b7000a317966474d566398" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/7954e563ed14f924593169f6c4645d58d9d9ac77", - "reference": "7954e563ed14f924593169f6c4645d58d9d9ac77", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/ed77a629c13979e051b7000a317966474d566398", + "reference": "ed77a629c13979e051b7000a317966474d566398", "shasum": "" }, "require": { @@ -13476,7 +13486,7 @@ "testing" ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.3" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.4" }, "funding": [ { @@ -13496,7 +13506,7 @@ "type": "tidelift" } ], - "time": "2025-08-04T15:15:28+00:00" + "time": "2025-09-12T12:18:52+00:00" }, { "name": "symfony/web-profiler-bundle", From eba2f8e5031b39ed0b6d9bc4040bfa04b2b50a95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Thu, 6 Nov 2025 14:55:00 +0100 Subject: [PATCH 11/33] fix: skip availability check for services that are not included in API response --- assets/controllers/booking_controller.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/controllers/booking_controller.js b/assets/controllers/booking_controller.js index 5ce0c6f..274b622 100644 --- a/assets/controllers/booking_controller.js +++ b/assets/controllers/booking_controller.js @@ -21,9 +21,9 @@ export default class extends Controller { availabilitiesValueChanged(availabilities) { this.fieldTargets.forEach((field) => { let id = field.value - if (false === field.checked && 0 >= availabilities[id].available) { + if (availabilities[id] && false === field.checked && 0 >= availabilities[id].available) { field.disabled = true } }) } -} \ No newline at end of file +} From f19762d686c77364d5bce66a3d6a11084cac8776 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Thu, 6 Nov 2025 14:55:23 +0100 Subject: [PATCH 12/33] chore: update project dependencies --- composer.lock | 329 +++++++++++++++++++++++++------------------------- 1 file changed, 165 insertions(+), 164 deletions(-) diff --git a/composer.lock b/composer.lock index 95154d5..79af420 100644 --- a/composer.lock +++ b/composer.lock @@ -392,16 +392,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.18.0", + "version": "2.18.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95" + "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", - "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/b769877014de053da0e5cbbb63d0ea2f3b2fea76", + "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76", "shasum": "" }, "require": { @@ -493,7 +493,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.1" }, "funding": [ { @@ -509,7 +509,7 @@ "type": "tidelift" } ], - "time": "2025-10-11T04:43:27+00:00" + "time": "2025-11-05T14:42:10+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -1029,16 +1029,16 @@ }, { "name": "doctrine/orm", - "version": "3.5.2", + "version": "3.5.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109" + "reference": "1220edf9535303feb6dbfcf171beeef842fc9e1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/5a541b8b3a327ab1ea5f93b1615b4ff67a34e109", - "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109", + "url": "https://api.github.com/repos/doctrine/orm/zipball/1220edf9535303feb6dbfcf171beeef842fc9e1c", + "reference": "1220edf9535303feb6dbfcf171beeef842fc9e1c", "shasum": "" }, "require": { @@ -1058,15 +1058,14 @@ "symfony/var-exporter": "^6.3.9 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^13.0", + "doctrine/coding-standard": "^14.0", "phpbench/phpbench": "^1.0", "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "2.0.3", + "phpstan/phpstan": "2.1.22", "phpstan/phpstan-deprecation-rules": "^2", - "phpunit/phpunit": "^10.4.0", + "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.12.0", "symfony/cache": "^5.4 || ^6.2 || ^7.0" }, "suggest": { @@ -1113,9 +1112,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.5.2" + "source": "https://github.com/doctrine/orm/tree/3.5.3" }, - "time": "2025-08-08T17:00:40+00:00" + "time": "2025-10-27T22:06:52+00:00" }, { "name": "doctrine/persistence", @@ -1267,29 +1266,28 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.4.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "8c784d071debd117328803d86b2097615b457500" + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", - "reference": "8c784d071debd117328803d86b2097615b457500", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" + "php": "^8.2|^8.3|^8.4|^8.5" }, "replace": { "mtdowling/cron-expression": "^1.0" }, "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0" + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^9.0" }, "type": "library", "extra": { @@ -1320,7 +1318,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.6.0" }, "funding": [ { @@ -1328,7 +1326,7 @@ "type": "github" } ], - "time": "2024-10-09T13:47:03+00:00" + "time": "2025-10-31T18:51:33+00:00" }, { "name": "egulias/email-validator", @@ -1819,26 +1817,26 @@ }, { "name": "league/flysystem-bundle", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-bundle.git", - "reference": "bf5ab3c072c0def47872e28f69876548d8669657" + "reference": "88376670b35f11846bed7dca2efb82d993be22d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-bundle/zipball/bf5ab3c072c0def47872e28f69876548d8669657", - "reference": "bf5ab3c072c0def47872e28f69876548d8669657", + "url": "https://api.github.com/repos/thephpleague/flysystem-bundle/zipball/88376670b35f11846bed7dca2efb82d993be22d0", + "reference": "88376670b35f11846bed7dca2efb82d993be22d0", "shasum": "" }, "require": { "league/flysystem": "^3.0", "php": ">=8.0", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0 || ^8.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0" + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { "doctrine/mongodb-odm": "^2.0", @@ -1853,11 +1851,10 @@ "league/flysystem-sftp-v3": "^3.1", "league/flysystem-webdav": "^3.29", "platformcommunity/flysystem-bunnycdn": "^3.3", - "symfony/dotenv": "^5.4 || ^6.0 || ^7.0", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0", - "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/dotenv": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "type": "symfony-bundle", "autoload": { @@ -1884,9 +1881,9 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-bundle/issues", - "source": "https://github.com/thephpleague/flysystem-bundle/tree/3.5.0" + "source": "https://github.com/thephpleague/flysystem-bundle/tree/3.6.0" }, - "time": "2025-06-22T12:43:01+00:00" + "time": "2025-08-21T17:25:13+00:00" }, { "name": "league/flysystem-local", @@ -3954,16 +3951,16 @@ }, { "name": "symfony/cache", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "66c853ddcbf85c1984169869be498c3e7597b367" + "reference": "3b9cf252b3bb54d5daddea5704b95ea7117b39f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/66c853ddcbf85c1984169869be498c3e7597b367", - "reference": "66c853ddcbf85c1984169869be498c3e7597b367", + "url": "https://api.github.com/repos/symfony/cache/zipball/3b9cf252b3bb54d5daddea5704b95ea7117b39f4", + "reference": "3b9cf252b3bb54d5daddea5704b95ea7117b39f4", "shasum": "" }, "require": { @@ -4030,7 +4027,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.26" + "source": "https://github.com/symfony/cache/tree/v6.4.27" }, "funding": [ { @@ -4050,7 +4047,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-10-17T12:08:26+00:00" }, { "name": "symfony/cache-contracts", @@ -4287,16 +4284,16 @@ }, { "name": "symfony/console", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f" + "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", - "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", + "url": "https://api.github.com/repos/symfony/console/zipball/13d3176cf8ad8ced24202844e9f95af11e2959fc", + "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc", "shasum": "" }, "require": { @@ -4361,7 +4358,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.26" + "source": "https://github.com/symfony/console/tree/v6.4.27" }, "funding": [ { @@ -4381,7 +4378,7 @@ "type": "tidelift" } ], - "time": "2025-09-26T12:13:46+00:00" + "time": "2025-10-06T10:25:16+00:00" }, { "name": "symfony/dependency-injection", @@ -5251,16 +5248,16 @@ }, { "name": "symfony/finder", - "version": "v6.4.24", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "73089124388c8510efb8d2d1689285d285937b08" + "reference": "a1b6aa435d2fba50793b994a839c32b6064f063b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08", - "reference": "73089124388c8510efb8d2d1689285d285937b08", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b6aa435d2fba50793b994a839c32b6064f063b", + "reference": "a1b6aa435d2fba50793b994a839c32b6064f063b", "shasum": "" }, "require": { @@ -5295,7 +5292,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.24" + "source": "https://github.com/symfony/finder/tree/v6.4.27" }, "funding": [ { @@ -5315,35 +5312,35 @@ "type": "tidelift" } ], - "time": "2025-07-15T12:02:45+00:00" + "time": "2025-10-15T18:32:00+00:00" }, { "name": "symfony/flex", - "version": "v2.8.2", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426" + "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/f356aa35f3cf3d2f46c31d344c1098eb2d260426", - "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426", + "url": "https://api.github.com/repos/symfony/flex/zipball/94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", + "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", "shasum": "" }, "require": { "composer-plugin-api": "^2.1", - "php": ">=8.0" + "php": ">=8.1" }, "conflict": { "composer/semver": "<1.7.2" }, "require-dev": { "composer/composer": "^2.1", - "symfony/dotenv": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/phpunit-bridge": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" + "symfony/dotenv": "^6.4|^7.4|^8.0", + "symfony/filesystem": "^6.4|^7.4|^8.0", + "symfony/phpunit-bridge": "^6.4|^7.4|^8.0", + "symfony/process": "^6.4|^7.4|^8.0" }, "type": "composer-plugin", "extra": { @@ -5367,7 +5364,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.8.2" + "source": "https://github.com/symfony/flex/tree/v2.9.0" }, "funding": [ { @@ -5387,20 +5384,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T07:17:23+00:00" + "time": "2025-10-31T15:22:50+00:00" }, { "name": "symfony/form", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51" + "reference": "5d922aea68ffe1637535713b35b29f6f34b7d81c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/b40cdbe70be9274ea807ef61da7d0f8d1c70dc51", - "reference": "b40cdbe70be9274ea807ef61da7d0f8d1c70dc51", + "url": "https://api.github.com/repos/symfony/form/zipball/5d922aea68ffe1637535713b35b29f6f34b7d81c", + "reference": "5d922aea68ffe1637535713b35b29f6f34b7d81c", "shasum": "" }, "require": { @@ -5468,7 +5465,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.4.26" + "source": "https://github.com/symfony/form/tree/v6.4.27" }, "funding": [ { @@ -5488,20 +5485,20 @@ "type": "tidelift" } ], - "time": "2025-09-20T07:40:41+00:00" + "time": "2025-10-10T09:11:15+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "e16f6ddaf8f026d5f3323f3bbc0660654ccdd837" + "reference": "ee58c2a73218d8f4763824e1414c5f9b4519c91f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/e16f6ddaf8f026d5f3323f3bbc0660654ccdd837", - "reference": "e16f6ddaf8f026d5f3323f3bbc0660654ccdd837", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ee58c2a73218d8f4763824e1414c5f9b4519c91f", + "reference": "ee58c2a73218d8f4763824e1414c5f9b4519c91f", "shasum": "" }, "require": { @@ -5621,7 +5618,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.4.26" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.27" }, "funding": [ { @@ -5641,7 +5638,7 @@ "type": "tidelift" } ], - "time": "2025-09-16T07:32:45+00:00" + "time": "2025-10-15T17:35:09+00:00" }, { "name": "symfony/http-client", @@ -5902,16 +5899,16 @@ }, { "name": "symfony/http-kernel", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "8b0f963293aede77593c9845c8c0af34752e893a" + "reference": "4a4d0f6cafdbc09c9a7940db17c0fc23bb88a2bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8b0f963293aede77593c9845c8c0af34752e893a", - "reference": "8b0f963293aede77593c9845c8c0af34752e893a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4a4d0f6cafdbc09c9a7940db17c0fc23bb88a2bb", + "reference": "4a4d0f6cafdbc09c9a7940db17c0fc23bb88a2bb", "shasum": "" }, "require": { @@ -5996,7 +5993,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.4.26" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.27" }, "funding": [ { @@ -6016,20 +6013,20 @@ "type": "tidelift" } ], - "time": "2025-09-27T12:20:56+00:00" + "time": "2025-10-28T10:06:47+00:00" }, { "name": "symfony/intl", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "0cd11e99e8c505f7ee7c6f0ccc8bccb8e14e652f" + "reference": "ccc52824610e7de72424cf516e52d4fb39e3bfa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/0cd11e99e8c505f7ee7c6f0ccc8bccb8e14e652f", - "reference": "0cd11e99e8c505f7ee7c6f0ccc8bccb8e14e652f", + "url": "https://api.github.com/repos/symfony/intl/zipball/ccc52824610e7de72424cf516e52d4fb39e3bfa5", + "reference": "ccc52824610e7de72424cf516e52d4fb39e3bfa5", "shasum": "" }, "require": { @@ -6083,7 +6080,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.26" + "source": "https://github.com/symfony/intl/tree/v6.4.27" }, "funding": [ { @@ -6103,20 +6100,20 @@ "type": "tidelift" } ], - "time": "2025-09-07T21:26:26+00:00" + "time": "2025-10-01T06:01:44+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "012185cd31689b799d39505bd706be6d3a57cd3f" + "reference": "2f096718ed718996551f66e3a24e12b2ed027f95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/012185cd31689b799d39505bd706be6d3a57cd3f", - "reference": "012185cd31689b799d39505bd706be6d3a57cd3f", + "url": "https://api.github.com/repos/symfony/mailer/zipball/2f096718ed718996551f66e3a24e12b2ed027f95", + "reference": "2f096718ed718996551f66e3a24e12b2ed027f95", "shasum": "" }, "require": { @@ -6167,7 +6164,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.26" + "source": "https://github.com/symfony/mailer/tree/v6.4.27" }, "funding": [ { @@ -6187,7 +6184,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-10-24T13:29:09+00:00" }, { "name": "symfony/messenger", @@ -6371,16 +6368,16 @@ }, { "name": "symfony/monolog-bridge", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "71f632717b17014f9673beec1c9df601304b0a2f" + "reference": "b950e76daaa5117c367cff22ececce93b9819522" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/71f632717b17014f9673beec1c9df601304b0a2f", - "reference": "71f632717b17014f9673beec1c9df601304b0a2f", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/b950e76daaa5117c367cff22ececce93b9819522", + "reference": "b950e76daaa5117c367cff22ececce93b9819522", "shasum": "" }, "require": { @@ -6430,7 +6427,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.26" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.27" }, "funding": [ { @@ -6450,7 +6447,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-10-14T13:20:03+00:00" }, { "name": "symfony/monolog-bundle", @@ -8043,16 +8040,16 @@ }, { "name": "symfony/security-core", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0" + "reference": "673018434b38e504eb04ca3c6d7e2e7c86735bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0", - "reference": "8b7c95bf04d82fcd0c06a918b2d849bfb2ab9cc0", + "url": "https://api.github.com/repos/symfony/security-core/zipball/673018434b38e504eb04ca3c6d7e2e7c86735bfb", + "reference": "673018434b38e504eb04ca3c6d7e2e7c86735bfb", "shasum": "" }, "require": { @@ -8109,7 +8106,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.4.26" + "source": "https://github.com/symfony/security-core/tree/v6.4.27" }, "funding": [ { @@ -8129,7 +8126,7 @@ "type": "tidelift" } ], - "time": "2025-09-02T19:15:26+00:00" + "time": "2025-10-23T19:49:35+00:00" }, { "name": "symfony/security-csrf", @@ -8297,16 +8294,16 @@ }, { "name": "symfony/serializer", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "48d0477483614d615aa1d5e5d90a45e4c7bfa2c9" + "reference": "28779bbdb398cac3421d0e51f7ca669e4a27c5ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/48d0477483614d615aa1d5e5d90a45e4c7bfa2c9", - "reference": "48d0477483614d615aa1d5e5d90a45e4c7bfa2c9", + "url": "https://api.github.com/repos/symfony/serializer/zipball/28779bbdb398cac3421d0e51f7ca669e4a27c5ac", + "reference": "28779bbdb398cac3421d0e51f7ca669e4a27c5ac", "shasum": "" }, "require": { @@ -8375,7 +8372,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.4.26" + "source": "https://github.com/symfony/serializer/tree/v6.4.27" }, "funding": [ { @@ -8395,7 +8392,7 @@ "type": "tidelift" } ], - "time": "2025-09-15T13:37:27+00:00" + "time": "2025-10-08T04:24:22+00:00" }, { "name": "symfony/service-contracts", @@ -9166,16 +9163,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.26", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "3ed456b3cd04e61fc7ed2601805fee3c1130663a" + "reference": "60dd71e219cd3d76fde906eb6b6c1271db628f5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/3ed456b3cd04e61fc7ed2601805fee3c1130663a", - "reference": "3ed456b3cd04e61fc7ed2601805fee3c1130663a", + "url": "https://api.github.com/repos/symfony/validator/zipball/60dd71e219cd3d76fde906eb6b6c1271db628f5b", + "reference": "60dd71e219cd3d76fde906eb6b6c1271db628f5b", "shasum": "" }, "require": { @@ -9243,7 +9240,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.26" + "source": "https://github.com/symfony/validator/tree/v6.4.27" }, "funding": [ { @@ -9263,7 +9260,7 @@ "type": "tidelift" } ], - "time": "2025-09-25T15:37:27+00:00" + "time": "2025-10-23T19:49:35+00:00" }, { "name": "symfony/var-dumper", @@ -9675,16 +9672,16 @@ }, { "name": "twig/extra-bundle", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "62d1cf47a1aa009cbd07b21045b97d3d5cb79896" + "reference": "6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/62d1cf47a1aa009cbd07b21045b97d3d5cb79896", - "reference": "62d1cf47a1aa009cbd07b21045b97d3d5cb79896", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4", + "reference": "6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4", "shasum": "" }, "require": { @@ -9694,7 +9691,7 @@ "twig/twig": "^3.2|^4.0" }, "require-dev": { - "league/commonmark": "^1.0|^2.0", + "league/commonmark": "^2.7", "symfony/phpunit-bridge": "^6.4|^7.0", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^3.0", @@ -9733,7 +9730,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.21.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.0" }, "funding": [ { @@ -9745,11 +9742,11 @@ "type": "tidelift" } ], - "time": "2025-02-19T14:29:33+00:00" + "time": "2025-09-15T05:57:37+00:00" }, { "name": "twig/html-extra", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/html-extra.git", @@ -9801,7 +9798,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/html-extra/tree/v3.21.0" + "source": "https://github.com/twigphp/html-extra/tree/v3.22.0" }, "funding": [ { @@ -9817,16 +9814,16 @@ }, { "name": "twig/intl-extra", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "05bc5d46b9df9e62399eae53e7c0b0633298b146" + "reference": "7393fc911c7315db18a805d3a541ac7bb9e4fdc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/05bc5d46b9df9e62399eae53e7c0b0633298b146", - "reference": "05bc5d46b9df9e62399eae53e7c0b0633298b146", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/7393fc911c7315db18a805d3a541ac7bb9e4fdc0", + "reference": "7393fc911c7315db18a805d3a541ac7bb9e4fdc0", "shasum": "" }, "require": { @@ -9865,7 +9862,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.21.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.22.0" }, "funding": [ { @@ -9877,20 +9874,20 @@ "type": "tidelift" } ], - "time": "2025-01-31T20:45:36+00:00" + "time": "2025-09-15T06:05:04+00:00" }, { "name": "twig/twig", - "version": "v3.21.1", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d" + "reference": "4509984193026de413baf4ba80f68590a7f2c51d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/4509984193026de413baf4ba80f68590a7f2c51d", + "reference": "4509984193026de413baf4ba80f68590a7f2c51d", "shasum": "" }, "require": { @@ -9944,7 +9941,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.21.1" + "source": "https://github.com/twigphp/Twig/tree/v3.22.0" }, "funding": [ { @@ -9956,7 +9953,7 @@ "type": "tidelift" } ], - "time": "2025-05-03T07:21:55+00:00" + "time": "2025-10-29T15:56:47+00:00" }, { "name": "voku/anti-xss", @@ -10220,16 +10217,16 @@ }, { "name": "webmozart/assert", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "541057574806f942c94662b817a50f63f7345360" + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/541057574806f942c94662b817a50f63f7345360", - "reference": "541057574806f942c94662b817a50f63f7345360", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", "shasum": "" }, "require": { @@ -10272,9 +10269,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.12.0" + "source": "https://github.com/webmozarts/assert/tree/1.12.1" }, - "time": "2025-10-20T12:43:39+00:00" + "time": "2025-10-29T15:56:20+00:00" }, { "name": "zenstruck/schedule-bundle", @@ -13254,16 +13251,16 @@ }, { "name": "symfony/debug-bundle", - "version": "v6.4.13", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff" + "reference": "21a61c55192d558a6b81cdb12e8c010fc9474fe0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/7bcfaff39e094cc09455201916d016d9b2ae08ff", - "reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/21a61c55192d558a6b81cdb12e8c010fc9474fe0", + "reference": "21a61c55192d558a6b81cdb12e8c010fc9474fe0", "shasum": "" }, "require": { @@ -13308,7 +13305,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v6.4.13" + "source": "https://github.com/symfony/debug-bundle/tree/v6.4.27" }, "funding": [ { @@ -13319,12 +13316,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-10-11T17:35:31+00:00" }, { "name": "symfony/maker-bundle", @@ -13510,16 +13511,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.25", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910" + "reference": "4c2ab411372e8bd854678cd7c81f1a9bfd6914aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910", - "reference": "4c1754d6b3ffe52e9eaed0d9a392eb43a60fc910", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4c2ab411372e8bd854678cd7c81f1a9bfd6914aa", + "reference": "4c2ab411372e8bd854678cd7c81f1a9bfd6914aa", "shasum": "" }, "require": { @@ -13572,7 +13573,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.25" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.27" }, "funding": [ { @@ -13592,7 +13593,7 @@ "type": "tidelift" } ], - "time": "2025-08-07T12:02:05+00:00" + "time": "2025-10-05T13:55:43+00:00" }, { "name": "theseer/tokenizer", From 2f78ddb8ade5a9f7b31fb3ec9b5fd6e0356ad3bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Thu, 6 Nov 2025 15:24:51 +0100 Subject: [PATCH 13/33] fix: don't rely on individual prices being available for all participants --- src/BusProNet/Model/Booking.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/BusProNet/Model/Booking.php b/src/BusProNet/Model/Booking.php index 15ae6eb..233bdff 100644 --- a/src/BusProNet/Model/Booking.php +++ b/src/BusProNet/Model/Booking.php @@ -110,19 +110,20 @@ class Booking // Sum up all services foreach ([...$this->transportationServices, ...$this->additionalServices] as $service) { if (in_array($participantIndex, $service->mapping) || true === $service->mandatory) { - $price += $service->individualPrice[$participantIndex]; + $price += $service->individualPrice[$participantIndex] ?? 0; } } // Sum up all surcharges foreach ($this->surcharges as $surcharge) { if (in_array($participantIndex, $surcharge->mapping)) { - $price += $surcharge->individualPrice[$participantIndex]; + $price += $surcharge->individualPrice[$participantIndex] ?? 0; } } - $room = $this->getRoomForParticipant($participantIndex); - $price += $room->individualPrice[$participantIndex]; + if (null !== $room = $this->getRoomForParticipant($participantIndex)) { + $price += $room->individualPrice[$participantIndex] ?? 0; + } return $price; } From d85e81e8b96813eb03414ee512f08b9de00c4caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 7 Nov 2025 10:34:19 +0100 Subject: [PATCH 14/33] fix: ensure valid applicant data --- src/BusProNet/DataProcessor/BookingDataProcessor.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/BusProNet/DataProcessor/BookingDataProcessor.php b/src/BusProNet/DataProcessor/BookingDataProcessor.php index e782437..8f11a1f 100644 --- a/src/BusProNet/DataProcessor/BookingDataProcessor.php +++ b/src/BusProNet/DataProcessor/BookingDataProcessor.php @@ -105,6 +105,11 @@ class BookingDataProcessor // Update applicant's data with personal data of first participant if (false !== $firstParticipant = reset($bookingData->participants)) { + // Ensure valid nationality + if (true === empty($bookingData->applicant->nationality)) { + $bookingData->applicant->nationality = $firstParticipant->nationality; + } + $bookingData->applicant->height = $firstParticipant->height; $bookingData->applicant->weight = $firstParticipant->weight; $bookingData->applicant->shoeSize = $firstParticipant->shoeSize; From e52cb981634c4efb2cd7d3a0c4db895071b41b1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 7 Nov 2025 10:39:39 +0100 Subject: [PATCH 15/33] chore: update project dependencies --- composer.lock | 134 +++++++++++++++++++++++++------------------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/composer.lock b/composer.lock index 79af420..41ca893 100644 --- a/composer.lock +++ b/composer.lock @@ -3951,16 +3951,16 @@ }, { "name": "symfony/cache", - "version": "v6.4.27", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "3b9cf252b3bb54d5daddea5704b95ea7117b39f4" + "reference": "31628f36fc97c5714d181b3a8d29efb85c6a7677" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/3b9cf252b3bb54d5daddea5704b95ea7117b39f4", - "reference": "3b9cf252b3bb54d5daddea5704b95ea7117b39f4", + "url": "https://api.github.com/repos/symfony/cache/zipball/31628f36fc97c5714d181b3a8d29efb85c6a7677", + "reference": "31628f36fc97c5714d181b3a8d29efb85c6a7677", "shasum": "" }, "require": { @@ -4027,7 +4027,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.27" + "source": "https://github.com/symfony/cache/tree/v6.4.28" }, "funding": [ { @@ -4047,7 +4047,7 @@ "type": "tidelift" } ], - "time": "2025-10-17T12:08:26+00:00" + "time": "2025-10-30T08:37:02+00:00" }, { "name": "symfony/cache-contracts", @@ -4205,16 +4205,16 @@ }, { "name": "symfony/config", - "version": "v6.4.26", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "f18dc5926cb203e125956987def795d052ee774e" + "reference": "15947c18ef3ddb0b2f4ec936b9e90e2520979f62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/f18dc5926cb203e125956987def795d052ee774e", - "reference": "f18dc5926cb203e125956987def795d052ee774e", + "url": "https://api.github.com/repos/symfony/config/zipball/15947c18ef3ddb0b2f4ec936b9e90e2520979f62", + "reference": "15947c18ef3ddb0b2f4ec936b9e90e2520979f62", "shasum": "" }, "require": { @@ -4260,7 +4260,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.4.26" + "source": "https://github.com/symfony/config/tree/v6.4.28" }, "funding": [ { @@ -4280,7 +4280,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-11-01T19:52:02+00:00" }, { "name": "symfony/console", @@ -4646,16 +4646,16 @@ }, { "name": "symfony/doctrine-messenger", - "version": "v6.4.26", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "10eb5e88576dcd1ad994a5eaa8744b22fb82f0bd" + "reference": "200084fc1c8c5330a01bd43377a99cd72599df60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/10eb5e88576dcd1ad994a5eaa8744b22fb82f0bd", - "reference": "10eb5e88576dcd1ad994a5eaa8744b22fb82f0bd", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/200084fc1c8c5330a01bd43377a99cd72599df60", + "reference": "200084fc1c8c5330a01bd43377a99cd72599df60", "shasum": "" }, "require": { @@ -4698,7 +4698,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.26" + "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.28" }, "funding": [ { @@ -4718,7 +4718,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-10-31T15:20:18+00:00" }, { "name": "symfony/dom-crawler", @@ -5642,16 +5642,16 @@ }, { "name": "symfony/http-client", - "version": "v6.4.26", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "6740cdc1a3bffa127966b6056e883b3fe3709849" + "reference": "c9e69c185c4a845f9d46958cdb0dc7aa847f3981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/6740cdc1a3bffa127966b6056e883b3fe3709849", - "reference": "6740cdc1a3bffa127966b6056e883b3fe3709849", + "url": "https://api.github.com/repos/symfony/http-client/zipball/c9e69c185c4a845f9d46958cdb0dc7aa847f3981", + "reference": "c9e69c185c4a845f9d46958cdb0dc7aa847f3981", "shasum": "" }, "require": { @@ -5716,7 +5716,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.26" + "source": "https://github.com/symfony/http-client/tree/v6.4.28" }, "funding": [ { @@ -5736,7 +5736,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-11-05T17:39:22+00:00" }, { "name": "symfony/http-client-contracts", @@ -5818,16 +5818,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.26", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "369241591d92bb5dfb4c6ccd6ee94378a45b1521" + "reference": "1ba1d5fe6465b0fa39c8627ba552b2c29301aa81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/369241591d92bb5dfb4c6ccd6ee94378a45b1521", - "reference": "369241591d92bb5dfb4c6ccd6ee94378a45b1521", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1ba1d5fe6465b0fa39c8627ba552b2c29301aa81", + "reference": "1ba1d5fe6465b0fa39c8627ba552b2c29301aa81", "shasum": "" }, "require": { @@ -5875,7 +5875,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.4.26" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.28" }, "funding": [ { @@ -5895,20 +5895,20 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:22:30+00:00" + "time": "2025-11-06T10:41:18+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.27", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4a4d0f6cafdbc09c9a7940db17c0fc23bb88a2bb" + "reference": "bbccadab358e236fcf13cc02a01fc0115d09d787" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4a4d0f6cafdbc09c9a7940db17c0fc23bb88a2bb", - "reference": "4a4d0f6cafdbc09c9a7940db17c0fc23bb88a2bb", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/bbccadab358e236fcf13cc02a01fc0115d09d787", + "reference": "bbccadab358e236fcf13cc02a01fc0115d09d787", "shasum": "" }, "require": { @@ -5993,7 +5993,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.4.27" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.28" }, "funding": [ { @@ -6013,7 +6013,7 @@ "type": "tidelift" } ], - "time": "2025-10-28T10:06:47+00:00" + "time": "2025-11-06T20:52:25+00:00" }, { "name": "symfony/intl", @@ -6188,16 +6188,16 @@ }, { "name": "symfony/messenger", - "version": "v6.4.25", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "4fef4c925e026cad3697ea13283e9b7a99a4d119" + "reference": "6a758210a2392c4a326de84a6c8c70e7e18296f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/4fef4c925e026cad3697ea13283e9b7a99a4d119", - "reference": "4fef4c925e026cad3697ea13283e9b7a99a4d119", + "url": "https://api.github.com/repos/symfony/messenger/zipball/6a758210a2392c4a326de84a6c8c70e7e18296f9", + "reference": "6a758210a2392c4a326de84a6c8c70e7e18296f9", "shasum": "" }, "require": { @@ -6255,7 +6255,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v6.4.25" + "source": "https://github.com/symfony/messenger/tree/v6.4.28" }, "funding": [ { @@ -6275,7 +6275,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-11-06T11:12:43+00:00" }, { "name": "symfony/mime", @@ -6368,16 +6368,16 @@ }, { "name": "symfony/monolog-bridge", - "version": "v6.4.27", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "b950e76daaa5117c367cff22ececce93b9819522" + "reference": "d2f4b68e3247cf44d93f48545c8c072a75c17e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/b950e76daaa5117c367cff22ececce93b9819522", - "reference": "b950e76daaa5117c367cff22ececce93b9819522", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/d2f4b68e3247cf44d93f48545c8c072a75c17e5b", + "reference": "d2f4b68e3247cf44d93f48545c8c072a75c17e5b", "shasum": "" }, "require": { @@ -6427,7 +6427,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.27" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.28" }, "funding": [ { @@ -6447,7 +6447,7 @@ "type": "tidelift" } ], - "time": "2025-10-14T13:20:03+00:00" + "time": "2025-10-30T19:57:08+00:00" }, { "name": "symfony/monolog-bundle", @@ -7754,16 +7754,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.26", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "6fc4c445f22857d4b8b40a02b73f423ddab295de" + "reference": "ae064a6d9cf39507f9797658465a2ca702965fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/6fc4c445f22857d4b8b40a02b73f423ddab295de", - "reference": "6fc4c445f22857d4b8b40a02b73f423ddab295de", + "url": "https://api.github.com/repos/symfony/routing/zipball/ae064a6d9cf39507f9797658465a2ca702965fa8", + "reference": "ae064a6d9cf39507f9797658465a2ca702965fa8", "shasum": "" }, "require": { @@ -7817,7 +7817,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.26" + "source": "https://github.com/symfony/routing/tree/v6.4.28" }, "funding": [ { @@ -7837,7 +7837,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-10-31T16:43:05+00:00" }, { "name": "symfony/runtime", @@ -10804,16 +10804,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.89.1", + "version": "v3.89.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "f34967da2866ace090a2b447de1f357356474573" + "reference": "7569658f91e475ec93b99bd5964b059ad1336dcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/f34967da2866ace090a2b447de1f357356474573", - "reference": "f34967da2866ace090a2b447de1f357356474573", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7569658f91e475ec93b99bd5964b059ad1336dcf", + "reference": "7569658f91e475ec93b99bd5964b059ad1336dcf", "shasum": "" }, "require": { @@ -10849,7 +10849,7 @@ "justinrainbow/json-schema": "^6.5", "keradus/cli-executor": "^2.2", "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.8", + "php-coveralls/php-coveralls": "^2.9", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", @@ -10895,7 +10895,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.89.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.89.2" }, "funding": [ { @@ -10903,7 +10903,7 @@ "type": "github" } ], - "time": "2025-10-24T12:05:10+00:00" + "time": "2025-11-06T21:12:50+00:00" }, { "name": "myclabs/deep-copy", @@ -13110,16 +13110,16 @@ }, { "name": "symfony/browser-kit", - "version": "v6.4.24", + "version": "v6.4.28", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "3537d17782f8c20795b194acb6859071b60c6fac" + "reference": "067e301786bbb58048077fc10507aceb18226e23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/3537d17782f8c20795b194acb6859071b60c6fac", - "reference": "3537d17782f8c20795b194acb6859071b60c6fac", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/067e301786bbb58048077fc10507aceb18226e23", + "reference": "067e301786bbb58048077fc10507aceb18226e23", "shasum": "" }, "require": { @@ -13158,7 +13158,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.4.24" + "source": "https://github.com/symfony/browser-kit/tree/v6.4.28" }, "funding": [ { @@ -13178,7 +13178,7 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-10-16T22:35:35+00:00" }, { "name": "symfony/css-selector", From e7cf172b9fe368a1b897c7a5df7330656d1b0e32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Tue, 11 Nov 2025 14:14:44 +0100 Subject: [PATCH 16/33] feat: add subtypes PAR and LVS as bookable additional services --- .../controllers/checkbox_toggle_controller.js | 32 ++++++++++ .../DataProcessor/BookingDataProcessor.php | 2 + src/BusProNet/Model/Service.php | 2 + src/Form/BookingType.php | 2 + src/Form/Model/BookingData.php | 5 ++ src/Form/Model/ParticipantData.php | 2 + src/Form/ParticipantType.php | 59 ++++++++++++++++++- templates/booking/edit.html.twig | 14 ++++- 8 files changed, 112 insertions(+), 6 deletions(-) create mode 100644 assets/controllers/checkbox_toggle_controller.js diff --git a/assets/controllers/checkbox_toggle_controller.js b/assets/controllers/checkbox_toggle_controller.js new file mode 100644 index 0000000..cfa5a72 --- /dev/null +++ b/assets/controllers/checkbox_toggle_controller.js @@ -0,0 +1,32 @@ +import { Controller } from '@hotwired/stimulus' + +export default class extends Controller { + + static classes = [ 'hidden' ] + static targets = [ 'container', 'checkboxGroup' ] + static values = { visible: Boolean } + + connect() { + this.updateVisibility() + } + + check() { + this.updateVisibility() + } + + updateVisibility() { + if (!this.hasCheckboxGroupTarget) { + return + } + + const checkboxes = this.checkboxGroupTarget.querySelectorAll('input[type="checkbox"]') + const hasChecked = Array.from(checkboxes).some(checkbox => checkbox.checked) + this.visibleValue = hasChecked + } + + visibleValueChanged(visible) { + if (this.hasContainerTarget) { + this.containerTarget.classList.toggle(this.hiddenClass, false === visible) + } + } +} diff --git a/src/BusProNet/DataProcessor/BookingDataProcessor.php b/src/BusProNet/DataProcessor/BookingDataProcessor.php index 8f11a1f..13c2633 100644 --- a/src/BusProNet/DataProcessor/BookingDataProcessor.php +++ b/src/BusProNet/DataProcessor/BookingDataProcessor.php @@ -29,6 +29,8 @@ class BookingDataProcessor ...$participant->skiPass, ...$participant->board, ...$participant->rentals, + ...$participant->parking, + ...$participant->rentalInsurance, ]; foreach ($servicesToMap as $service) { if (false === isset($this->additionalServices[$service->id])) { diff --git a/src/BusProNet/Model/Service.php b/src/BusProNet/Model/Service.php index 5c8c011..e3a557f 100644 --- a/src/BusProNet/Model/Service.php +++ b/src/BusProNet/Model/Service.php @@ -19,6 +19,8 @@ class Service public const TOKEN_ADDITIONAL = 'SON'; public const TOKEN_BOARD = 'VPF'; public const TOKEN_RENTALS = ['VER', 'VE2', 'VE3', 'VE4', 'VE5', 'VE6', 'VE7', 'VE8']; + public const TOKEN_PARKING = 'PAR'; + public const TOKEN_RENTAL_INSURANCE = 'LVS'; public const STATUS_AVAILABLE = 'Frei'; public const STATUS_BLOCKED = 'Buchungsstop'; diff --git a/src/Form/BookingType.php b/src/Form/BookingType.php index 603117f..f64ce55 100644 --- a/src/Form/BookingType.php +++ b/src/Form/BookingType.php @@ -29,6 +29,8 @@ final class BookingType extends AbstractType 'selectable_services' => $this->mergeSelectableServices($data, Service::TOKEN_ADDITIONAL), 'selectable_board' => $this->mergeSelectableServices($data, Service::TOKEN_BOARD), 'selectable_rentals' => $this->mergeSelectableServices($data, Service::TOKEN_RENTALS), + 'selectable_parking' => $this->mergeSelectableServices($data, Service::TOKEN_PARKING), + 'selectable_rental_insurance' => $this->mergeSelectableServices($data, Service::TOKEN_RENTAL_INSURANCE), 'selectable_transportation_services_to' => $travelData ->getTransportationServicesByDirection('HIN', false), 'selectable_transportation_services_fro' => $travelData diff --git a/src/Form/Model/BookingData.php b/src/Form/Model/BookingData.php index 511a1b7..294c2cb 100644 --- a/src/Form/Model/BookingData.php +++ b/src/Form/Model/BookingData.php @@ -38,6 +38,11 @@ class BookingData ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_BOARD); $participantData->rentals = $booking ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_RENTALS); + $participantData->parking = $booking + ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_PARKING); + $participantData->rentalInsurance = $booking + ->getAdditionalServicesForParticipantByGroup($index, Service::TOKEN_RENTAL_INSURANCE); + // Different keys for direction used in booking data (H <=> HIN, R <=> RUECK)! $participantData->transportationServiceTo = $booking ->getTransportationServiceForParticipantAndDirection($index, 'H'); diff --git a/src/Form/Model/ParticipantData.php b/src/Form/Model/ParticipantData.php index 6e5f50e..e7c1f8a 100644 --- a/src/Form/Model/ParticipantData.php +++ b/src/Form/Model/ParticipantData.php @@ -42,6 +42,8 @@ class ParticipantData public array $skiPass = []; public array $board = []; public array $rentals = []; + public array $parking = []; + public array $rentalInsurance = []; public ?Service $transportationServiceTo = null; public ?Service $transportationServiceFro = null; public ?Pickup $pickup = null; diff --git a/src/Form/ParticipantType.php b/src/Form/ParticipantType.php index 580d6da..93b3cbb 100644 --- a/src/Form/ParticipantType.php +++ b/src/Form/ParticipantType.php @@ -233,13 +233,36 @@ class ParticipantType extends AbstractType ]); } if (0 < count($options['selectable_rentals'])) { + // Extend common options for rentals to add checkbox-toggle action + $rentalChoiceAttr = $commonChoiceFieldOptions['choice_attr']; $form->add('rentals', ChoiceType::class, [ ...$commonChoiceFieldOptions, 'label' => 'Verleih', 'choices' => $options['selectable_rentals'], + 'choice_attr' => function (?Service $service) use ($rentalChoiceAttr) { + $attributes = $rentalChoiceAttr($service); + // Add checkbox-toggle action to existing actions + $attributes['data-action'] = 'booking#toggle checkbox-toggle#check'; + + return $attributes; + }, ]); } + // Parking - single checkbox (always add, JS will show/hide for PKW travelers) + $form->add('parking', ChoiceType::class, [ + ...$commonChoiceFieldOptions, + 'label' => 'Parkplatz', + 'choices' => $options['selectable_parking'], + ]); + + // Rental Insurance - single checkbox (always add, JS will show/hide when rentals selected) + $form->add('rentalInsurance', ChoiceType::class, [ + ...$commonChoiceFieldOptions, + 'label' => 'Leihausrüstungsversicherung', + 'choices' => $options['selectable_rental_insurance'], + ]); + // Transportation $transportationChoiceAttributes = function (?Service $service) use ($options) { $attributes = [ @@ -330,12 +353,39 @@ class ParticipantType extends AbstractType return; } + // Get selected transportation service $transportationId = $data['transportationServiceTo'] ?? null; - $transportation = $options['travel']->pickups[$transportationId] ?? null; + $transportation = null; + foreach ($options['selectable_transportation_services_to'] as $service) { + if ($service->id == $transportationId) { + $transportation = $service; + break; + } + } + // Remove pickup field for PKW (existing logic, corrected) if (null !== $transportation && 'PKW' === $transportation->subType) { - $form->remove('pickup'); - unset($data['pickup']); + if ($form->has('pickup')) { + $form->remove('pickup'); + unset($data['pickup']); + } + } + + // Remove parking field for BUS travelers (only show for PKW) + if (null !== $transportation && 'BUS' === $transportation->subType) { + if ($form->has('parking')) { + $form->remove('parking'); + unset($data['parking']); + } + } + + // Remove rental insurance if no rentals selected + $hasRentals = isset($data['rentals']) && is_array($data['rentals']) && 0 < count($data['rentals']); + if (false === $hasRentals) { + if ($form->has('rentalInsurance')) { + $form->remove('rentalInsurance'); + unset($data['rentalInsurance']); + } } // filter selectable services by participant's age @@ -389,6 +439,7 @@ class ParticipantType extends AbstractType ) { return true; } + return false; }); } @@ -402,6 +453,8 @@ class ParticipantType extends AbstractType 'selectable_services' => [], 'selectable_board' => [], 'selectable_rentals' => [], + 'selectable_parking' => [], + 'selectable_rental_insurance' => [], 'selectable_transportation_services_to' => [], 'selectable_transportation_services_fro' => [], 'selectable_pickups' => [], diff --git a/templates/booking/edit.html.twig b/templates/booking/edit.html.twig index dab627d..d2fa295 100644 --- a/templates/booking/edit.html.twig +++ b/templates/booking/edit.html.twig @@ -194,7 +194,7 @@

Leistungen

-
+
0 }, { 'hidden': 'hidden' }) }}> {% if child.courses is defined %} {{ form_row(child.courses) }} {% endif %} @@ -208,8 +208,16 @@ {{ form_row(child.board) }} {% endif %} {% if child.rentals is defined %} - {{ form_row(child.rentals) }} +
+ {{ form_row(child.rentals) }} +
{% endif %} +
+ {{ form_row(child.parking) }} +
+
+ {{ form_row(child.rentalInsurance) }} +
{% if not travelData.additionalServicesMutable %}
@@ -220,7 +228,7 @@ Hin-/Rückreise
-
+
{{ form_row(child.transportationServiceTo) }} {% if child.pickup is defined %}
From 84ed41f3253beade44bf5dd407e752d827453959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Tue, 11 Nov 2025 15:12:28 +0100 Subject: [PATCH 17/33] fix: tooltips for form fields not showing --- assets/controllers/tooltip_controller.js | 3 +++ templates/forms.html.twig | 15 ++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/assets/controllers/tooltip_controller.js b/assets/controllers/tooltip_controller.js index b7d9139..9658041 100644 --- a/assets/controllers/tooltip_controller.js +++ b/assets/controllers/tooltip_controller.js @@ -16,14 +16,17 @@ export default class extends Controller { trigger: 'click', allowHTML: true, interactive: true, + appendTo: document.body, } } else { options = { content: this.contentValue, placement, touch: false, + trigger: 'mouseenter focus', allowHTML: true, interactive: true, + appendTo: document.body, } } if (this.hasTriggerTarget) { diff --git a/templates/forms.html.twig b/templates/forms.html.twig index a03c3a6..f3a94d0 100644 --- a/templates/forms.html.twig +++ b/templates/forms.html.twig @@ -95,7 +95,7 @@ {%- set tooltip = attr.tooltip -%} {%- set attr = attr|filter((v, k) => k != 'tooltip') -%} {%- endif -%} - +
{%- endblock radio_widget -%} @@ -105,13 +105,13 @@ {%- if form.vars.attr.tooltip is defined -%} {%- set tooltip = form.vars.attr.tooltip -%} {%- endif -%} -
-
{% endif %} -
- {{ form_row(child.parking) }} -
+ {% if child.parking is defined %} +
+ {{ form_row(child.parking) }} +
+ {% endif %}
{% if not travelData.additionalServicesMutable %}
From d0d1edb3aecbb377ab8473de6ca8e6a9d922445d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 17 Nov 2025 09:50:00 +0100 Subject: [PATCH 21/33] feat: sort pickups by their times --- src/BusProNet/XmlLoader/PickupLoader.php | 31 ++++++++++++++++++------ src/BusProNet/XmlLoader/TravelLoader.php | 5 ++-- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/BusProNet/XmlLoader/PickupLoader.php b/src/BusProNet/XmlLoader/PickupLoader.php index 65c6cf6..f4be487 100644 --- a/src/BusProNet/XmlLoader/PickupLoader.php +++ b/src/BusProNet/XmlLoader/PickupLoader.php @@ -61,7 +61,13 @@ class PickupLoader extends AbstractLoader public function patchPickupsDetails(Travel $travel): void { - foreach ($travel->pickupsTo as $pickupId => $pickup) { + $travel->pickupsTo = $this->patchAndSortPickups($travel->pickupsTo); + $travel->pickupsFro = $this->patchAndSortPickups($travel->pickupsFro); + } + + private function patchAndSortPickups(array $pickups): array + { + foreach ($pickups as $pickupId => $pickup) { $pickupData = $this->loadById($pickupId); $pickup->code = $pickupData->code; @@ -69,13 +75,24 @@ class PickupLoader extends AbstractLoader $pickup->city = $pickupData->city; $pickup->street = $pickupData->street; } - foreach ($travel->pickupsFro as $pickupId => $pickup) { - $pickupData = $this->loadById($pickupId); - $pickup->code = $pickupData->code; - $pickup->postalCode = $pickupData->postalCode; - $pickup->city = $pickupData->city; - $pickup->street = $pickupData->street; + uasort($pickups, fn (Pickup $a, Pickup $b): int => $this->comparePickupsByTime($a, $b)); + + return $pickups; + } + + private function comparePickupsByTime(Pickup $a, Pickup $b): int + { + if (null === $a->time && null === $b->time) { + return 0; } + if (null === $a->time) { + return -1; + } + if (null === $b->time) { + return 1; + } + + return $a->time <=> $b->time; } } diff --git a/src/BusProNet/XmlLoader/TravelLoader.php b/src/BusProNet/XmlLoader/TravelLoader.php index 8c6d241..95eb1d4 100644 --- a/src/BusProNet/XmlLoader/TravelLoader.php +++ b/src/BusProNet/XmlLoader/TravelLoader.php @@ -133,13 +133,14 @@ class TravelLoader extends AbstractLoader $hotelNode = $this->getHotelNode($node, $hotelId); $dateFrom = $this->stringToDate($node->attr('termin')); + $dateTo = $this->stringToDate($node->attr('bis')); $travel = new Travel(); $travel->id = (int) $node->attr('idbuspro'); $travel->hotelId = (int) $hotelNode->attr('idbuspro'); $travel->label = $this->getStringOrNullValue($node->filterXPath('//text')); $travel->dateFrom = $dateFrom; - $travel->dateTo = $this->stringToDate($node->attr('bis')); + $travel->dateTo = $dateTo; $travel->code = $node->attr('code'); $travel->type = $node->attr('reiseart'); $travel->priceFrom = $this->stringToFloat($this->getStringOrNullValue($node->filterXPath('//abpreis'))); @@ -150,7 +151,7 @@ class TravelLoader extends AbstractLoader ->getTransportationServices($node->filterXPath('//lei_befoerderung/leistung')); $travel->rooms = $this->getRooms($hotelNode); $travel->pickupsTo = $this->getPickups($node->filterXPath('//zustiege/zustieg'), $dateFrom); - $travel->pickupsFro = $this->getPickups($node->filterXPath('//zustiege_rueck/zustieg_rueck')); + $travel->pickupsFro = $this->getPickups($node->filterXPath('//zustiege_rueck/zustieg_rueck'), $dateTo); $travel->guide = $this->getGuide($node); return $travel; From a6b0051f1b79eaaff881804e98e69f43f6996b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 17 Nov 2025 09:51:13 +0100 Subject: [PATCH 22/33] chore: update project dependencies --- composer.lock | 137 +++++++++++++++++++++++++------------------------- 1 file changed, 69 insertions(+), 68 deletions(-) diff --git a/composer.lock b/composer.lock index ad7347e..93625ec 100644 --- a/composer.lock +++ b/composer.lock @@ -513,16 +513,16 @@ }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "49ecc564568d7da101779112579e78b677fbc94a" + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49ecc564568d7da101779112579e78b677fbc94a", - "reference": "49ecc564568d7da101779112579e78b677fbc94a", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1e380c6dd8ac8488217f39cff6b77e367f1a644b", + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b", "shasum": "" }, "require": { @@ -578,7 +578,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.6.0" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.7.0" }, "funding": [ { @@ -594,7 +594,7 @@ "type": "tidelift" } ], - "time": "2025-11-07T19:40:03+00:00" + "time": "2025-11-15T19:02:59+00:00" }, { "name": "doctrine/event-manager", @@ -1029,16 +1029,16 @@ }, { "name": "doctrine/orm", - "version": "3.5.6", + "version": "3.5.7", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "b62292256a304257a9c049546a063ac616b0514e" + "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/b62292256a304257a9c049546a063ac616b0514e", - "reference": "b62292256a304257a9c049546a063ac616b0514e", + "url": "https://api.github.com/repos/doctrine/orm/zipball/f18de9d569f00ed6eb9dac4b33c7844d705d17da", + "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da", "shasum": "" }, "require": { @@ -1054,8 +1054,8 @@ "ext-ctype": "*", "php": "^8.1", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/var-exporter": "^6.3.9 || ^7.0 || ^8.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.3.9 || ^7.0" }, "require-dev": { "doctrine/coding-standard": "^14.0", @@ -1066,7 +1066,7 @@ "phpstan/phpstan-deprecation-rules": "^2", "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", - "symfony/cache": "^5.4 || ^6.2 || ^7.0 || ^8.0" + "symfony/cache": "^5.4 || ^6.2 || ^7.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1112,9 +1112,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.5.6" + "source": "https://github.com/doctrine/orm/tree/3.5.7" }, - "time": "2025-11-10T21:11:37+00:00" + "time": "2025-11-11T18:27:40+00:00" }, { "name": "doctrine/persistence", @@ -5316,16 +5316,16 @@ }, { "name": "symfony/flex", - "version": "v2.9.0", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6" + "reference": "9cd384775973eabbf6e8b05784dda279fc67c28d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", - "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", + "url": "https://api.github.com/repos/symfony/flex/zipball/9cd384775973eabbf6e8b05784dda279fc67c28d", + "reference": "9cd384775973eabbf6e8b05784dda279fc67c28d", "shasum": "" }, "require": { @@ -5333,7 +5333,8 @@ "php": ">=8.1" }, "conflict": { - "composer/semver": "<1.7.2" + "composer/semver": "<1.7.2", + "symfony/dotenv": "<5.4" }, "require-dev": { "composer/composer": "^2.1", @@ -5364,7 +5365,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.9.0" + "source": "https://github.com/symfony/flex/tree/v2.10.0" }, "funding": [ { @@ -5384,7 +5385,7 @@ "type": "tidelift" } ], - "time": "2025-10-31T15:22:50+00:00" + "time": "2025-11-16T09:38:19+00:00" }, { "name": "symfony/form", @@ -5818,16 +5819,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.28", + "version": "v6.4.29", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "1ba1d5fe6465b0fa39c8627ba552b2c29301aa81" + "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1ba1d5fe6465b0fa39c8627ba552b2c29301aa81", - "reference": "1ba1d5fe6465b0fa39c8627ba552b2c29301aa81", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03d11e015552a315714c127d8d1e0f9e970ec88", + "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88", "shasum": "" }, "require": { @@ -5875,7 +5876,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.4.28" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.29" }, "funding": [ { @@ -5895,20 +5896,20 @@ "type": "tidelift" } ], - "time": "2025-11-06T10:41:18+00:00" + "time": "2025-11-08T16:40:12+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.28", + "version": "v6.4.29", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "bbccadab358e236fcf13cc02a01fc0115d09d787" + "reference": "18818b48f54c1d2bd92b41d82d8345af50b15658" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/bbccadab358e236fcf13cc02a01fc0115d09d787", - "reference": "bbccadab358e236fcf13cc02a01fc0115d09d787", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/18818b48f54c1d2bd92b41d82d8345af50b15658", + "reference": "18818b48f54c1d2bd92b41d82d8345af50b15658", "shasum": "" }, "require": { @@ -5993,7 +5994,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.4.28" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.29" }, "funding": [ { @@ -6013,7 +6014,7 @@ "type": "tidelift" } ], - "time": "2025-11-06T20:52:25+00:00" + "time": "2025-11-12T11:22:59+00:00" }, { "name": "symfony/intl", @@ -9171,16 +9172,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.27", + "version": "v6.4.29", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "60dd71e219cd3d76fde906eb6b6c1271db628f5b" + "reference": "99df8a769e64e399f510166141ea74f450e8dd1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/60dd71e219cd3d76fde906eb6b6c1271db628f5b", - "reference": "60dd71e219cd3d76fde906eb6b6c1271db628f5b", + "url": "https://api.github.com/repos/symfony/validator/zipball/99df8a769e64e399f510166141ea74f450e8dd1d", + "reference": "99df8a769e64e399f510166141ea74f450e8dd1d", "shasum": "" }, "require": { @@ -9248,7 +9249,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.27" + "source": "https://github.com/symfony/validator/tree/v6.4.29" }, "funding": [ { @@ -9268,7 +9269,7 @@ "type": "tidelift" } ], - "time": "2025-10-23T19:49:35+00:00" + "time": "2025-11-06T20:26:06+00:00" }, { "name": "symfony/var-dumper", @@ -9680,22 +9681,22 @@ }, { "name": "twig/extra-bundle", - "version": "v3.22.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4" + "reference": "b6534bc925bec930004facca92fccebd0c809247" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4", - "reference": "6d253f0fe28a83a045497c8fb3ea9bfe84e82cf4", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/b6534bc925bec930004facca92fccebd0c809247", + "reference": "b6534bc925bec930004facca92fccebd0c809247", "shasum": "" }, "require": { "php": ">=8.1.0", - "symfony/framework-bundle": "^5.4|^6.4|^7.0", - "symfony/twig-bundle": "^5.4|^6.4|^7.0", + "symfony/framework-bundle": "^5.4|^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^5.4|^6.4|^7.0|^8.0", "twig/twig": "^3.2|^4.0" }, "require-dev": { @@ -9738,7 +9739,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.1" }, "funding": [ { @@ -9750,26 +9751,26 @@ "type": "tidelift" } ], - "time": "2025-09-15T05:57:37+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/html-extra", - "version": "v3.22.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/html-extra.git", - "reference": "5442dd707601c83b8cd4233e37bb10ab8489a90f" + "reference": "d56d33315bce2b19ed815f8feedce85448736568" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/html-extra/zipball/5442dd707601c83b8cd4233e37bb10ab8489a90f", - "reference": "5442dd707601c83b8cd4233e37bb10ab8489a90f", + "url": "https://api.github.com/repos/twigphp/html-extra/zipball/d56d33315bce2b19ed815f8feedce85448736568", + "reference": "d56d33315bce2b19ed815f8feedce85448736568", "shasum": "" }, "require": { "php": ">=8.1.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/mime": "^5.4|^6.4|^7.0", + "symfony/mime": "^5.4|^6.4|^7.0|^8.0", "twig/twig": "^3.13|^4.0" }, "require-dev": { @@ -9806,7 +9807,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/html-extra/tree/v3.22.0" + "source": "https://github.com/twigphp/html-extra/tree/v3.22.1" }, "funding": [ { @@ -9818,25 +9819,25 @@ "type": "tidelift" } ], - "time": "2025-02-19T14:29:33+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/intl-extra", - "version": "v3.22.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "7393fc911c7315db18a805d3a541ac7bb9e4fdc0" + "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/7393fc911c7315db18a805d3a541ac7bb9e4fdc0", - "reference": "7393fc911c7315db18a805d3a541ac7bb9e4fdc0", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", + "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", "shasum": "" }, "require": { "php": ">=8.1.0", - "symfony/intl": "^5.4|^6.4|^7.0", + "symfony/intl": "^5.4|^6.4|^7.0|^8.0", "twig/twig": "^3.13|^4.0" }, "require-dev": { @@ -9870,7 +9871,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.22.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.22.1" }, "funding": [ { @@ -9882,7 +9883,7 @@ "type": "tidelift" } ], - "time": "2025-09-15T06:05:04+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/twig", @@ -13605,16 +13606,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "d74205c497bfbca49f34d4bc4c19c17e22db4ebb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/d74205c497bfbca49f34d4bc4c19c17e22db4ebb", + "reference": "d74205c497bfbca49f34d4bc4c19c17e22db4ebb", "shasum": "" }, "require": { @@ -13643,7 +13644,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/1.3.0" }, "funding": [ { @@ -13651,7 +13652,7 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-11-13T13:44:09+00:00" } ], "aliases": [], From 1f3e79d57c358ffef7b8dc57f2df4d02d437bfc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 1 Dec 2025 10:37:39 +0100 Subject: [PATCH 23/33] fix: prevent null reference errors --- .../DataProcessor/BookingDataProcessor.php | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/BusProNet/DataProcessor/BookingDataProcessor.php b/src/BusProNet/DataProcessor/BookingDataProcessor.php index 13c2633..ecebed2 100644 --- a/src/BusProNet/DataProcessor/BookingDataProcessor.php +++ b/src/BusProNet/DataProcessor/BookingDataProcessor.php @@ -33,26 +33,33 @@ class BookingDataProcessor ...$participant->rentalInsurance, ]; foreach ($servicesToMap as $service) { - if (false === isset($this->additionalServices[$service->id])) { - $serviceToAdd = $travelData->additionalServices[$service->id]; + if (false === isset($bookingData->additionalServices[$service->id])) { + $serviceToAdd = $travelData->additionalServices[$service->id] ?? null; if (null !== $serviceToAdd) { $bookingData->additionalServices[$service->id] = $serviceToAdd; $bookingData->additionalServices[$service->id]->individualPrice[$participant->index] = $serviceToAdd->price; } } - $bookingData->additionalServices[$service->id]->mapping[] = $participant->index; + if (true === isset($bookingData->additionalServices[$service->id])) { + $bookingData->additionalServices[$service->id]->mapping[] = $participant->index; + } } foreach ([$participant->transportationServiceTo, $participant->transportationServiceFro] as $service) { - if (false === isset($this->transportationServices[$service->id])) { - $serviceToAdd = $travelData->transportationServices[$service->id]; + if (null === $service) { + continue; + } + if (false === isset($bookingData->transportationServices[$service->id])) { + $serviceToAdd = $travelData->transportationServices[$service->id] ?? null; if (null !== $serviceToAdd) { $bookingData->transportationServices[$service->id] = $serviceToAdd; $bookingData->transportationServices[$service->id]->individualPrice[$participant->index] = $serviceToAdd->price; } } - $bookingData->transportationServices[$service->id]->mapping[] = $participant->index; + if (true === isset($bookingData->transportationServices[$service->id])) { + $bookingData->transportationServices[$service->id]->mapping[] = $participant->index; + } } - if ('BUS' === $participant->transportationServiceTo->subType && null !== $selectedPickup = $participant->pickup) { + if ('BUS' === $participant->transportationServiceTo?->subType && null !== $selectedPickup = $participant->pickup) { if (false === isset($bookingData->pickupsTo[$selectedPickup->id])) { $bookingData->pickupsTo[$selectedPickup->id] = $selectedPickup; } From 61a8afdde7486d1f777f16c4c83511c812c951ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 1 Dec 2025 10:38:55 +0100 Subject: [PATCH 24/33] fix: prevent null reference errors --- src/Controller/Api/TravelController.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Controller/Api/TravelController.php b/src/Controller/Api/TravelController.php index b6f475b..8007b3d 100644 --- a/src/Controller/Api/TravelController.php +++ b/src/Controller/Api/TravelController.php @@ -46,6 +46,10 @@ class TravelController extends AbstractController { $travel = $this->loadCached($travelId, $hotelId); + if (null === $travel) { + return new JsonResponse(['message' => 'Not found'], Response::HTTP_NOT_FOUND); + } + return $this->json($travel, Response::HTTP_OK, [], ['groups' => ['api:list', 'api:single']]); } @@ -68,6 +72,10 @@ class TravelController extends AbstractController $travel = $this->loadCached($travelId, $hotelId); + if (null === $travel) { + return new JsonResponse(['message' => 'Not found'], Response::HTTP_NOT_FOUND); + } + return $this->json($travel, Response::HTTP_OK, [], ['groups' => ['api:list', 'api:single']]); } @@ -82,7 +90,7 @@ class TravelController extends AbstractController $travel = $this->travelXmlLoader->loadById($travelId, $hotelId); if (null === $travel) { - return new JsonResponse(['message' => 'Not found'], Response::HTTP_NOT_FOUND); + return null; } $this->pickupXmlLoader->patchPickupsDetails($travel); From 8d3a7b99b4781ae6107edd38e84db425905355ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 1 Dec 2025 10:41:04 +0100 Subject: [PATCH 25/33] fix: prevent type errors --- src/Controller/Booking/EditController.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Controller/Booking/EditController.php b/src/Controller/Booking/EditController.php index 9e1ba6d..b70d9a5 100644 --- a/src/Controller/Booking/EditController.php +++ b/src/Controller/Booking/EditController.php @@ -75,6 +75,12 @@ class EditController extends AbstractController return $this->redirectToRoute('app_bookings'); } + if ($mutableData instanceof Notification) { + $this->addFlash('error', 'Reisedaten nicht (mehr) verfügbar'); + + return $this->redirectToRoute('app_bookings'); + } + // Fetch availability information via API try { $availabilities = $this->apiClient->getAvailabilities($bookingData->travelId); @@ -84,6 +90,12 @@ class EditController extends AbstractController return $this->redirectToRoute('app_bookings'); } + if ($availabilities instanceof Notification) { + $this->addFlash('error', 'Verfügbarkeitsdaten nicht (mehr) verfügbar'); + + return $this->redirectToRoute('app_bookings'); + } + // Patch travel data with additional information from above $this->travelDataLoader->patchAvailabilities($travelData, $availabilities); $this->travelDataLoader->patchMutability($travelData, $mutableData); From e7997f84ebe77833e5df1f243dbe5ebe19ac7a22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 5 Dec 2025 10:03:51 +0100 Subject: [PATCH 26/33] fix: include user ini for adjusted php settings on prod host --- public/.user.ini | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 public/.user.ini diff --git a/public/.user.ini b/public/.user.ini new file mode 100644 index 0000000..cda29e1 --- /dev/null +++ b/public/.user.ini @@ -0,0 +1,4 @@ +memory_limit=512M +max_input_vars=10000 +post_max_size=128M + From b9dfeb2d3ea074368d86eab3aef8c54bf9410b4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 10 Dec 2025 18:00:51 +0100 Subject: [PATCH 27/33] feat: backport contact form api endpoint --- api.http | 16 ++++++ src/BusProNet/ApiClient.php | 18 +++++++ src/BusProNet/Model/ContactFormResponse.php | 13 +++++ src/BusProNet/Model/ContactFormSubmission.php | 15 ++++++ src/BusProNet/Model/PersonalData.php | 19 +++++++ src/BusProNet/XmlParser/ApiResponseParser.php | 2 + .../XmlParser/ContactFormResponseParser.php | 24 +++++++++ src/Controller/Api/ContactFormController.php | 53 +++++++++++++++++++ 8 files changed, 160 insertions(+) create mode 100644 src/BusProNet/Model/ContactFormResponse.php create mode 100644 src/BusProNet/Model/ContactFormSubmission.php create mode 100644 src/BusProNet/XmlParser/ContactFormResponseParser.php create mode 100644 src/Controller/Api/ContactFormController.php diff --git a/api.http b/api.http index feafa86..740f8f6 100644 --- a/api.http +++ b/api.http @@ -53,3 +53,19 @@ GET {{base_url}}/api/travels/DWWWE211125 Accept: application/json Authorization: Bearer {{$auth.token("oauth2_api")}} +### API contact form +POST {{base_url}}/api/contactform +Accept: application/json +Content-Type: application/json +Authorization: Bearer {{$auth.token("oauth2_api")}} + +{ + "lastName": "Duschen", + "firstName": "Isolde", + "gender": "f", + "street": "Fooroad 1", + "zipCode": "12345", + "city": "Bartown", + "email": "foo@example.com", + "phone": "12345" +} diff --git a/src/BusProNet/ApiClient.php b/src/BusProNet/ApiClient.php index ea644ce..fd1db9b 100644 --- a/src/BusProNet/ApiClient.php +++ b/src/BusProNet/ApiClient.php @@ -8,6 +8,7 @@ use App\BusProNet\Exception\ResponseParserException; use App\BusProNet\Model\BaseData; use App\BusProNet\Model\Booking; use App\BusProNet\Model\BookingUpdate; +use App\BusProNet\Model\ContactFormResponse; use App\BusProNet\Model\CrmAttributes; use App\BusProNet\Model\Notification; use App\BusProNet\Model\PersonalData; @@ -62,6 +63,23 @@ class ApiClient return $this->sendRequest(static::TYPE_CUSTOMER_DATA, $data); } + /** + * @throws ApiClientException + */ + public function createAddress(PersonalData $personalData, bool $debug = false): ContactFormResponse|Notification + { + $data = [ + 'user' => $this->config['bpn_username'], + 'key' => $this->createKey($this->config['bpn_username'], $this->config['bpn_password'], static::TYPE_CUSTOMER_DATA), + 'satz' => ['@typ' => static::TYPE_CUSTOMER_DATA], + 'art' => 'Adresse_Neu', + 'adressdaten' => $personalData->toPayload(), + 'ohnemailversand' => 'True', + ]; + + return $this->sendRequest(static::TYPE_CUSTOMER_DATA, $data, [], $debug); + } + /** * @throws ApiClientException */ diff --git a/src/BusProNet/Model/ContactFormResponse.php b/src/BusProNet/Model/ContactFormResponse.php new file mode 100644 index 0000000..12080da --- /dev/null +++ b/src/BusProNet/Model/ContactFormResponse.php @@ -0,0 +1,13 @@ +communication = new Communication(); } + public static function fromContactFormSubmission(ContactFormSubmission $dto): self + { + $gender = null !== $dto->gender ? strtoupper($dto->gender) : null; + if ('F' === $gender) { + $gender = 'W'; + } + $instance = new self(); + $instance->name = $dto->lastName; + $instance->firstName = $dto->firstName; + $instance->gender = $gender; + $instance->address->street = $dto->street; + $instance->address->postCode = $dto->zipCode; + $instance->address->city = $dto->city; + $instance->communication->email = $dto->email; + $instance->communication->phone = $dto->phone; + + return $instance; + } + public function toPayload(): array { // Ensure date of birth is populated diff --git a/src/BusProNet/XmlParser/ApiResponseParser.php b/src/BusProNet/XmlParser/ApiResponseParser.php index b65385a..e826298 100644 --- a/src/BusProNet/XmlParser/ApiResponseParser.php +++ b/src/BusProNet/XmlParser/ApiResponseParser.php @@ -36,6 +36,8 @@ class ApiResponseParser extends AbstractParser case 'Adressdaten_Ändern': case 'Newsletter': return (new PersonalDataParser())->parse($resultNode); + case 'Adresse_Neu': + return (new ContactFormResponseParser())->parse($resultNode); case 'SelektionCRM': case 'SelektionCRM_Ändern': return (new CrmAttributesResponseParser())->parse($resultNode); diff --git a/src/BusProNet/XmlParser/ContactFormResponseParser.php b/src/BusProNet/XmlParser/ContactFormResponseParser.php new file mode 100644 index 0000000..e67bacd --- /dev/null +++ b/src/BusProNet/XmlParser/ContactFormResponseParser.php @@ -0,0 +1,24 @@ +filterXPath('//idadresse')->text(); + $personId = (int) $node->filterXPath('//idperson')->text(); + $isNewRecord = $this->getBoolValue($node->filterXPath('//neuanlage')); + + return new ContactFormResponse( + addressId: $addressId, + personId: $personId, + isNewRecord: $isNewRecord, + ); + } +} diff --git a/src/Controller/Api/ContactFormController.php b/src/Controller/Api/ContactFormController.php new file mode 100644 index 0000000..addcf9d --- /dev/null +++ b/src/Controller/Api/ContactFormController.php @@ -0,0 +1,53 @@ +apiClient->createAddress($personalData); + + if ($result instanceof Notification) { + return new JsonResponse([ + 'success' => false, + 'message' => $result->message, + ], Response::HTTP_CONFLICT); + } + + return $this->json([ + 'success' => true, + 'addressId' => $result->addressId, + 'personId' => $result->personId, + 'isNewRecord' => $result->isNewRecord, + ], Response::HTTP_CREATED); + } catch (ApiClientException $e) { + return new JsonResponse([ + 'success' => false, + 'message' => $e->getMessage(), + ], Response::HTTP_BAD_REQUEST); + } + } +} From 4d3a4b7c04c7557366c7bd5c41051829fe37c32c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 10 Dec 2025 18:01:34 +0100 Subject: [PATCH 28/33] chore: update project dependencies --- composer.lock | 819 +++++++++++++++++++++++++------------------------- 1 file changed, 415 insertions(+), 404 deletions(-) diff --git a/composer.lock b/composer.lock index 93625ec..3bdabd4 100644 --- a/composer.lock +++ b/composer.lock @@ -230,16 +230,16 @@ }, { "name": "doctrine/dbal", - "version": "3.10.3", + "version": "3.10.4", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "65edaca19a752730f290ec2fb89d593cb40afb43" + "reference": "63a46cb5aa6f60991186cc98c1d1b50c09311868" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/65edaca19a752730f290ec2fb89d593cb40afb43", - "reference": "65edaca19a752730f290ec2fb89d593cb40afb43", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/63a46cb5aa6f60991186cc98c1d1b50c09311868", + "reference": "63a46cb5aa6f60991186cc98c1d1b50c09311868", "shasum": "" }, "require": { @@ -263,8 +263,8 @@ "phpunit/phpunit": "9.6.29", "slevomat/coding-standard": "8.24.0", "squizlabs/php_codesniffer": "4.0.0", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0" + "symfony/cache": "^5.4|^6.0|^7.0|^8.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0|^8.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -324,7 +324,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.10.3" + "source": "https://github.com/doctrine/dbal/tree/3.10.4" }, "funding": [ { @@ -340,7 +340,7 @@ "type": "tidelift" } ], - "time": "2025-10-09T09:05:12+00:00" + "time": "2025-11-29T10:46:08+00:00" }, { "name": "doctrine/deprecations", @@ -926,16 +926,16 @@ }, { "name": "doctrine/migrations", - "version": "3.9.4", + "version": "3.9.5", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c" + "reference": "1b823afbc40f932dae8272574faee53f2755eac5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", - "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b823afbc40f932dae8272574faee53f2755eac5", + "reference": "1b823afbc40f932dae8272574faee53f2755eac5", "shasum": "" }, "require": { @@ -945,15 +945,15 @@ "doctrine/event-manager": "^1.2 || ^2.0", "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.2 || ^7.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.2 || ^7.0 || ^8.0" }, "conflict": { "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^13", + "doctrine/coding-standard": "^14", "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3 || ^4", "doctrine/sql-formatter": "^1.0", @@ -965,9 +965,9 @@ "phpstan/phpstan-strict-rules": "^2", "phpstan/phpstan-symfony": "^2", "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/cache": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1009,7 +1009,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.4" + "source": "https://github.com/doctrine/migrations/tree/3.9.5" }, "funding": [ { @@ -1025,20 +1025,20 @@ "type": "tidelift" } ], - "time": "2025-08-19T06:41:07+00:00" + "time": "2025-11-20T11:15:36+00:00" }, { "name": "doctrine/orm", - "version": "3.5.7", + "version": "3.5.8", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da" + "reference": "78dd074266e8b47a83bcf60ab5fe06c91a639168" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/f18de9d569f00ed6eb9dac4b33c7844d705d17da", - "reference": "f18de9d569f00ed6eb9dac4b33c7844d705d17da", + "url": "https://api.github.com/repos/doctrine/orm/zipball/78dd074266e8b47a83bcf60ab5fe06c91a639168", + "reference": "78dd074266e8b47a83bcf60ab5fe06c91a639168", "shasum": "" }, "require": { @@ -1054,19 +1054,18 @@ "ext-ctype": "*", "php": "^8.1", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.3.9 || ^7.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.3.9 || ^7.0 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^14.0", "phpbench/phpbench": "^1.0", - "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", "phpstan/phpstan": "2.1.23", "phpstan/phpstan-deprecation-rules": "^2", "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", - "symfony/cache": "^5.4 || ^6.2 || ^7.0" + "symfony/cache": "^5.4 || ^6.2 || ^7.0 || ^8.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1112,9 +1111,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.5.7" + "source": "https://github.com/doctrine/orm/tree/3.5.8" }, - "time": "2025-11-11T18:27:40+00:00" + "time": "2025-11-29T23:11:02+00:00" }, { "name": "doctrine/persistence", @@ -1471,31 +1470,31 @@ }, { "name": "knplabs/knp-menu-bundle", - "version": "v3.6.0", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenuBundle.git", - "reference": "eabe07859751a0ed77c04dcb6b908fcd2c336cf3" + "reference": "aa22e57f8f41c34ad5e382aae4d0c12998c0eb5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/eabe07859751a0ed77c04dcb6b908fcd2c336cf3", - "reference": "eabe07859751a0ed77c04dcb6b908fcd2c336cf3", + "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/aa22e57f8f41c34ad5e382aae4d0c12998c0eb5a", + "reference": "aa22e57f8f41c34ad5e382aae4d0c12998c0eb5a", "shasum": "" }, "require": { "knplabs/knp-menu": "^3.8", "php": "^8.1", - "symfony/config": "^5.4 | ^6.0 | ^7.0", - "symfony/dependency-injection": "^5.4 | ^6.0 | ^7.0", + "symfony/config": "^6.4 | ^7.0 | ^8.0", + "symfony/dependency-injection": "^6.4 | ^7.0 | ^8.0", "symfony/deprecation-contracts": "^2.5 | ^3.3", - "symfony/http-kernel": "^5.4 | ^6.0 | ^7.0" + "symfony/http-kernel": "^6.4 | ^7.0 | ^8.0" }, "require-dev": { - "phpunit/phpunit": "^10.5 | ^11.5 | ^12.1", - "symfony/expression-language": "^5.4 | ^6.0 | ^7.0", - "symfony/phpunit-bridge": "^6.0 | ^7.0", - "symfony/templating": "^5.4 | ^6.0 | ^7.0" + "phpunit/phpunit": "^10.5 | ^11.5 | ^12.4", + "symfony/expression-language": "^6.4 | ^7.0 | ^8.0", + "symfony/phpunit-bridge": "^7.0 | ^8.0", + "symfony/templating": "^6.4 | ^7.0 | ^8.0" }, "type": "symfony-bundle", "extra": { @@ -1532,9 +1531,9 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpMenuBundle/issues", - "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.6.0" + "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.7.0" }, - "time": "2025-06-14T11:37:33+00:00" + "time": "2025-11-30T08:30:04+00:00" }, { "name": "lcobucci/clock", @@ -2041,16 +2040,16 @@ }, { "name": "league/oauth2-server", - "version": "9.2.0", + "version": "9.3.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "00323013403e1a1e0f424affafca56c28b60c22c" + "reference": "d8e2f39f645a82b207bbac441694d6e6079357cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/00323013403e1a1e0f424affafca56c28b60c22c", - "reference": "00323013403e1a1e0f424affafca56c28b60c22c", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/d8e2f39f645a82b207bbac441694d6e6079357cb", + "reference": "d8e2f39f645a82b207bbac441694d6e6079357cb", "shasum": "" }, "require": { @@ -2061,7 +2060,7 @@ "lcobucci/jwt": "^5.0", "league/event": "^3.0", "league/uri": "^7.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/http-message": "^2.0", "psr/http-server-middleware": "^1.0" }, @@ -2073,11 +2072,11 @@ "laminas/laminas-diactoros": "^3.5", "php-parallel-lint/php-parallel-lint": "^1.3.2", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.12", - "phpstan/phpstan-deprecation-rules": "^1.1.4", - "phpstan/phpstan-phpunit": "^1.3.15", - "phpstan/phpstan-strict-rules": "^1.5.2", - "phpunit/phpunit": "^9.6.21", + "phpstan/phpstan": "^1.12|^2.0", + "phpstan/phpstan-deprecation-rules": "^1.1.4|^2.0", + "phpstan/phpstan-phpunit": "^1.3.15|^2.0", + "phpstan/phpstan-strict-rules": "^1.5.2|^2.0", + "phpunit/phpunit": "^10.5|^11.5|^12.0", "roave/security-advisories": "dev-master", "slevomat/coding-standard": "^8.14.1", "squizlabs/php_codesniffer": "^3.8" @@ -2125,7 +2124,7 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-server/issues", - "source": "https://github.com/thephpleague/oauth2-server/tree/9.2.0" + "source": "https://github.com/thephpleague/oauth2-server/tree/9.3.0" }, "funding": [ { @@ -2133,7 +2132,7 @@ "type": "github" } ], - "time": "2025-02-15T00:49:10+00:00" + "time": "2025-11-25T22:51:15+00:00" }, { "name": "league/oauth2-server-bundle", @@ -2213,33 +2212,38 @@ }, { "name": "league/uri", - "version": "7.5.1", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "81fb5145d2644324614cc532b28efd0215bda430" + "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", - "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/8d587cddee53490f9b82bf203d3a9aa7ea4f9807", + "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.5", - "php": "^8.1" + "league/uri-interfaces": "^7.7", + "php": "^8.1", + "psr/http-factory": "^1" }, "conflict": { "league/uri-schemes": "^1.0" }, "suggest": { "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", "ext-fileinfo": "to create Data URI from file contennts", "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", "league/uri-components": "Needed to easily manipulate URI objects components", + "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP", "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle WHATWG URL", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -2267,6 +2271,7 @@ "description": "URI manipulation library", "homepage": "https://uri.thephpleague.com", "keywords": [ + "URN", "data-uri", "file-uri", "ftp", @@ -2279,9 +2284,11 @@ "psr-7", "query-string", "querystring", + "rfc2141", "rfc3986", "rfc3987", "rfc6570", + "rfc8141", "uri", "uri-template", "url", @@ -2291,7 +2298,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.5.1" + "source": "https://github.com/thephpleague/uri/tree/7.7.0" }, "funding": [ { @@ -2299,26 +2306,25 @@ "type": "github" } ], - "time": "2024-12-08T08:40:02+00:00" + "time": "2025-12-07T16:02:06+00:00" }, { "name": "league/uri-interfaces", - "version": "7.5.0", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/62ccc1a0435e1c54e10ee6022df28d6c04c2946c", + "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c", "shasum": "" }, "require": { "ext-filter": "*", "php": "^8.1", - "psr/http-factory": "^1", "psr/http-message": "^1.1 || ^2.0" }, "suggest": { @@ -2326,6 +2332,7 @@ "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle WHATWG URL", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -2350,7 +2357,7 @@ "homepage": "https://nyamsprod.com" } ], - "description": "Common interfaces and classes for URI representation and interaction", + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", "homepage": "https://uri.thephpleague.com", "keywords": [ "data-uri", @@ -2375,7 +2382,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.7.0" }, "funding": [ { @@ -2383,7 +2390,7 @@ "type": "github" } ], - "time": "2024-12-08T08:18:47+00:00" + "time": "2025-12-07T16:03:21+00:00" }, { "name": "masterminds/html5", @@ -2630,16 +2637,16 @@ }, { "name": "nesbot/carbon", - "version": "3.10.3", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f" + "reference": "bdb375400dcd162624531666db4799b36b64e4a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", - "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/bdb375400dcd162624531666db4799b36b64e4a1", + "reference": "bdb375400dcd162624531666db4799b36b64e4a1", "shasum": "" }, "require": { @@ -2647,9 +2654,9 @@ "ext-json": "*", "php": "^8.1", "psr/clock": "^1.0", - "symfony/clock": "^6.3.12 || ^7.0", + "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0" + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0" }, "provide": { "psr/clock-implementation": "1.0" @@ -2731,7 +2738,7 @@ "type": "tidelift" } ], - "time": "2025-09-06T13:39:36+00:00" + "time": "2025-12-02T21:04:28+00:00" }, { "name": "nyholm/psr7", @@ -2985,16 +2992,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.3", + "version": "5.6.5", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9" + "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94f8051919d1b0369a6bcc7931d679a511c03fe9", - "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/90614c73d3800e187615e2dd236ad0e2a01bf761", + "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761", "shasum": "" }, "require": { @@ -3043,22 +3050,22 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.3" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.5" }, - "time": "2025-08-01T19:43:32+00:00" + "time": "2025-11-27T19:50:05+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.10.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195", + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195", "shasum": "" }, "require": { @@ -3101,9 +3108,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0" }, - "time": "2024-11-09T15:12:26+00:00" + "time": "2025-11-21T15:09:14+00:00" }, { "name": "phpseclib/phpseclib", @@ -3791,16 +3798,16 @@ }, { "name": "spatie/crypto", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/spatie/crypto.git", - "reference": "9bda7d690ffa6a8884a8af69da2dba942bbac4eb" + "reference": "1db0f31d193015c576f60f780bc45f494c85a545" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/crypto/zipball/9bda7d690ffa6a8884a8af69da2dba942bbac4eb", - "reference": "9bda7d690ffa6a8884a8af69da2dba942bbac4eb", + "url": "https://api.github.com/repos/spatie/crypto/zipball/1db0f31d193015c576f60f780bc45f494c85a545", + "reference": "1db0f31d193015c576f60f780bc45f494c85a545", "shasum": "" }, "require": { @@ -3809,7 +3816,7 @@ }, "require-dev": { "phpunit/phpunit": "^9.3", - "symfony/var-dumper": "^5.1" + "symfony/var-dumper": "^5.1|^6.0|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3836,7 +3843,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/crypto/tree/2.1.0" + "source": "https://github.com/spatie/crypto/tree/2.1.1" }, "funding": [ { @@ -3848,7 +3855,7 @@ "type": "other" } ], - "time": "2024-06-20T08:24:56+00:00" + "time": "2025-11-26T16:27:40+00:00" }, { "name": "symfony/apache-pack", @@ -3951,16 +3958,16 @@ }, { "name": "symfony/cache", - "version": "v6.4.28", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "31628f36fc97c5714d181b3a8d29efb85c6a7677" + "reference": "eb3272ed2daed13ed24816e862d73f73d995972a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/31628f36fc97c5714d181b3a8d29efb85c6a7677", - "reference": "31628f36fc97c5714d181b3a8d29efb85c6a7677", + "url": "https://api.github.com/repos/symfony/cache/zipball/eb3272ed2daed13ed24816e862d73f73d995972a", + "reference": "eb3272ed2daed13ed24816e862d73f73d995972a", "shasum": "" }, "require": { @@ -4027,7 +4034,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.28" + "source": "https://github.com/symfony/cache/tree/v6.4.30" }, "funding": [ { @@ -4047,7 +4054,7 @@ "type": "tidelift" } ], - "time": "2025-10-30T08:37:02+00:00" + "time": "2025-12-01T16:41:59+00:00" }, { "name": "symfony/cache-contracts", @@ -4127,16 +4134,16 @@ }, { "name": "symfony/clock", - "version": "v6.4.24", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8" + "reference": "fb2df4bc9e3037c4765ba7fd29e00167001a9b68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8", - "reference": "5e15a9c9aeeb44a99f7cf24aa75aa9607795f6f8", + "url": "https://api.github.com/repos/symfony/clock/zipball/fb2df4bc9e3037c4765ba7fd29e00167001a9b68", + "reference": "fb2df4bc9e3037c4765ba7fd29e00167001a9b68", "shasum": "" }, "require": { @@ -4181,7 +4188,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v6.4.24" + "source": "https://github.com/symfony/clock/tree/v6.4.30" }, "funding": [ { @@ -4201,7 +4208,7 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-11-11T21:24:34+00:00" }, { "name": "symfony/config", @@ -4284,16 +4291,16 @@ }, { "name": "symfony/console", - "version": "v6.4.27", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc" + "reference": "1b2813049506b39eb3d7e64aff033fd5ca26c97e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/13d3176cf8ad8ced24202844e9f95af11e2959fc", - "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc", + "url": "https://api.github.com/repos/symfony/console/zipball/1b2813049506b39eb3d7e64aff033fd5ca26c97e", + "reference": "1b2813049506b39eb3d7e64aff033fd5ca26c97e", "shasum": "" }, "require": { @@ -4358,7 +4365,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.27" + "source": "https://github.com/symfony/console/tree/v6.4.30" }, "funding": [ { @@ -4378,20 +4385,20 @@ "type": "tidelift" } ], - "time": "2025-10-06T10:25:16+00:00" + "time": "2025-12-05T13:47:41+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.26", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898" + "reference": "5328f994cbb0855ba25c3a54f4a31a279511640f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5f311eaf0b321f8ec640f6bae12da43a14026898", - "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5328f994cbb0855ba25c3a54f4a31a279511640f", + "reference": "5328f994cbb0855ba25c3a54f4a31a279511640f", "shasum": "" }, "require": { @@ -4443,7 +4450,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.4.26" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.30" }, "funding": [ { @@ -4463,7 +4470,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T09:57:09+00:00" + "time": "2025-12-07T09:29:59+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4646,16 +4653,16 @@ }, { "name": "symfony/doctrine-messenger", - "version": "v6.4.28", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "200084fc1c8c5330a01bd43377a99cd72599df60" + "reference": "42549f5ac439f32a9362f7718124ba3df96784cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/200084fc1c8c5330a01bd43377a99cd72599df60", - "reference": "200084fc1c8c5330a01bd43377a99cd72599df60", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/42549f5ac439f32a9362f7718124ba3df96784cb", + "reference": "42549f5ac439f32a9362f7718124ba3df96784cb", "shasum": "" }, "require": { @@ -4698,7 +4705,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.28" + "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.30" }, "funding": [ { @@ -4718,7 +4725,7 @@ "type": "tidelift" } ], - "time": "2025-10-31T15:20:18+00:00" + "time": "2025-12-04T20:27:01+00:00" }, { "name": "symfony/dom-crawler", @@ -4793,16 +4800,16 @@ }, { "name": "symfony/dotenv", - "version": "v6.4.24", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff" + "reference": "924edbc9631b75302def0258ed1697948b17baf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/234b6c602f12b00693f4b0d1054386fb30dfc8ff", - "reference": "234b6c602f12b00693f4b0d1054386fb30dfc8ff", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/924edbc9631b75302def0258ed1697948b17baf6", + "reference": "924edbc9631b75302def0258ed1697948b17baf6", "shasum": "" }, "require": { @@ -4847,7 +4854,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.4.24" + "source": "https://github.com/symfony/dotenv/tree/v6.4.30" }, "funding": [ { @@ -4867,7 +4874,7 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-11-14T17:33:48+00:00" }, { "name": "symfony/error-handler", @@ -5110,16 +5117,16 @@ }, { "name": "symfony/expression-language", - "version": "v6.4.24", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091" + "reference": "01906f3b379833b347de9abc8ddc326593e9122b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/1ea0adaa53539ea7e70821ae9de49ebe03ae7091", - "reference": "1ea0adaa53539ea7e70821ae9de49ebe03ae7091", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/01906f3b379833b347de9abc8ddc326593e9122b", + "reference": "01906f3b379833b347de9abc8ddc326593e9122b", "shasum": "" }, "require": { @@ -5154,7 +5161,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v6.4.24" + "source": "https://github.com/symfony/expression-language/tree/v6.4.30" }, "funding": [ { @@ -5174,20 +5181,20 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-11-09T10:02:06+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.24", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8" + "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", - "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/441c6b69f7222aadae7cbf5df588496d5ee37789", + "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789", "shasum": "" }, "require": { @@ -5224,7 +5231,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.24" + "source": "https://github.com/symfony/filesystem/tree/v6.4.30" }, "funding": [ { @@ -5244,7 +5251,7 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-11-26T14:43:45+00:00" }, { "name": "symfony/finder", @@ -5389,16 +5396,16 @@ }, { "name": "symfony/form", - "version": "v6.4.27", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "5d922aea68ffe1637535713b35b29f6f34b7d81c" + "reference": "e6378bc56d5d56db65754a09c91a7cf7c35b44db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/5d922aea68ffe1637535713b35b29f6f34b7d81c", - "reference": "5d922aea68ffe1637535713b35b29f6f34b7d81c", + "url": "https://api.github.com/repos/symfony/form/zipball/e6378bc56d5d56db65754a09c91a7cf7c35b44db", + "reference": "e6378bc56d5d56db65754a09c91a7cf7c35b44db", "shasum": "" }, "require": { @@ -5466,7 +5473,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.4.27" + "source": "https://github.com/symfony/form/tree/v6.4.30" }, "funding": [ { @@ -5486,20 +5493,20 @@ "type": "tidelift" } ], - "time": "2025-10-10T09:11:15+00:00" + "time": "2025-12-05T07:26:17+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.27", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "ee58c2a73218d8f4763824e1414c5f9b4519c91f" + "reference": "3c212ec5cac588da8357f5c061194363a4e91010" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ee58c2a73218d8f4763824e1414c5f9b4519c91f", - "reference": "ee58c2a73218d8f4763824e1414c5f9b4519c91f", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/3c212ec5cac588da8357f5c061194363a4e91010", + "reference": "3c212ec5cac588da8357f5c061194363a4e91010", "shasum": "" }, "require": { @@ -5619,7 +5626,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.4.27" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.30" }, "funding": [ { @@ -5639,20 +5646,20 @@ "type": "tidelift" } ], - "time": "2025-10-15T17:35:09+00:00" + "time": "2025-11-29T11:31:32+00:00" }, { "name": "symfony/http-client", - "version": "v6.4.28", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "c9e69c185c4a845f9d46958cdb0dc7aa847f3981" + "reference": "a67de2002d72f76ce7c57f830c4df503febc8d77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/c9e69c185c4a845f9d46958cdb0dc7aa847f3981", - "reference": "c9e69c185c4a845f9d46958cdb0dc7aa847f3981", + "url": "https://api.github.com/repos/symfony/http-client/zipball/a67de2002d72f76ce7c57f830c4df503febc8d77", + "reference": "a67de2002d72f76ce7c57f830c4df503febc8d77", "shasum": "" }, "require": { @@ -5717,7 +5724,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.28" + "source": "https://github.com/symfony/http-client/tree/v6.4.30" }, "funding": [ { @@ -5737,7 +5744,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T17:39:22+00:00" + "time": "2025-12-04T16:42:50+00:00" }, { "name": "symfony/http-client-contracts", @@ -5819,16 +5826,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.29", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88" + "reference": "0384c62b79d96e9b22d77bc1272c9e83342ba3a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03d11e015552a315714c127d8d1e0f9e970ec88", - "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0384c62b79d96e9b22d77bc1272c9e83342ba3a6", + "reference": "0384c62b79d96e9b22d77bc1272c9e83342ba3a6", "shasum": "" }, "require": { @@ -5876,7 +5883,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.4.29" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.30" }, "funding": [ { @@ -5896,20 +5903,20 @@ "type": "tidelift" } ], - "time": "2025-11-08T16:40:12+00:00" + "time": "2025-12-01T20:07:31+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.29", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "18818b48f54c1d2bd92b41d82d8345af50b15658" + "reference": "ceac681e74e824bbf90468eb231d40988d6d18a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/18818b48f54c1d2bd92b41d82d8345af50b15658", - "reference": "18818b48f54c1d2bd92b41d82d8345af50b15658", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ceac681e74e824bbf90468eb231d40988d6d18a5", + "reference": "ceac681e74e824bbf90468eb231d40988d6d18a5", "shasum": "" }, "require": { @@ -5994,7 +6001,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.4.29" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.30" }, "funding": [ { @@ -6014,20 +6021,20 @@ "type": "tidelift" } ], - "time": "2025-11-12T11:22:59+00:00" + "time": "2025-12-07T15:49:34+00:00" }, { "name": "symfony/intl", - "version": "v6.4.27", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "ccc52824610e7de72424cf516e52d4fb39e3bfa5" + "reference": "5f40c7141be52f7ee86c4a42dce2845e6fbe3c85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/ccc52824610e7de72424cf516e52d4fb39e3bfa5", - "reference": "ccc52824610e7de72424cf516e52d4fb39e3bfa5", + "url": "https://api.github.com/repos/symfony/intl/zipball/5f40c7141be52f7ee86c4a42dce2845e6fbe3c85", + "reference": "5f40c7141be52f7ee86c4a42dce2845e6fbe3c85", "shasum": "" }, "require": { @@ -6081,7 +6088,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.27" + "source": "https://github.com/symfony/intl/tree/v6.4.30" }, "funding": [ { @@ -6101,7 +6108,7 @@ "type": "tidelift" } ], - "time": "2025-10-01T06:01:44+00:00" + "time": "2025-11-24T13:57:00+00:00" }, { "name": "symfony/mailer", @@ -6280,16 +6287,16 @@ }, { "name": "symfony/mime", - "version": "v6.4.26", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235" + "reference": "69aeef5d2692bb7c18ce133b09f67b27260b7acf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/61ab9681cdfe315071eb4fa79b6ad6ab030a9235", - "reference": "61ab9681cdfe315071eb4fa79b6ad6ab030a9235", + "url": "https://api.github.com/repos/symfony/mime/zipball/69aeef5d2692bb7c18ce133b09f67b27260b7acf", + "reference": "69aeef5d2692bb7c18ce133b09f67b27260b7acf", "shasum": "" }, "require": { @@ -6345,7 +6352,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.26" + "source": "https://github.com/symfony/mime/tree/v6.4.30" }, "funding": [ { @@ -6365,7 +6372,7 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:22:30+00:00" + "time": "2025-11-16T09:57:53+00:00" }, { "name": "symfony/monolog-bridge", @@ -6452,44 +6459,39 @@ }, { "name": "symfony/monolog-bundle", - "version": "v3.10.0", + "version": "v3.11.1", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" + "reference": "0e675a6e08f791ef960dc9c7e392787111a3f0c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/0e675a6e08f791ef960dc9c7e392787111a3f0c1", + "reference": "0e675a6e08f791ef960dc9c7e392787111a3f0c1", "shasum": "" }, "require": { + "composer-runtime-api": "^2.0", "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", - "php": ">=7.2.5", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", - "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" + "php": ">=8.1", + "symfony/config": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-kernel": "^6.4 || ^7.0", + "symfony/monolog-bridge": "^6.4 || ^7.0", + "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^6.3 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/console": "^6.4 || ^7.0", + "symfony/phpunit-bridge": "^7.3.3", + "symfony/yaml": "^6.4 || ^7.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Bundle\\MonologBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6513,7 +6515,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.11.1" }, "funding": [ { @@ -6524,12 +6526,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-06T17:08:13+00:00" + "time": "2025-12-08T07:58:26+00:00" }, { "name": "symfony/notifier", @@ -6615,16 +6621,16 @@ }, { "name": "symfony/options-resolver", - "version": "v6.4.25", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe" + "reference": "eeaa8cabe54c7b3516938c72a4a161c0cc80a34f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28e7e2db8a73e9511df892d36445f61314bbebe", - "reference": "d28e7e2db8a73e9511df892d36445f61314bbebe", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/eeaa8cabe54c7b3516938c72a4a161c0cc80a34f", + "reference": "eeaa8cabe54c7b3516938c72a4a161c0cc80a34f", "shasum": "" }, "require": { @@ -6662,7 +6668,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.4.25" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.30" }, "funding": [ { @@ -6682,7 +6688,7 @@ "type": "tidelift" } ], - "time": "2025-08-04T17:06:28+00:00" + "time": "2025-11-12T13:06:53+00:00" }, { "name": "symfony/password-hasher", @@ -7578,16 +7584,16 @@ }, { "name": "symfony/property-info", - "version": "v6.4.24", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6" + "reference": "13243e748cb77b3d2300c0bffa21c2d325dd6e98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/1056ae3621eeddd78d7c5ec074f1c1784324eec6", - "reference": "1056ae3621eeddd78d7c5ec074f1c1784324eec6", + "url": "https://api.github.com/repos/symfony/property-info/zipball/13243e748cb77b3d2300c0bffa21c2d325dd6e98", + "reference": "13243e748cb77b3d2300c0bffa21c2d325dd6e98", "shasum": "" }, "require": { @@ -7644,7 +7650,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.4.24" + "source": "https://github.com/symfony/property-info/tree/v6.4.30" }, "funding": [ { @@ -7664,7 +7670,7 @@ "type": "tidelift" } ], - "time": "2025-07-14T16:38:25+00:00" + "time": "2025-11-29T16:02:37+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -7755,16 +7761,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.28", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ae064a6d9cf39507f9797658465a2ca702965fa8" + "reference": "ea50a13c2711eebcbb66b38ef6382e62e3262859" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ae064a6d9cf39507f9797658465a2ca702965fa8", - "reference": "ae064a6d9cf39507f9797658465a2ca702965fa8", + "url": "https://api.github.com/repos/symfony/routing/zipball/ea50a13c2711eebcbb66b38ef6382e62e3262859", + "reference": "ea50a13c2711eebcbb66b38ef6382e62e3262859", "shasum": "" }, "require": { @@ -7818,7 +7824,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.28" + "source": "https://github.com/symfony/routing/tree/v6.4.30" }, "funding": [ { @@ -7838,20 +7844,20 @@ "type": "tidelift" } ], - "time": "2025-10-31T16:43:05+00:00" + "time": "2025-11-22T09:51:35+00:00" }, { "name": "symfony/runtime", - "version": "v6.4.26", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "59933ca737fd60fad548241b6d879cd0e4be31ab" + "reference": "fb3149ee85d3b639dd3e49ea9dda05656f0537e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/59933ca737fd60fad548241b6d879cd0e4be31ab", - "reference": "59933ca737fd60fad548241b6d879cd0e4be31ab", + "url": "https://api.github.com/repos/symfony/runtime/zipball/fb3149ee85d3b639dd3e49ea9dda05656f0537e3", + "reference": "fb3149ee85d3b639dd3e49ea9dda05656f0537e3", "shasum": "" }, "require": { @@ -7901,7 +7907,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v6.4.26" + "source": "https://github.com/symfony/runtime/tree/v6.4.30" }, "funding": [ { @@ -7921,20 +7927,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T15:30:54+00:00" + "time": "2025-12-05T10:55:13+00:00" }, { "name": "symfony/security-bundle", - "version": "v6.4.26", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "b83773107a5b83a5507df9e88bd50d495f6e8b72" + "reference": "508e67e68156cf3cb2b982504191b2ce34daa921" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/b83773107a5b83a5507df9e88bd50d495f6e8b72", - "reference": "b83773107a5b83a5507df9e88bd50d495f6e8b72", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/508e67e68156cf3cb2b982504191b2ce34daa921", + "reference": "508e67e68156cf3cb2b982504191b2ce34daa921", "shasum": "" }, "require": { @@ -8017,7 +8023,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.4.26" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.30" }, "funding": [ { @@ -8037,7 +8043,7 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:03:07+00:00" + "time": "2025-12-04T18:05:02+00:00" }, { "name": "symfony/security-core", @@ -8203,16 +8209,16 @@ }, { "name": "symfony/security-http", - "version": "v6.4.26", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "6c2e236f0fc3e0853770a5574ef7af471486ba4c" + "reference": "5705ae14ed77b38ac99990959d8c6dbcba86e513" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/6c2e236f0fc3e0853770a5574ef7af471486ba4c", - "reference": "6c2e236f0fc3e0853770a5574ef7af471486ba4c", + "url": "https://api.github.com/repos/symfony/security-http/zipball/5705ae14ed77b38ac99990959d8c6dbcba86e513", + "reference": "5705ae14ed77b38ac99990959d8c6dbcba86e513", "shasum": "" }, "require": { @@ -8271,7 +8277,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.4.26" + "source": "https://github.com/symfony/security-http/tree/v6.4.30" }, "funding": [ { @@ -8291,20 +8297,20 @@ "type": "tidelift" } ], - "time": "2025-09-05T18:17:25+00:00" + "time": "2025-11-12T13:33:48+00:00" }, { "name": "symfony/serializer", - "version": "v6.4.27", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "28779bbdb398cac3421d0e51f7ca669e4a27c5ac" + "reference": "d7976be554af097c788d7df25e10dd99facbfe65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/28779bbdb398cac3421d0e51f7ca669e4a27c5ac", - "reference": "28779bbdb398cac3421d0e51f7ca669e4a27c5ac", + "url": "https://api.github.com/repos/symfony/serializer/zipball/d7976be554af097c788d7df25e10dd99facbfe65", + "reference": "d7976be554af097c788d7df25e10dd99facbfe65", "shasum": "" }, "require": { @@ -8373,7 +8379,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.4.27" + "source": "https://github.com/symfony/serializer/tree/v6.4.30" }, "funding": [ { @@ -8393,7 +8399,7 @@ "type": "tidelift" } ], - "time": "2025-10-08T04:24:22+00:00" + "time": "2025-11-12T13:46:18+00:00" }, { "name": "symfony/service-contracts", @@ -8623,16 +8629,16 @@ }, { "name": "symfony/string", - "version": "v6.4.26", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea" + "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/5621f039a71a11c87c106c1c598bdcd04a19aeea", - "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea", + "url": "https://api.github.com/repos/symfony/string/zipball/50590a057841fa6bf69d12eceffce3465b9e32cb", + "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb", "shasum": "" }, "require": { @@ -8688,7 +8694,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.26" + "source": "https://github.com/symfony/string/tree/v6.4.30" }, "funding": [ { @@ -8708,20 +8714,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T14:32:46+00:00" + "time": "2025-11-21T18:03:05+00:00" }, { "name": "symfony/translation", - "version": "v6.4.26", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4" + "reference": "d1fdeefd0707d15eb150c04e8837bf0b15ebea39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/c8559fe25c7ee7aa9d28f228903a46db008156a4", - "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4", + "url": "https://api.github.com/repos/symfony/translation/zipball/d1fdeefd0707d15eb150c04e8837bf0b15ebea39", + "reference": "d1fdeefd0707d15eb150c04e8837bf0b15ebea39", "shasum": "" }, "require": { @@ -8787,7 +8793,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.26" + "source": "https://github.com/symfony/translation/tree/v6.4.30" }, "funding": [ { @@ -8807,7 +8813,7 @@ "type": "tidelift" } ], - "time": "2025-09-05T18:17:25+00:00" + "time": "2025-11-24T13:57:00+00:00" }, { "name": "symfony/translation-contracts", @@ -8893,16 +8899,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v6.4.25", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf" + "reference": "d77a78c7fffaf7cb0158d28db824ba78d89a9f34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9d13e87591c9de3221c8d6f23cd9a2b5958607bf", - "reference": "9d13e87591c9de3221c8d6f23cd9a2b5958607bf", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d77a78c7fffaf7cb0158d28db824ba78d89a9f34", + "reference": "d77a78c7fffaf7cb0158d28db824ba78d89a9f34", "shasum": "" }, "require": { @@ -8915,7 +8921,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/console": "<5.4", - "symfony/form": "<6.3", + "symfony/form": "<6.4", "symfony/http-foundation": "<5.4", "symfony/http-kernel": "<6.4", "symfony/mime": "<6.2", @@ -8933,7 +8939,7 @@ "symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/form": "^6.4.20|^7.2.5", + "symfony/form": "^6.4.30|~7.3.8|^7.4.1", "symfony/html-sanitizer": "^6.1|^7.0", "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -8982,7 +8988,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.25" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.30" }, "funding": [ { @@ -9002,7 +9008,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-12-05T13:01:31+00:00" }, { "name": "symfony/twig-bundle", @@ -9172,16 +9178,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.29", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "99df8a769e64e399f510166141ea74f450e8dd1d" + "reference": "572dcc789ddf53174c61551aa5a3ec58d6a48b9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/99df8a769e64e399f510166141ea74f450e8dd1d", - "reference": "99df8a769e64e399f510166141ea74f450e8dd1d", + "url": "https://api.github.com/repos/symfony/validator/zipball/572dcc789ddf53174c61551aa5a3ec58d6a48b9b", + "reference": "572dcc789ddf53174c61551aa5a3ec58d6a48b9b", "shasum": "" }, "require": { @@ -9249,7 +9255,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.29" + "source": "https://github.com/symfony/validator/tree/v6.4.30" }, "funding": [ { @@ -9269,7 +9275,7 @@ "type": "tidelift" } ], - "time": "2025-11-06T20:26:06+00:00" + "time": "2025-12-05T09:41:49+00:00" }, { "name": "symfony/var-dumper", @@ -9529,16 +9535,16 @@ }, { "name": "symfony/webpack-encore-bundle", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/symfony/webpack-encore-bundle.git", - "reference": "7ae70d44c24c3b913f308af8396169b5c6d9e0f5" + "reference": "5b932e0feddd81aaf0ecd7d5fcd2e450e5a7817e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/7ae70d44c24c3b913f308af8396169b5c6d9e0f5", - "reference": "7ae70d44c24c3b913f308af8396169b5c6d9e0f5", + "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/5b932e0feddd81aaf0ecd7d5fcd2e450e5a7817e", + "reference": "5b932e0feddd81aaf0ecd7d5fcd2e450e5a7817e", "shasum": "" }, "require": { @@ -9581,7 +9587,7 @@ "description": "Integration of your Symfony app with Webpack Encore", "support": { "issues": "https://github.com/symfony/webpack-encore-bundle/issues", - "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.3.0" + "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.4.0" }, "funding": [ { @@ -9601,20 +9607,20 @@ "type": "tidelift" } ], - "time": "2025-08-05T11:43:32+00:00" + "time": "2025-11-27T13:41:46+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.26", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0" + "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", - "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", + "url": "https://api.github.com/repos/symfony/yaml/zipball/8207ae83da19ee3748d6d4f567b4d9a7c656e331", + "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331", "shasum": "" }, "require": { @@ -9657,7 +9663,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.26" + "source": "https://github.com/symfony/yaml/tree/v6.4.30" }, "funding": [ { @@ -9677,7 +9683,7 @@ "type": "tidelift" } ], - "time": "2025-09-26T15:07:38+00:00" + "time": "2025-12-02T11:50:18+00:00" }, { "name": "twig/extra-bundle", @@ -9887,16 +9893,16 @@ }, { "name": "twig/twig", - "version": "v3.22.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "4509984193026de413baf4ba80f68590a7f2c51d" + "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/4509984193026de413baf4ba80f68590a7f2c51d", - "reference": "4509984193026de413baf4ba80f68590a7f2c51d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", + "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", "shasum": "" }, "require": { @@ -9950,7 +9956,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.22.0" + "source": "https://github.com/twigphp/Twig/tree/v3.22.1" }, "funding": [ { @@ -9962,7 +9968,7 @@ "type": "tidelift" } ], - "time": "2025-10-29T15:56:47+00:00" + "time": "2025-11-16T16:01:12+00:00" }, { "name": "voku/anti-xss", @@ -10284,40 +10290,40 @@ }, { "name": "zenstruck/schedule-bundle", - "version": "v1.8.1", + "version": "v1.9.0", "source": { "type": "git", "url": "https://github.com/zenstruck/schedule-bundle.git", - "reference": "c82f4d3e96566260796975a90a8d8075fca681c9" + "reference": "1ca5b592649e5bbc9477cb242e9a237ff58b716b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zenstruck/schedule-bundle/zipball/c82f4d3e96566260796975a90a8d8075fca681c9", - "reference": "c82f4d3e96566260796975a90a8d8075fca681c9", + "url": "https://api.github.com/repos/zenstruck/schedule-bundle/zipball/1ca5b592649e5bbc9477cb242e9a237ff58b716b", + "reference": "1ca5b592649e5bbc9477cb242e9a237ff58b716b", "shasum": "" }, "require": { "dragonmantank/cron-expression": "^2.3|^3.0", - "php": ">=8.0", - "symfony/console": "^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" + "php": ">=8.1", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "require-dev": { "lorisleiva/cron-translator": "^0.1.0|^0.3.1|^0.4.0", - "matthiasnoback/symfony-dependency-injection-test": "^4.1|^5.0", + "matthiasnoback/symfony-dependency-injection-test": "^4.1|^5.0|^6.0", "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^9.5|^10.0", "psr/log": "^1.1", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/mailer": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/notifier": "^5.4|^6.0|^7.0", - "symfony/phpunit-bridge": "^6.2|^7.0", - "symfony/process": "^5.4|^6.0|^7.0" + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/notifier": "^6.4|^7.0|^8.0", + "symfony/phpunit-bridge": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "suggest": { "lorisleiva/cron-translator": "Displays human readable cron expression in schedule:list", @@ -10351,15 +10357,19 @@ ], "support": { "issues": "https://github.com/zenstruck/schedule-bundle/issues", - "source": "https://github.com/zenstruck/schedule-bundle/tree/v1.8.1" + "source": "https://github.com/zenstruck/schedule-bundle/tree/v1.9.0" }, "funding": [ { "url": "https://github.com/kbond", "type": "github" + }, + { + "url": "https://github.com/nikophil", + "type": "github" } ], - "time": "2025-04-27T22:34:07+00:00" + "time": "2025-12-07T16:11:57+00:00" } ], "packages-dev": [ @@ -10813,16 +10823,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.89.2", + "version": "v3.91.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "7569658f91e475ec93b99bd5964b059ad1336dcf" + "reference": "9f10aa6390cea91da175ea608880e942d7c0226e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7569658f91e475ec93b99bd5964b059ad1336dcf", - "reference": "7569658f91e475ec93b99bd5964b059ad1336dcf", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/9f10aa6390cea91da175ea608880e942d7c0226e", + "reference": "9f10aa6390cea91da175ea608880e942d7c0226e", "shasum": "" }, "require": { @@ -10840,17 +10850,17 @@ "react/socket": "^1.16", "react/stream": "^1.4", "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", - "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0", - "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0", - "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0", - "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0", - "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0", + "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.33", "symfony/polyfill-php80": "^1.33", "symfony/polyfill-php81": "^1.33", "symfony/polyfill-php84": "^1.33", - "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2", - "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0" + "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2 || ^8.0", + "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" }, "require-dev": { "facile-it/paraunit": "^1.3.1 || ^2.7", @@ -10862,8 +10872,8 @@ "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", - "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2", - "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2" + "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2 || ^8.0", + "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2 || ^8.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -10878,7 +10888,7 @@ "PhpCsFixer\\": "src/" }, "exclude-from-classmap": [ - "src/Fixer/Internal/*" + "src/**/Internal/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -10904,7 +10914,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.89.2" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.91.3" }, "funding": [ { @@ -10912,7 +10922,7 @@ "type": "github" } ], - "time": "2025-11-06T21:12:50+00:00" + "time": "2025-12-05T19:45:37+00:00" }, { "name": "myclabs/deep-copy", @@ -10976,16 +10986,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.6.2", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "3a454ca033b9e06b63282ce19562e892747449bb" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb", - "reference": "3a454ca033b9e06b63282ce19562e892747449bb", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -11028,9 +11038,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2025-10-21T19:32:17+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "phar-io/manifest", @@ -11471,16 +11481,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.29", + "version": "9.6.31", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3" + "reference": "945d0b7f346a084ce5549e95289962972c4272e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", - "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/945d0b7f346a084ce5549e95289962972c4272e5", + "reference": "945d0b7f346a084ce5549e95289962972c4272e5", "shasum": "" }, "require": { @@ -11554,7 +11564,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.29" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.31" }, "funding": [ { @@ -11578,7 +11588,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:29:11+00:00" + "time": "2025-12-06T07:45:52+00:00" }, { "name": "react/cache", @@ -11729,16 +11739,16 @@ }, { "name": "react/dns", - "version": "v1.13.0", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/reactphp/dns.git", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "url": "https://api.github.com/repos/reactphp/dns/zipball/7562c05391f42701c1fccf189c8225fece1cd7c3", + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3", "shasum": "" }, "require": { @@ -11793,7 +11803,7 @@ ], "support": { "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.13.0" + "source": "https://github.com/reactphp/dns/tree/v1.14.0" }, "funding": [ { @@ -11801,20 +11811,20 @@ "type": "open_collective" } ], - "time": "2024-06-13T14:18:03+00:00" + "time": "2025-11-18T19:34:28+00:00" }, { "name": "react/event-loop", - "version": "v1.5.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a", + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a", "shasum": "" }, "require": { @@ -11865,7 +11875,7 @@ ], "support": { "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + "source": "https://github.com/reactphp/event-loop/tree/v1.6.0" }, "funding": [ { @@ -11873,7 +11883,7 @@ "type": "open_collective" } ], - "time": "2023-11-13T13:48:05+00:00" + "time": "2025-11-17T20:46:25+00:00" }, { "name": "react/promise", @@ -11950,16 +11960,16 @@ }, { "name": "react/socket", - "version": "v1.16.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "url": "https://api.github.com/repos/reactphp/socket/zipball/ef5b17b81f6f60504c539313f94f2d826c5faa08", + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08", "shasum": "" }, "require": { @@ -12018,7 +12028,7 @@ ], "support": { "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.16.0" + "source": "https://github.com/reactphp/socket/tree/v1.17.0" }, "funding": [ { @@ -12026,7 +12036,7 @@ "type": "open_collective" } ], - "time": "2024-07-26T10:38:09+00:00" + "time": "2025-11-19T20:47:34+00:00" }, { "name": "react/stream", @@ -13338,31 +13348,31 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.64.0", + "version": "v1.65.1", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a" + "reference": "eba30452d212769c9a5bcf0716959fd8ba1e54e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c86da84640b0586e92aee2b276ee3638ef2f425a", - "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/eba30452d212769c9a5bcf0716959fd8ba1e54e3", + "reference": "eba30452d212769c9a5bcf0716959fd8ba1e54e3", "shasum": "" }, "require": { "doctrine/inflector": "^2.0", "nikic/php-parser": "^5.0", "php": ">=8.1", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "conflict": { "doctrine/doctrine-bundle": "<2.10", @@ -13370,13 +13380,14 @@ }, "require-dev": { "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^2.5.0", + "doctrine/doctrine-bundle": "^2.5.0|^3.0.0", "doctrine/orm": "^2.15|^3", - "symfony/http-client": "^6.4|^7.0", - "symfony/phpunit-bridge": "^6.4.1|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-http": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", + "doctrine/persistence": "^3.1|^4.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/phpunit-bridge": "^6.4.1|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", "twig/twig": "^3.0|^4.x-dev" }, "type": "symfony-bundle", @@ -13411,7 +13422,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.64.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.65.1" }, "funding": [ { @@ -13422,37 +13433,37 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-23T16:12:08+00:00" + "time": "2025-12-02T07:14:37+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "ed77a629c13979e051b7000a317966474d566398" + "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/ed77a629c13979e051b7000a317966474d566398", - "reference": "ed77a629c13979e051b7000a317966474d566398", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/059b051b38f2138ef104dd848fa48f0cbbb7d78b", + "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "conflict": { - "phpunit/phpunit": "<7.5|9.1.2" + "php": ">=8.1.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/error-handler": "^5.4|^6.4|^7.0", - "symfony/polyfill-php81": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4.3|^7.0.3|^8.0" }, "bin": [ "bin/simple-phpunit" @@ -13496,7 +13507,7 @@ "testing" ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.4" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.0" }, "funding": [ { @@ -13516,7 +13527,7 @@ "type": "tidelift" } ], - "time": "2025-09-12T12:18:52+00:00" + "time": "2025-10-28T22:44:23+00:00" }, { "name": "symfony/web-profiler-bundle", @@ -13606,16 +13617,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "d74205c497bfbca49f34d4bc4c19c17e22db4ebb" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/d74205c497bfbca49f34d4bc4c19c17e22db4ebb", - "reference": "d74205c497bfbca49f34d4bc4c19c17e22db4ebb", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { @@ -13644,7 +13655,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.3.0" + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" }, "funding": [ { @@ -13652,7 +13663,7 @@ "type": "github" } ], - "time": "2025-11-13T13:44:09+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], From 72cd36a573118ce284e1a0562629e3bfcfb0b120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Thu, 11 Dec 2025 09:33:41 +0100 Subject: [PATCH 29/33] feat: enable logging for contact form api endpoint --- src/Controller/Api/ContactFormController.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Controller/Api/ContactFormController.php b/src/Controller/Api/ContactFormController.php index addcf9d..2b9f9bd 100644 --- a/src/Controller/Api/ContactFormController.php +++ b/src/Controller/Api/ContactFormController.php @@ -7,6 +7,8 @@ use App\BusProNet\Exception\ApiClientException; use App\BusProNet\Model\ContactFormSubmission; use App\BusProNet\Model\Notification; use App\BusProNet\Model\PersonalData; +use phpDocumentor\Reflection\PseudoTypes\IntegerRange; +use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; @@ -18,7 +20,7 @@ use Symfony\Component\Security\Http\Attribute\IsGranted; #[IsGranted('ROLE_OAUTH2_API')] class ContactFormController extends AbstractController { - public function __construct(private readonly ApiClient $apiClient) + public function __construct(private readonly ApiClient $apiClient, private readonly LoggerInterface $logger) { } @@ -31,12 +33,20 @@ class ContactFormController extends AbstractController $result = $this->apiClient->createAddress($personalData); if ($result instanceof Notification) { + $this->logger->error('Unable to create address from contact form submission', [ + 'message' => $result->message, + ]); + return new JsonResponse([ 'success' => false, 'message' => $result->message, ], Response::HTTP_CONFLICT); } + $this->logger->info('Created address from contact form submission', [ + 'contactFormSubmission' => $dto, + ]); + return $this->json([ 'success' => true, 'addressId' => $result->addressId, @@ -44,6 +54,10 @@ class ContactFormController extends AbstractController 'isNewRecord' => $result->isNewRecord, ], Response::HTTP_CREATED); } catch (ApiClientException $e) { + $this->logger->error('Unable to create address from contact form submission', [ + 'message' => $e->getMessage(), + ]); + return new JsonResponse([ 'success' => false, 'message' => $e->getMessage(), From c8a33cdf43a6c2bef48c840a1a67d831376fd2d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Thu, 11 Dec 2025 11:26:46 +0100 Subject: [PATCH 30/33] fix: assign correct return types --- src/BusProNet/ApiClient.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BusProNet/ApiClient.php b/src/BusProNet/ApiClient.php index fd1db9b..8f65b5a 100644 --- a/src/BusProNet/ApiClient.php +++ b/src/BusProNet/ApiClient.php @@ -83,7 +83,7 @@ class ApiClient /** * @throws ApiClientException */ - public function register(RegistrationData $registrationData): Notification + public function register(RegistrationData $registrationData): ContactFormResponse|Notification { $data = [ 'user' => $this->config['bpn_username'], From aee2eb848df3d7177c798c6821a5aedc6e3d79e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 12 Dec 2025 20:06:19 +0100 Subject: [PATCH 31/33] fix: adopt changed response class --- src/Controller/RegistrationController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php index eebe01d..c2098b9 100644 --- a/src/Controller/RegistrationController.php +++ b/src/Controller/RegistrationController.php @@ -4,6 +4,7 @@ namespace App\Controller; use App\BusProNet\ApiClient; use App\BusProNet\Exception\ApiClientException; +use App\BusProNet\Model\Notification; use App\Form\Model\RegistrationData; use App\Form\RegistrationType; use Psr\Log\LoggerInterface; @@ -34,7 +35,7 @@ class RegistrationController extends AbstractController if ($form->isSubmitted() && $form->isValid()) { try { $response = $this->apiClient->register($registrationData); - if (true === $response->isError()) { + if ($response instanceof Notification) { $this->addFlash('error', 'Möglicherweise bist du bereits registriert. Bitte setze dein Passwort zurück.'); } else { $this->addFlash('success', 'Du erhältst in Kürze eine E-Mail mit einem Link zum (Zurück)setzen deines Passworts.'); From cfc3957fec08e8ed772361162b459d5a5e663095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 12 Dec 2025 20:06:45 +0100 Subject: [PATCH 32/33] chore: update project dependencies --- composer.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/composer.lock b/composer.lock index 3bdabd4..0b719af 100644 --- a/composer.lock +++ b/composer.lock @@ -1816,16 +1816,16 @@ }, { "name": "league/flysystem-bundle", - "version": "3.6.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-bundle.git", - "reference": "88376670b35f11846bed7dca2efb82d993be22d0" + "reference": "61e7f989f14080abb14d5ade80629303691555cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-bundle/zipball/88376670b35f11846bed7dca2efb82d993be22d0", - "reference": "88376670b35f11846bed7dca2efb82d993be22d0", + "url": "https://api.github.com/repos/thephpleague/flysystem-bundle/zipball/61e7f989f14080abb14d5ade80629303691555cf", + "reference": "61e7f989f14080abb14d5ade80629303691555cf", "shasum": "" }, "require": { @@ -1880,9 +1880,9 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-bundle/issues", - "source": "https://github.com/thephpleague/flysystem-bundle/tree/3.6.0" + "source": "https://github.com/thephpleague/flysystem-bundle/tree/3.6.1" }, - "time": "2025-08-21T17:25:13+00:00" + "time": "2025-12-11T15:40:58+00:00" }, { "name": "league/flysystem-local", @@ -10823,16 +10823,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.91.3", + "version": "v3.92.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "9f10aa6390cea91da175ea608880e942d7c0226e" + "reference": "5646c2cd99b7cb4b658ff681fe27069ba86c7280" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/9f10aa6390cea91da175ea608880e942d7c0226e", - "reference": "9f10aa6390cea91da175ea608880e942d7c0226e", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/5646c2cd99b7cb4b658ff681fe27069ba86c7280", + "reference": "5646c2cd99b7cb4b658ff681fe27069ba86c7280", "shasum": "" }, "require": { @@ -10914,7 +10914,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.91.3" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.92.0" }, "funding": [ { @@ -10922,7 +10922,7 @@ "type": "github" } ], - "time": "2025-12-05T19:45:37+00:00" + "time": "2025-12-12T10:29:19+00:00" }, { "name": "myclabs/deep-copy", From 28914d658635d592fd5d5f1196d391003b012153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 12 Dec 2025 20:15:56 +0100 Subject: [PATCH 33/33] feat: rotate auth logfile --- config/packages/monolog.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml index de3f427..a376121 100644 --- a/config/packages/monolog.yaml +++ b/config/packages/monolog.yaml @@ -73,9 +73,10 @@ when@prod: level: info channels: ["bpn"] auth: - type: stream + type: rotating_file + max_files: 7 path: "%kernel.logs_dir%/%kernel.environment%.auth.log" - level: debug + level: info channels: ["auth"] core: type: rotating_file