From ada153c2b6a864c7bc7bceb73cc3f4cc8a54af92 Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 25 May 2026 21:30:45 +0200 Subject: [PATCH 01/11] Upgrade PHP + Rector --- composer.json | 7 +- composer.lock | 1103 ++++++----------- docker/dockerfiles/apachephp/Dockerfile | 2 +- sources/Afup/Association/Cotisations.php | 2 +- sources/Afup/Comptabilite/Facture.php | 4 +- .../AppBundle/Accounting/Form/ProduitType.php | 2 +- .../PostCompilationCopyHandler.php | 2 +- .../Repository/CompanyMemberRepository.php | 2 +- .../Model/Repository/UserRepository.php | 2 +- .../PayboxCallbackSimulatorCommand.php | 2 +- sources/AppBundle/Compta/CsvExtractor.php | 2 +- .../Accounting/Invoice/EditInvoiceAction.php | 2 +- .../Accounting/Journal/AllocateAction.php | 2 +- .../Journal/EditTransactionAction.php | 3 +- .../Quotation/AddQuotationAction.php | 2 +- .../Quotation/EditQuotationAction.php | 2 +- .../Admin/Antennes/AntenneListAction.php | 2 +- .../Controller/Api/Antennes/GetOneAction.php | 2 +- .../Membership/GeneralMeeting/IndexAction.php | 3 +- .../Website/SecondaryMenuController.php | 2 +- .../AppBundle/Event/Form/EventSelectType.php | 2 +- .../AppBundle/Event/Form/TalkAdminType.php | 4 +- .../AppBundle/Event/Form/TicketAdminType.php | 8 +- .../MailchimpMembersAutoListSynchronizer.php | 8 +- sources/AppBundle/Site/Form/ArticleType.php | 3 +- sources/AppBundle/Site/Model/Rubrique.php | 2 +- .../Form/SpeakersMicrophoneType.php | 2 +- .../Rule/DoctrineDisableDQLRule.php | 3 +- .../Rule/DoctrineRepositoryRule.php | 3 +- .../Rule/NoGetUserMethodRule.php | 3 +- .../Repository/SuperAperoRepository.php | 6 +- .../AppBundle/TechLetter/DataExtractor.php | 2 +- sources/PlanetePHP/FeedArticleRepository.php | 4 +- sources/PlanetePHP/FeedRepository.php | 2 +- tests/behat/bootstrap/PdfContext.php | 2 +- tests/behat/bootstrap/WaitContext.php | 11 +- tests/stubs/phpstan/Doctrine/FormType.php | 3 +- 37 files changed, 438 insertions(+), 780 deletions(-) diff --git a/composer.json b/composer.json index 65ab53534..29e92123e 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "description": "Main repository for afup website", "type": "project", "require": { - "php": ">=8.2", + "php": ">=8.5", "ext-curl": "*", "ext-dom": "*", "ext-gd": "*", @@ -232,6 +232,9 @@ "symfony/polyfill-php74": "*", "symfony/polyfill-php80": "*", "symfony/polyfill-php81": "*", - "symfony/polyfill-php82": "*" + "symfony/polyfill-php82": "*", + "symfony/polyfill-php83": "*", + "symfony/polyfill-php84": "*", + "symfony/polyfill-php85": "*" } } diff --git a/composer.lock b/composer.lock index 94513db1b..cc3a14e74 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": "ffba3f3c8e8ab86a80b176d74ebf1a13", + "content-hash": "d16bfd5326dcb1364165188fcdd24694", "packages": [ { "name": "algolia/algoliasearch-client-php", @@ -270,16 +270,16 @@ }, { "name": "cakephp/core", - "version": "5.3.5", + "version": "5.3.6", "source": { "type": "git", "url": "https://github.com/cakephp/core.git", - "reference": "eb012517900ed288f580aa3487e9a09f28ea85f9" + "reference": "9c458b0e9322ec88bc4c758b33cde6a0abf49d12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/core/zipball/eb012517900ed288f580aa3487e9a09f28ea85f9", - "reference": "eb012517900ed288f580aa3487e9a09f28ea85f9", + "url": "https://api.github.com/repos/cakephp/core/zipball/9c458b0e9322ec88bc4c758b33cde6a0abf49d12", + "reference": "9c458b0e9322ec88bc4c758b33cde6a0abf49d12", "shasum": "" }, "require": { @@ -333,20 +333,20 @@ "issues": "https://github.com/cakephp/cakephp/issues", "source": "https://github.com/cakephp/core" }, - "time": "2026-03-31T06:25:23+00:00" + "time": "2026-05-15T03:31:14+00:00" }, { "name": "cakephp/database", - "version": "5.3.5", + "version": "5.3.6", "source": { "type": "git", "url": "https://github.com/cakephp/database.git", - "reference": "cf94dcb57c54a1a308fd866b038cd6995910e36e" + "reference": "442d12bf0a1edeffc555a59de9f955cb0619c7ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/database/zipball/cf94dcb57c54a1a308fd866b038cd6995910e36e", - "reference": "cf94dcb57c54a1a308fd866b038cd6995910e36e", + "url": "https://api.github.com/repos/cakephp/database/zipball/442d12bf0a1edeffc555a59de9f955cb0619c7ca", + "reference": "442d12bf0a1edeffc555a59de9f955cb0619c7ca", "shasum": "" }, "require": { @@ -400,20 +400,20 @@ "issues": "https://github.com/cakephp/cakephp/issues", "source": "https://github.com/cakephp/database" }, - "time": "2026-03-31T06:25:23+00:00" + "time": "2026-05-21T19:38:13+00:00" }, { "name": "cakephp/datasource", - "version": "5.3.5", + "version": "5.3.6", "source": { "type": "git", "url": "https://github.com/cakephp/datasource.git", - "reference": "512464eb27b19316b515ec338089b83822c9ab5a" + "reference": "b768f0c0bf0fca815f83c4caef14e7fbb2409bf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/datasource/zipball/512464eb27b19316b515ec338089b83822c9ab5a", - "reference": "512464eb27b19316b515ec338089b83822c9ab5a", + "url": "https://api.github.com/repos/cakephp/datasource/zipball/b768f0c0bf0fca815f83c4caef14e7fbb2409bf5", + "reference": "b768f0c0bf0fca815f83c4caef14e7fbb2409bf5", "shasum": "" }, "require": { @@ -467,20 +467,20 @@ "issues": "https://github.com/cakephp/cakephp/issues", "source": "https://github.com/cakephp/datasource" }, - "time": "2026-04-04T08:08:42+00:00" + "time": "2026-05-20T10:27:33+00:00" }, { "name": "cakephp/utility", - "version": "5.3.5", + "version": "5.3.6", "source": { "type": "git", "url": "https://github.com/cakephp/utility.git", - "reference": "4ac9826fe5faa1505ec5aa3c171d6b58b6ab4e99" + "reference": "4c703a010b9d955fed44731669e35d3043425cc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/utility/zipball/4ac9826fe5faa1505ec5aa3c171d6b58b6ab4e99", - "reference": "4ac9826fe5faa1505ec5aa3c171d6b58b6ab4e99", + "url": "https://api.github.com/repos/cakephp/utility/zipball/4c703a010b9d955fed44731669e35d3043425cc7", + "reference": "4c703a010b9d955fed44731669e35d3043425cc7", "shasum": "" }, "require": { @@ -531,7 +531,7 @@ "issues": "https://github.com/cakephp/cakephp/issues", "source": "https://github.com/cakephp/utility" }, - "time": "2026-03-09T09:38:36+00:00" + "time": "2026-05-21T19:38:13+00:00" }, { "name": "captioning/captioning", @@ -1771,30 +1771,29 @@ }, { "name": "doctrine/instantiator", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.4" }, "require-dev": { - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^14", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -1821,7 +1820,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "source": "https://github.com/doctrine/instantiator/tree/2.1.0" }, "funding": [ { @@ -1837,7 +1836,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2026-01-05T06:47:08+00:00" }, { "name": "doctrine/lexer", @@ -1918,16 +1917,16 @@ }, { "name": "doctrine/orm", - "version": "3.6.5", + "version": "3.6.7", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "7e88b416153dceeb563352ca2b12465f09eea173" + "reference": "bc217c0e19c3a9eadfa67697143b87c9ba01272c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/7e88b416153dceeb563352ca2b12465f09eea173", - "reference": "7e88b416153dceeb563352ca2b12465f09eea173", + "url": "https://api.github.com/repos/doctrine/orm/zipball/bc217c0e19c3a9eadfa67697143b87c9ba01272c", + "reference": "bc217c0e19c3a9eadfa67697143b87c9ba01272c", "shasum": "" }, "require": { @@ -2000,9 +1999,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.6.5" + "source": "https://github.com/doctrine/orm/tree/3.6.7" }, - "time": "2026-05-11T06:47:19+00:00" + "time": "2026-05-25T16:45:47+00:00" }, { "name": "doctrine/persistence", @@ -2569,30 +2568,31 @@ }, { "name": "google/recaptcha", - "version": "1.3.1", + "version": "1.5", "source": { "type": "git", "url": "https://github.com/google/recaptcha.git", - "reference": "56522c261d2e8c58ba416c90f81a4cd9f2ed89b9" + "reference": "c57f0b96babc8c9fb64cb555cd7b2c5aadfbe58d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/google/recaptcha/zipball/56522c261d2e8c58ba416c90f81a4cd9f2ed89b9", - "reference": "56522c261d2e8c58ba416c90f81a4cd9f2ed89b9", + "url": "https://api.github.com/repos/google/recaptcha/zipball/c57f0b96babc8c9fb64cb555cd7b2c5aadfbe58d", + "reference": "c57f0b96babc8c9fb64cb555cd7b2c5aadfbe58d", "shasum": "" }, "require": { - "php": ">=8" + "php": ">=8.4" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.14", - "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^10" + "friendsofphp/php-cs-fixer": "^3.95", + "php-coveralls/php-coveralls": "^2.9.1", + "phpstan/phpstan": "^2.1.51", + "phpunit/phpunit": "^13.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-main": "1.4.x-dev" } }, "autoload": { @@ -2617,20 +2617,20 @@ "issues": "https://github.com/google/recaptcha/issues", "source": "https://github.com/google/recaptcha" }, - "time": "2025-06-26T22:21:57+00:00" + "time": "2026-04-27T09:26:38+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.10.0", + "version": "7.10.4", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" + "reference": "aec528da477062d3af11f51e6b33402be233b21f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", - "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aec528da477062d3af11f51e6b33402be233b21f", + "reference": "aec528da477062d3af11f51e6b33402be233b21f", "shasum": "" }, "require": { @@ -2648,8 +2648,9 @@ "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "guzzle/client-integration-tests": "3.0.2", + "guzzlehttp/test-server": "^0.3.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "phpunit/phpunit": "^8.5.52 || ^9.6.34", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -2727,7 +2728,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.10.0" + "source": "https://github.com/guzzle/guzzle/tree/7.10.4" }, "funding": [ { @@ -2743,20 +2744,20 @@ "type": "tidelift" } ], - "time": "2025-08-23T22:36:01+00:00" + "time": "2026-05-22T19:00:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.3.0", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "481557b130ef3790cf82b713667b43030dc9c957" + "reference": "09e8a212562fb1fb6a512c4156ed71525969d6c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", - "reference": "481557b130ef3790cf82b713667b43030dc9c957", + "url": "https://api.github.com/repos/guzzle/promises/zipball/09e8a212562fb1fb6a512c4156ed71525969d6c2", + "reference": "09e8a212562fb1fb6a512c4156ed71525969d6c2", "shasum": "" }, "require": { @@ -2764,7 +2765,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.44 || ^9.6.25" + "phpunit/phpunit": "^8.5.52 || ^9.6.34" }, "type": "library", "extra": { @@ -2810,7 +2811,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.3.0" + "source": "https://github.com/guzzle/promises/tree/2.4.1" }, "funding": [ { @@ -2826,20 +2827,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T14:34:08+00:00" + "time": "2026-05-20T22:57:30+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.9.0", + "version": "2.10.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884" + "reference": "73ab136360b5dfd858006eae9795e8fe43c80361" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884", - "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/73ab136360b5dfd858006eae9795e8fe43c80361", + "reference": "73ab136360b5dfd858006eae9795e8fe43c80361", "shasum": "" }, "require": { @@ -2854,9 +2855,9 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "0.9.0", + "http-interop/http-factory-tests": "1.1.0", "jshttp/mime-db": "1.54.0.1", - "phpunit/phpunit": "^8.5.44 || ^9.6.25" + "phpunit/phpunit": "^8.5.52 || ^9.6.34" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -2927,7 +2928,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.9.0" + "source": "https://github.com/guzzle/psr7/tree/2.10.1" }, "funding": [ { @@ -2943,7 +2944,7 @@ "type": "tidelift" } ], - "time": "2026-03-10T16:41:02+00:00" + "time": "2026-05-20T09:27:36+00:00" }, { "name": "jms/metadata", @@ -3833,31 +3834,31 @@ }, { "name": "maennchen/zipstream-php", - "version": "3.1.2", + "version": "3.2.2", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f" + "reference": "77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f", - "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e", + "reference": "77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e", "shasum": "" }, "require": { "ext-mbstring": "*", "ext-zlib": "*", - "php-64bit": "^8.2" + "php-64bit": "^8.3" }, "require-dev": { "brianium/paratest": "^7.7", "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.16", + "friendsofphp/php-cs-fixer": "^3.86", "guzzlehttp/guzzle": "^7.5", "mikey179/vfsstream": "^1.6", "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^11.0", + "phpunit/phpunit": "^12.0", "vimeo/psalm": "^6.0" }, "suggest": { @@ -3899,7 +3900,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.2.2" }, "funding": [ { @@ -3907,7 +3908,7 @@ "type": "github" } ], - "time": "2025-01-27T12:07:53+00:00" + "time": "2026-04-11T18:38:28+00:00" }, { "name": "markbaker/complex", @@ -6476,33 +6477,32 @@ }, { "name": "symfony/error-handler", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa" + "reference": "c1119fe8dcfc3825ec74ec061b96ef0c8f281517" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", - "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c1119fe8dcfc3825ec74ec061b96ef0c8f281517", + "reference": "c1119fe8dcfc3825ec74ec061b96ef0c8f281517", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "psr/log": "^1|^2|^3", "symfony/polyfill-php85": "^1.32", - "symfony/var-dumper": "^6.4|^7.0|^8.0" + "symfony/var-dumper": "^7.4|^8.0" }, "conflict": { - "symfony/deprecation-contracts": "<2.5", - "symfony/http-kernel": "<6.4" + "symfony/deprecation-contracts": "<2.5" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", + "symfony/console": "^7.4|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ @@ -6534,7 +6534,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/v7.4.8" + "source": "https://github.com/symfony/error-handler/tree/v8.0.8" }, "funding": [ { @@ -6554,7 +6554,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/event-dispatcher", @@ -6791,25 +6791,25 @@ }, { "name": "symfony/filesystem", - "version": "v7.4.11", + "version": "v8.0.11", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50" + "reference": "224db910898ce1317b892a9a1338f1f8f17eb7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/d721ea61b4a5fba8c5b6e7c1feda19efea144b50", - "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/224db910898ce1317b892a9a1338f1f8f17eb7c7", + "reference": "224db910898ce1317b892a9a1338f1f8f17eb7c7", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^6.4|^7.0|^8.0" + "symfony/process": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -6837,7 +6837,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.4.11" + "source": "https://github.com/symfony/filesystem/tree/v8.0.11" }, "funding": [ { @@ -6857,27 +6857,27 @@ "type": "tidelift" } ], - "time": "2026-05-11T16:38:44+00:00" + "time": "2026-05-11T16:39:47+00:00" }, { "name": "symfony/finder", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "e0be088d22278583a82da281886e8c3592fbf149" + "reference": "8da41214757b87d97f181e3d14a4179286151007" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/e0be088d22278583a82da281886e8c3592fbf149", - "reference": "e0be088d22278583a82da281886e8c3592fbf149", + "url": "https://api.github.com/repos/symfony/finder/zipball/8da41214757b87d97f181e3d14a4179286151007", + "reference": "8da41214757b87d97f181e3d14a4179286151007", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0|^8.0" + "symfony/filesystem": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -6905,7 +6905,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.8" + "source": "https://github.com/symfony/finder/tree/v8.0.8" }, "funding": [ { @@ -6925,7 +6925,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/form", @@ -7373,37 +7373,35 @@ }, { "name": "symfony/http-foundation", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "9381209597ec66c25be154cbf2289076e64d1eab" + "reference": "02656f7ebeae5c155d659e946f6b3a33df24051b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9381209597ec66c25be154cbf2289076e64d1eab", - "reference": "9381209597ec66c25be154cbf2289076e64d1eab", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/02656f7ebeae5c155d659e946f6b3a33df24051b", + "reference": "02656f7ebeae5c155d659e946f6b3a33df24051b", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.4", "symfony/polyfill-mbstring": "^1.1" }, "conflict": { - "doctrine/dbal": "<3.6", - "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + "doctrine/dbal": "<4.3" }, "require-dev": { - "doctrine/dbal": "^3.6|^4", + "doctrine/dbal": "^4.3", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5|^8.0", - "symfony/clock": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/mime": "^6.4|^7.0|^8.0", - "symfony/rate-limiter": "^6.4|^7.0|^8.0" + "symfony/cache": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -7431,7 +7429,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.8" + "source": "https://github.com/symfony/http-foundation/tree/v8.0.8" }, "funding": [ { @@ -7451,7 +7449,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/http-kernel", @@ -8083,20 +8081,20 @@ }, { "name": "symfony/options-resolver", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "2888fcdc4dc2fd5f7c7397be78631e8af12e02b4" + "reference": "b48bce0a70b914f6953dafbd10474df232ed4de8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/2888fcdc4dc2fd5f7c7397be78631e8af12e02b4", - "reference": "2888fcdc4dc2fd5f7c7397be78631e8af12e02b4", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b48bce0a70b914f6953dafbd10474df232ed4de8", + "reference": "b48bce0a70b914f6953dafbd10474df232ed4de8", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -8130,7 +8128,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.4.8" + "source": "https://github.com/symfony/options-resolver/tree/v8.0.8" }, "funding": [ { @@ -8150,31 +8148,28 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/password-hasher", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "18a7d92126c95962f7efbcc9e421ba710a366847" + "reference": "57ee968d3c38301ed3e5b838f850a10f2d06a7f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/18a7d92126c95962f7efbcc9e421ba710a366847", - "reference": "18a7d92126c95962f7efbcc9e421ba710a366847", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/57ee968d3c38301ed3e5b838f850a10f2d06a7f6", + "reference": "57ee968d3c38301ed3e5b838f850a10f2d06a7f6", "shasum": "" }, "require": { - "php": ">=8.2" - }, - "conflict": { - "symfony/security-core": "<6.4" + "php": ">=8.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/security-core": "^6.4|^7.0|^8.0" + "symfony/console": "^7.4|^8.0", + "symfony/security-core": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -8206,7 +8201,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.4.8" + "source": "https://github.com/symfony/password-hasher/tree/v8.0.8" }, "funding": [ { @@ -8226,7 +8221,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/polyfill-ctype", @@ -8313,16 +8308,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.37.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "4864388bfbd3001ce88e234fab652acd91fdc57e" + "reference": "9c862df890f7c833b1101ac5578ec4dcf199efb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/4864388bfbd3001ce88e234fab652acd91fdc57e", - "reference": "4864388bfbd3001ce88e234fab652acd91fdc57e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/9c862df890f7c833b1101ac5578ec4dcf199efb5", + "reference": "9c862df890f7c833b1101ac5578ec4dcf199efb5", "shasum": "" }, "require": { @@ -8371,7 +8366,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.0" }, "funding": [ { @@ -8391,20 +8386,20 @@ "type": "tidelift" } ], - "time": "2026-04-26T13:13:48+00:00" + "time": "2026-05-25T12:39:52+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.37.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "3510b63d07376b04e57e27e82607d468bb134f78" + "reference": "445c90e341fccda10311019cf82ff73bb7343945" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/3510b63d07376b04e57e27e82607d468bb134f78", - "reference": "3510b63d07376b04e57e27e82607d468bb134f78", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/445c90e341fccda10311019cf82ff73bb7343945", + "reference": "445c90e341fccda10311019cf82ff73bb7343945", "shasum": "" }, "require": { @@ -8459,7 +8454,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.38.0" }, "funding": [ { @@ -8479,7 +8474,7 @@ "type": "tidelift" } ], - "time": "2026-04-10T16:50:15+00:00" + "time": "2026-05-25T11:52:53+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -8570,16 +8565,16 @@ }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.37.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", "shasum": "" }, "require": { @@ -8631,7 +8626,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" }, "funding": [ { @@ -8651,20 +8646,20 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-05-25T13:48:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.37.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315" + "reference": "6b177d03d2eb04a6c9d01bab9818fb93a30ce7fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6b177d03d2eb04a6c9d01bab9818fb93a30ce7fd", + "reference": "6b177d03d2eb04a6c9d01bab9818fb93a30ce7fd", "shasum": "" }, "require": { @@ -8716,247 +8711,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.37.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-04-10T17:25:58+00:00" - }, - { - "name": "symfony/polyfill-php83", - "version": "v1.37.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/3600c2cb22399e25bb226e4a135ce91eeb2a6149", - "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.37.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-04-10T17:25:58+00:00" - }, - { - "name": "symfony/polyfill-php84", - "version": "v1.37.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/88486db2c389b290bf87ff1de7ebc1e13e42bb06", - "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php84\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.37.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-04-10T18:47:49+00:00" - }, - { - "name": "symfony/polyfill-php85", - "version": "v1.37.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php85.git", - "reference": "fcfa4973a9917cef23f2e38774da74a2b7d115ee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/fcfa4973a9917cef23f2e38774da74a2b7d115ee", - "reference": "fcfa4973a9917cef23f2e38774da74a2b7d115ee", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php85\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php85/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.0" }, "funding": [ { @@ -8976,7 +8731,7 @@ "type": "tidelift" } ], - "time": "2026-04-26T13:10:57+00:00" + "time": "2026-05-25T14:08:27+00:00" }, { "name": "symfony/property-access", @@ -9061,37 +8816,33 @@ }, { "name": "symfony/property-info", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175" + "reference": "c21711980653360d6ef5c26d0f9ca6f58a1135c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/ac5e82528b986c4f7cfccbf7764b5d2e824d6175", - "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175", + "url": "https://api.github.com/repos/symfony/property-info/zipball/c21711980653360d6ef5c26d0f9ca6f58a1135c6", + "reference": "c21711980653360d6ef5c26d0f9ca6f58a1135c6", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0|^8.0", + "php": ">=8.4", + "symfony/string": "^7.4|^8.0", "symfony/type-info": "^7.4.7|^8.0.7" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2|>=7", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/cache": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/serializer": "<6.4" + "phpdocumentor/type-resolver": "<1.5.1" }, "require-dev": { "phpdocumentor/reflection-docblock": "^5.2|^6.0", "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0" + "symfony/cache": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -9127,7 +8878,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.8" + "source": "https://github.com/symfony/property-info/tree/v8.0.8" }, "funding": [ { @@ -9147,38 +8898,33 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/routing", - "version": "v7.4.12", + "version": "v8.0.12", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "3b04a5ec4887a8135a12ebf0f4cbc5b8fc8ee204" + "reference": "c7f22a665faa3e5212b8f042e0c5831a6b85492f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3b04a5ec4887a8135a12ebf0f4cbc5b8fc8ee204", - "reference": "3b04a5ec4887a8135a12ebf0f4cbc5b8fc8ee204", + "url": "https://api.github.com/repos/symfony/routing/zipball/c7f22a665faa3e5212b8f042e0c5831a6b85492f", + "reference": "c7f22a665faa3e5212b8f042e0c5831a6b85492f", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/deprecation-contracts": "^2.5|^3" }, - "conflict": { - "symfony/config": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/yaml": "<6.4" - }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/yaml": "^6.4|^7.0|^8.0" + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -9212,7 +8958,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.12" + "source": "https://github.com/symfony/routing/tree/v8.0.12" }, "funding": [ { @@ -9232,7 +8978,7 @@ "type": "tidelift" } ], - "time": "2026-05-20T07:20:23+00:00" + "time": "2026-05-20T07:22:03+00:00" }, { "name": "symfony/runtime", @@ -9432,46 +9178,37 @@ }, { "name": "symfony/security-core", - "version": "v7.4.12", + "version": "v8.0.12", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "efff84605474ec682c7d9c6278088811e6f3caaa" + "reference": "29e2ef1855dff38f01a131645298e0c88001ca07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/efff84605474ec682c7d9c6278088811e6f3caaa", - "reference": "efff84605474ec682c7d9c6278088811e6f3caaa", + "url": "https://api.github.com/repos/symfony/security-core/zipball/29e2ef1855dff38f01a131645298e0c88001ca07", + "reference": "29e2ef1855dff38f01a131645298e0c88001ca07", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.4", "symfony/event-dispatcher-contracts": "^2.5|^3", - "symfony/password-hasher": "^6.4|^7.0|^8.0", + "symfony/password-hasher": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3" }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/http-foundation": "<6.4", - "symfony/ldap": "<6.4", - "symfony/translation": "<6.4.3|>=7.0,<7.0.3", - "symfony/validator": "<6.4" - }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^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/expression-language": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/ldap": "^6.4|^7.0|^8.0", - "symfony/string": "^6.4|^7.0|^8.0", - "symfony/translation": "^6.4.3|^7.0.3|^8.0", - "symfony/validator": "^6.4|^7.0|^8.0" + "symfony/cache": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/ldap": "^7.4|^8.0", + "symfony/string": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -9499,7 +9236,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.4.12" + "source": "https://github.com/symfony/security-core/tree/v8.0.12" }, "funding": [ { @@ -9519,33 +9256,30 @@ "type": "tidelift" } ], - "time": "2026-05-15T06:48:59+00:00" + "time": "2026-05-19T19:56:11+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "16b3aa2f67d02fb0dbd013a8759bbe90daaa9c5d" + "reference": "83c8f60ef8d385c05ea863093c9efabe74800883" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/16b3aa2f67d02fb0dbd013a8759bbe90daaa9c5d", - "reference": "16b3aa2f67d02fb0dbd013a8759bbe90daaa9c5d", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/83c8f60ef8d385c05ea863093c9efabe74800883", + "reference": "83c8f60ef8d385c05ea863093c9efabe74800883", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/security-core": "^6.4|^7.0|^8.0" - }, - "conflict": { - "symfony/http-foundation": "<6.4" + "php": ">=8.4", + "symfony/security-core": "^7.4|^8.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0" + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -9573,7 +9307,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.4.8" + "source": "https://github.com/symfony/security-csrf/tree/v8.0.8" }, "funding": [ { @@ -9593,50 +9327,45 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/security-http", - "version": "v7.4.12", + "version": "v8.0.12", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "1fc7ca636cbd2cad29b42cc13c9fd0c681c6efee" + "reference": "d776945b2dc41c0e609c56c1ef69863ab56856ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/1fc7ca636cbd2cad29b42cc13c9fd0c681c6efee", - "reference": "1fc7ca636cbd2cad29b42cc13c9fd0c681c6efee", + "url": "https://api.github.com/repos/symfony/security-http/zipball/d776945b2dc41c0e609c56c1ef69863ab56856ed", + "reference": "d776945b2dc41c0e609c56c1ef69863ab56856ed", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^6.4|^7.0|^8.0", - "symfony/security-core": "^7.3|^8.0", + "php": ">=8.4", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/security-core": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/clock": "<6.4", - "symfony/http-client-contracts": "<3.0", - "symfony/security-bundle": "<6.4", - "symfony/security-csrf": "<6.4" + "symfony/http-client-contracts": "<3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/clock": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/cache": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", "symfony/http-client-contracts": "^3.0", - "symfony/rate-limiter": "^6.4|^7.0|^8.0", - "symfony/routing": "^6.4|^7.0|^8.0", - "symfony/security-csrf": "^6.4|^7.0|^8.0", - "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/security-csrf": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "library", @@ -9665,7 +9394,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.4.12" + "source": "https://github.com/symfony/security-http/tree/v8.0.12" }, "funding": [ { @@ -9685,7 +9414,7 @@ "type": "tidelift" } ], - "time": "2026-05-20T07:20:23+00:00" + "time": "2026-05-20T07:22:03+00:00" }, { "name": "symfony/service-contracts", @@ -10115,67 +9844,60 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.4.12", + "version": "v8.0.12", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "81663873d946531129c76c65e80b681ce99c0e89" + "reference": "f1397eb19ab4f738bd22570d65d40792c1ba3f79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/81663873d946531129c76c65e80b681ce99c0e89", - "reference": "81663873d946531129c76c65e80b681ce99c0e89", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/f1397eb19ab4f738bd22570d65d40792c1ba3f79", + "reference": "f1397eb19ab4f738bd22570d65d40792c1ba3f79", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.4", "symfony/translation-contracts": "^2.5|^3", "twig/twig": "^3.21" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2|>=7", "phpdocumentor/type-resolver": "<1.5.1", - "symfony/console": "<6.4", - "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4|>8.0,<8.0.4", - "symfony/http-foundation": "<6.4", - "symfony/http-kernel": "<6.4", - "symfony/mime": "<6.4.37|>7,<7.4.9|>8.0,<8.0.9", - "symfony/serializer": "<6.4", - "symfony/translation": "<6.4", - "symfony/workflow": "<6.4" + "symfony/form": "<7.4.4|>8.0,<8.0.4", + "symfony/mime": "<7.4.9|>8.0,<8.0.9" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^5.2|^6.0", - "symfony/asset": "^6.4|^7.0|^8.0", - "symfony/asset-mapper": "^6.4|^7.0|^8.0", - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/emoji": "^7.1|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/finder": "^6.4|^7.0|^8.0", - "symfony/form": "^6.4.32|~7.3.10|^7.4.4|^8.0.4", - "symfony/html-sanitizer": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^7.3|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/intl": "^6.4|^7.0|^8.0", - "symfony/mime": "^6.4.37|^7.4.9|^8.0.9", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^6.4|^7.0|^8.0", - "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/asset": "^7.4|^8.0", + "symfony/asset-mapper": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/emoji": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/form": "^7.4.4|^8.0.4", + "symfony/html-sanitizer": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/mime": "^7.4.9|^8.0.9", + "symfony/polyfill-intl-icu": "^1.0", + "symfony/property-info": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^6.4|^7.0|^8.0", - "symfony/security-csrf": "^6.4|^7.0|^8.0", - "symfony/security-http": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4.3|^7.0.3|^8.0", - "symfony/stopwatch": "^6.4|^7.0|^8.0", - "symfony/translation": "^6.4|^7.0|^8.0", - "symfony/validator": "^6.4|^7.0|^8.0", - "symfony/web-link": "^6.4|^7.0|^8.0", - "symfony/workflow": "^6.4|^7.0|^8.0", - "symfony/yaml": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/security-csrf": "^7.4|^8.0", + "symfony/security-http": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/web-link": "^7.4|^8.0", + "symfony/workflow": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0", "twig/cssinliner-extra": "^3", "twig/inky-extra": "^3", "twig/markdown-extra": "^3" @@ -10206,7 +9928,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.4.12" + "source": "https://github.com/symfony/twig-bridge/tree/v8.0.12" }, "funding": [ { @@ -10226,49 +9948,43 @@ "type": "tidelift" } ], - "time": "2026-04-29T17:13:54+00:00" + "time": "2026-04-29T18:17:56+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95" + "reference": "f83767b78e2580ca9fe9a2cf6fcff19cd5389bc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95", - "reference": "ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f83767b78e2580ca9fe9a2cf6fcff19cd5389bc1", + "reference": "f83767b78e2580ca9fe9a2cf6fcff19cd5389bc1", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", - "php": ">=8.2", + "php": ">=8.4", "symfony/config": "^7.4|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", - "symfony/twig-bridge": "^7.3|^8.0", - "twig/twig": "^3.12" - }, - "conflict": { - "symfony/framework-bundle": "<6.4", - "symfony/translation": "<6.4" + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/twig-bridge": "^7.4|^8.0" }, "require-dev": { - "symfony/asset": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/finder": "^6.4|^7.0|^8.0", - "symfony/form": "^6.4|^7.0|^8.0", - "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", - "symfony/routing": "^6.4|^7.0|^8.0", - "symfony/runtime": "^6.4.13|^7.1.6", - "symfony/stopwatch": "^6.4|^7.0|^8.0", - "symfony/translation": "^6.4|^7.0|^8.0", - "symfony/web-link": "^6.4|^7.0|^8.0", - "symfony/yaml": "^6.4|^7.0|^8.0" + "symfony/asset": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/runtime": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/web-link": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -10296,7 +10012,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/v7.4.8" + "source": "https://github.com/symfony/twig-bundle/tree/v8.0.8" }, "funding": [ { @@ -10316,7 +10032,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/twig-pack", @@ -10365,22 +10081,21 @@ }, { "name": "symfony/type-info", - "version": "v7.4.9", + "version": "v8.0.9", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6" + "reference": "08723aceb8c3271e8cb3db8b2565728b0c88e866" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/cafeedbf157b890e94ac5b83eaed85595106d5d6", - "reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6", + "url": "https://api.github.com/repos/symfony/type-info/zipball/08723aceb8c3271e8cb3db8b2565728b0c88e866", + "reference": "08723aceb8c3271e8cb3db8b2565728b0c88e866", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=8.4", + "psr/container": "^1.1|^2.0" }, "conflict": { "phpstan/phpdoc-parser": "<1.30" @@ -10424,7 +10139,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.4.9" + "source": "https://github.com/symfony/type-info/tree/v8.0.9" }, "funding": [ { @@ -10444,7 +10159,7 @@ "type": "tidelift" } ], - "time": "2026-04-22T15:21:55+00:00" + "time": "2026-04-29T15:02:55+00:00" }, { "name": "symfony/validator", @@ -10552,31 +10267,31 @@ }, { "name": "symfony/var-dumper", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd" + "reference": "cfb7badd53bf4177f6e9416cfbbccc13c0e773a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9510c3966f749a1d1ff0059e1eabef6cc621e7fd", - "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cfb7badd53bf4177f6e9416cfbbccc13c0e773a1", + "reference": "cfb7badd53bf4177f6e9416cfbbccc13c0e773a1", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { - "symfony/console": "<6.4" + "symfony/console": "<7.4", + "symfony/error-handler": "<7.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", "twig/twig": "^3.12" }, "bin": [ @@ -10615,7 +10330,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.8" + "source": "https://github.com/symfony/var-dumper/tree/v8.0.8" }, "funding": [ { @@ -10635,7 +10350,7 @@ "type": "tidelift" } ], - "time": "2026-03-30T13:44:50+00:00" + "time": "2026-03-31T07:15:36+00:00" }, { "name": "symfony/var-exporter", @@ -11146,16 +10861,16 @@ }, { "name": "webmozart/assert", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4" + "reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/eb0d790f735ba6cff25c683a85a1da0eadeff9e4", - "reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/9007ea6f45ecf352a9422b36644e4bfc039b9155", + "reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155", "shasum": "" }, "require": { @@ -11171,7 +10886,11 @@ }, "type": "library", "extra": { + "psalm": { + "pluginClass": "Webmozart\\Assert\\PsalmPlugin" + }, "branch-alias": { + "dev-master": "2.0-dev", "dev-feature/2-0": "2.0-dev" } }, @@ -11202,9 +10921,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/2.3.0" + "source": "https://github.com/webmozarts/assert/tree/2.4.0" }, - "time": "2026-04-11T10:33:05+00:00" + "time": "2026-05-20T13:07:01+00:00" }, { "name": "willdurand/geocoder", @@ -12321,73 +12040,6 @@ ], "time": "2026-05-12T16:22:19+00:00" }, - { - "name": "masterminds/html5", - "version": "2.10.0", - "source": { - "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "fcf91eb64359852f00d921887b219479b4f21251" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251", - "reference": "fcf91eb64359852f00d921887b219479b4f21251", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Masterminds\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", - "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" - ], - "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" - }, - "time": "2025-07-25T09:04:22+00:00" - }, { "name": "myclabs/deep-copy", "version": "1.13.4", @@ -14118,16 +13770,16 @@ }, { "name": "rector/rector", - "version": "2.4.3", + "version": "2.4.4", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "891824c6c59f02a56a5dd58ea8edc44e6c0ece29" + "reference": "4661c582a20f03df585d2e3fdc4af1b83d67a091" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/891824c6c59f02a56a5dd58ea8edc44e6c0ece29", - "reference": "891824c6c59f02a56a5dd58ea8edc44e6c0ece29", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/4661c582a20f03df585d2e3fdc4af1b83d67a091", + "reference": "4661c582a20f03df585d2e3fdc4af1b83d67a091", "shasum": "" }, "require": { @@ -14166,7 +13818,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.4.3" + "source": "https://github.com/rectorphp/rector/tree/2.4.4" }, "funding": [ { @@ -14174,7 +13826,7 @@ "type": "github" } ], - "time": "2026-05-12T11:17:24+00:00" + "time": "2026-05-20T19:30:21+00:00" }, { "name": "robertfausk/behat-panther-extension", @@ -14453,6 +14105,7 @@ "type": "github" } ], + "abandoned": true, "time": "2025-03-19T07:56:08+00:00" }, { @@ -14509,6 +14162,7 @@ "type": "github" } ], + "abandoned": true, "time": "2024-07-03T04:45:54+00:00" }, { @@ -15431,28 +15085,27 @@ }, { "name": "symfony/browser-kit", - "version": "v7.4.8", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "41850d8f8ddef9a9cd7314fa9f4902cf48885521" + "reference": "f5a28fca785416cf489dd579011e74c831100cc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/41850d8f8ddef9a9cd7314fa9f4902cf48885521", - "reference": "41850d8f8ddef9a9cd7314fa9f4902cf48885521", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f5a28fca785416cf489dd579011e74c831100cc3", + "reference": "f5a28fca785416cf489dd579011e74c831100cc3", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/dom-crawler": "^6.4|^7.0|^8.0" + "php": ">=8.4", + "symfony/dom-crawler": "^7.4|^8.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/mime": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0" + "symfony/css-selector": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -15480,7 +15133,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/v7.4.8" + "source": "https://github.com/symfony/browser-kit/tree/v8.0.8" }, "funding": [ { @@ -15500,24 +15153,24 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/css-selector", - "version": "v7.4.9", + "version": "v8.0.9", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b75663ed96cf4756e28e3105476f220f92886cc4" + "reference": "3665cfade90565430909b906394c73c8739e57d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b75663ed96cf4756e28e3105476f220f92886cc4", - "reference": "b75663ed96cf4756e28e3105476f220f92886cc4", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/3665cfade90565430909b906394c73c8739e57d0", + "reference": "3665cfade90565430909b906394c73c8739e57d0", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "type": "library", "autoload": { @@ -15549,7 +15202,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.4.9" + "source": "https://github.com/symfony/css-selector/tree/v8.0.9" }, "funding": [ { @@ -15569,7 +15222,7 @@ "type": "tidelift" } ], - "time": "2026-04-18T13:18:21+00:00" + "time": "2026-04-18T13:51:42+00:00" }, { "name": "symfony/debug-bundle", @@ -15648,27 +15301,25 @@ }, { "name": "symfony/dom-crawler", - "version": "v7.4.12", + "version": "v8.0.12", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "b59b59122690976550fd142c23fab62c84738db6" + "reference": "011b0ce60417f6d40052434d8ae6295b876ecbdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b59b59122690976550fd142c23fab62c84738db6", - "reference": "b59b59122690976550fd142c23fab62c84738db6", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/011b0ce60417f6d40052434d8ae6295b876ecbdd", + "reference": "011b0ce60417f6d40052434d8ae6295b876ecbdd", "shasum": "" }, "require": { - "masterminds/html5": "^2.6", - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0|^8.0" + "symfony/css-selector": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -15696,7 +15347,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.4.12" + "source": "https://github.com/symfony/dom-crawler/tree/v8.0.12" }, "funding": [ { @@ -15716,7 +15367,7 @@ "type": "tidelift" } ], - "time": "2026-05-20T07:20:23+00:00" + "time": "2026-05-20T07:22:03+00:00" }, { "name": "symfony/json-path", @@ -15880,20 +15531,20 @@ }, { "name": "symfony/process", - "version": "v7.4.11", + "version": "v8.0.11", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0" + "reference": "26d89e459f037d2873300605d0a07e7a8ef84db0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d9593c9efa40499eb078b81144de42cbc28a31f0", - "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0", + "url": "https://api.github.com/repos/symfony/process/zipball/26d89e459f037d2873300605d0a07e7a8ef84db0", + "reference": "26d89e459f037d2873300605d0a07e7a8ef84db0", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "type": "library", "autoload": { @@ -15921,7 +15572,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.11" + "source": "https://github.com/symfony/process/tree/v8.0.11" }, "funding": [ { @@ -15941,20 +15592,20 @@ "type": "tidelift" } ], - "time": "2026-05-11T16:55:21+00:00" + "time": "2026-05-11T16:56:32+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.4.11", + "version": "v7.4.12", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "066e718f8dfb73c55de43470bb73ebd525343d21" + "reference": "558fe81a383302318d9b92f7661deb731153c86e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/066e718f8dfb73c55de43470bb73ebd525343d21", - "reference": "066e718f8dfb73c55de43470bb73ebd525343d21", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/558fe81a383302318d9b92f7661deb731153c86e", + "reference": "558fe81a383302318d9b92f7661deb731153c86e", "shasum": "" }, "require": { @@ -16011,7 +15662,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.11" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.12" }, "funding": [ { @@ -16031,7 +15682,7 @@ "type": "tidelift" } ], - "time": "2026-05-11T13:02:51+00:00" + "time": "2026-05-20T07:20:23+00:00" }, { "name": "symplify/vendor-patches", @@ -16190,7 +15841,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=8.2", + "php": ">=8.5", "ext-curl": "*", "ext-dom": "*", "ext-gd": "*", diff --git a/docker/dockerfiles/apachephp/Dockerfile b/docker/dockerfiles/apachephp/Dockerfile index a23a47c51..b59e5d5b0 100644 --- a/docker/dockerfiles/apachephp/Dockerfile +++ b/docker/dockerfiles/apachephp/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.2-apache AS base +FROM php:8.5-apache AS base ARG ENABLE_XDEBUG=false ARG uid=1008 diff --git a/sources/Afup/Association/Cotisations.php b/sources/Afup/Association/Cotisations.php index 64f799c5c..9aa6b037d 100644 --- a/sources/Afup/Association/Cotisations.php +++ b/sources/Afup/Association/Cotisations.php @@ -104,7 +104,7 @@ public function _genererNumeroFacture(): string $requete .= ' LEFT(numero_facture, 4)=' . $this->_bdd->echapper(date('Y')); $requete .= ' OR LEFT(numero_facture, 10)=' . $this->_bdd->echapper("COTIS-" . date('Y')); $index = $this->_bdd->obtenirUn($requete); - return 'COTIS-' . date('Y') . '-' . (is_null($index) ? 1 : $index); + return 'COTIS-' . date('Y') . '-' . ($index ?? 1); } /** diff --git a/sources/Afup/Comptabilite/Facture.php b/sources/Afup/Comptabilite/Facture.php index 91d8aa1d8..e15b7e7f8 100644 --- a/sources/Afup/Comptabilite/Facture.php +++ b/sources/Afup/Comptabilite/Facture.php @@ -296,7 +296,7 @@ public function genererNumeroFacture(): string // on va chercher l'index de l'année dernière if (null === $index) { $index = $this->_bdd->obtenirUn($sql . ($year - 1)); - $index = (int) (is_null($index) ? 1 : $index); + $index = (int) ($index ?? 1); } return "$year-$index"; @@ -312,7 +312,7 @@ public function genererNumeroDevis(): string $requete .= ' LEFT(numero_devis, 4)=' . $this->_bdd->echapper(date('Y')); $index = $this->_bdd->obtenirUn($requete); - return date('Y') . '-' . sprintf('%02d', (is_null($index) ? 1 : $index)); + return date('Y') . '-' . sprintf('%02d', ($index ?? 1)); } diff --git a/sources/AppBundle/Accounting/Form/ProduitType.php b/sources/AppBundle/Accounting/Form/ProduitType.php index c27e30c05..592962c6b 100644 --- a/sources/AppBundle/Accounting/Form/ProduitType.php +++ b/sources/AppBundle/Accounting/Form/ProduitType.php @@ -54,7 +54,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'required' => true, 'expanded' => true, 'multiple' => false, - 'choice_label' => fn(TvaTaux $taux) => $taux->label(), + 'choice_label' => fn(TvaTaux $taux): string => $taux->label(), ]); } } diff --git a/sources/AppBundle/AssetMapper/PostCompilationCopyHandler.php b/sources/AppBundle/AssetMapper/PostCompilationCopyHandler.php index 8c3454aa4..208f9768d 100644 --- a/sources/AppBundle/AssetMapper/PostCompilationCopyHandler.php +++ b/sources/AppBundle/AssetMapper/PostCompilationCopyHandler.php @@ -14,7 +14,7 @@ */ class PostCompilationCopyHandler implements PublicAssetsFilesystemInterface { - private Filesystem $filesystem; + private readonly Filesystem $filesystem; /** * @param string[] $extensionsToCompress diff --git a/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php b/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php index af6ab4208..3d58fea42 100644 --- a/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php +++ b/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php @@ -86,7 +86,7 @@ public function search($sort = 'name', $direction = 'asc', $filter = null, $only // C'est un peu barbare mais généralement on ne met qu'un seul terme dans la recherche… du coup c'est pas bien grave. if ($filter) { $filters = explode(' ', $filter); - $filters = array_filter(array_map('trim', $filters)); + $filters = array_filter(array_map(trim(...), $filters)); $ors = []; foreach ($filters as $i => $value) { $ors[] = "LOWER(apm.raison_sociale) LIKE LOWER(:filter$i) OR apm.ville LIKE :filter$i"; diff --git a/sources/AppBundle/Association/Model/Repository/UserRepository.php b/sources/AppBundle/Association/Model/Repository/UserRepository.php index 28fc1559a..103c2438c 100644 --- a/sources/AppBundle/Association/Model/Repository/UserRepository.php +++ b/sources/AppBundle/Association/Model/Repository/UserRepository.php @@ -193,7 +193,7 @@ public function search( // C'est un peu barbare mais généralement on ne met qu'un seul terme dans la recherche… du coup c'est pas bien grave. if ($filter) { $filters = explode(' ', (string) $filter); - $filters = array_filter(array_map('trim', $filters)); + $filters = array_filter(array_map(trim(...), $filters)); $ors = []; foreach ($filters as $i => $value) { $ors[] = "LOWER(app.login) LIKE LOWER(:filter$i) OR LOWER(app.nom) LIKE LOWER(:filter$i) OR LOWER(app.prenom) LIKE LOWER(:filter$i) diff --git a/sources/AppBundle/Command/PayboxCallbackSimulatorCommand.php b/sources/AppBundle/Command/PayboxCallbackSimulatorCommand.php index a541402f5..144140ca0 100644 --- a/sources/AppBundle/Command/PayboxCallbackSimulatorCommand.php +++ b/sources/AppBundle/Command/PayboxCallbackSimulatorCommand.php @@ -60,7 +60,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int $question = new Question(sprintf('Pour quel identifiant de paiement (cmd) ? (par exemple: %s)', $example)); $cmd = $helper->ask($input, $output, $question); $question->setValidator(function ($cmd) use ($regexp): void { - if (!preg_match($regexp, $cmd)) { + if (!preg_match($regexp, (string) $cmd)) { throw new \RuntimeException( sprintf('Le format du CMD n\'est pas valide. Il doit être de la forme : %s', $regexp), ); diff --git a/sources/AppBundle/Compta/CsvExtractor.php b/sources/AppBundle/Compta/CsvExtractor.php index 7ad72501f..9c5a7187a 100644 --- a/sources/AppBundle/Compta/CsvExtractor.php +++ b/sources/AppBundle/Compta/CsvExtractor.php @@ -17,7 +17,7 @@ public function __construct( private readonly TransactionRepository $transactionRepository, ) {} - public function extract(Importer $importer) + public function extract(Importer $importer): bool { if (!$importer->validate()) { return false; diff --git a/sources/AppBundle/Controller/Admin/Accounting/Invoice/EditInvoiceAction.php b/sources/AppBundle/Controller/Admin/Accounting/Invoice/EditInvoiceAction.php index c006aebe2..364b043f6 100644 --- a/sources/AppBundle/Controller/Admin/Accounting/Invoice/EditInvoiceAction.php +++ b/sources/AppBundle/Controller/Admin/Accounting/Invoice/EditInvoiceAction.php @@ -30,7 +30,7 @@ public function __invoke(Request $request): Response $this->invoicingRepository->save($invoice); $this->addFlash('success', 'L\'écriture a été modifiée'); return $this->redirectToRoute('admin_accounting_invoices_list'); - } catch (\Exception $e) { + } catch (\Exception) { $this->invoicingRepository->rollback(); $this->addFlash('error', 'L\'écriture n\'a pas pu être enregistrée'); } diff --git a/sources/AppBundle/Controller/Admin/Accounting/Journal/AllocateAction.php b/sources/AppBundle/Controller/Admin/Accounting/Journal/AllocateAction.php index 531d5cd1a..2c3710545 100644 --- a/sources/AppBundle/Controller/Admin/Accounting/Journal/AllocateAction.php +++ b/sources/AppBundle/Controller/Admin/Accounting/Journal/AllocateAction.php @@ -21,7 +21,7 @@ public function __invoke(Request $request, int $id): RedirectResponse $totalAmount = 0; $lastId = null; - foreach (explode(';', $amountToallocate) as $amount) { + foreach (explode(';', (string) $amountToallocate) as $amount) { $amount = (float) $amount; $newTransaction = new Transaction(); diff --git a/sources/AppBundle/Controller/Admin/Accounting/Journal/EditTransactionAction.php b/sources/AppBundle/Controller/Admin/Accounting/Journal/EditTransactionAction.php index c32e52a56..fe3c04a33 100644 --- a/sources/AppBundle/Controller/Admin/Accounting/Journal/EditTransactionAction.php +++ b/sources/AppBundle/Controller/Admin/Accounting/Journal/EditTransactionAction.php @@ -4,6 +4,7 @@ namespace AppBundle\Controller\Admin\Accounting\Journal; +use AppBundle\Accounting\Model\Transaction; use AppBundle\Accounting\Form\TransactionType; use AppBundle\Accounting\Model\Repository\TransactionRepository; use AppBundle\AuditLog\Audit; @@ -23,7 +24,7 @@ public function __construct( public function __invoke(Request $request, int $id): Response { $transaction = $this->transactionRepository->get($id); - if (!$transaction instanceof \AppBundle\Accounting\Model\Transaction) { + if (!$transaction instanceof Transaction) { throw new NotFoundHttpException(); } $nextTransaction = $this->transactionRepository->getNextTransaction($transaction->getId()); diff --git a/sources/AppBundle/Controller/Admin/Accounting/Quotation/AddQuotationAction.php b/sources/AppBundle/Controller/Admin/Accounting/Quotation/AddQuotationAction.php index bb927191e..e95dfdb6c 100644 --- a/sources/AppBundle/Controller/Admin/Accounting/Quotation/AddQuotationAction.php +++ b/sources/AppBundle/Controller/Admin/Accounting/Quotation/AddQuotationAction.php @@ -41,7 +41,7 @@ public function __invoke(Request $request): Response $this->invoicingRepository->commit(); $this->addFlash('success', 'L\'écriture a été ajoutée'); return $this->redirectToRoute('admin_accounting_quotations_list'); - } catch (\Exception $e) { + } catch (\Exception) { $this->invoicingRepository->rollback(); $this->addFlash('error', 'L\'écriture n\'a pas pu être enregistrée'); } diff --git a/sources/AppBundle/Controller/Admin/Accounting/Quotation/EditQuotationAction.php b/sources/AppBundle/Controller/Admin/Accounting/Quotation/EditQuotationAction.php index 4b14da1f6..3c21300be 100644 --- a/sources/AppBundle/Controller/Admin/Accounting/Quotation/EditQuotationAction.php +++ b/sources/AppBundle/Controller/Admin/Accounting/Quotation/EditQuotationAction.php @@ -51,7 +51,7 @@ public function __invoke(Request $request): Response $this->invoicingRepository->commit(); $this->addFlash('success', 'L\'écriture a été modifiée'); return $this->redirectToRoute('admin_accounting_quotations_list'); - } catch (\Exception $e) { + } catch (\Exception) { $this->invoicingRepository->rollback(); $this->addFlash('error', 'L\'écriture n\'a pas pu être enregistrée'); } diff --git a/sources/AppBundle/Controller/Admin/Antennes/AntenneListAction.php b/sources/AppBundle/Controller/Admin/Antennes/AntenneListAction.php index 940bfb818..7db3e4291 100644 --- a/sources/AppBundle/Controller/Admin/Antennes/AntenneListAction.php +++ b/sources/AppBundle/Controller/Admin/Antennes/AntenneListAction.php @@ -23,7 +23,7 @@ public function __invoke(Request $request): Response uasort( $antennes, - fn(Antenne $a, Antenne $b) => strcmp($a->label, $b->label), + fn(Antenne $a, Antenne $b): int => strcmp($a->label, $b->label), ); return new Response($this->twig->render('admin/antennes/list.html.twig', [ diff --git a/sources/AppBundle/Controller/Api/Antennes/GetOneAction.php b/sources/AppBundle/Controller/Api/Antennes/GetOneAction.php index 9e441f3ab..8fe223d8b 100644 --- a/sources/AppBundle/Controller/Api/Antennes/GetOneAction.php +++ b/sources/AppBundle/Controller/Api/Antennes/GetOneAction.php @@ -51,7 +51,7 @@ public function __invoke(string $code): JsonResponse $allMeetups = $this->meetupRepository->findAllForAntenne($antenne); $response['meetups'] = array_map( - fn(Meetup $meetup) => $this->transformMeetup($antenne, $meetup), + fn(Meetup $meetup): array => $this->transformMeetup($antenne, $meetup), iterator_to_array($allMeetups->getIterator()), ); diff --git a/sources/AppBundle/Controller/Website/Membership/GeneralMeeting/IndexAction.php b/sources/AppBundle/Controller/Website/Membership/GeneralMeeting/IndexAction.php index 6e442eca4..2c3eb2684 100644 --- a/sources/AppBundle/Controller/Website/Membership/GeneralMeeting/IndexAction.php +++ b/sources/AppBundle/Controller/Website/Membership/GeneralMeeting/IndexAction.php @@ -4,6 +4,7 @@ namespace AppBundle\Controller\Website\Membership\GeneralMeeting; +use Symfony\Component\Validator\Constraints\Callback; use Afup\Site\Droits; use AppBundle\Association\Model\GeneralMeetingVote; use AppBundle\Association\Model\Repository\GeneralMeetingQuestionRepository; @@ -72,7 +73,7 @@ public function __invoke(Request $request): Response $form = $this->createFormBuilder($data, [ 'constraints' => [ - new Constraints\Callback(callback: static function (array $data, ExecutionContextInterface $context): void { + new Callback(callback: static function (array $data, ExecutionContextInterface $context): void { if ($data['presence'] === 1 && $data['id_personne_avec_pouvoir']) { $context ->buildViolation("Vous ne pouvez pas donner votre pouvoir et indiquer que vous participez en même temps.") diff --git a/sources/AppBundle/Controller/Website/SecondaryMenuController.php b/sources/AppBundle/Controller/Website/SecondaryMenuController.php index e2a81cdc5..d26af7660 100644 --- a/sources/AppBundle/Controller/Website/SecondaryMenuController.php +++ b/sources/AppBundle/Controller/Website/SecondaryMenuController.php @@ -61,7 +61,7 @@ private function isActive(Request $masterRequest, Feuille $feuille): bool } if ($feuille->patterns) { - foreach (explode(PHP_EOL, (string) $feuille->patterns) as $pattern) { + foreach (explode(PHP_EOL, $feuille->patterns) as $pattern) { $pattern = trim($pattern); if ($pattern === '') { continue; diff --git a/sources/AppBundle/Event/Form/EventSelectType.php b/sources/AppBundle/Event/Form/EventSelectType.php index 89d9fef7b..6e0c57d4d 100644 --- a/sources/AppBundle/Event/Form/EventSelectType.php +++ b/sources/AppBundle/Event/Form/EventSelectType.php @@ -33,7 +33,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'choices' => $this->eventHelper->sortEventsByStartDate( iterator_to_array($this->eventRepository->getAllActive()), ), - 'group_by' => fn(Event $choice): string => $this->eventHelper->groupByYear($choice), + 'group_by' => $this->eventHelper->groupByYear(...), ], ) ->setMethod(Request::METHOD_GET) diff --git a/sources/AppBundle/Event/Form/TalkAdminType.php b/sources/AppBundle/Event/Form/TalkAdminType.php index cedf80916..fb298a1ad 100644 --- a/sources/AppBundle/Event/Form/TalkAdminType.php +++ b/sources/AppBundle/Event/Form/TalkAdminType.php @@ -94,8 +94,8 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'choices' => $allSpeakers, 'required' => false, 'data' => $speakers, - 'choice_label' => fn(Speaker $speaker) => $speaker->getLabel(), - 'choice_value' => fn(?Speaker $speaker) => $speaker?->getId(), + 'choice_label' => fn(Speaker $speaker): string => $speaker->getLabel(), + 'choice_value' => fn(?Speaker $speaker): ?int => $speaker?->getId(), 'choice_name' => 'id', ]) ->add('verbatim', TextareaType::class, [ diff --git a/sources/AppBundle/Event/Form/TicketAdminType.php b/sources/AppBundle/Event/Form/TicketAdminType.php index afd1eab83..2a83f9ecd 100644 --- a/sources/AppBundle/Event/Form/TicketAdminType.php +++ b/sources/AppBundle/Event/Form/TicketAdminType.php @@ -41,7 +41,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void $event = $options['event']; $ticketOffers = $options['offers']; - usort($ticketOffers, static fn(TicketOffer $a, TicketOffer $b) => $a->name > $b->name ? 1 : -1); + usort($ticketOffers, static fn(TicketOffer $a, TicketOffer $b): int => $a->name > $b->name ? 1 : -1); $builder ->add('civility', ChoiceType::class, [ @@ -82,9 +82,9 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ->add('ticketTypeId', ChoiceType::class, [ 'label' => 'Formule', 'choices' => $ticketOffers, - 'choice_label' => fn(TicketOffer $offer) => sprintf('%s - [%d €]', $offer->name, $offer->price), - 'choice_value' => fn(?TicketOffer $offer) => $offer->ticketTypeId ?? null, - 'group_by' => fn(TicketOffer $choice) => $choice->event ? 'Offre de l\'évènement' : 'Offre global', + 'choice_label' => fn(TicketOffer $offer): string => sprintf('%s - [%d €]', $offer->name, $offer->price), + 'choice_value' => fn(?TicketOffer $offer): ?int => $offer->ticketTypeId ?? null, + 'group_by' => fn(TicketOffer $choice): string => $choice->event ? 'Offre de l\'évènement' : 'Offre global', ]) ->add('status', ChoiceType::class, [ 'label' => "État de l'inscription", diff --git a/sources/AppBundle/Mailchimp/MailchimpMembersAutoListSynchronizer.php b/sources/AppBundle/Mailchimp/MailchimpMembersAutoListSynchronizer.php index a0e1c6fbf..babed521a 100644 --- a/sources/AppBundle/Mailchimp/MailchimpMembersAutoListSynchronizer.php +++ b/sources/AppBundle/Mailchimp/MailchimpMembersAutoListSynchronizer.php @@ -22,10 +22,10 @@ public function __construct( public function synchronize(): void { - $subscribedEmailsOnMailchimp = array_map('strtolower', $this->mailchimp->getAllSubscribedMembersAddresses($this->listId)); - $unSubscribedEmailsOnMailchimp = array_map('strtolower', $this->mailchimp->getAllUnSubscribedMembersAddresses($this->listId)); - $cleanedEmailsOnMailchimp = array_map('strtolower', $this->mailchimp->getAllCleanedMembersAddresses($this->listId)); - $subscribedEmailsOnWebsite = array_map('strtolower', $this->getSubscribedEmailsOnWebsite()); + $subscribedEmailsOnMailchimp = array_map(strtolower(...), $this->mailchimp->getAllSubscribedMembersAddresses($this->listId)); + $unSubscribedEmailsOnMailchimp = array_map(strtolower(...), $this->mailchimp->getAllUnSubscribedMembersAddresses($this->listId)); + $cleanedEmailsOnMailchimp = array_map(strtolower(...), $this->mailchimp->getAllCleanedMembersAddresses($this->listId)); + $subscribedEmailsOnWebsite = array_map(strtolower(...), $this->getSubscribedEmailsOnWebsite()); $addressesToArchive = array_diff($subscribedEmailsOnMailchimp, $subscribedEmailsOnWebsite); // Vu qu'on archive les personnes qui ne sont plus à jour de cotisation, les adresses unsubscribed sont seulemnt les personnes diff --git a/sources/AppBundle/Site/Form/ArticleType.php b/sources/AppBundle/Site/Form/ArticleType.php index f6f572497..6aedd13c2 100644 --- a/sources/AppBundle/Site/Form/ArticleType.php +++ b/sources/AppBundle/Site/Form/ArticleType.php @@ -4,6 +4,7 @@ namespace AppBundle\Site\Form; +use AppBundle\Site\Model\Article; use AppBundle\Event\Model\Repository\EventRepository; use AppBundle\Site\Enum\ArticleTheme; use AppBundle\Site\Entity\Repository\RubriqueRepository; @@ -41,7 +42,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void $events[$event->getTitle()] = $event->getId(); } - /** @var \AppBundle\Site\Model\Article|null $article */ + /** @var Article|null $article */ $article = $builder->getData(); $textareaCssClass = 'simplemde'; if ($article !== null && $article->isContentTypeMarkdown() === false) { diff --git a/sources/AppBundle/Site/Model/Rubrique.php b/sources/AppBundle/Site/Model/Rubrique.php index eb87195e0..13d2d1ea7 100644 --- a/sources/AppBundle/Site/Model/Rubrique.php +++ b/sources/AppBundle/Site/Model/Rubrique.php @@ -173,7 +173,7 @@ public function getPagination() public function setPagination($pagination = 0): void { - $pagination = is_null($pagination) ? 0 : $pagination; + $pagination ??= 0; $this->propertyChanged('pagination', $this->pagination, $pagination); $this->pagination = $pagination; } diff --git a/sources/AppBundle/SpeakerInfos/Form/SpeakersMicrophoneType.php b/sources/AppBundle/SpeakerInfos/Form/SpeakersMicrophoneType.php index 49d6a5e7c..2d63205f3 100644 --- a/sources/AppBundle/SpeakerInfos/Form/SpeakersMicrophoneType.php +++ b/sources/AppBundle/SpeakerInfos/Form/SpeakersMicrophoneType.php @@ -21,7 +21,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'label' => 'speaker_infos.microphone.label', 'expanded' => true, 'placeholder' => 'speaker_infos.microphone.placeholder', - 'choice_label' => fn(MicrophoneType $type) => match ($type) { + 'choice_label' => fn(MicrophoneType $type): string => match ($type) { MicrophoneType::Headset => 'speaker_infos.microphone.choice.headset', MicrophoneType::Handheld => 'speaker_infos.microphone.choice.handheld', }, diff --git a/sources/AppBundle/StaticAnalysis/Rule/DoctrineDisableDQLRule.php b/sources/AppBundle/StaticAnalysis/Rule/DoctrineDisableDQLRule.php index 280b27745..3b23a96b4 100644 --- a/sources/AppBundle/StaticAnalysis/Rule/DoctrineDisableDQLRule.php +++ b/sources/AppBundle/StaticAnalysis/Rule/DoctrineDisableDQLRule.php @@ -4,6 +4,7 @@ namespace AppBundle\StaticAnalysis\Rule; +use PhpParser\Node\Identifier; use Doctrine\ORM\EntityManagerInterface; use PhpParser\Node; use PhpParser\Node\Expr\MethodCall; @@ -33,7 +34,7 @@ public function getNodeType(): string public function processNode(Node $node, Scope $scope): array { - if (!$node->name instanceof Node\Identifier) { + if (!$node->name instanceof Identifier) { return []; } diff --git a/sources/AppBundle/StaticAnalysis/Rule/DoctrineRepositoryRule.php b/sources/AppBundle/StaticAnalysis/Rule/DoctrineRepositoryRule.php index 2d95bd75e..8042f5d80 100644 --- a/sources/AppBundle/StaticAnalysis/Rule/DoctrineRepositoryRule.php +++ b/sources/AppBundle/StaticAnalysis/Rule/DoctrineRepositoryRule.php @@ -4,6 +4,7 @@ namespace AppBundle\StaticAnalysis\Rule; +use PhpParser\Node\Identifier; use Doctrine\ORM\EntityRepository; use PhpParser\Node; use PhpParser\Node\Expr\MethodCall; @@ -44,7 +45,7 @@ public function getNodeType(): string public function processNode(Node $node, Scope $scope): array { - if (!$node->name instanceof Node\Identifier) { + if (!$node->name instanceof Identifier) { return []; } diff --git a/sources/AppBundle/StaticAnalysis/Rule/NoGetUserMethodRule.php b/sources/AppBundle/StaticAnalysis/Rule/NoGetUserMethodRule.php index 80d0bcbc7..8606aca5c 100644 --- a/sources/AppBundle/StaticAnalysis/Rule/NoGetUserMethodRule.php +++ b/sources/AppBundle/StaticAnalysis/Rule/NoGetUserMethodRule.php @@ -4,6 +4,7 @@ namespace AppBundle\StaticAnalysis\Rule; +use PhpParser\Node\Identifier; use AppBundle\Security\Authentication; use PhpParser\Node; use PhpParser\Node\Expr\MethodCall; @@ -32,7 +33,7 @@ public function getNodeType(): string public function processNode(Node $node, Scope $scope): array { - if (!$node->name instanceof Node\Identifier) { + if (!$node->name instanceof Identifier) { return []; } diff --git a/sources/AppBundle/SuperApero/Entity/Repository/SuperAperoRepository.php b/sources/AppBundle/SuperApero/Entity/Repository/SuperAperoRepository.php index 4635e2899..38e708112 100644 --- a/sources/AppBundle/SuperApero/Entity/Repository/SuperAperoRepository.php +++ b/sources/AppBundle/SuperApero/Entity/Repository/SuperAperoRepository.php @@ -15,13 +15,9 @@ */ final class SuperAperoRepository extends EntityRepository { - private ClockInterface $clock; - - public function __construct(ManagerRegistry $registry, ClockInterface $clock) + public function __construct(ManagerRegistry $registry, private readonly ClockInterface $clock) { parent::__construct($registry, SuperApero::class); - - $this->clock = $clock; } /** diff --git a/sources/AppBundle/TechLetter/DataExtractor.php b/sources/AppBundle/TechLetter/DataExtractor.php index 9f6b97ec3..d3a08b1e1 100644 --- a/sources/AppBundle/TechLetter/DataExtractor.php +++ b/sources/AppBundle/TechLetter/DataExtractor.php @@ -62,7 +62,7 @@ public function extractDataForTechLetter($url): array $data['date'] = $date->format('Y-m-d'); } if (isset($schema['articleBody'])) { - $body = strip_tags($schema['articleBody']); + $body = strip_tags((string) $schema['articleBody']); $data['readingTime'] = floor(str_word_count($body) / self::WORD_READ_BY_MINUTES); } } diff --git a/sources/PlanetePHP/FeedArticleRepository.php b/sources/PlanetePHP/FeedArticleRepository.php index e5853c66c..f0509e51b 100644 --- a/sources/PlanetePHP/FeedArticleRepository.php +++ b/sources/PlanetePHP/FeedArticleRepository.php @@ -136,8 +136,8 @@ private function update(FeedArticle $billet, $id = null) private function insert(FeedArticle $billet) { - $statement = $this->connection->prepare('INSERT INTO afup_planete_billet - (afup_planete_flux_id, clef, titre, url, maj, auteur, resume, contenu, etat) + $statement = $this->connection->prepare('INSERT INTO afup_planete_billet + (afup_planete_flux_id, clef, titre, url, maj, auteur, resume, contenu, etat) VALUES (:feedId, :key, :title, :url, :update, :author, :summary, :content, :status)'); $statement->bindValue('feedId', $billet->feedId); diff --git a/sources/PlanetePHP/FeedRepository.php b/sources/PlanetePHP/FeedRepository.php index 523345730..63a78ff5a 100644 --- a/sources/PlanetePHP/FeedRepository.php +++ b/sources/PlanetePHP/FeedRepository.php @@ -95,7 +95,7 @@ public function delete(int $id): bool private function hydrateAll(array $rows): array { - return array_map(fn(array $row): Feed => $this->hydrate($row), $rows); + return array_map($this->hydrate(...), $rows); } private function hydrate(array $row): Feed diff --git a/tests/behat/bootstrap/PdfContext.php b/tests/behat/bootstrap/PdfContext.php index 4e87eca06..072b3dff2 100644 --- a/tests/behat/bootstrap/PdfContext.php +++ b/tests/behat/bootstrap/PdfContext.php @@ -63,7 +63,7 @@ public function thePageOfThePdfShouldNotContain(string $page, string $expectedCo $pageContent = $this->pdfPages[$page]; - if (str_contains($pageContent, $expectedContent)) { + if (str_contains((string) $pageContent, $expectedContent)) { throw new ExpectationException( sprintf('The content "%s" was not found in the content "%s"', $expectedContent, $pageContent), $this->minkContext->getSession()->getDriver(), diff --git a/tests/behat/bootstrap/WaitContext.php b/tests/behat/bootstrap/WaitContext.php index c40a8ec73..3bb04f16a 100644 --- a/tests/behat/bootstrap/WaitContext.php +++ b/tests/behat/bootstrap/WaitContext.php @@ -4,6 +4,7 @@ namespace Afup\Tests\Behat\Bootstrap; +use Behat\Mink\Driver\PantherDriver; use Behat\Mink\Exception\ExpectationException; use Behat\Step\Then; use Behat\Step\When; @@ -31,7 +32,7 @@ public function waitToSeeText(string $text, ?string $timeout = null): void $timeoutMs = $timeout !== null ? (int) $timeout : self::DEFAULT_TIMEOUT_MS; $this->waitForCondition( - fn() => str_contains($this->minkContext->getSession()->getPage()->getText(), $text), + fn(): bool => str_contains($this->minkContext->getSession()->getPage()->getText(), $text), sprintf('Text "%s" did not appear within %dms', $text, $timeoutMs), $timeoutMs, ); @@ -48,7 +49,7 @@ public function waitToNotSeeText(string $text, ?string $timeout = null): void $timeoutMs = $timeout !== null ? (int) $timeout : self::DEFAULT_TIMEOUT_MS; $this->waitForCondition( - fn() => !str_contains($this->minkContext->getSession()->getPage()->getText(), $text), + fn(): bool => !str_contains($this->minkContext->getSession()->getPage()->getText(), $text), sprintf('Text "%s" did not disappear within %dms', $text, $timeoutMs), $timeoutMs, ); @@ -81,12 +82,12 @@ public function clickLinkOfTooltipAndWaitToSee(string $tooltip, string $text, ?s $session = $this->minkContext->getSession(); - if ($session->getDriver() instanceof \Behat\Mink\Driver\PantherDriver) { + if ($session->getDriver() instanceof PantherDriver) { $link->click(); $timeoutMs = $timeout !== null ? (int) $timeout : self::DEFAULT_TIMEOUT_MS; $this->waitForCondition( - fn() => str_contains($session->getPage()->getContent(), $text), + fn(): bool => str_contains($session->getPage()->getContent(), $text), sprintf( 'Text "%s" did not appear within %dms. Current URL: %s. Page excerpt: %s', $text, @@ -120,7 +121,7 @@ private function waitForCondition(callable $condition, string $errorMessage, int if ($condition()) { return; } - } catch (\Exception $e) { + } catch (\Exception) { // Ignore exceptions during polling (element might not exist yet) } diff --git a/tests/stubs/phpstan/Doctrine/FormType.php b/tests/stubs/phpstan/Doctrine/FormType.php index c369b009e..2a6c6c471 100644 --- a/tests/stubs/phpstan/Doctrine/FormType.php +++ b/tests/stubs/phpstan/Doctrine/FormType.php @@ -4,6 +4,7 @@ namespace Afup\Tests\Stubs\PHPStan\Doctrine; +use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\EntityRepository; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; @@ -14,7 +15,7 @@ final class FormType extends AbstractType public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('stdclass', EntityType::class, [ - 'query_builder' => fn(EntityRepository $er) => $er->createQueryBuilder('foo')->where('foo.id = 1'), + 'query_builder' => fn(EntityRepository $er): QueryBuilder => $er->createQueryBuilder('foo')->where('foo.id = 1'), ]); } } From 494cf8f4258ba009d976d1d0adc87af17a172b4a Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 25 May 2026 21:51:27 +0200 Subject: [PATCH 02/11] const typing coverage 100% --- phpstan.neon | 3 +- sources/Afup/Corporate/Feuille.php | 12 ++-- sources/Afup/Forum/AppelConferencier.php | 2 +- sources/Afup/Utils/Mail.php | 2 +- sources/Afup/Utils/PDF_AG.php | 2 +- sources/Afup/Utils/Pays.php | 2 +- sources/Afup/Utils/Utils.php | 4 +- sources/Afup/Utils/Vat.php | 2 +- .../Association/Form/CompanyPublicProfile.php | 4 +- .../Association/Model/CompanyMember.php | 6 +- .../Model/CompanyMemberInvitation.php | 6 +- .../Model/GeneralMeetingQuestion.php | 6 +- .../Model/GeneralMeetingResponse.php | 6 +- .../Association/Model/GeneralMeetingVote.php | 6 +- sources/AppBundle/Association/Model/User.php | 20 +++---- .../UserMembership/BadgesComputer.php | 2 +- .../AppBundle/AuditLog/AuditLogRepository.php | 2 +- sources/AppBundle/CFP/PhotoStorage.php | 6 +- .../Compta/Importer/AutoQualifier.php | 8 +-- .../Compta/Importer/CreditMutuel.php | 2 +- .../Compta/Importer/CreditMutuelLivret.php | 2 +- .../Event/Facturation/ListFacturesAction.php | 4 +- .../RedirectEventFromSessionListener.php | 2 +- .../Admin/Event/SpecialPriceAction.php | 2 +- .../Members/GeneralMeeting/ListAction.php | 4 +- .../Admin/Speaker/SpeakerEditAction.php | 2 +- .../Admin/Speaker/SpeakerListAction.php | 4 +- .../Controller/Event/CFP/IndexAction.php | 2 +- .../Controller/Legacy/Forum2009Config.php | 4 +- .../Controller/Website/Global/HomeAction.php | 2 +- .../Controller/Website/Member/IndexAction.php | 2 +- .../Controller/Website/News/ListAction.php | 2 +- .../Controller/Website/PagerController.php | 2 +- .../Doctrine/Type/UnixTimestampType.php | 2 +- sources/AppBundle/Email/Mailer/MailUser.php | 4 +- sources/AppBundle/Event/Form/PurchaseType.php | 2 +- sources/AppBundle/Event/Form/SpeakerType.php | 4 +- sources/AppBundle/Event/Form/TalkType.php | 6 +- sources/AppBundle/Event/Form/TicketType.php | 6 +- .../Model/Repository/EventStatsRepository.php | 6 +- .../Repository/TicketEventTypeRepository.php | 6 +- sources/AppBundle/Event/Model/Speaker.php | 8 +-- sources/AppBundle/Event/Model/Talk.php | 32 +++++----- .../AppBundle/Event/Model/TalkInvitation.php | 4 +- sources/AppBundle/Event/Model/Ticket.php | 58 +++++++++---------- sources/AppBundle/Event/Model/TicketType.php | 4 +- .../Event/Ticket/TicketTypeAvailability.php | 6 +- .../Indexation/Meetups/MeetupClient.php | 4 +- .../Indexation/Meetups/Transformer.php | 2 +- sources/AppBundle/Mailchimp/Mailchimp.php | 2 +- sources/AppBundle/Model/ComptaCategorie.php | 16 ++--- sources/AppBundle/Model/ComptaCompte.php | 6 +- sources/AppBundle/Model/ComptaEvenement.php | 4 +- .../AppBundle/Model/ComptaModeReglement.php | 8 +-- sources/AppBundle/Offices/OfficeFinder.php | 2 +- sources/AppBundle/Payment/Paybox.php | 20 +++---- sources/AppBundle/Payment/PayboxResponse.php | 8 +-- .../Security/ActionThrottling/Log.php | 4 +- sources/AppBundle/Site/Entity/Rubrique.php | 10 ++-- sources/AppBundle/Site/Form/ArticleType.php | 2 +- sources/AppBundle/Site/Form/FeuilleType.php | 2 +- sources/AppBundle/Site/Form/RubriqueType.php | 2 +- sources/AppBundle/Site/Model/Rubrique.php | 10 ++-- sources/AppBundle/Slack/UsersChecker.php | 2 +- sources/AppBundle/Slack/UsersClient.php | 2 +- .../Form/HotelReservationType.php | 4 +- .../SpeakerInfos/Form/TravelSponsorType.php | 4 +- .../Rule/DoctrineRepositoryRule.php | 2 +- .../Rule/NoDebugFunctionsRule.php | 2 +- .../AppBundle/TechLetter/DataExtractor.php | 2 +- sources/AppBundle/TechLetter/HtmlParser.php | 4 +- .../AppBundle/TechLetter/Model/Article.php | 2 +- sources/AppBundle/VideoNotifier/Engine.php | 2 +- sources/PlanetePHP/FeedArticleRepository.php | 6 +- 74 files changed, 209 insertions(+), 210 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index 4963981f1..df3e757b0 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -16,8 +16,7 @@ parameters: return: 71 param: 71 property: 45 - # since PHP 8.3 - # constant: 30 + constant: 100 doctrine: ormRepositoryClass: AppBundle\Doctrine\EntityRepository diff --git a/sources/Afup/Corporate/Feuille.php b/sources/Afup/Corporate/Feuille.php index ae7d588c4..81a3a65a1 100644 --- a/sources/Afup/Corporate/Feuille.php +++ b/sources/Afup/Corporate/Feuille.php @@ -6,10 +6,10 @@ class Feuille { - public const ID_FEUILLE_ANTENNES = 71; - public const ID_FEUILLE_ASSOCIATION = 74; - public const ID_FEUILLE_COLONNE_DROITE = 1; - public const ID_FEUILLE_HEADER = 21; - public const ID_FEUILLE_FOOTER = 38; - public const ID_FEUILLE_NOS_ACTIONS = 96; + public const int ID_FEUILLE_ANTENNES = 71; + public const int ID_FEUILLE_ASSOCIATION = 74; + public const int ID_FEUILLE_COLONNE_DROITE = 1; + public const int ID_FEUILLE_HEADER = 21; + public const int ID_FEUILLE_FOOTER = 38; + public const int ID_FEUILLE_NOS_ACTIONS = 96; } diff --git a/sources/Afup/Forum/AppelConferencier.php b/sources/Afup/Forum/AppelConferencier.php index be1a1c3d4..df8b1c076 100644 --- a/sources/Afup/Forum/AppelConferencier.php +++ b/sources/Afup/Forum/AppelConferencier.php @@ -9,7 +9,7 @@ class AppelConferencier { - public const DEFAULT_JOURNEE = 0; + public const int DEFAULT_JOURNEE = 0; public function __construct(private readonly Base_De_Donnees $_bdd) {} diff --git a/sources/Afup/Utils/Mail.php b/sources/Afup/Utils/Mail.php index 9e4d7ede7..c9c6017c5 100644 --- a/sources/Afup/Utils/Mail.php +++ b/sources/Afup/Utils/Mail.php @@ -12,7 +12,7 @@ class Mail { - public const PROJECT_DIR = __DIR__ . '/../../..'; + public const string PROJECT_DIR = __DIR__ . '/../../..'; public static function createMailer(): Mailer { diff --git a/sources/Afup/Utils/PDF_AG.php b/sources/Afup/Utils/PDF_AG.php index 48c5d6a35..3adafe3a2 100644 --- a/sources/Afup/Utils/PDF_AG.php +++ b/sources/Afup/Utils/PDF_AG.php @@ -9,7 +9,7 @@ class PDF_AG extends PDF { - public const CELL_HEIGHT = 7; + public const int CELL_HEIGHT = 7; private $footerTitle = ''; /** diff --git a/sources/Afup/Utils/Pays.php b/sources/Afup/Utils/Pays.php index 6f8fdad2c..af6c28b67 100644 --- a/sources/Afup/Utils/Pays.php +++ b/sources/Afup/Utils/Pays.php @@ -11,7 +11,7 @@ */ class Pays { - public const DEFAULT_ID = 'FR'; + public const string DEFAULT_ID = 'FR'; public function __construct(private readonly CountryRepository $countryRepository) {} diff --git a/sources/Afup/Utils/Utils.php b/sources/Afup/Utils/Utils.php index 38ad2e607..33da55806 100644 --- a/sources/Afup/Utils/Utils.php +++ b/sources/Afup/Utils/Utils.php @@ -13,8 +13,8 @@ */ class Utils { - public const TICKETING_VAT_RATE = 0.1; - public const MEMBERSHIP_FEE_VAT_RATE = 0.2; + public const float TICKETING_VAT_RATE = 0.1; + public const float MEMBERSHIP_FEE_VAT_RATE = 0.2; public static function fabriqueDroits(TokenStorageInterface $tokenStorage, AuthorizationCheckerInterface $authorizationChecker): Droits { diff --git a/sources/Afup/Utils/Vat.php b/sources/Afup/Utils/Vat.php index 6e98f4cab..f7eb96419 100644 --- a/sources/Afup/Utils/Vat.php +++ b/sources/Afup/Utils/Vat.php @@ -6,7 +6,7 @@ class Vat { - public const VAT_APPLICATION_DATE = "2024-01-01"; + public const string VAT_APPLICATION_DATE = "2024-01-01"; public static function isSubjectedToVat(\DateTimeInterface $date): bool { diff --git a/sources/AppBundle/Association/Form/CompanyPublicProfile.php b/sources/AppBundle/Association/Form/CompanyPublicProfile.php index d4d6e0036..775b87f77 100644 --- a/sources/AppBundle/Association/Form/CompanyPublicProfile.php +++ b/sources/AppBundle/Association/Form/CompanyPublicProfile.php @@ -24,8 +24,8 @@ class CompanyPublicProfile extends AbstractType { - public const DESCRIPTION_MAX_LENGTH = 2000; - public const MEMBERSHIP_REASON_MAX_LENGTH = 150; + public const int DESCRIPTION_MAX_LENGTH = 2000; + public const int MEMBERSHIP_REASON_MAX_LENGTH = 150; public function __construct(private readonly AntenneRepository $antennesRepository) {} diff --git a/sources/AppBundle/Association/Model/CompanyMember.php b/sources/AppBundle/Association/Model/CompanyMember.php index abb3b90af..bb6e65fbf 100644 --- a/sources/AppBundle/Association/Model/CompanyMember.php +++ b/sources/AppBundle/Association/Model/CompanyMember.php @@ -13,9 +13,9 @@ class CompanyMember implements NotifyPropertyInterface { use NotifyProperty; - public const STATUS_PENDING = -1; - public const STATUS_ACTIVE = 1; - public const STATUS_INACTIVE = 0; + public const int STATUS_PENDING = -1; + public const int STATUS_ACTIVE = 1; + public const int STATUS_INACTIVE = 0; /** * @var int diff --git a/sources/AppBundle/Association/Model/CompanyMemberInvitation.php b/sources/AppBundle/Association/Model/CompanyMemberInvitation.php index d5e8764a1..c856c45b4 100644 --- a/sources/AppBundle/Association/Model/CompanyMemberInvitation.php +++ b/sources/AppBundle/Association/Model/CompanyMemberInvitation.php @@ -12,9 +12,9 @@ class CompanyMemberInvitation implements NotifyPropertyInterface { use NotifyProperty; - public const STATUS_PENDING = 0; - public const STATUS_ACCEPTED = 1; - public const STATUS_CANCELLED = 2; + public const int STATUS_PENDING = 0; + public const int STATUS_ACCEPTED = 1; + public const int STATUS_CANCELLED = 2; private int $id; diff --git a/sources/AppBundle/Association/Model/GeneralMeetingQuestion.php b/sources/AppBundle/Association/Model/GeneralMeetingQuestion.php index 0f346536b..e80d52217 100644 --- a/sources/AppBundle/Association/Model/GeneralMeetingQuestion.php +++ b/sources/AppBundle/Association/Model/GeneralMeetingQuestion.php @@ -11,9 +11,9 @@ class GeneralMeetingQuestion implements NotifyPropertyInterface { use NotifyProperty; - public const STATUS_WAITING = 'waiting'; - public const STATUS_OPENED = 'opened'; - public const STATUS_CLOSED = 'closed'; + public const string STATUS_WAITING = 'waiting'; + public const string STATUS_OPENED = 'opened'; + public const string STATUS_CLOSED = 'closed'; /** * @var int diff --git a/sources/AppBundle/Association/Model/GeneralMeetingResponse.php b/sources/AppBundle/Association/Model/GeneralMeetingResponse.php index 65570a9e8..b23849e71 100644 --- a/sources/AppBundle/Association/Model/GeneralMeetingResponse.php +++ b/sources/AppBundle/Association/Model/GeneralMeetingResponse.php @@ -11,9 +11,9 @@ class GeneralMeetingResponse implements NotifyPropertyInterface { use NotifyProperty; - public const STATUS_PENDING = 0; - public const STATUS_PRESENT = 1; - public const STATUS_NON_PRESENT = 2; + public const int STATUS_PENDING = 0; + public const int STATUS_PRESENT = 1; + public const int STATUS_NON_PRESENT = 2; /** * @var int diff --git a/sources/AppBundle/Association/Model/GeneralMeetingVote.php b/sources/AppBundle/Association/Model/GeneralMeetingVote.php index d29afcefe..4586d87ad 100644 --- a/sources/AppBundle/Association/Model/GeneralMeetingVote.php +++ b/sources/AppBundle/Association/Model/GeneralMeetingVote.php @@ -11,9 +11,9 @@ class GeneralMeetingVote implements NotifyPropertyInterface { use NotifyProperty; - public const VALUE_YES = 'oui'; - public const VALUE_NO = 'non'; - public const VALUE_ABSTENTION = 'abstention'; + public const string VALUE_YES = 'oui'; + public const string VALUE_NO = 'non'; + public const string VALUE_ABSTENTION = 'abstention'; /** * @var int diff --git a/sources/AppBundle/Association/Model/User.php b/sources/AppBundle/Association/Model/User.php index cb512e021..27865c70c 100644 --- a/sources/AppBundle/Association/Model/User.php +++ b/sources/AppBundle/Association/Model/User.php @@ -20,19 +20,19 @@ class User implements NotifyPropertyInterface, NotifiableInterface, UserInterfac { use NotifyProperty; - public const LEVEL_MEMBER = 0; - public const LEVEL_WRITER = 1; - public const LEVEL_ADMIN = 2; + public const int LEVEL_MEMBER = 0; + public const int LEVEL_WRITER = 1; + public const int LEVEL_ADMIN = 2; - public const STATUS_PENDING = -1; - public const STATUS_ACTIVE = 1; - public const STATUS_INACTIVE = 0; + public const int STATUS_PENDING = -1; + public const int STATUS_ACTIVE = 1; + public const int STATUS_INACTIVE = 0; - public const SLACK_INVITE_STATUS_NONE = 0; - public const SLACK_INVITE_STATUS_REQUESTED = 1; + public const int SLACK_INVITE_STATUS_NONE = 0; + public const int SLACK_INVITE_STATUS_REQUESTED = 1; - public const CIVILITE_M = 0; - public const CIVILITE_MME = 1; + public const int CIVILITE_M = 0; + public const int CIVILITE_MME = 1; /** * @var int diff --git a/sources/AppBundle/Association/UserMembership/BadgesComputer.php b/sources/AppBundle/Association/UserMembership/BadgesComputer.php index b1e94cb75..35a236a39 100644 --- a/sources/AppBundle/Association/UserMembership/BadgesComputer.php +++ b/sources/AppBundle/Association/UserMembership/BadgesComputer.php @@ -12,7 +12,7 @@ class BadgesComputer { - private const MAX_BADGES_SENIORITY = 29; + private const int MAX_BADGES_SENIORITY = 29; public function __construct( private readonly SeniorityComputer $seniorityComputer, diff --git a/sources/AppBundle/AuditLog/AuditLogRepository.php b/sources/AppBundle/AuditLog/AuditLogRepository.php index e601c2e98..932bc41a1 100644 --- a/sources/AppBundle/AuditLog/AuditLogRepository.php +++ b/sources/AppBundle/AuditLog/AuditLogRepository.php @@ -11,7 +11,7 @@ final readonly class AuditLogRepository { - private const ITEMS_PER_PAGE = 10; + private const int ITEMS_PER_PAGE = 10; public function __construct( private Connection $connection, diff --git a/sources/AppBundle/CFP/PhotoStorage.php b/sources/AppBundle/CFP/PhotoStorage.php index 4c81037dd..89be053ce 100644 --- a/sources/AppBundle/CFP/PhotoStorage.php +++ b/sources/AppBundle/CFP/PhotoStorage.php @@ -18,10 +18,10 @@ { private Filesystem $filesystem; - public const DIR_ORIGINAL = 'originals'; - public const DIR_THUMBS = 'thumbnails'; + public const string DIR_ORIGINAL = 'originals'; + public const string DIR_THUMBS = 'thumbnails'; - public const FORMAT = [ + public const array FORMAT = [ 'originals' => ['width' => 1000, 'height' => 1000], 'thumbnails' => ['width' => 90, 'height' => 120], ]; diff --git a/sources/AppBundle/Compta/Importer/AutoQualifier.php b/sources/AppBundle/Compta/Importer/AutoQualifier.php index 8019b2651..df7492ec1 100644 --- a/sources/AppBundle/Compta/Importer/AutoQualifier.php +++ b/sources/AppBundle/Compta/Importer/AutoQualifier.php @@ -10,10 +10,10 @@ class AutoQualifier { - public const DEFAULT_CATEGORIE = 26; // "A déterminer" - public const DEFAULT_EVENEMENT = 8; // "A déterminer" - public const DEFAULT_REGLEMENT = 9; - public const DEFAULT_ATTACHMENT = 0; + public const int DEFAULT_CATEGORIE = 26; // "A déterminer" + public const int DEFAULT_EVENEMENT = 8; // "A déterminer" + public const int DEFAULT_REGLEMENT = 9; + public const int DEFAULT_ATTACHMENT = 0; /** * @param array $rules diff --git a/sources/AppBundle/Compta/Importer/CreditMutuel.php b/sources/AppBundle/Compta/Importer/CreditMutuel.php index 6fce7a3e4..e1367314d 100644 --- a/sources/AppBundle/Compta/Importer/CreditMutuel.php +++ b/sources/AppBundle/Compta/Importer/CreditMutuel.php @@ -9,7 +9,7 @@ class CreditMutuel implements Importer { - public const CODE = 'CMUT'; + public const string CODE = 'CMUT'; private ?\SplFileObject $file = null; diff --git a/sources/AppBundle/Compta/Importer/CreditMutuelLivret.php b/sources/AppBundle/Compta/Importer/CreditMutuelLivret.php index b9102a561..4e9f457e5 100644 --- a/sources/AppBundle/Compta/Importer/CreditMutuelLivret.php +++ b/sources/AppBundle/Compta/Importer/CreditMutuelLivret.php @@ -8,7 +8,7 @@ class CreditMutuelLivret extends CreditMutuel { - public const CODE = 'CMUTLIVRET'; + public const string CODE = 'CMUTLIVRET'; public function getCompteId(): int { diff --git a/sources/AppBundle/Controller/Admin/Event/Facturation/ListFacturesAction.php b/sources/AppBundle/Controller/Admin/Event/Facturation/ListFacturesAction.php index 68f21892c..d8e8ad5db 100644 --- a/sources/AppBundle/Controller/Admin/Event/Facturation/ListFacturesAction.php +++ b/sources/AppBundle/Controller/Admin/Event/Facturation/ListFacturesAction.php @@ -13,8 +13,8 @@ class ListFacturesAction extends AbstractController { - public const VALID_SORTS = ['date_facture', 'reference', 'societe', 'montant', 'etat', 'facturation']; - public const VALID_DIRECTIONS = ['asc', 'desc']; + public const array VALID_SORTS = ['date_facture', 'reference', 'societe', 'montant', 'etat', 'facturation']; + public const array VALID_DIRECTIONS = ['asc', 'desc']; public function __construct(private readonly InvoiceRepository $invoiceRepository) {} diff --git a/sources/AppBundle/Controller/Admin/Event/RedirectEventFromSessionListener.php b/sources/AppBundle/Controller/Admin/Event/RedirectEventFromSessionListener.php index b4e0833c7..bdc818161 100644 --- a/sources/AppBundle/Controller/Admin/Event/RedirectEventFromSessionListener.php +++ b/sources/AppBundle/Controller/Admin/Event/RedirectEventFromSessionListener.php @@ -13,7 +13,7 @@ #[AsEventListener] final readonly class RedirectEventFromSessionListener { - public const SESSION_KEY = 'event_selector_current_id'; + public const string SESSION_KEY = 'event_selector_current_id'; public function __construct( private UrlGeneratorInterface $urlGenerator, diff --git a/sources/AppBundle/Controller/Admin/Event/SpecialPriceAction.php b/sources/AppBundle/Controller/Admin/Event/SpecialPriceAction.php index 3ca87b934..dadf96393 100644 --- a/sources/AppBundle/Controller/Admin/Event/SpecialPriceAction.php +++ b/sources/AppBundle/Controller/Admin/Event/SpecialPriceAction.php @@ -16,7 +16,7 @@ class SpecialPriceAction extends AbstractController { - public const EXTEND_DAYS = 3; // jours + public const int EXTEND_DAYS = 3; // jours public function __construct( private readonly TicketSpecialPriceRepository $ticketSpecialPriceRepository, diff --git a/sources/AppBundle/Controller/Admin/Members/GeneralMeeting/ListAction.php b/sources/AppBundle/Controller/Admin/Members/GeneralMeeting/ListAction.php index c38e74517..c46050074 100644 --- a/sources/AppBundle/Controller/Admin/Members/GeneralMeeting/ListAction.php +++ b/sources/AppBundle/Controller/Admin/Members/GeneralMeeting/ListAction.php @@ -13,8 +13,8 @@ class ListAction { - public const VALID_SORTS = ['nom', 'date_consultation', 'presence', 'personnes_avec_pouvoir_nom']; - public const VALID_DIRECTIONS = ['asc', 'desc']; + public const array VALID_SORTS = ['nom', 'date_consultation', 'presence', 'personnes_avec_pouvoir_nom']; + public const array VALID_DIRECTIONS = ['asc', 'desc']; public function __construct( private readonly UserRepository $userRepository, diff --git a/sources/AppBundle/Controller/Admin/Speaker/SpeakerEditAction.php b/sources/AppBundle/Controller/Admin/Speaker/SpeakerEditAction.php index 8b85eee0a..d906d0d88 100644 --- a/sources/AppBundle/Controller/Admin/Speaker/SpeakerEditAction.php +++ b/sources/AppBundle/Controller/Admin/Speaker/SpeakerEditAction.php @@ -19,7 +19,7 @@ class SpeakerEditAction extends AbstractController { - public const ID_FORUM_PHOTO_STORAGE = 16; + public const int ID_FORUM_PHOTO_STORAGE = 16; public function __construct( private readonly SpeakerRepository $speakerRepository, diff --git a/sources/AppBundle/Controller/Admin/Speaker/SpeakerListAction.php b/sources/AppBundle/Controller/Admin/Speaker/SpeakerListAction.php index 1af33a6e9..e78dbe529 100644 --- a/sources/AppBundle/Controller/Admin/Speaker/SpeakerListAction.php +++ b/sources/AppBundle/Controller/Admin/Speaker/SpeakerListAction.php @@ -17,8 +17,8 @@ class SpeakerListAction { - public const VALID_SORTS = ['name', 'company']; - public const VALID_DIRECTIONS = ['asc', 'desc']; + public const array VALID_SORTS = ['name', 'company']; + public const array VALID_DIRECTIONS = ['asc', 'desc']; public function __construct( private readonly EventRepository $eventRepository, diff --git a/sources/AppBundle/Controller/Event/CFP/IndexAction.php b/sources/AppBundle/Controller/Event/CFP/IndexAction.php index c19868817..0f5b8540c 100644 --- a/sources/AppBundle/Controller/Event/CFP/IndexAction.php +++ b/sources/AppBundle/Controller/Event/CFP/IndexAction.php @@ -19,7 +19,7 @@ class IndexAction extends AbstractController { - public const MAX_EVENTS_HISTORY = 50; + public const int MAX_EVENTS_HISTORY = 50; public function __construct( private readonly EventActionHelper $eventActionHelper, diff --git a/sources/AppBundle/Controller/Legacy/Forum2009Config.php b/sources/AppBundle/Controller/Legacy/Forum2009Config.php index b0d49b60c..340fe46b4 100644 --- a/sources/AppBundle/Controller/Legacy/Forum2009Config.php +++ b/sources/AppBundle/Controller/Legacy/Forum2009Config.php @@ -6,6 +6,6 @@ interface Forum2009Config { - public const ID = 4; - public const PROJECT_IDS = [353, 354, 355, 356, 357, 358, 359, 361, 362, 363, 364, 366]; + public const int ID = 4; + public const array PROJECT_IDS = [353, 354, 355, 356, 357, 358, 359, 361, 362, 363, 364, 366]; } diff --git a/sources/AppBundle/Controller/Website/Global/HomeAction.php b/sources/AppBundle/Controller/Website/Global/HomeAction.php index 3e9c7408c..476286ee7 100644 --- a/sources/AppBundle/Controller/Website/Global/HomeAction.php +++ b/sources/AppBundle/Controller/Website/Global/HomeAction.php @@ -22,7 +22,7 @@ final class HomeAction extends AbstractController { - public const MAX_MEETUPS = 10; + public const int MAX_MEETUPS = 10; public function __construct( private readonly ViewRenderer $view, diff --git a/sources/AppBundle/Controller/Website/Member/IndexAction.php b/sources/AppBundle/Controller/Website/Member/IndexAction.php index d5ac0ed0f..8779a95b4 100644 --- a/sources/AppBundle/Controller/Website/Member/IndexAction.php +++ b/sources/AppBundle/Controller/Website/Member/IndexAction.php @@ -17,7 +17,7 @@ final class IndexAction extends AbstractController { - public const DAYS_BEFORE_CALL_TO_UPDATE = 15; + public const int DAYS_BEFORE_CALL_TO_UPDATE = 15; public function __construct( private readonly ViewRenderer $view, diff --git a/sources/AppBundle/Controller/Website/News/ListAction.php b/sources/AppBundle/Controller/Website/News/ListAction.php index 953276322..8047c071e 100644 --- a/sources/AppBundle/Controller/Website/News/ListAction.php +++ b/sources/AppBundle/Controller/Website/News/ListAction.php @@ -13,7 +13,7 @@ final class ListAction extends AbstractController { - public const ARTICLES_PER_PAGE = 5; + public const int ARTICLES_PER_PAGE = 5; public function __construct( private readonly ViewRenderer $view, diff --git a/sources/AppBundle/Controller/Website/PagerController.php b/sources/AppBundle/Controller/Website/PagerController.php index 59beb89a9..9ca7f2ad6 100644 --- a/sources/AppBundle/Controller/Website/PagerController.php +++ b/sources/AppBundle/Controller/Website/PagerController.php @@ -10,7 +10,7 @@ class PagerController extends AbstractController { - public const PAGER_LINKS_COUNT = 6; + public const int PAGER_LINKS_COUNT = 6; public function display(Request $request): Response { diff --git a/sources/AppBundle/Doctrine/Type/UnixTimestampType.php b/sources/AppBundle/Doctrine/Type/UnixTimestampType.php index 8e4b4184e..2ea4a156e 100644 --- a/sources/AppBundle/Doctrine/Type/UnixTimestampType.php +++ b/sources/AppBundle/Doctrine/Type/UnixTimestampType.php @@ -10,7 +10,7 @@ class UnixTimestampType extends Type { - public const NAME = 'unix_timestamp'; + public const string NAME = 'unix_timestamp'; public function getSQLDeclaration(array $column, AbstractPlatform $platform): string { diff --git a/sources/AppBundle/Email/Mailer/MailUser.php b/sources/AppBundle/Email/Mailer/MailUser.php index e064e4dfa..bc35d3b88 100644 --- a/sources/AppBundle/Email/Mailer/MailUser.php +++ b/sources/AppBundle/Email/Mailer/MailUser.php @@ -6,8 +6,8 @@ class MailUser { - public const DEFAULT_SENDER_NAME = 'Bureau AFUP'; - public const DEFAULT_SENDER_EMAIL = 'bureau@afup.org'; + public const string DEFAULT_SENDER_NAME = 'Bureau AFUP'; + public const string DEFAULT_SENDER_EMAIL = 'bureau@afup.org'; /** * @param string $email diff --git a/sources/AppBundle/Event/Form/PurchaseType.php b/sources/AppBundle/Event/Form/PurchaseType.php index 0a51d9365..3f6b3e263 100644 --- a/sources/AppBundle/Event/Form/PurchaseType.php +++ b/sources/AppBundle/Event/Form/PurchaseType.php @@ -23,7 +23,7 @@ class PurchaseType extends AbstractType { - public const MAX_NB_PERSONNES = 15; + public const int MAX_NB_PERSONNES = 15; public function __construct( private readonly Pays $country, diff --git a/sources/AppBundle/Event/Form/SpeakerType.php b/sources/AppBundle/Event/Form/SpeakerType.php index e5fcd285f..ea4acce3c 100644 --- a/sources/AppBundle/Event/Form/SpeakerType.php +++ b/sources/AppBundle/Event/Form/SpeakerType.php @@ -27,8 +27,8 @@ class SpeakerType extends AbstractType { - public const OPT_PHOTO_REQUIRED = 'photo_required'; - public const OPT_USER_GITHUB = 'user_github'; + public const string OPT_PHOTO_REQUIRED = 'photo_required'; + public const string OPT_USER_GITHUB = 'user_github'; public function __construct( private readonly GithubUserRepository $githubUserRepository, diff --git a/sources/AppBundle/Event/Form/TalkType.php b/sources/AppBundle/Event/Form/TalkType.php index 5bd7889ee..d25138547 100644 --- a/sources/AppBundle/Event/Form/TalkType.php +++ b/sources/AppBundle/Event/Form/TalkType.php @@ -15,9 +15,9 @@ class TalkType extends AbstractType { - public const OPT_COC_CHECKED = 'codeOfConductChecked'; - public const OPT_SELECTION_ACKNOWLEDGEMENT_CHECKED = 'selectionAcknowledgementChecked'; - public const IS_AFUP_DAY = 'isAfupDay'; + public const string OPT_COC_CHECKED = 'codeOfConductChecked'; + public const string OPT_SELECTION_ACKNOWLEDGEMENT_CHECKED = 'selectionAcknowledgementChecked'; + public const string IS_AFUP_DAY = 'isAfupDay'; public function buildForm(FormBuilderInterface $builder, array $options): void { diff --git a/sources/AppBundle/Event/Form/TicketType.php b/sources/AppBundle/Event/Form/TicketType.php index cd16e2eca..6709e1bc7 100644 --- a/sources/AppBundle/Event/Form/TicketType.php +++ b/sources/AppBundle/Event/Form/TicketType.php @@ -25,9 +25,9 @@ class TicketType extends AbstractType { - public const MEMBER_NOT = 0; - public const MEMBER_PERSONAL = 1; - public const MEMBER_CORPORATE = 2; + public const int MEMBER_NOT = 0; + public const int MEMBER_PERSONAL = 1; + public const int MEMBER_CORPORATE = 2; public function __construct( private readonly EventRepository $eventRepository, diff --git a/sources/AppBundle/Event/Model/Repository/EventStatsRepository.php b/sources/AppBundle/Event/Model/Repository/EventStatsRepository.php index 2e289a2f4..0ba20ae13 100644 --- a/sources/AppBundle/Event/Model/Repository/EventStatsRepository.php +++ b/sources/AppBundle/Event/Model/Repository/EventStatsRepository.php @@ -16,9 +16,9 @@ class EventStatsRepository { - private const DAY_ONE = 'one'; - private const DAY_TWO = 'two'; - private const DAYS = [self::DAY_ONE, self::DAY_TWO]; + private const string DAY_ONE = 'one'; + private const string DAY_TWO = 'two'; + private const array DAYS = [self::DAY_ONE, self::DAY_TWO]; public function __construct( private readonly Connection $connection, diff --git a/sources/AppBundle/Event/Model/Repository/TicketEventTypeRepository.php b/sources/AppBundle/Event/Model/Repository/TicketEventTypeRepository.php index e3b14bf7f..429ba9ec7 100644 --- a/sources/AppBundle/Event/Model/Repository/TicketEventTypeRepository.php +++ b/sources/AppBundle/Event/Model/Repository/TicketEventTypeRepository.php @@ -19,9 +19,9 @@ */ class TicketEventTypeRepository extends Repository implements MetadataInitializer { - public const REMOVE_PAST_TICKETS = 1; - public const REMOVE_FUTURE_TICKETS = 2; - public const ACTUAL_TICKETS_ONLY = 3; // Combination of REMOVE_PAST_TICKETS and REMOVE_FUTURE_TICKETS + public const int REMOVE_PAST_TICKETS = 1; + public const int REMOVE_FUTURE_TICKETS = 2; + public const int ACTUAL_TICKETS_ONLY = 3; // Combination of REMOVE_PAST_TICKETS and REMOVE_FUTURE_TICKETS /** * @param bool $publicOnly * @param null|int $datesFilter can be one of self::REMOVE_PAST_TICKETS, self::REMOVE_FUTURE_TICKETS. self::ACTUAL_TICKETS == self::REMOVE_PAST_TICKETS | self::REMOVE_FUTURE_TICKETS. Default value is ACTUAL_TICKETS diff --git a/sources/AppBundle/Event/Model/Speaker.php b/sources/AppBundle/Event/Model/Speaker.php index d686aefbf..528535895 100644 --- a/sources/AppBundle/Event/Model/Speaker.php +++ b/sources/AppBundle/Event/Model/Speaker.php @@ -15,11 +15,11 @@ class Speaker implements NotifyPropertyInterface { use NotifyProperty; - public const NIGHT_BEFORE = 'before'; - public const NIGHT_BETWEEN = 'between'; - public const NIGHT_AFTER = 'after'; + public const string NIGHT_BEFORE = 'before'; + public const string NIGHT_BETWEEN = 'between'; + public const string NIGHT_AFTER = 'after'; - private const LINKEDIN_URL_PREFIX = "https://www.linkedin.com/in/"; + private const string LINKEDIN_URL_PREFIX = "https://www.linkedin.com/in/"; private ?int $id = null; diff --git a/sources/AppBundle/Event/Model/Talk.php b/sources/AppBundle/Event/Model/Talk.php index 49ae8b264..dde1ffd86 100644 --- a/sources/AppBundle/Event/Model/Talk.php +++ b/sources/AppBundle/Event/Model/Talk.php @@ -13,22 +13,22 @@ class Talk implements NotifyPropertyInterface { use NotifyProperty; - public const TYPE_FULL_LONG = 1; - public const TYPE_FULL_SHORT = 3; - public const TYPE_WORKSHOP = 2; - public const TYPE_KEYNOTE = 4; - public const TYPE_LIGHTNING_TALK = 5; - public const TYPE_CLINIC = 6; - public const TYPE_PHP_PROJECT = 9; - public const TYPE_SPEAKER_INTRODUCTIONS = 7; - - public const SKILL_JUNIOR = 1; - public const SKILL_MEDIOR = 2; - public const SKILL_SENIOR = 3; - public const SKILL_NA = 0; - - public const LANGUAGE_CODE_FR = 'fr'; - public const LANGUAGE_CODE_EN = 'en'; + public const int TYPE_FULL_LONG = 1; + public const int TYPE_FULL_SHORT = 3; + public const int TYPE_WORKSHOP = 2; + public const int TYPE_KEYNOTE = 4; + public const int TYPE_LIGHTNING_TALK = 5; + public const int TYPE_CLINIC = 6; + public const int TYPE_PHP_PROJECT = 9; + public const int TYPE_SPEAKER_INTRODUCTIONS = 7; + + public const int SKILL_JUNIOR = 1; + public const int SKILL_MEDIOR = 2; + public const int SKILL_SENIOR = 3; + public const int SKILL_NA = 0; + + public const string LANGUAGE_CODE_FR = 'fr'; + public const string LANGUAGE_CODE_EN = 'en'; private ?int $id = null; diff --git a/sources/AppBundle/Event/Model/TalkInvitation.php b/sources/AppBundle/Event/Model/TalkInvitation.php index 26d5fcadc..1df4741c5 100644 --- a/sources/AppBundle/Event/Model/TalkInvitation.php +++ b/sources/AppBundle/Event/Model/TalkInvitation.php @@ -12,8 +12,8 @@ class TalkInvitation implements NotifyPropertyInterface { use NotifyProperty; - public const STATE_PENDING = 0; - public const STATE_ACCEPTED = 1; + public const int STATE_PENDING = 0; + public const int STATE_ACCEPTED = 1; /** * @var int diff --git a/sources/AppBundle/Event/Model/Ticket.php b/sources/AppBundle/Event/Model/Ticket.php index 30ef3995d..d937c9223 100644 --- a/sources/AppBundle/Event/Model/Ticket.php +++ b/sources/AppBundle/Event/Model/Ticket.php @@ -15,7 +15,7 @@ class Ticket implements NotifyPropertyInterface { use NotifyProperty; - public const TRANSPORT_MODES = [ + public const array TRANSPORT_MODES = [ AFUP_TRANSPORT_MODE_SEUL_THERMIQUE => 'Voiture seul·e', AFUP_TRANSPORT_MODE_SEUL_ELECTRIQUE => 'Voiture seul·e électrique', AFUP_TRANSPORT_MODE_SEUL_HYBRIDE => 'Voiture seul·e hybride', @@ -29,7 +29,7 @@ class Ticket implements NotifyPropertyInterface AFUP_TRANSPORT_MODE_COMMUN => 'Transports en commun', ]; - public const TRANSPORT_DISTANCES = [ + public const array TRANSPORT_DISTANCES = [ AFUP_TRANSPORT_DISTANCE_0 => '< 25 km', AFUP_TRANSPORT_DISTANCE_25_50 => 'entre 25 et 50 km', AFUP_TRANSPORT_DISTANCE_50_100 => 'entre 50 et 100 km', @@ -38,33 +38,33 @@ class Ticket implements NotifyPropertyInterface AFUP_TRANSPORT_DISTANCE_1000 => '> 1000 km', ]; - public const STATUS_CREATED = 0; - public const STATUS_CANCELLED = 1; - public const STATUS_ERROR = 2; - public const STATUS_DECLINED = 3; - public const STATUS_PAID = 4; - public const STATUS_GUEST = 5; - public const STATUS_WAITING = 6; - public const STATUS_CONFIRMED = 7; - public const STATUS_PAID_AFTER = 8; - - public const INVOICE_TODO = 0; - public const INVOICE_SENT = 1; - public const INVOICE_RECEIVED = 2; - - public const TYPE_ORGANIZATION = 9; - public const TYPE_SPONSOR = 10; - public const TYPE_PRESS = 11; - public const TYPE_SPEAKER = 12; - public const TYPE_SPECIAL_PRICE = 108; - - public const PAYMENT_CREDIT_CARD = 0; - public const PAYMENT_CHEQUE = 1; - public const PAYMENT_BANKWIRE = 2; - public const PAYMENT_NONE = 3; - - public const DAY_ONE = 'one'; - public const DAY_TWO = 'two'; + public const int STATUS_CREATED = 0; + public const int STATUS_CANCELLED = 1; + public const int STATUS_ERROR = 2; + public const int STATUS_DECLINED = 3; + public const int STATUS_PAID = 4; + public const int STATUS_GUEST = 5; + public const int STATUS_WAITING = 6; + public const int STATUS_CONFIRMED = 7; + public const int STATUS_PAID_AFTER = 8; + + public const int INVOICE_TODO = 0; + public const int INVOICE_SENT = 1; + public const int INVOICE_RECEIVED = 2; + + public const int TYPE_ORGANIZATION = 9; + public const int TYPE_SPONSOR = 10; + public const int TYPE_PRESS = 11; + public const int TYPE_SPEAKER = 12; + public const int TYPE_SPECIAL_PRICE = 108; + + public const int PAYMENT_CREDIT_CARD = 0; + public const int PAYMENT_CHEQUE = 1; + public const int PAYMENT_BANKWIRE = 2; + public const int PAYMENT_NONE = 3; + + public const string DAY_ONE = 'one'; + public const string DAY_TWO = 'two'; private ?int $id = null; diff --git a/sources/AppBundle/Event/Model/TicketType.php b/sources/AppBundle/Event/Model/TicketType.php index 26287d740..970fa9642 100644 --- a/sources/AppBundle/Event/Model/TicketType.php +++ b/sources/AppBundle/Event/Model/TicketType.php @@ -11,8 +11,8 @@ class TicketType implements NotifyPropertyInterface { use NotifyProperty; - public const SPECIAL_PRICE_TECHNICAL_NAME = 'SPECIAL_PRICE'; - public const EARLY_BIRD_TECHNICAL_NAME = ['EARLY_BIRD', 'EARLY_BIRD_AFUP', 'AFUP_DAY_EARLY']; + public const string SPECIAL_PRICE_TECHNICAL_NAME = 'SPECIAL_PRICE'; + public const array EARLY_BIRD_TECHNICAL_NAME = ['EARLY_BIRD', 'EARLY_BIRD_AFUP', 'AFUP_DAY_EARLY']; /** * @var int diff --git a/sources/AppBundle/Event/Ticket/TicketTypeAvailability.php b/sources/AppBundle/Event/Ticket/TicketTypeAvailability.php index 2f5762375..8b80b7469 100644 --- a/sources/AppBundle/Event/Ticket/TicketTypeAvailability.php +++ b/sources/AppBundle/Event/Ticket/TicketTypeAvailability.php @@ -11,9 +11,9 @@ class TicketTypeAvailability { - public const DAY_ONE = 'one'; - public const DAY_TWO = 'two'; - public const DAY_BOTH = 'both'; + public const string DAY_ONE = 'one'; + public const string DAY_TWO = 'two'; + public const string DAY_BOTH = 'both'; public function __construct(private readonly TicketRepository $ticketRepository) {} diff --git a/sources/AppBundle/Indexation/Meetups/MeetupClient.php b/sources/AppBundle/Indexation/Meetups/MeetupClient.php index 33ae2b076..3382f430f 100644 --- a/sources/AppBundle/Indexation/Meetups/MeetupClient.php +++ b/sources/AppBundle/Indexation/Meetups/MeetupClient.php @@ -13,8 +13,8 @@ final readonly class MeetupClient { - private const QUANTITY_PAST_EVENTS = 2; - private const QUANTITY_UPCOMING_EVENTS = 10; + private const int QUANTITY_PAST_EVENTS = 2; + private const int QUANTITY_UPCOMING_EVENTS = 10; public function __construct( private HttpClientInterface $httpClient, diff --git a/sources/AppBundle/Indexation/Meetups/Transformer.php b/sources/AppBundle/Indexation/Meetups/Transformer.php index cb96aacf8..942aebcf9 100644 --- a/sources/AppBundle/Indexation/Meetups/Transformer.php +++ b/sources/AppBundle/Indexation/Meetups/Transformer.php @@ -10,7 +10,7 @@ class Transformer { - public const MEETUP_URL = 'https://www.meetup.com/fr-FR/'; + public const string MEETUP_URL = 'https://www.meetup.com/fr-FR/'; public function __construct(private readonly AntenneRepository $antennesCollection) {} diff --git a/sources/AppBundle/Mailchimp/Mailchimp.php b/sources/AppBundle/Mailchimp/Mailchimp.php index 26ac1ce01..48abe8487 100644 --- a/sources/AppBundle/Mailchimp/Mailchimp.php +++ b/sources/AppBundle/Mailchimp/Mailchimp.php @@ -8,7 +8,7 @@ class Mailchimp { - private const MAX_MEMBERS_PER_PAGE = 50; + private const int MAX_MEMBERS_PER_PAGE = 50; public function __construct(private readonly DrewMailChimp $client) {} diff --git a/sources/AppBundle/Model/ComptaCategorie.php b/sources/AppBundle/Model/ComptaCategorie.php index 914e8bcfe..76a917e5e 100644 --- a/sources/AppBundle/Model/ComptaCategorie.php +++ b/sources/AppBundle/Model/ComptaCategorie.php @@ -6,12 +6,12 @@ class ComptaCategorie { - public const GOODIES = 13; - public const FRAIS_DE_COMPTE = 28; - public const MAILCHIMP = 31; - public const CHARGES_SOCIALES = 32; - public const GANDI = 37; - public const MEETUP = 45; - public const OUTILS = 48; - public const PRELEVEMENT_SOURCE = 51; + public const int GOODIES = 13; + public const int FRAIS_DE_COMPTE = 28; + public const int MAILCHIMP = 31; + public const int CHARGES_SOCIALES = 32; + public const int GANDI = 37; + public const int MEETUP = 45; + public const int OUTILS = 48; + public const int PRELEVEMENT_SOURCE = 51; } diff --git a/sources/AppBundle/Model/ComptaCompte.php b/sources/AppBundle/Model/ComptaCompte.php index b63772627..94371f0b8 100644 --- a/sources/AppBundle/Model/ComptaCompte.php +++ b/sources/AppBundle/Model/ComptaCompte.php @@ -6,7 +6,7 @@ class ComptaCompte { - public const COURANT_CE = 1; - public const COURANT_CMUT = 5; - public const LIVRET_CMUT = 6; + public const int COURANT_CE = 1; + public const int COURANT_CMUT = 5; + public const int LIVRET_CMUT = 6; } diff --git a/sources/AppBundle/Model/ComptaEvenement.php b/sources/AppBundle/Model/ComptaEvenement.php index 34a84098f..808033cf5 100644 --- a/sources/AppBundle/Model/ComptaEvenement.php +++ b/sources/AppBundle/Model/ComptaEvenement.php @@ -6,6 +6,6 @@ class ComptaEvenement { - public const GESTION = 26; - public const ASSOCIATION_AFUP = 27; + public const int GESTION = 26; + public const int ASSOCIATION_AFUP = 27; } diff --git a/sources/AppBundle/Model/ComptaModeReglement.php b/sources/AppBundle/Model/ComptaModeReglement.php index 95906ddbe..de31c22be 100644 --- a/sources/AppBundle/Model/ComptaModeReglement.php +++ b/sources/AppBundle/Model/ComptaModeReglement.php @@ -6,10 +6,10 @@ class ComptaModeReglement { - public const CB = 2; - public const VIREMENT = 3; - public const CHEQUE = 4; - public const PRELEVEMENT = 5; + public const int CB = 2; + public const int VIREMENT = 3; + public const int CHEQUE = 4; + public const int PRELEVEMENT = 5; public static function list(): array { diff --git a/sources/AppBundle/Offices/OfficeFinder.php b/sources/AppBundle/Offices/OfficeFinder.php index 8c8b4d526..dca3343cb 100644 --- a/sources/AppBundle/Offices/OfficeFinder.php +++ b/sources/AppBundle/Offices/OfficeFinder.php @@ -13,7 +13,7 @@ class OfficeFinder { - public const MAX_DISTANCE_TO_OFFICE = 50000; + public const int MAX_DISTANCE_TO_OFFICE = 50000; private array $geocodeCache = []; diff --git a/sources/AppBundle/Payment/Paybox.php b/sources/AppBundle/Payment/Paybox.php index 53d292591..521ddba85 100644 --- a/sources/AppBundle/Payment/Paybox.php +++ b/sources/AppBundle/Payment/Paybox.php @@ -6,25 +6,25 @@ class Paybox { - public const DEVISE_EURO = 978; + public const int DEVISE_EURO = 978; - public const SPECIAL_CHARS_INPUTS = [ + public const array SPECIAL_CHARS_INPUTS = [ 'PBX_SHOPPINGCART', 'PBX_BILLING', ]; - public const PAYBOX_SHOPPING_MAX_QUANTITY = 99; - public const PAYBOX_DEFAULT_STRING = 'Inconnu'; - public const PAYBOX_DEFAULT_COUNTRY = 250; // correspond à la France en iso3166 + public const int PAYBOX_SHOPPING_MAX_QUANTITY = 99; + public const string PAYBOX_DEFAULT_STRING = 'Inconnu'; + public const int PAYBOX_DEFAULT_COUNTRY = 250; // correspond à la France en iso3166 /** * cf http://www.paybox.com/espace-integrateur-documentation/dictionnaire-des-donnees/paybox-system/ */ - public const RETOUR = 'total:M;cmd:R;autorisation:A;transaction:T;status:E'; - public const SOURCE = 'HTML'; - public const HASH = 'SHA512'; - public const TYPE_PAIEMENT = 'CARTE'; - public const TYPECARTE = 'CB'; + public const string RETOUR = 'total:M;cmd:R;autorisation:A;transaction:T;status:E'; + public const string SOURCE = 'HTML'; + public const string HASH = 'SHA512'; + public const string TYPE_PAIEMENT = 'CARTE'; + public const string TYPECARTE = 'CB'; private $total = 0; private $cmd; diff --git a/sources/AppBundle/Payment/PayboxResponse.php b/sources/AppBundle/Payment/PayboxResponse.php index 0b9618d30..a557b09a3 100644 --- a/sources/AppBundle/Payment/PayboxResponse.php +++ b/sources/AppBundle/Payment/PayboxResponse.php @@ -6,13 +6,13 @@ class PayboxResponse { - public const STATUS_SUCCESS = '00000'; + public const string STATUS_SUCCESS = '00000'; - public const STATUS_CANCELED = ''; + public const string STATUS_CANCELED = ''; - public const STATUS_ERROR = ''; + public const string STATUS_ERROR = ''; - public const STATUS_DUPLICATE = '00015'; + public const string STATUS_DUPLICATE = '00015'; /** * @param string $cmd diff --git a/sources/AppBundle/Security/ActionThrottling/Log.php b/sources/AppBundle/Security/ActionThrottling/Log.php index 45efaf8ba..ed58844d8 100644 --- a/sources/AppBundle/Security/ActionThrottling/Log.php +++ b/sources/AppBundle/Security/ActionThrottling/Log.php @@ -11,8 +11,8 @@ class Log implements NotifyPropertyInterface { use NotifyProperty; - public const ACTION_SPONSOR_TOKEN = 'sponsor_token'; - public const LIMITATIONS = [ + public const string ACTION_SPONSOR_TOKEN = 'sponsor_token'; + public const array LIMITATIONS = [ self::ACTION_SPONSOR_TOKEN => ['delay' => 'PT1H', 'limit' => 10], ]; diff --git a/sources/AppBundle/Site/Entity/Rubrique.php b/sources/AppBundle/Site/Entity/Rubrique.php index 5f3037c42..3801701d6 100644 --- a/sources/AppBundle/Site/Entity/Rubrique.php +++ b/sources/AppBundle/Site/Entity/Rubrique.php @@ -11,11 +11,11 @@ #[ORM\Table(name: 'afup_site_rubrique')] class Rubrique { - public const ID_RUBRIQUE_ACTUALITES = 9; - public const ID_RUBRIQUE_ASSOCIATION = 85; - public const ID_RUBRIQUE_ANTENNES = 84; - public const ID_RUBRIQUE_INFORMATIONS_PRATIQUES = 86; - public const ID_RUBRIQUE_NOS_ACTIONS = 88; + public const int ID_RUBRIQUE_ACTUALITES = 9; + public const int ID_RUBRIQUE_ASSOCIATION = 85; + public const int ID_RUBRIQUE_ANTENNES = 84; + public const int ID_RUBRIQUE_INFORMATIONS_PRATIQUES = 86; + public const int ID_RUBRIQUE_NOS_ACTIONS = 88; #[ORM\Id] #[ORM\GeneratedValue] diff --git a/sources/AppBundle/Site/Form/ArticleType.php b/sources/AppBundle/Site/Form/ArticleType.php index 6aedd13c2..f9f69686d 100644 --- a/sources/AppBundle/Site/Form/ArticleType.php +++ b/sources/AppBundle/Site/Form/ArticleType.php @@ -19,7 +19,7 @@ class ArticleType extends AbstractType { - public const POSITIONS_RUBRIQUES = 9; + public const int POSITIONS_RUBRIQUES = 9; public function __construct( private readonly RubriqueRepository $rubriqueRepository, diff --git a/sources/AppBundle/Site/Form/FeuilleType.php b/sources/AppBundle/Site/Form/FeuilleType.php index fa9e769ee..e5ec46296 100644 --- a/sources/AppBundle/Site/Form/FeuilleType.php +++ b/sources/AppBundle/Site/Form/FeuilleType.php @@ -16,7 +16,7 @@ class FeuilleType extends AbstractType { - public const POSITIONS_RUBRIQUES = 9; + public const int POSITIONS_RUBRIQUES = 9; public function __construct(private readonly FeuilleRepository $feuilleRepository) {} diff --git a/sources/AppBundle/Site/Form/RubriqueType.php b/sources/AppBundle/Site/Form/RubriqueType.php index ec4e9c256..61b071409 100644 --- a/sources/AppBundle/Site/Form/RubriqueType.php +++ b/sources/AppBundle/Site/Form/RubriqueType.php @@ -19,7 +19,7 @@ class RubriqueType extends AbstractType { - public const POSITIONS_RUBRIQUES = 9; + public const int POSITIONS_RUBRIQUES = 9; public function __construct( private readonly RubriqueRepository $rubriqueRepository, diff --git a/sources/AppBundle/Site/Model/Rubrique.php b/sources/AppBundle/Site/Model/Rubrique.php index 13d2d1ea7..8e53cf4b1 100644 --- a/sources/AppBundle/Site/Model/Rubrique.php +++ b/sources/AppBundle/Site/Model/Rubrique.php @@ -12,11 +12,11 @@ class Rubrique implements NotifyPropertyInterface { use NotifyProperty; - public const ID_RUBRIQUE_ACTUALITES = 9; - public const ID_RUBRIQUE_ASSOCIATION = 85; - public const ID_RUBRIQUE_ANTENNES = 84; - public const ID_RUBRIQUE_INFORMATIONS_PRATIQUES = 86; - public const ID_RUBRIQUE_NOS_ACTIONS = 88; + public const int ID_RUBRIQUE_ACTUALITES = 9; + public const int ID_RUBRIQUE_ASSOCIATION = 85; + public const int ID_RUBRIQUE_ANTENNES = 84; + public const int ID_RUBRIQUE_INFORMATIONS_PRATIQUES = 86; + public const int ID_RUBRIQUE_NOS_ACTIONS = 88; #[Assert\Type('integer')] private $id; diff --git a/sources/AppBundle/Slack/UsersChecker.php b/sources/AppBundle/Slack/UsersChecker.php index 56d4dfe3c..3801e211b 100644 --- a/sources/AppBundle/Slack/UsersChecker.php +++ b/sources/AppBundle/Slack/UsersChecker.php @@ -10,7 +10,7 @@ class UsersChecker { - public const SUBSCRIPTION_DELAY = '+15 days'; + public const string SUBSCRIPTION_DELAY = '+15 days'; public function __construct( private readonly UsersClient $usersClient, diff --git a/sources/AppBundle/Slack/UsersClient.php b/sources/AppBundle/Slack/UsersClient.php index 7b8014352..074989866 100644 --- a/sources/AppBundle/Slack/UsersClient.php +++ b/sources/AppBundle/Slack/UsersClient.php @@ -9,7 +9,7 @@ final readonly class UsersClient { - public const USER_LIST_API = '/users.list'; + public const string USER_LIST_API = '/users.list'; public function __construct( #[Autowire('%slack_membre_token%')] diff --git a/sources/AppBundle/SpeakerInfos/Form/HotelReservationType.php b/sources/AppBundle/SpeakerInfos/Form/HotelReservationType.php index c17edc0e6..7f5d9c140 100644 --- a/sources/AppBundle/SpeakerInfos/Form/HotelReservationType.php +++ b/sources/AppBundle/SpeakerInfos/Form/HotelReservationType.php @@ -18,8 +18,8 @@ class HotelReservationType extends AbstractType { - public const NIGHT_NONE = 'none'; - public const NIGHT_TRAVEL_SPONSOR = 'hosting_sponsor'; + public const string NIGHT_NONE = 'none'; + public const string NIGHT_TRAVEL_SPONSOR = 'hosting_sponsor'; public function __construct(private readonly TranslatorInterface $translator) {} diff --git a/sources/AppBundle/SpeakerInfos/Form/TravelSponsorType.php b/sources/AppBundle/SpeakerInfos/Form/TravelSponsorType.php index 7a1b6198e..ecd9890e5 100644 --- a/sources/AppBundle/SpeakerInfos/Form/TravelSponsorType.php +++ b/sources/AppBundle/SpeakerInfos/Form/TravelSponsorType.php @@ -13,8 +13,8 @@ final class TravelSponsorType extends AbstractType { - public const OPTION_SPONSORED = 'sponsored'; - public const OPTION_NOT_NEEDED = 'not_needed'; + public const string OPTION_SPONSORED = 'sponsored'; + public const string OPTION_NOT_NEEDED = 'not_needed'; public function buildForm(FormBuilderInterface $builder, array $options): void { diff --git a/sources/AppBundle/StaticAnalysis/Rule/DoctrineRepositoryRule.php b/sources/AppBundle/StaticAnalysis/Rule/DoctrineRepositoryRule.php index 8042f5d80..9e2be0fe1 100644 --- a/sources/AppBundle/StaticAnalysis/Rule/DoctrineRepositoryRule.php +++ b/sources/AppBundle/StaticAnalysis/Rule/DoctrineRepositoryRule.php @@ -21,7 +21,7 @@ */ final readonly class DoctrineRepositoryRule implements Rule { - private const FORBIDDEN_METHODS = [ + private const array FORBIDDEN_METHODS = [ 'createQueryBuilder', 'createResultSetMappingBuilder', 'getClassName', diff --git a/sources/AppBundle/StaticAnalysis/Rule/NoDebugFunctionsRule.php b/sources/AppBundle/StaticAnalysis/Rule/NoDebugFunctionsRule.php index 17e1cb3a2..cbf6148fb 100644 --- a/sources/AppBundle/StaticAnalysis/Rule/NoDebugFunctionsRule.php +++ b/sources/AppBundle/StaticAnalysis/Rule/NoDebugFunctionsRule.php @@ -18,7 +18,7 @@ */ final class NoDebugFunctionsRule implements Rule { - private const FORBIDDEN_FUNCTIONS = ['var_dump', 'dump', 'dd', 'print_r']; + private const array FORBIDDEN_FUNCTIONS = ['var_dump', 'dump', 'dd', 'print_r']; public function getNodeType(): string { diff --git a/sources/AppBundle/TechLetter/DataExtractor.php b/sources/AppBundle/TechLetter/DataExtractor.php index d3a08b1e1..dcc239b5e 100644 --- a/sources/AppBundle/TechLetter/DataExtractor.php +++ b/sources/AppBundle/TechLetter/DataExtractor.php @@ -9,7 +9,7 @@ class DataExtractor /** * @see https://fr.wikipedia.org/wiki/Mot_par_minute */ - public const WORD_READ_BY_MINUTES = 250; + public const int WORD_READ_BY_MINUTES = 250; /** * @return mixed[] diff --git a/sources/AppBundle/TechLetter/HtmlParser.php b/sources/AppBundle/TechLetter/HtmlParser.php index c7ff36079..1f5eba929 100644 --- a/sources/AppBundle/TechLetter/HtmlParser.php +++ b/sources/AppBundle/TechLetter/HtmlParser.php @@ -15,8 +15,8 @@ class HtmlParser private readonly \DOMXPath $xpath; - public const OPEN_GRAPH_PREFIX = 'og'; - public const TWITTER_PREFIX = 'twitter'; + public const string OPEN_GRAPH_PREFIX = 'og'; + public const string TWITTER_PREFIX = 'twitter'; public function __construct($html) { diff --git a/sources/AppBundle/TechLetter/Model/Article.php b/sources/AppBundle/TechLetter/Model/Article.php index 0854bc726..a320d6eba 100644 --- a/sources/AppBundle/TechLetter/Model/Article.php +++ b/sources/AppBundle/TechLetter/Model/Article.php @@ -6,7 +6,7 @@ class Article implements \JsonSerializable { - private const DEFAULT_LANGUAGE = 'en'; + private const string DEFAULT_LANGUAGE = 'en'; private readonly string $language; public function __construct( diff --git a/sources/AppBundle/VideoNotifier/Engine.php b/sources/AppBundle/VideoNotifier/Engine.php index 6a943f936..cc69c5152 100644 --- a/sources/AppBundle/VideoNotifier/Engine.php +++ b/sources/AppBundle/VideoNotifier/Engine.php @@ -16,7 +16,7 @@ final readonly class Engine { - private const VALID_TALK_TYPES = [ + private const array VALID_TALK_TYPES = [ Talk::TYPE_FULL_LONG, Talk::TYPE_FULL_SHORT, ]; diff --git a/sources/PlanetePHP/FeedArticleRepository.php b/sources/PlanetePHP/FeedArticleRepository.php index f0509e51b..8cc6a4a87 100644 --- a/sources/PlanetePHP/FeedArticleRepository.php +++ b/sources/PlanetePHP/FeedArticleRepository.php @@ -10,9 +10,9 @@ class FeedArticleRepository { - public const RELEVANT = 1; - public const IRRELEVANT = 0; - public const PERTINENCE_LIST = 'php|afup|pear|pecl|symfony|copix|jelix|wampserver|simpletest|simplexml|zend|pmo|drupal|ovidentia|mvc|magento|chrome|spip|PDO|mock|cake|hiphop|CMS|Framework|typo3|photon|pattern'; + public const int RELEVANT = 1; + public const int IRRELEVANT = 0; + public const string PERTINENCE_LIST = 'php|afup|pear|pecl|symfony|copix|jelix|wampserver|simpletest|simplexml|zend|pmo|drupal|ovidentia|mvc|magento|chrome|spip|PDO|mock|cake|hiphop|CMS|Framework|typo3|photon|pattern'; private readonly string $pertinenceRegex; public function __construct(private readonly Connection $connection) From 4e53f832f517944bd6421494179df12141843a23 Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 25 May 2026 21:53:02 +0200 Subject: [PATCH 03/11] Symfony HTTP Foundation 7.4 --- composer.json | 1 + composer.lock | 36 +++++++++++++++++++----------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/composer.json b/composer.json index 29e92123e..2ddf75482 100644 --- a/composer.json +++ b/composer.json @@ -52,6 +52,7 @@ "symfony/form": "7.4.*", "symfony/framework-bundle": "7.4.*", "symfony/http-client": "7.4.*", + "symfony/http-foundation": "7.4.*", "symfony/http-kernel": "7.4.*", "symfony/intl": "7.4.*", "symfony/lock": "7.4.*", diff --git a/composer.lock b/composer.lock index cc3a14e74..1bd254b22 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": "d16bfd5326dcb1364165188fcdd24694", + "content-hash": "60634ebf309f20a43a5a030d5d62a752", "packages": [ { "name": "algolia/algoliasearch-client-php", @@ -7373,35 +7373,37 @@ }, { "name": "symfony/http-foundation", - "version": "v8.0.8", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "02656f7ebeae5c155d659e946f6b3a33df24051b" + "reference": "9381209597ec66c25be154cbf2289076e64d1eab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/02656f7ebeae5c155d659e946f6b3a33df24051b", - "reference": "02656f7ebeae5c155d659e946f6b3a33df24051b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9381209597ec66c25be154cbf2289076e64d1eab", + "reference": "9381209597ec66c25be154cbf2289076e64d1eab", "shasum": "" }, "require": { - "php": ">=8.4", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "^1.1" }, "conflict": { - "doctrine/dbal": "<4.3" + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { - "doctrine/dbal": "^4.3", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^7.4|^8.0", - "symfony/clock": "^7.4|^8.0", - "symfony/dependency-injection": "^7.4|^8.0", - "symfony/expression-language": "^7.4|^8.0", - "symfony/http-kernel": "^7.4|^8.0", - "symfony/mime": "^7.4|^8.0", - "symfony/rate-limiter": "^7.4|^8.0" + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7429,7 +7431,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v8.0.8" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.8" }, "funding": [ { @@ -7449,7 +7451,7 @@ "type": "tidelift" } ], - "time": "2026-03-30T15:14:47+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/http-kernel", From b792ac8b40bcbdf99589c776650b14c22761083e Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 25 May 2026 21:53:09 +0200 Subject: [PATCH 04/11] Invalid array key type null. --- sources/AppBundle/Planete/FeedFormType.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/AppBundle/Planete/FeedFormType.php b/sources/AppBundle/Planete/FeedFormType.php index 42a68d563..a742ddf93 100644 --- a/sources/AppBundle/Planete/FeedFormType.php +++ b/sources/AppBundle/Planete/FeedFormType.php @@ -20,7 +20,7 @@ public function __construct(private readonly UserRepository $userRepository) {} public function buildForm(FormBuilderInterface $builder, array $options): void { - $users = [null => null]; + $users = ['' => null]; foreach ($this->userRepository->search() as $user) { $users[$user->getLastName() . ' ' . $user->getFirstName()] = $user->getId(); } From c61baa87025c6b17fd906c9f7ce99fc15da192be Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 25 May 2026 21:55:34 +0200 Subject: [PATCH 05/11] Upgrade PHP 8.5 on CI --- .github/workflows/ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 296e5fa99..2b79f6246 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,12 +1,11 @@ name: CI -on: [ push, pull_request ] +on: [push, pull_request] env: - php_version: '8.2' + php_version: "8.5" jobs: - unit: name: "Unit tests" runs-on: ubuntu-22.04 From 85ed4c5a562b8e11ab0c3a31756048dc17057d6d Mon Sep 17 00:00:00 2001 From: Albin Date: Mon, 25 May 2026 21:57:06 +0200 Subject: [PATCH 06/11] CS Fix --- .../Website/Membership/GeneralMeeting/IndexAction.php | 1 - .../SuperApero/Entity/Repository/SuperAperoRepository.php | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sources/AppBundle/Controller/Website/Membership/GeneralMeeting/IndexAction.php b/sources/AppBundle/Controller/Website/Membership/GeneralMeeting/IndexAction.php index 2c3eb2684..0cf4fc751 100644 --- a/sources/AppBundle/Controller/Website/Membership/GeneralMeeting/IndexAction.php +++ b/sources/AppBundle/Controller/Website/Membership/GeneralMeeting/IndexAction.php @@ -21,7 +21,6 @@ use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Context\ExecutionContextInterface; use Webmozart\Assert\Assert; diff --git a/sources/AppBundle/SuperApero/Entity/Repository/SuperAperoRepository.php b/sources/AppBundle/SuperApero/Entity/Repository/SuperAperoRepository.php index 38e708112..2737bdaa2 100644 --- a/sources/AppBundle/SuperApero/Entity/Repository/SuperAperoRepository.php +++ b/sources/AppBundle/SuperApero/Entity/Repository/SuperAperoRepository.php @@ -15,8 +15,10 @@ */ final class SuperAperoRepository extends EntityRepository { - public function __construct(ManagerRegistry $registry, private readonly ClockInterface $clock) - { + public function __construct( + ManagerRegistry $registry, + private readonly ClockInterface $clock, + ) { parent::__construct($registry, SuperApero::class); } From c20032db982cbb30fa113f9af79526f873a9fc50 Mon Sep 17 00:00:00 2001 From: Albin Date: Tue, 26 May 2026 21:41:31 +0200 Subject: [PATCH 07/11] rector --- db/seeds/ComptaCompte.php | 4 +- db/seeds/Event.php | 18 +++---- db/seeds/Inscriptions.php | 26 ++++----- db/seeds/Session.php | 8 +-- db/seeds/TechletterSubscriptions.php | 2 +- rector.php | 2 +- sources/Afup/Comptabilite/PDF.php | 2 + sources/Afup/Utils/PDF_AG.php | 1 + sources/Afup/Utils/PDF_Facture.php | 3 ++ .../Accounting/Form/InvoicingPeriodType.php | 1 + sources/AppBundle/AppKernel.php | 3 ++ .../SubscriptionManagement.php | 2 +- .../Form/NearestOfficeChoiceType.php | 1 + .../Repository/CompanyMemberRepository.php | 2 +- .../Model/Repository/UserRepository.php | 2 +- sources/AppBundle/Association/Model/User.php | 9 ---- .../UserMembership/BadgesComputer.php | 2 +- .../Calendar/TechnoWatchCalendarGenerator.php | 2 +- .../Compta/Importer/CreditMutuel.php | 2 +- .../Compta/Importer/CreditMutuelLivret.php | 1 + .../Admin/Accounting/Journal/ExportAction.php | 3 +- .../Event/PreviousRegistrationsAction.php | 2 +- .../Admin/Event/Session/EditAction.php | 2 +- .../Admin/Members/UserExportAction.php | 2 +- .../Controller/Event/CFP/IndexAction.php | 2 +- .../Event/Speaker/SuggestionAction.php | 2 +- .../Event/SponsorScan/ExportAction.php | 4 +- .../Event/SponsorScan/FlashAction.php | 2 +- .../Website/Global/HtmlSitemapAction.php | 2 +- .../Controller/Website/Member/IndexAction.php | 2 +- .../Website/Membership/CompanyAction.php | 2 +- .../Website/Membership/Fee/IndexAction.php | 2 +- .../Doctrine/Type/UnixTimestampType.php | 2 + sources/AppBundle/Email/Emails.php | 2 +- .../Mailer/Adapter/SymfonyMailerAdapter.php | 2 +- sources/AppBundle/Email/Parsedown.php | 2 + .../Event/Form/EventCompareSelectType.php | 1 + .../AppBundle/Event/Form/TalkAdminType.php | 2 + .../Model/Repository/EventRepository.php | 8 ++- .../Repository/TicketEventTypeRepository.php | 2 +- .../Model/Repository/TicketRepository.php | 2 +- .../Model/Repository/UserBadgeRepository.php | 2 +- .../Event/Speaker/ExportGenerator.php | 4 +- .../AppBundle/Event/Talk/ExportGenerator.php | 8 +-- .../Ticket/RegistrationsExportGenerator.php | 4 +- .../Validator/Constraints/AvailableTicket.php | 1 + .../Validator/Constraints/CorporateMember.php | 1 + .../Validator/Constraints/EarlyBirdTicket.php | 1 + .../Validator/Constraints/LoggedInMember.php | 1 + .../Validator/Constraints/PublicTicket.php | 1 + .../Constraints/TicketsCfpSubmitter.php | 1 + sources/AppBundle/Form/BooleanType.php | 1 + .../GeneralMeetingRepository.php | 4 +- .../GeneralMeeting/ReportListBuilder.php | 2 +- .../Listener/DetectClockMockingListener.php | 2 +- .../AppBundle/Offices/NullOfficeFinder.php | 1 + sources/AppBundle/Payment/PayboxBilling.php | 2 +- .../ActionThrottling/LogRepository.php | 2 +- sources/AppBundle/Slack/MessageFactory.php | 36 ++++++------- .../SocialNetwork/Bluesky/BlueskyPolyfill.php | 2 +- .../Bluesky/BlueskyTransport.php | 2 +- .../Rule/DoctrineDisableDQLRule.php | 12 +---- .../Ting/DateTimeWithTimeZoneSerializer.php | 1 + sources/AppBundle/Ting/HydratorAggregator.php | 1 + sources/AppBundle/Twig/AssetsExtension.php | 1 + sources/AppBundle/Twig/OfficesExtension.php | 1 + sources/AppBundle/Twig/TwigExtension.php | 2 + .../Validator/Constraints/UniqueEntity.php | 1 + tests/behat/bootstrap/EmailContext.php | 10 ++-- tests/behat/bootstrap/TimeContext.php | 2 +- .../Doctrine/WithOverridesRepository.php | 7 +++ tests/support/DatabaseManager.php | 2 +- tests/support/TimeMocker.php | 4 +- .../unit/Afup/Association/CotisationsTest.php | 4 +- .../Association/Model/CompanyMemberTest.php | 8 +-- .../Event/Form/Support/EventHelperTest.php | 16 +++--- .../Indexation/Meetups/TransformerTest.php | 2 +- .../Indexation/Talks/TransformerTest.php | 2 +- .../AppBundle/Notifier/SlackNotifierTest.php | 4 +- .../SocialNetwork/SocialNetworkTest.php | 8 +-- .../Model/TechLetterFactoryTest.php | 2 +- .../VideoNotifier/StatusGeneratorTest.php | 54 +++++++++---------- 82 files changed, 193 insertions(+), 172 deletions(-) diff --git a/db/seeds/ComptaCompte.php b/db/seeds/ComptaCompte.php index 034be1c39..d515d6e77 100644 --- a/db/seeds/ComptaCompte.php +++ b/db/seeds/ComptaCompte.php @@ -16,7 +16,7 @@ public function run(): void [ 'id' => 2, 'nom_compte' => 'Caisse', - 'archived_at' => (new DateTime('last year'))->format('Y-m-d H:i:s'), + 'archived_at' => new DateTime('last year')->format('Y-m-d H:i:s'), ], [ 'id' => 3, @@ -25,7 +25,7 @@ public function run(): void [ 'id' => 4, 'nom_compte' => 'Paypal', - 'archived_at' => (new DateTime('last year'))->format('Y-m-d H:i:s'), + 'archived_at' => new DateTime('last year')->format('Y-m-d H:i:s'), ], ]; diff --git a/db/seeds/Event.php b/db/seeds/Event.php index 84483512d..1c7e54c87 100644 --- a/db/seeds/Event.php +++ b/db/seeds/Event.php @@ -98,18 +98,18 @@ public function run(): void 'sponsor_management_en' => '**Sponsors**, come, you will be very visible!', 'mail_inscription_content' => 'Contenu email de l\'évènement du passé', ]), - 'date_fin_appel_projet' => (new DateTime('2020-03-31 00:00:00'))->getTimestamp(), - 'date_debut_appel_conferencier' => (new DateTime('2020-03-15 00:00:00'))->getTimestamp(), - 'date_fin_appel_conferencier' => (new DateTime('2020-02-01 00:00:00'))->getTimestamp(), + 'date_fin_appel_projet' => new DateTime('2020-03-31 00:00:00')->getTimestamp(), + 'date_debut_appel_conferencier' => new DateTime('2020-03-15 00:00:00')->getTimestamp(), + 'date_fin_appel_conferencier' => new DateTime('2020-02-01 00:00:00')->getTimestamp(), 'date_fin_vote' => '2020-03-31 00:00:00', - 'date_fin_prevente' => (new DateTime('2020-04-01 00:00:00'))->getTimestamp(), - 'date_fin_vente' => (new DateTime('2020-04-15 00:00:00'))->getTimestamp(), - 'date_fin_vente_token_sponsor' => (new DateTime('2020-04-01 00:00:00'))->getTimestamp(), - 'date_fin_saisie_repas_speakers' => (new DateTime('2020-04-01 00:00:00'))->getTimestamp(), - 'date_fin_saisie_nuites_hotel' => (new DateTime('2020-04-01 00:00:00'))->getTimestamp(), + 'date_fin_prevente' => new DateTime('2020-04-01 00:00:00')->getTimestamp(), + 'date_fin_vente' => new DateTime('2020-04-15 00:00:00')->getTimestamp(), + 'date_fin_vente_token_sponsor' => new DateTime('2020-04-01 00:00:00')->getTimestamp(), + 'date_fin_saisie_repas_speakers' => new DateTime('2020-04-01 00:00:00')->getTimestamp(), + 'date_fin_saisie_nuites_hotel' => new DateTime('2020-04-01 00:00:00')->getTimestamp(), 'place_name' => 'Berlin', 'place_address' => 'rue de Paris', - 'date_annonce_planning' => (new DateTime('2020-04-01 00:00:00'))->getTimestamp(), + 'date_annonce_planning' => new DateTime('2020-04-01 00:00:00')->getTimestamp(), 'transport_information_enabled' => 1, 'has_prices_defined_with_vat' => 1, ], diff --git a/db/seeds/Inscriptions.php b/db/seeds/Inscriptions.php index 982741725..2766bb2f4 100644 --- a/db/seeds/Inscriptions.php +++ b/db/seeds/Inscriptions.php @@ -30,7 +30,7 @@ public function run(): void 'etat' => Ticket::STATUS_PAID, ], [ - 'date' => (new \DateTime("2023-06-25"))->getTimestamp(), + 'date' => new \DateTime("2023-06-25")->getTimestamp(), 'reference' => 'REF-TEST-002', 'type_inscription' => Tarif::TYPE_2_DAYS['id'], 'montant' => Tarif::TYPE_2_DAYS['default_price'], @@ -47,7 +47,7 @@ public function run(): void 'etat' => Ticket::STATUS_PAID, ], [ - 'date' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date' => new \DateTime("2024-01-02")->getTimestamp(), 'reference' => 'REF-TEST-003', 'type_inscription' => Tarif::TYPE_2_DAYS['id'], 'montant' => Tarif::TYPE_2_DAYS['default_price'], @@ -64,7 +64,7 @@ public function run(): void 'etat' => Ticket::STATUS_PAID, ], [ - 'date' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date' => new \DateTime("2024-01-02")->getTimestamp(), 'reference' => 'REF-TEST-004', 'type_inscription' => Tarif::TYPE_2_DAYS_AFUP['id'], 'montant' => Tarif::TYPE_2_DAYS_AFUP['default_price'], @@ -185,7 +185,7 @@ public function run(): void [ 'reference' => 'REF-TEST-002', 'montant' => Tarif::TYPE_2_DAYS['default_price'], - 'date_reglement' => (new \DateTime("2023-06-25"))->getTimestamp(), + 'date_reglement' => new \DateTime("2023-06-25")->getTimestamp(), 'type_reglement' => Ticket::PAYMENT_CHEQUE, 'email' => 'jean@yahoo.fr', 'nom' => 'Jean', @@ -199,12 +199,12 @@ public function run(): void 'etat' => Ticket::STATUS_PAID, 'facturation' => Ticket::INVOICE_SENT, 'id_forum' => Event::ID_FORUM, - 'date_facture' => (new \DateTime("2023-06-25"))->getTimestamp(), + 'date_facture' => new \DateTime("2023-06-25")->getTimestamp(), ], [ 'reference' => 'REF-TEST-003', 'montant' => Tarif::TYPE_2_DAYS['default_price'], - 'date_reglement' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date_reglement' => new \DateTime("2024-01-02")->getTimestamp(), 'type_reglement' => Ticket::PAYMENT_BANKWIRE, 'email' => 'james@starfleet.fr', 'nom' => 'Kirk', @@ -218,12 +218,12 @@ public function run(): void 'etat' => Ticket::STATUS_PAID, 'facturation' => Ticket::INVOICE_SENT, 'id_forum' => Event::ID_FORUM, - 'date_facture' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date_facture' => new \DateTime("2024-01-02")->getTimestamp(), ], [ 'reference' => 'REF-TEST-004', 'montant' => Tarif::TYPE_2_DAYS_AFUP['default_price'], - 'date_reglement' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date_reglement' => new \DateTime("2024-01-02")->getTimestamp(), 'type_reglement' => Ticket::PAYMENT_CREDIT_CARD, 'email' => 'sans@cotisation.fr', 'nom' => 'Sans', @@ -237,12 +237,12 @@ public function run(): void 'etat' => Ticket::STATUS_PAID, 'facturation' => Ticket::INVOICE_SENT, 'id_forum' => Event::ID_FORUM, - 'date_facture' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date_facture' => new \DateTime("2024-01-02")->getTimestamp(), ], [ 'reference' => 'REF-TEST-005', 'montant' => Tarif::TYPE_2_DAYS_AFUP['default_price'], - 'date_reglement' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date_reglement' => new \DateTime("2024-01-02")->getTimestamp(), 'type_reglement' => Ticket::PAYMENT_CREDIT_CARD, 'nom' => 'Personne', 'prenom' => 'Paul', @@ -256,12 +256,12 @@ public function run(): void 'etat' => Ticket::STATUS_PAID, 'facturation' => Ticket::INVOICE_SENT, 'id_forum' => Event::ID_FORUM, - 'date_facture' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date_facture' => new \DateTime("2024-01-02")->getTimestamp(), ], [ 'reference' => 'REF-TEST-006', 'montant' => Tarif::TYPE_2_DAYS_AFUP['default_price'], - 'date_reglement' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date_reglement' => new \DateTime("2024-01-02")->getTimestamp(), 'type_reglement' => Ticket::PAYMENT_CREDIT_CARD, 'nom' => 'Maurice', 'prenom' => 'Jean', @@ -275,7 +275,7 @@ public function run(): void 'etat' => Ticket::STATUS_PAID, 'facturation' => Ticket::INVOICE_SENT, 'id_forum' => Event::ID_FORUM, - 'date_facture' => (new \DateTime("2024-01-02"))->getTimestamp(), + 'date_facture' => new \DateTime("2024-01-02")->getTimestamp(), ], [ 'reference' => 'REF-TEST-007', diff --git a/db/seeds/Session.php b/db/seeds/Session.php index de07cbe90..c493c208d 100644 --- a/db/seeds/Session.php +++ b/db/seeds/Session.php @@ -77,7 +77,7 @@ public function run(): void 'language_code' => 'fr', 'markdown' => 0, 'joindin' => 24138, - 'date_publication' => (new \DateTime())->modify('-1 days')->format('Y-m-d H:i:s'), + 'date_publication' => new \DateTime()->modify('-1 days')->format('Y-m-d H:i:s'), 'has_allowed_to_sharing_with_local_offices' => 1, 'bluesky_posts' => 'https://bsky.app/profile/afup.org/post/3mjk3hmqxxe2d', ], @@ -101,7 +101,7 @@ public function run(): void 'language_code' => 'fr', 'markdown' => 1, 'joindin' => 24041, - 'date_publication' => (new \DateTime())->modify('+5 days')->format('Y-m-d H:i:s'), + 'date_publication' => new \DateTime()->modify('+5 days')->format('Y-m-d H:i:s'), 'has_allowed_to_sharing_with_local_offices' => 1, ], [ @@ -181,8 +181,8 @@ public function run(): void $forcedPlannings = [ 6 => [ - 'debut' => (new \DateTime('2020-09-15 10:00:00'))->format('U'), - 'fin' => (new \DateTime('2020-09-15 10:40:00'))->format('U'), + 'debut' => new \DateTime('2020-09-15 10:00:00')->format('U'), + 'fin' => new \DateTime('2020-09-15 10:40:00')->format('U'), ], ]; diff --git a/db/seeds/TechletterSubscriptions.php b/db/seeds/TechletterSubscriptions.php index 985a0a815..3a962d6c3 100644 --- a/db/seeds/TechletterSubscriptions.php +++ b/db/seeds/TechletterSubscriptions.php @@ -8,7 +8,7 @@ class TechletterSubscriptions extends AbstractSeed { public function run(): void { - $subscriptionDate = (new DateTime())->format('Y-m-d H:i:s'); + $subscriptionDate = new DateTime()->format('Y-m-d H:i:s'); $data = [ [ 'user_id' => Users::ID_USER_ADMIN, diff --git a/rector.php b/rector.php index cd8fc5ed1..98b6b28c9 100644 --- a/rector.php +++ b/rector.php @@ -26,6 +26,6 @@ symfony: true, ) ->withSets([ - LevelSetList::UP_TO_PHP_82, + LevelSetList::UP_TO_PHP_85, ]) ; diff --git a/sources/Afup/Comptabilite/PDF.php b/sources/Afup/Comptabilite/PDF.php index 0b770726e..883cba79b 100644 --- a/sources/Afup/Comptabilite/PDF.php +++ b/sources/Afup/Comptabilite/PDF.php @@ -19,12 +19,14 @@ public function __construct($orientation = 'P', $unit = 'mm', $size = 'A4') $this->AddFont('Arial','I','Arial_Italic.ttf',true); } + #[\Override] public function Header(): void //En-tête { $this->Ln(1); //Saut de ligne } //Pied de page + #[\Override] public function Footer(): void { // $this->SetY(-15); //Positionnement à 1,5 cm du bas diff --git a/sources/Afup/Utils/PDF_AG.php b/sources/Afup/Utils/PDF_AG.php index 3adafe3a2..da9d4c3db 100644 --- a/sources/Afup/Utils/PDF_AG.php +++ b/sources/Afup/Utils/PDF_AG.php @@ -77,6 +77,7 @@ private function writeRow(array $row): void } } + #[\Override] public function Footer(): void { $this->SetY(-15); diff --git a/sources/Afup/Utils/PDF_Facture.php b/sources/Afup/Utils/PDF_Facture.php index a208c8e14..448ae3078 100644 --- a/sources/Afup/Utils/PDF_Facture.php +++ b/sources/Afup/Utils/PDF_Facture.php @@ -16,6 +16,7 @@ public function __construct( parent::__construct(); } + #[\Override] public function header(): void { // Haut de page [afup] @@ -50,6 +51,7 @@ public function header(): void $this->Ln(); } + #[\Override] public function _putinfo(): void { // on surcharge le _putinfo pour ne rien faire @@ -65,6 +67,7 @@ public function _putinfo(): void * * @see FPDF::Footer() */ + #[\Override] public function Footer(): void { $address = sprintf( diff --git a/sources/AppBundle/Accounting/Form/InvoicingPeriodType.php b/sources/AppBundle/Accounting/Form/InvoicingPeriodType.php index 6d1010a7e..05659f941 100644 --- a/sources/AppBundle/Accounting/Form/InvoicingPeriodType.php +++ b/sources/AppBundle/Accounting/Form/InvoicingPeriodType.php @@ -38,6 +38,7 @@ public function configureOptions(OptionsResolver $resolver): void $resolver->setDefaults(['method' => 'GET', 'csrf_protection' => false]); } + #[\Override] public function getBlockPrefix() { return ''; diff --git a/sources/AppBundle/AppKernel.php b/sources/AppBundle/AppKernel.php index af5ef910c..e96738deb 100644 --- a/sources/AppBundle/AppKernel.php +++ b/sources/AppBundle/AppKernel.php @@ -15,16 +15,19 @@ class AppKernel extends Kernel { use MicroKernelTrait; + #[\Override] public function getProjectDir(): string { return __DIR__ . '/../../app'; } + #[\Override] public function getCacheDir(): string { return __DIR__ . '/../../var/cache/' . $this->getEnvironment(); } + #[\Override] public function getLogDir(): string { return __DIR__ . '/../../var/logs'; diff --git a/sources/AppBundle/Association/CompanyMembership/SubscriptionManagement.php b/sources/AppBundle/Association/CompanyMembership/SubscriptionManagement.php index 1c27c35c4..6477873d2 100644 --- a/sources/AppBundle/Association/CompanyMembership/SubscriptionManagement.php +++ b/sources/AppBundle/Association/CompanyMembership/SubscriptionManagement.php @@ -24,7 +24,7 @@ public function createInvoiceForInscription(CompanyMember $company, $numberOfMem ceil($numberOfMembers / AFUP_PERSONNE_MORALE_SEUIL) * AFUP_COTISATION_PERSONNE_MORALE * (1 + Utils::MEMBERSHIP_FEE_VAT_RATE), null, null, - (new \DateTime())->format('U'), + new \DateTime()->format('U'), $endSubscription->format('U'), '', ); diff --git a/sources/AppBundle/Association/Form/NearestOfficeChoiceType.php b/sources/AppBundle/Association/Form/NearestOfficeChoiceType.php index 93a631ee3..d856141dc 100644 --- a/sources/AppBundle/Association/Form/NearestOfficeChoiceType.php +++ b/sources/AppBundle/Association/Form/NearestOfficeChoiceType.php @@ -25,6 +25,7 @@ public function configureOptions(OptionsResolver $resolver): void $resolver->setDefaults(['choices' => $offices]); } + #[\Override] public function getParent() { return ChoiceType::class; diff --git a/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php b/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php index 3d58fea42..c61a2052c 100644 --- a/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php +++ b/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php @@ -163,7 +163,7 @@ public function countByStatus($status) private function getHydratorForCompanyMember() { - return (new HydratorSingleObject()) + return new HydratorSingleObject() ->mapAliasTo('lastsubcription', 'apm', 'setLastSubscription'); } diff --git a/sources/AppBundle/Association/Model/Repository/UserRepository.php b/sources/AppBundle/Association/Model/Repository/UserRepository.php index 103c2438c..16a9365c4 100644 --- a/sources/AppBundle/Association/Model/Repository/UserRepository.php +++ b/sources/AppBundle/Association/Model/Repository/UserRepository.php @@ -401,7 +401,7 @@ private function addUserTypeCondition(SelectInterface $queryBuilder, ?MemberType private function getHydratorForUser() { - return (new HydratorSingleObject()) + return new HydratorSingleObject() ->mapAliasTo('lastsubcription', 'app', 'setLastSubscription') ->mapAliasTo('hash', 'app', 'setHash') ->mapObjectTo('apm', 'app', 'setCompany') diff --git a/sources/AppBundle/Association/Model/User.php b/sources/AppBundle/Association/Model/User.php index 27865c70c..39f2a9c8f 100644 --- a/sources/AppBundle/Association/Model/User.php +++ b/sources/AppBundle/Association/Model/User.php @@ -709,15 +709,6 @@ public function removeRole($role): self return $this; } - /** - * @deprecated - * This method can be removed in Symfony 6.0 - is not needed for apps that do not check user passwords. - */ - public function getSalt(): null - { - return null; - } - public function eraseCredentials(): void {} public function __serialize(): array diff --git a/sources/AppBundle/Association/UserMembership/BadgesComputer.php b/sources/AppBundle/Association/UserMembership/BadgesComputer.php index 35a236a39..b9ca13cee 100644 --- a/sources/AppBundle/Association/UserMembership/BadgesComputer.php +++ b/sources/AppBundle/Association/UserMembership/BadgesComputer.php @@ -228,7 +228,7 @@ private function getSpeakerYears(User $user): array private function getGeneralMeetingYears(User $user): array { $responses = $this->generalMeetingResponseRepository->getByUser($user); - $currentTimestamp = (new \DateTime())->format('U'); + $currentTimestamp = new \DateTime()->format('U'); $dates = []; foreach ($responses as $response) { diff --git a/sources/AppBundle/Calendar/TechnoWatchCalendarGenerator.php b/sources/AppBundle/Calendar/TechnoWatchCalendarGenerator.php index 7169c6062..028fd6646 100644 --- a/sources/AppBundle/Calendar/TechnoWatchCalendarGenerator.php +++ b/sources/AppBundle/Calendar/TechnoWatchCalendarGenerator.php @@ -52,7 +52,7 @@ private function prepareEvents($googleSpreadsheetCsvUrl, $filter = null): array $events = []; - while (false !== ($row = fgetcsv($fp))) { + while (false !== ($row = fgetcsv($fp, escape: '\\'))) { if (trim((string) $row[0]) === '') { continue; } diff --git a/sources/AppBundle/Compta/Importer/CreditMutuel.php b/sources/AppBundle/Compta/Importer/CreditMutuel.php index e1367314d..c95d5f6c6 100644 --- a/sources/AppBundle/Compta/Importer/CreditMutuel.php +++ b/sources/AppBundle/Compta/Importer/CreditMutuel.php @@ -16,7 +16,7 @@ class CreditMutuel implements Importer public function initialize(string $filePath): void { $this->file = new \SplFileObject($filePath, 'r'); - $this->file->setCsvControl(';'); + $this->file->setCsvControl(';', escape: '\\'); $this->file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::SKIP_EMPTY); } diff --git a/sources/AppBundle/Compta/Importer/CreditMutuelLivret.php b/sources/AppBundle/Compta/Importer/CreditMutuelLivret.php index 4e9f457e5..c46a56a22 100644 --- a/sources/AppBundle/Compta/Importer/CreditMutuelLivret.php +++ b/sources/AppBundle/Compta/Importer/CreditMutuelLivret.php @@ -10,6 +10,7 @@ class CreditMutuelLivret extends CreditMutuel { public const string CODE = 'CMUTLIVRET'; + #[\Override] public function getCompteId(): int { return ComptaCompte::LIVRET_CMUT; diff --git a/sources/AppBundle/Controller/Admin/Accounting/Journal/ExportAction.php b/sources/AppBundle/Controller/Admin/Accounting/Journal/ExportAction.php index 0b04e70f8..ca2729052 100644 --- a/sources/AppBundle/Controller/Admin/Accounting/Journal/ExportAction.php +++ b/sources/AppBundle/Controller/Admin/Accounting/Journal/ExportAction.php @@ -64,7 +64,7 @@ public function __invoke(Request $request): Response 'TVA 20', "Zone de TVA", ]; - $file->fputcsv($columns, $csvDelimiter, $csvEnclosure); + $file->fputcsv($columns, $csvDelimiter, $csvEnclosure, escape: '\\'); foreach ($entries as $entry) { $total = number_format((float) $entry['montant'], 2, ',', "\u{202f}"); @@ -94,6 +94,7 @@ public function __invoke(Request $request): Response ], $csvDelimiter, $csvEnclosure, + escape: '\\', ); } diff --git a/sources/AppBundle/Controller/Admin/Event/PreviousRegistrationsAction.php b/sources/AppBundle/Controller/Admin/Event/PreviousRegistrationsAction.php index 968e34aa7..e6283acb2 100644 --- a/sources/AppBundle/Controller/Admin/Event/PreviousRegistrationsAction.php +++ b/sources/AppBundle/Controller/Admin/Event/PreviousRegistrationsAction.php @@ -23,7 +23,7 @@ public function __invoke(Request $request): BinaryFileResponse $file = new SplFileObject(sys_get_temp_dir() . DIRECTORY_SEPARATOR . uniqid('inscrits_', true), 'w+'); $events = $this->eventRepository->getPreviousEvents($request->query->getInt('event_count', 4)); foreach ($this->ticketRepository->getRegistrationsForEventsWithNewsletterAllowed($events) as $registration) { - $file->fputcsv($registration); + $file->fputcsv($registration, escape: '\\'); } $response = new BinaryFileResponse($file, BinaryFileResponse::HTTP_OK, ['Content-Type' => 'text/csv; charset=utf-8']); diff --git a/sources/AppBundle/Controller/Admin/Event/Session/EditAction.php b/sources/AppBundle/Controller/Admin/Event/Session/EditAction.php index 862631779..784e19d78 100644 --- a/sources/AppBundle/Controller/Admin/Event/Session/EditAction.php +++ b/sources/AppBundle/Controller/Admin/Event/Session/EditAction.php @@ -58,7 +58,7 @@ public function __invoke(Request $request): Response if ($request->get('mode') === 'add') { $planning->getStart()?->setTime(9, 0); $planning->getEnd()?->setTime(9, 40); - $planning->setRoomId($roomChoices[array_key_first($roomChoices)]); + $planning->setRoomId(array_first($roomChoices)); $this->planningRepository->save($planning); diff --git a/sources/AppBundle/Controller/Admin/Members/UserExportAction.php b/sources/AppBundle/Controller/Admin/Members/UserExportAction.php index 0b280dc3e..c30216dba 100644 --- a/sources/AppBundle/Controller/Admin/Members/UserExportAction.php +++ b/sources/AppBundle/Controller/Admin/Members/UserExportAction.php @@ -33,7 +33,7 @@ public function __invoke(Request $request): BinaryFileResponse $user->getEmail(), $user->getLastName(), $user->getFirstName(), - ]); + ], escape: '\\'); } $response = new BinaryFileResponse($file); $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $baseName . '.csv'); diff --git a/sources/AppBundle/Controller/Event/CFP/IndexAction.php b/sources/AppBundle/Controller/Event/CFP/IndexAction.php index 0f5b8540c..583299ff9 100644 --- a/sources/AppBundle/Controller/Event/CFP/IndexAction.php +++ b/sources/AppBundle/Controller/Event/CFP/IndexAction.php @@ -50,7 +50,7 @@ public function __invoke(Request $request): Response } /** @var Talk $talk */ foreach ($this->talkRepository->getPreviousTalksBySpeaker($event, $speaker) as $talk) { - if (array_key_exists($talk->getForumId(), $previousEventTalkLists)) { + if (array_key_exists((string) $talk->getForumId(), $previousEventTalkLists)) { $previousEventTalkLists[$talk->getForumId()]->addTalk($talk); } } diff --git a/sources/AppBundle/Controller/Event/Speaker/SuggestionAction.php b/sources/AppBundle/Controller/Event/Speaker/SuggestionAction.php index c8b3cf78d..65520902b 100644 --- a/sources/AppBundle/Controller/Event/Speaker/SuggestionAction.php +++ b/sources/AppBundle/Controller/Event/Speaker/SuggestionAction.php @@ -62,7 +62,7 @@ public function __invoke(Request $request, string $eventSlug): Response private function createSpeakerSuggestion(Event $event, array $data): SpeakerSuggestion { - return (new SpeakerSuggestion()) + return new SpeakerSuggestion() ->setEventId($event->getId()) ->setSuggesterEmail($data['suggester_email']) ->setSuggesterName($data['suggester_name']) diff --git a/sources/AppBundle/Controller/Event/SponsorScan/ExportAction.php b/sources/AppBundle/Controller/Event/SponsorScan/ExportAction.php index fca7c8d3a..f6c7b19ed 100644 --- a/sources/AppBundle/Controller/Event/SponsorScan/ExportAction.php +++ b/sources/AppBundle/Controller/Event/SponsorScan/ExportAction.php @@ -39,7 +39,7 @@ public function __invoke(Request $request, string $eventSlug): Response $scans = $this->sponsorScanRepository->getBySponsorTicket($sponsorTicket); - $file->fputcsv(['Nom', 'Prénom', 'Email', 'Date']); + $file->fputcsv(['Nom', 'Prénom', 'Email', 'Date'], escape: '\\'); foreach ($scans as $scan) { $file->fputcsv([ @@ -47,7 +47,7 @@ public function __invoke(Request $request, string $eventSlug): Response $scan['prenom'], $scan['email'], $scan['created_on'], - ]); + ], escape: '\\'); } $response = new BinaryFileResponse($file); diff --git a/sources/AppBundle/Controller/Event/SponsorScan/FlashAction.php b/sources/AppBundle/Controller/Event/SponsorScan/FlashAction.php index 827155c74..4941a8b34 100644 --- a/sources/AppBundle/Controller/Event/SponsorScan/FlashAction.php +++ b/sources/AppBundle/Controller/Event/SponsorScan/FlashAction.php @@ -50,7 +50,7 @@ public function __invoke(Request $request, string $code, string $eventSlug): Red } if (!$scan instanceof SponsorScan) { - $scan = (new SponsorScan()) + $scan = new SponsorScan() ->setSponsorTicketId($sponsorTicket->getId()) ->setTicketId($ticket->getId()); } diff --git a/sources/AppBundle/Controller/Website/Global/HtmlSitemapAction.php b/sources/AppBundle/Controller/Website/Global/HtmlSitemapAction.php index 31abf67ac..22bfe55dc 100644 --- a/sources/AppBundle/Controller/Website/Global/HtmlSitemapAction.php +++ b/sources/AppBundle/Controller/Website/Global/HtmlSitemapAction.php @@ -93,7 +93,7 @@ private function news(): array private function talks(): array { $talks = []; - $talkList = $this->talkRepository->getAllPastTalks((new \DateTime())->setTime(29, 59, 59)); + $talkList = $this->talkRepository->getAllPastTalks(new \DateTime()->setTime(29, 59, 59)); /** @var Talk $talk */ foreach ($talkList as $talk) { diff --git a/sources/AppBundle/Controller/Website/Member/IndexAction.php b/sources/AppBundle/Controller/Website/Member/IndexAction.php index 8779a95b4..753b92ec2 100644 --- a/sources/AppBundle/Controller/Website/Member/IndexAction.php +++ b/sources/AppBundle/Controller/Website/Member/IndexAction.php @@ -54,7 +54,7 @@ public function __invoke(): Response if ($hasGeneralMeetingPlanned && null !== $latestDate - && ($latestDate->format('Y-m-d') === (new \DateTime('-1 day'))->format('Y-m-d')) + && ($latestDate->format('Y-m-d') === new \DateTime('-1 day')->format('Y-m-d')) && count($generalMeetingQuestionRepository->loadByDate($latestDate)) > 0 ) { $displayLinkToGeneralMeetingVote = true; diff --git a/sources/AppBundle/Controller/Website/Membership/CompanyAction.php b/sources/AppBundle/Controller/Website/Membership/CompanyAction.php index c583be2ca..2205f261e 100644 --- a/sources/AppBundle/Controller/Website/Membership/CompanyAction.php +++ b/sources/AppBundle/Controller/Website/Membership/CompanyAction.php @@ -33,7 +33,7 @@ public function __invoke(Request $request): Response { $data = new CompanyMember(); $data->setInvitations([ - (new CompanyMemberInvitation())->setManager(true), + new CompanyMemberInvitation()->setManager(true), ]); $subscribeForm = $this->createForm(CompanyMemberType::class, $data); diff --git a/sources/AppBundle/Controller/Website/Membership/Fee/IndexAction.php b/sources/AppBundle/Controller/Website/Membership/Fee/IndexAction.php index 919b5e514..d0bbe5e9c 100644 --- a/sources/AppBundle/Controller/Website/Membership/Fee/IndexAction.php +++ b/sources/AppBundle/Controller/Website/Membership/Fee/IndexAction.php @@ -95,7 +95,7 @@ public function __invoke(): Response $formattedMontant = number_format($montant, 2, ',', ' '); $libelle = sprintf("%s : %s€", $prefixe, $formattedMontant); - $reference = (new MembershipFeeReferenceGenerator())->generate(new \DateTimeImmutable('now'), $type_personne, $id_personne, $user->getLastName()); + $reference = new MembershipFeeReferenceGenerator()->generate(new \DateTimeImmutable('now'), $type_personne, $id_personne, $user->getLastName()); $payboxBilling = new PayboxBilling($user->getFirstName(), $user->getLastName(), $user->getAddress(), $user->getZipCode(), $user->getCity(), $user->getCountry()); diff --git a/sources/AppBundle/Doctrine/Type/UnixTimestampType.php b/sources/AppBundle/Doctrine/Type/UnixTimestampType.php index 2ea4a156e..101aa6bfe 100644 --- a/sources/AppBundle/Doctrine/Type/UnixTimestampType.php +++ b/sources/AppBundle/Doctrine/Type/UnixTimestampType.php @@ -17,6 +17,7 @@ public function getSQLDeclaration(array $column, AbstractPlatform $platform): st return $platform->getIntegerTypeDeclarationSQL($column); } + #[\Override] public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?\DateTime { if ($value === null) { @@ -29,6 +30,7 @@ public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?\D return $date; } + #[\Override] public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform): ?int { if ($value === null) { diff --git a/sources/AppBundle/Email/Emails.php b/sources/AppBundle/Email/Emails.php index c778cb86a..eb591fb34 100644 --- a/sources/AppBundle/Email/Emails.php +++ b/sources/AppBundle/Email/Emails.php @@ -58,7 +58,7 @@ private function getAttachementIcsInscription(Event $event, MailUser $recipient) $organizerCN = MailUserFactory::afup()->getName(); $attendeeCN = $recipient->getName(); $attendeeEmail = $recipient->getEmail(); - $created = (new \DateTime())->setTimezone(new \DateTimeZone('UTC'))->format('Ymd\THis\Z'); + $created = new \DateTime()->setTimezone(new \DateTimeZone('UTC'))->format('Ymd\THis\Z'); $dtStart = $event->getDateStart()->format('Ymd'); $dtEnd = $event->getDateEnd()->add(new \DateInterval('P1D'))->format('Ymd'); diff --git a/sources/AppBundle/Email/Mailer/Adapter/SymfonyMailerAdapter.php b/sources/AppBundle/Email/Mailer/Adapter/SymfonyMailerAdapter.php index 61688757a..de5c1e437 100644 --- a/sources/AppBundle/Email/Mailer/Adapter/SymfonyMailerAdapter.php +++ b/sources/AppBundle/Email/Mailer/Adapter/SymfonyMailerAdapter.php @@ -22,7 +22,7 @@ public function send(Message $message): void throw new UnexpectedValueException('Trying to send a mail with no sender'); } - $email = (new Email()) + $email = new Email() ->from(new Address($from->getEmail(), $from->getName())) ->subject($message->getSubject()); diff --git a/sources/AppBundle/Email/Parsedown.php b/sources/AppBundle/Email/Parsedown.php index 542d5e0f6..7a620f421 100644 --- a/sources/AppBundle/Email/Parsedown.php +++ b/sources/AppBundle/Email/Parsedown.php @@ -11,6 +11,7 @@ public function __construct() $this->setBreaksEnabled(true); } + #[\Override] protected function inlineLink($Excerpt) { $inlineLink = parent::inlineLink($Excerpt); @@ -20,6 +21,7 @@ protected function inlineLink($Excerpt) return $inlineLink; } + #[\Override] protected function blockHeader($Line) { if (isset($Line['text'][1])) { diff --git a/sources/AppBundle/Event/Form/EventCompareSelectType.php b/sources/AppBundle/Event/Form/EventCompareSelectType.php index 87c7ce418..6d0fa395a 100644 --- a/sources/AppBundle/Event/Form/EventCompareSelectType.php +++ b/sources/AppBundle/Event/Form/EventCompareSelectType.php @@ -56,6 +56,7 @@ public function configureOptions(OptionsResolver $resolver): void $resolver->setAllowedTypes('events', [Collection::class]); } + #[\Override] public function getBlockPrefix(): string { return ''; diff --git a/sources/AppBundle/Event/Form/TalkAdminType.php b/sources/AppBundle/Event/Form/TalkAdminType.php index fb298a1ad..9d13e355f 100644 --- a/sources/AppBundle/Event/Form/TalkAdminType.php +++ b/sources/AppBundle/Event/Form/TalkAdminType.php @@ -21,6 +21,7 @@ class TalkAdminType extends TalkType { public function __construct(private readonly SpeakerRepository $speakerRepository) {} + #[\Override] public function buildForm(FormBuilderInterface $builder, array $options): void { parent::buildForm($builder, $options); @@ -110,6 +111,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ; } + #[\Override] public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefault('data_class', Talk::class); diff --git a/sources/AppBundle/Event/Model/Repository/EventRepository.php b/sources/AppBundle/Event/Model/Repository/EventRepository.php index 9c18a1696..0eb4ba63a 100644 --- a/sources/AppBundle/Event/Model/Repository/EventRepository.php +++ b/sources/AppBundle/Event/Model/Repository/EventRepository.php @@ -25,11 +25,9 @@ class EventRepository extends Repository implements MetadataInitializer { /** - * @deprecated TODO: à remplacer par getNextEvents de partout - * * @return Event|null */ - public function getNextEvent() + public function getNextEvent(): ?Event { $events = $this->getNextEvents(); if ($events->count() === 0) { @@ -41,7 +39,7 @@ public function getNextEvent() /** * @return CollectionInterface|null */ - public function getNextEvents() + public function getNextEvents(): ?CollectionInterface { $query = $this ->getQuery('SELECT id, path, titre, text, date_debut, date_fin, date_debut_appel_conferencier, date_fin_appel_conferencier, date_fin_vente, nb_places FROM afup_forum WHERE date_debut > NOW() ORDER BY date_debut') @@ -145,7 +143,7 @@ public function getList($id = null): array $data = []; foreach ($results as $result) { - $result['est_supprimable'] = !array_key_exists($result['id'], $sessions) && !array_key_exists($result['id'], $inscriptions); + $result['est_supprimable'] = !array_key_exists((string) $result['id'], $sessions) && !array_key_exists((string) $result['id'], $inscriptions); $data[] = $result; } diff --git a/sources/AppBundle/Event/Model/Repository/TicketEventTypeRepository.php b/sources/AppBundle/Event/Model/Repository/TicketEventTypeRepository.php index 429ba9ec7..f711bc6a2 100644 --- a/sources/AppBundle/Event/Model/Repository/TicketEventTypeRepository.php +++ b/sources/AppBundle/Event/Model/Repository/TicketEventTypeRepository.php @@ -59,7 +59,7 @@ public function getTicketsByEvent(Event $event, $publicOnly = true, $datesFilter return $query->query( $this->getCollection( - (new HydratorSingleObject())->mapObjectTo('tarif', 'tarif_event', 'setTicketType'), + new HydratorSingleObject()->mapObjectTo('tarif', 'tarif_event', 'setTicketType'), ), ); } diff --git a/sources/AppBundle/Event/Model/Repository/TicketRepository.php b/sources/AppBundle/Event/Model/Repository/TicketRepository.php index d0b6e1da0..8fec0dfa5 100644 --- a/sources/AppBundle/Event/Model/Repository/TicketRepository.php +++ b/sources/AppBundle/Event/Model/Repository/TicketRepository.php @@ -107,7 +107,7 @@ public function getByInvoiceWithDetail(Invoice $invoice) ', )->setParams(['ref' => $invoice->getReference()])->query( $this->getCollection( - (new HydratorSingleObject()) + new HydratorSingleObject() ->mapObjectTo('tarif', 'tarif_event', 'setTicketType') ->mapObjectTo('tarif_event', 'inscriptions', 'setTicketEventType'), ), diff --git a/sources/AppBundle/Event/Model/Repository/UserBadgeRepository.php b/sources/AppBundle/Event/Model/Repository/UserBadgeRepository.php index 02fac965d..56a194e93 100644 --- a/sources/AppBundle/Event/Model/Repository/UserBadgeRepository.php +++ b/sources/AppBundle/Event/Model/Repository/UserBadgeRepository.php @@ -35,7 +35,7 @@ public function findByUserId($userId) private function getHydratorForUserBadge() { - return (new HydratorSingleObject()) + return new HydratorSingleObject() ->mapObjectTo('afup_badge', 'afup_personnes_physiques_badge', 'setBadge') ; } diff --git a/sources/AppBundle/Event/Speaker/ExportGenerator.php b/sources/AppBundle/Event/Speaker/ExportGenerator.php index f8ca5589c..4602089a6 100644 --- a/sources/AppBundle/Event/Speaker/ExportGenerator.php +++ b/sources/AppBundle/Event/Speaker/ExportGenerator.php @@ -36,7 +36,7 @@ public function export(Event $event, \SplFileObject $toFile): void 'commentaire', ]; - $toFile->fputcsv($columns); + $toFile->fputcsv($columns, escape: '\\'); foreach ($this->getFromRegistrationsOnEvent($event) as $row) { $preparedRow = []; @@ -46,7 +46,7 @@ public function export(Event $event, \SplFileObject $toFile): void } $preparedRow[] = $row[$column]; } - $toFile->fputcsv($preparedRow); + $toFile->fputcsv($preparedRow, escape: '\\'); } } diff --git a/sources/AppBundle/Event/Talk/ExportGenerator.php b/sources/AppBundle/Event/Talk/ExportGenerator.php index c28ca65a2..472d3ebf2 100644 --- a/sources/AppBundle/Event/Talk/ExportGenerator.php +++ b/sources/AppBundle/Event/Talk/ExportGenerator.php @@ -35,7 +35,7 @@ public function export(Event $event, \SplFileObject $toFile): void 'youtube_id', ]; - $toFile->fputcsv($columns); + $toFile->fputcsv($columns, escape: '\\'); foreach ($this->getFromRegistrationsOnEvent($event) as $row) { $preparedRow = []; @@ -45,7 +45,7 @@ public function export(Event $event, \SplFileObject $toFile): void } $preparedRow[] = $row[$column]; } - $toFile->fputcsv($preparedRow); + $toFile->fputcsv($preparedRow, escape: '\\'); } } @@ -54,7 +54,7 @@ public function exportJoindIn(Event $event, \SplFileObject $toFile): void // Récupération des données $talkAggregates = $this->talkRepository->getByEventWithSpeakers($event); - $toFile->fputcsv(['Title','Description','Speaker','Date','Time','Type']); + $toFile->fputcsv(['Title','Description','Speaker','Date','Time','Type'], escape: '\\'); foreach ($talkAggregates as $talkAggregate) { @@ -88,7 +88,7 @@ public function exportJoindIn(Event $event, \SplFileObject $toFile): void $talkAggregate->planning?->getStart()?->format('Y-m-d'), $talkAggregate->planning?->getStart()?->format('H:i'), $type, - ]); + ], escape: '\\'); } } diff --git a/sources/AppBundle/Event/Ticket/RegistrationsExportGenerator.php b/sources/AppBundle/Event/Ticket/RegistrationsExportGenerator.php index f1af1a5e9..149e6081c 100644 --- a/sources/AppBundle/Event/Ticket/RegistrationsExportGenerator.php +++ b/sources/AppBundle/Event/Ticket/RegistrationsExportGenerator.php @@ -41,7 +41,7 @@ public function export(Event $event, \SplFileObject $toFile): void 'office', ]; - $toFile->fputcsv($columns); + $toFile->fputcsv($columns, escape: '\\'); foreach ($this->getFromRegistrationsOnEvent($event) as $row) { $preparedRow = []; @@ -51,7 +51,7 @@ public function export(Event $event, \SplFileObject $toFile): void } $preparedRow[] = $row[$column]; } - $toFile->fputcsv($preparedRow); + $toFile->fputcsv($preparedRow, escape: '\\'); } } diff --git a/sources/AppBundle/Event/Validator/Constraints/AvailableTicket.php b/sources/AppBundle/Event/Validator/Constraints/AvailableTicket.php index 3bdabce39..7c2fd4e74 100644 --- a/sources/AppBundle/Event/Validator/Constraints/AvailableTicket.php +++ b/sources/AppBundle/Event/Validator/Constraints/AvailableTicket.php @@ -11,6 +11,7 @@ class AvailableTicket extends Constraint { public string $message = 'This ticket is not available anymore.'; + #[\Override] public function getTargets(): string { return self::CLASS_CONSTRAINT; diff --git a/sources/AppBundle/Event/Validator/Constraints/CorporateMember.php b/sources/AppBundle/Event/Validator/Constraints/CorporateMember.php index ab8749358..f7d0ef1d1 100644 --- a/sources/AppBundle/Event/Validator/Constraints/CorporateMember.php +++ b/sources/AppBundle/Event/Validator/Constraints/CorporateMember.php @@ -13,6 +13,7 @@ class CorporateMember extends Constraint public string $messageFeeOutOfDate = 'You must have paid your membership fee to order this ticket.'; public string $messageTooMuchRestrictedTickets = 'You cannot order as many tickets at the discounted rate.'; + #[\Override] public function getTargets(): string { return self::PROPERTY_CONSTRAINT; diff --git a/sources/AppBundle/Event/Validator/Constraints/EarlyBirdTicket.php b/sources/AppBundle/Event/Validator/Constraints/EarlyBirdTicket.php index a0ba0185d..c1d84cb39 100644 --- a/sources/AppBundle/Event/Validator/Constraints/EarlyBirdTicket.php +++ b/sources/AppBundle/Event/Validator/Constraints/EarlyBirdTicket.php @@ -11,6 +11,7 @@ class EarlyBirdTicket extends Constraint { public string $message = 'You can only order one early bird ticket "{{ ticket_pretty_name }}".'; + #[\Override] public function getTargets(): string { return self::PROPERTY_CONSTRAINT; diff --git a/sources/AppBundle/Event/Validator/Constraints/LoggedInMember.php b/sources/AppBundle/Event/Validator/Constraints/LoggedInMember.php index 99f80bec1..0b42f20b2 100644 --- a/sources/AppBundle/Event/Validator/Constraints/LoggedInMember.php +++ b/sources/AppBundle/Event/Validator/Constraints/LoggedInMember.php @@ -13,6 +13,7 @@ class LoggedInMember extends Constraint public string $messageBadMail = 'You must use the same email for your ticket and you membership.'; public string $messageFeeOutOfDate = 'You must have paid your membership fee to order this ticket.'; + #[\Override] public function getTargets(): string { return self::CLASS_CONSTRAINT; diff --git a/sources/AppBundle/Event/Validator/Constraints/PublicTicket.php b/sources/AppBundle/Event/Validator/Constraints/PublicTicket.php index c49598c94..c9df47a40 100644 --- a/sources/AppBundle/Event/Validator/Constraints/PublicTicket.php +++ b/sources/AppBundle/Event/Validator/Constraints/PublicTicket.php @@ -11,6 +11,7 @@ class PublicTicket extends Constraint { public string $messageNotLoggedIn = 'You must be connected with a valid membership to order this ticket.'; + #[\Override] public function getTargets(): string { return self::CLASS_CONSTRAINT; diff --git a/sources/AppBundle/Event/Validator/Constraints/TicketsCfpSubmitter.php b/sources/AppBundle/Event/Validator/Constraints/TicketsCfpSubmitter.php index 26591664a..bc9d297ec 100644 --- a/sources/AppBundle/Event/Validator/Constraints/TicketsCfpSubmitter.php +++ b/sources/AppBundle/Event/Validator/Constraints/TicketsCfpSubmitter.php @@ -11,6 +11,7 @@ class TicketsCfpSubmitter extends Constraint { public string $messageTooMuchCfpSubmitterTickets = 'You can only order one ticket "{{ ticket_pretty_name }}".'; + #[\Override] public function getTargets(): string { return self::PROPERTY_CONSTRAINT; diff --git a/sources/AppBundle/Form/BooleanType.php b/sources/AppBundle/Form/BooleanType.php index 1aca9409d..a26043807 100644 --- a/sources/AppBundle/Form/BooleanType.php +++ b/sources/AppBundle/Form/BooleanType.php @@ -22,6 +22,7 @@ public function configureOptions(OptionsResolver $resolver): void ]); } + #[\Override] public function getParent(): string { return ChoiceType::class; diff --git a/sources/AppBundle/GeneralMeeting/GeneralMeetingRepository.php b/sources/AppBundle/GeneralMeeting/GeneralMeetingRepository.php index f738cb93d..430014144 100644 --- a/sources/AppBundle/GeneralMeeting/GeneralMeetingRepository.php +++ b/sources/AppBundle/GeneralMeeting/GeneralMeetingRepository.php @@ -318,7 +318,7 @@ public function addAttendee($personId, DateTimeInterface $date, $presence, $powe $query->bindValue('date', $date->getTimestamp()); $query->bindValue('presence', $presence); $query->bindValue('powerId', $powerId); - $query->bindValue('modificationDate', (new DateTimeImmutable())->getTimestamp()); + $query->bindValue('modificationDate', new DateTimeImmutable()->getTimestamp()); return $query->executeStatement() > 0; } @@ -346,7 +346,7 @@ public function editAttendee($login, DateTimeInterface $date, $presence, $powerI $query->bindValue('date', $date->getTimestamp()); $query->bindValue('presence', $presence); $query->bindValue('powerId', $powerId); - $query->bindValue('modificationDate', (new DateTimeImmutable())->getTimestamp()); + $query->bindValue('modificationDate', new DateTimeImmutable()->getTimestamp()); return $query->executeStatement() > 0; } diff --git a/sources/AppBundle/GeneralMeeting/ReportListBuilder.php b/sources/AppBundle/GeneralMeeting/ReportListBuilder.php index 8fcd9b363..9aed1ae3c 100644 --- a/sources/AppBundle/GeneralMeeting/ReportListBuilder.php +++ b/sources/AppBundle/GeneralMeeting/ReportListBuilder.php @@ -23,7 +23,7 @@ public function prepareGeneralMeetingsReportsList(): array return []; } - $files = (new Finder())->name("*.pdf")->in($this->storageDir); + $files = new Finder()->name("*.pdf")->in($this->storageDir); $reports = []; foreach ($files as $file) { diff --git a/sources/AppBundle/Listener/DetectClockMockingListener.php b/sources/AppBundle/Listener/DetectClockMockingListener.php index 715719714..07c2bc615 100644 --- a/sources/AppBundle/Listener/DetectClockMockingListener.php +++ b/sources/AppBundle/Listener/DetectClockMockingListener.php @@ -25,7 +25,7 @@ public function __invoke(RequestEvent $event): void return; } - $currentDateMock = (new TimeMocker())->getCurrentDateMock(); + $currentDateMock = new TimeMocker()->getCurrentDateMock(); if ($currentDateMock === null) { return; } diff --git a/sources/AppBundle/Offices/NullOfficeFinder.php b/sources/AppBundle/Offices/NullOfficeFinder.php index 3a46a64a2..07a53d19d 100644 --- a/sources/AppBundle/Offices/NullOfficeFinder.php +++ b/sources/AppBundle/Offices/NullOfficeFinder.php @@ -9,6 +9,7 @@ class NullOfficeFinder extends OfficeFinder { + #[\Override] public function findOffice(Invoice $invoice, ?User $user = null): ?string { return null; diff --git a/sources/AppBundle/Payment/PayboxBilling.php b/sources/AppBundle/Payment/PayboxBilling.php index 527a3684a..b5f14fe6c 100644 --- a/sources/AppBundle/Payment/PayboxBilling.php +++ b/sources/AppBundle/Payment/PayboxBilling.php @@ -71,7 +71,7 @@ public function getCountryCodeIso3166Numeric() $country = $this->getCountryCode(); try { - $data = (new ISO3166())->alpha2($country); + $data = new ISO3166()->alpha2($country); return $data['numeric']; } catch (\Exception) { diff --git a/sources/AppBundle/Security/ActionThrottling/LogRepository.php b/sources/AppBundle/Security/ActionThrottling/LogRepository.php index 0401938d5..bc7bd3721 100644 --- a/sources/AppBundle/Security/ActionThrottling/LogRepository.php +++ b/sources/AppBundle/Security/ActionThrottling/LogRepository.php @@ -84,7 +84,7 @@ public function clearOldLogs(\DateInterval $delay): void DELETE FROM afup_throttling WHERE `created_on` < :date '); - $date = (new \DateTime())->sub($delay); + $date = new \DateTime()->sub($delay); $query->setParams([ 'date' => $date->format('Y-m-d H:i:s'), ]); diff --git a/sources/AppBundle/Slack/MessageFactory.php b/sources/AppBundle/Slack/MessageFactory.php index eaa7512b5..93d19f469 100644 --- a/sources/AppBundle/Slack/MessageFactory.php +++ b/sources/AppBundle/Slack/MessageFactory.php @@ -46,10 +46,10 @@ public function createMessageForVote(Vote $vote): Message $attachment ->addField( - (new Field())->setShort(false)->setTitle('Talk')->setValue($vote->getTalk()->getTitle()), + new Field()->setShort(false)->setTitle('Talk')->setValue($vote->getTalk()->getTitle()), ) ->addField( - (new Field())->setShort(false)->setTitle('Nouveau vote')->setValue( + new Field()->setShort(false)->setTitle('Nouveau vote')->setValue( str_repeat(':star:', $vote->getVote()), ), ) @@ -57,7 +57,7 @@ public function createMessageForVote(Vote $vote): Message if ($vote->getComment() !== null) { $attachment ->addField( - (new Field())->setShort(false)->setTitle('Commentaire')->setValue($vote->getComment()), + new Field()->setShort(false)->setTitle('Commentaire')->setValue($vote->getComment()), ) ; } @@ -98,19 +98,19 @@ public function createMessageForTalk(Talk $talk, Event $event): Message $attachment ->addField( - (new Field())->setShort(false)->setTitle('Talk')->setValue($talk->getTitle()), + new Field()->setShort(false)->setTitle('Talk')->setValue($talk->getTitle()), ) ->addField( - (new Field())->setShort(false)->setTitle('Résumé')->setValue(substr($talk->getAbstract(), 0, 300)), + new Field()->setShort(false)->setTitle('Résumé')->setValue(substr($talk->getAbstract(), 0, 300)), ) ->addField( - (new Field())->setShort(false)->setTitle('Accompagnement')->setValue($talk->getNeedsMentoring() ? "Oui" : "Non"), + new Field()->setShort(false)->setTitle('Accompagnement')->setValue($talk->getNeedsMentoring() ? "Oui" : "Non"), ) ->addField( - (new Field())->setShort(true)->setTitle('Type')->setValue($this->translator->trans($talk->getTypeTranslationKey())), + new Field()->setShort(true)->setTitle('Type')->setValue($this->translator->trans($talk->getTypeTranslationKey())), ) ->addField( - (new Field())->setShort(true)->setTitle('Public')->setValue($this->translator->trans($talk->getSkillTranslationKey())), + new Field()->setShort(true)->setTitle('Public')->setValue($this->translator->trans($talk->getSkillTranslationKey())), ) ; @@ -133,7 +133,7 @@ public function createMessageForMemberNotification(string $membersToCheckCount): ->setTitleLink('https://afup.org/admin/slackmembers/check') ->setColor('#FF0000') ->addField( - (new Field())->setShort(false)->setTitle('Membres à vérifier')->setValue($membersToCheckCount), + new Field()->setShort(false)->setTitle('Membres à vérifier')->setValue($membersToCheckCount), ) ; @@ -164,13 +164,13 @@ public function createMessageForGeneralMeeting(GeneralMeetingRepository $general $attachment = new Attachment(); $attachment ->setTitleLink($urlGenerator->generate('admin_members_general_meeting', [], UrlGeneratorInterface::ABSOLUTE_URL)) - ->addField((new Field())->setShort(true)->setTitle('Membres à jour de cotisation') + ->addField(new Field()->setShort(true)->setTitle('Membres à jour de cotisation') ->setValue($nombrePersonnesAJourDeCotisation)) - ->addField((new Field())->setShort(true)->setTitle('Présences et pouvoirs') + ->addField(new Field()->setShort(true)->setTitle('Présences et pouvoirs') ->setValue($generalMeetingRepository->countAttendeesAndPowers($latestDate))) - ->addField((new Field())->setShort(true)->setTitle('Présences') + ->addField(new Field()->setShort(true)->setTitle('Présences') ->setValue($generalMeetingRepository->countAttendees($latestDate))) - ->addField((new Field())->setShort(true)->setTitle('Quorum') + ->addField(new Field()->setShort(true)->setTitle('Quorum') ->setValue($generalMeetingRepository->obtenirEcartQuorum($latestDate, $nombrePersonnesAJourDeCotisation))) ; $message->addAttachment($attachment); @@ -199,7 +199,7 @@ public function createMessageForTicketStats(Event $event, EventStatsRepository $ if (0 === $value) { continue; } - $attachment->addField((new Field())->setShort(true)->setTitle($ticketRepository->get($typeId)->getPrettyName())->setValue($value)); + $attachment->addField(new Field()->setShort(true)->setTitle($ticketRepository->get($typeId)->getPrettyName())->setValue($value)); } $message->addAttachment($attachment); @@ -218,13 +218,13 @@ public function createMessageForTicketStats(Event $event, EventStatsRepository $ $tickets = $tickets . ' / ' . $event->getSeats() . " ($percentage%)"; } - $attachment->addField((new Field())->setShort(true)->setTitle('Journée unique') + $attachment->addField(new Field()->setShort(true)->setTitle('Journée unique') ->setValue($tickets)); } else { $attachment - ->addField((new Field())->setShort(true)->setTitle('Premier jour') + ->addField(new Field()->setShort(true)->setTitle('Premier jour') ->setValue($eventStats->firstDay->paid)) - ->addField((new Field())->setShort(true)->setTitle('Deuxième jour') + ->addField(new Field()->setShort(true)->setTitle('Deuxième jour') ->setValue($eventStats->secondDay->paid)) ; } @@ -300,7 +300,7 @@ private function prepareCfpStatsFields(TalkRepository $talkRepository, TalkToSpe $fields = []; foreach ($infos as $title => $value) { - $fields[] = (new Field())->setShort(true)->setTitle($title)->setValue($value); + $fields[] = new Field()->setShort(true)->setTitle($title)->setValue($value); } return $fields; diff --git a/sources/AppBundle/SocialNetwork/Bluesky/BlueskyPolyfill.php b/sources/AppBundle/SocialNetwork/Bluesky/BlueskyPolyfill.php index c31c272e6..1d4afe082 100644 --- a/sources/AppBundle/SocialNetwork/Bluesky/BlueskyPolyfill.php +++ b/sources/AppBundle/SocialNetwork/Bluesky/BlueskyPolyfill.php @@ -86,7 +86,7 @@ private function getMatchAndPosition(AbstractString $text, string $regex): array while (null !== $start = $text->indexOf($match, min($length, $end + 1))) { $output[] = [ 'start' => $start, - 'end' => $end = $start + (new ByteString($match))->length(), + 'end' => $end = $start + new ByteString($match)->length(), 'match' => $match, ]; } diff --git a/sources/AppBundle/SocialNetwork/Bluesky/BlueskyTransport.php b/sources/AppBundle/SocialNetwork/Bluesky/BlueskyTransport.php index efddc3205..4639d1d78 100644 --- a/sources/AppBundle/SocialNetwork/Bluesky/BlueskyTransport.php +++ b/sources/AppBundle/SocialNetwork/Bluesky/BlueskyTransport.php @@ -42,7 +42,7 @@ public function send(Status $status): ?StatusId $record['embed'] = $this->buildEmbed($status->embed); } - $facets = (new BlueskyPolyfill($this->httpClient))->parseFacets($status->text); + $facets = new BlueskyPolyfill($this->httpClient)->parseFacets($status->text); if ($facets !== []) { $record['facets'] = $facets; diff --git a/sources/AppBundle/StaticAnalysis/Rule/DoctrineDisableDQLRule.php b/sources/AppBundle/StaticAnalysis/Rule/DoctrineDisableDQLRule.php index 3b23a96b4..8692e8bb4 100644 --- a/sources/AppBundle/StaticAnalysis/Rule/DoctrineDisableDQLRule.php +++ b/sources/AppBundle/StaticAnalysis/Rule/DoctrineDisableDQLRule.php @@ -57,15 +57,7 @@ public function processNode(Node $node, Scope $scope): array private function isEntityManager(Type $type): bool { - foreach ($type->getObjectClassNames() as $className) { - if ( - $className === $this->entityManagerClass->getName() - || $this->reflectionProvider->getClass($className)->isSubclassOfClass($this->entityManagerClass) - ) { - return true; - } - } - - return false; + return array_any($type->getObjectClassNames(), fn($className): bool => $className === $this->entityManagerClass->getName() + || $this->reflectionProvider->getClass($className)->isSubclassOfClass($this->entityManagerClass)); } } diff --git a/sources/AppBundle/Ting/DateTimeWithTimeZoneSerializer.php b/sources/AppBundle/Ting/DateTimeWithTimeZoneSerializer.php index ab24740ab..7006c7cfa 100644 --- a/sources/AppBundle/Ting/DateTimeWithTimeZoneSerializer.php +++ b/sources/AppBundle/Ting/DateTimeWithTimeZoneSerializer.php @@ -8,6 +8,7 @@ class DateTimeWithTimeZoneSerializer extends DateTime { + #[\Override] public function unserialize($serialized, array $options = []) { $value = parent::unserialize($serialized, $options); diff --git a/sources/AppBundle/Ting/HydratorAggregator.php b/sources/AppBundle/Ting/HydratorAggregator.php index 1721b94c0..969a4113b 100644 --- a/sources/AppBundle/Ting/HydratorAggregator.php +++ b/sources/AppBundle/Ting/HydratorAggregator.php @@ -57,6 +57,7 @@ public function callableFinalizeAggregate(Closure $callableFinalizeAggregate): s /** * @return Generator */ + #[\Override] public function getIterator(): Generator { $knownIdentifiers = []; diff --git a/sources/AppBundle/Twig/AssetsExtension.php b/sources/AppBundle/Twig/AssetsExtension.php index 99d28ee60..b463bef76 100644 --- a/sources/AppBundle/Twig/AssetsExtension.php +++ b/sources/AppBundle/Twig/AssetsExtension.php @@ -15,6 +15,7 @@ public function __construct( private readonly string $kernelProjectDir, ) {} + #[\Override] public function getFunctions(): array { return [ diff --git a/sources/AppBundle/Twig/OfficesExtension.php b/sources/AppBundle/Twig/OfficesExtension.php index 328deebce..72aa16f36 100644 --- a/sources/AppBundle/Twig/OfficesExtension.php +++ b/sources/AppBundle/Twig/OfficesExtension.php @@ -12,6 +12,7 @@ class OfficesExtension extends AbstractExtension { public function __construct(private readonly AntenneRepository $antennesRepository) {} + #[\Override] public function getFunctions(): array { return [ diff --git a/sources/AppBundle/Twig/TwigExtension.php b/sources/AppBundle/Twig/TwigExtension.php index 8f3f1798a..c722bc811 100644 --- a/sources/AppBundle/Twig/TwigExtension.php +++ b/sources/AppBundle/Twig/TwigExtension.php @@ -24,6 +24,7 @@ public function __construct( private readonly string $googleAnalyticsId, ) {} + #[\Override] public function getFunctions(): array { return [ @@ -44,6 +45,7 @@ public function getFunctions(): array ]; } + #[\Override] public function getFilters(): array { return [ diff --git a/sources/AppBundle/Validator/Constraints/UniqueEntity.php b/sources/AppBundle/Validator/Constraints/UniqueEntity.php index 440d575f0..4ca4f6944 100644 --- a/sources/AppBundle/Validator/Constraints/UniqueEntity.php +++ b/sources/AppBundle/Validator/Constraints/UniqueEntity.php @@ -21,6 +21,7 @@ public function __construct( parent::__construct(); } + #[\Override] public function getTargets(): string { return self::CLASS_CONSTRAINT; diff --git a/tests/behat/bootstrap/EmailContext.php b/tests/behat/bootstrap/EmailContext.php index 728df8d26..2bb0fd355 100644 --- a/tests/behat/bootstrap/EmailContext.php +++ b/tests/behat/bootstrap/EmailContext.php @@ -14,24 +14,24 @@ trait EmailContext { - private const MAILCATCHER_URL = 'http://mailcatcher:1080'; + private const string MAILCATCHER_URL = 'http://mailcatcher:1080'; #[BeforeScenario('@clearAllMailInscriptionAttachments')] - public function beforeScenarioClearAllMailInscriptionAttachments(): void + public static function beforeScenarioClearAllMailInscriptionAttachments(): void { $filesystem = new Filesystem(); $filesystem->remove(Event::getInscriptionAttachmentDir()); } #[BeforeScenario('@clearAllSponsorFiles')] - public function beforeScenarioClearAllSponsorFiles(): void + public static function beforeScenarioClearAllSponsorFiles(): void { $filesystem = new Filesystem(); $filesystem->remove(Event::getSponsorFileDir()); } #[BeforeScenario('@clearEmails')] - public function clearEmails(): void + public static function clearEmails(): void { $ch = curl_init(); @@ -43,8 +43,6 @@ public function clearEmails(): void if (curl_errno($ch) !== 0) { throw new \RuntimeException('Error : ' . curl_error($ch)); } - - curl_close($ch); } #[Then('I should only receive the following emails:')] diff --git a/tests/behat/bootstrap/TimeContext.php b/tests/behat/bootstrap/TimeContext.php index 339f4af27..3d6dd16fe 100644 --- a/tests/behat/bootstrap/TimeContext.php +++ b/tests/behat/bootstrap/TimeContext.php @@ -36,6 +36,6 @@ public function theCurrentDateIs(string $date): void #[Then('the response should contain date :arg1 with format :arg2')] public function responseShouldContainsDate(string $datetimeFormat, string $withFormat = DateTimeInterface::ATOM): void { - $this->minkContext->assertResponseContains((new DateTimeImmutable($datetimeFormat))->format($withFormat)); + $this->minkContext->assertResponseContains(new DateTimeImmutable($datetimeFormat)->format($withFormat)); } } diff --git a/tests/stubs/phpstan/Doctrine/WithOverridesRepository.php b/tests/stubs/phpstan/Doctrine/WithOverridesRepository.php index 73cce92c9..9cef7464b 100644 --- a/tests/stubs/phpstan/Doctrine/WithOverridesRepository.php +++ b/tests/stubs/phpstan/Doctrine/WithOverridesRepository.php @@ -24,36 +24,43 @@ public function someMethod(): void $this->count(); } + #[\Override] public function createQueryBuilder(string $alias, ?string $indexBy = null): QueryBuilder { return parent::createQueryBuilder($alias, $indexBy); } + #[\Override] public function createResultSetMappingBuilder(string $alias): ResultSetMappingBuilder { return parent::createResultSetMappingBuilder($alias); } + #[\Override] public function findBy(array $criteria, ?array $orderBy = null, ?int $limit = null, ?int $offset = null): array { return parent::findBy($criteria, $orderBy, $limit, $offset); } + #[\Override] public function findOneBy(array $criteria, ?array $orderBy = null): ?object { return parent::findOneBy($criteria, $orderBy); } + #[\Override] public function getClassName(): string { return parent::getClassName(); } + #[\Override] public function matching(Criteria $criteria): AbstractLazyCollection&Selectable { return parent::matching($criteria); } + #[\Override] public function count(array $criteria = []): int { return parent::count($criteria); diff --git a/tests/support/DatabaseManager.php b/tests/support/DatabaseManager.php index ec5c779ec..71ad7c497 100644 --- a/tests/support/DatabaseManager.php +++ b/tests/support/DatabaseManager.php @@ -15,7 +15,7 @@ */ final readonly class DatabaseManager { - private const DB_NAME = 'web'; + private const string DB_NAME = 'web'; private PDO $database; private Mysqldump $dumper; diff --git a/tests/support/TimeMocker.php b/tests/support/TimeMocker.php index f03a38359..32c5cf916 100644 --- a/tests/support/TimeMocker.php +++ b/tests/support/TimeMocker.php @@ -9,8 +9,8 @@ final readonly class TimeMocker { - private const MOCK_DIR_PATH = __DIR__ . '/../../var/cache/test/afup/'; - private const MOCK_FILE_PATH = self::MOCK_DIR_PATH . 'current-date-mock'; + private const string MOCK_DIR_PATH = __DIR__ . '/../../var/cache/test/afup/'; + private const string MOCK_FILE_PATH = self::MOCK_DIR_PATH . 'current-date-mock'; private Filesystem $filesystem; diff --git a/tests/unit/Afup/Association/CotisationsTest.php b/tests/unit/Afup/Association/CotisationsTest.php index 2a0712941..3a4d4e718 100644 --- a/tests/unit/Afup/Association/CotisationsTest.php +++ b/tests/unit/Afup/Association/CotisationsTest.php @@ -28,8 +28,8 @@ public static function generateCotisationProvider(): array 'expected' => new \DateTime('+1 year'), ], 'La cotisation précédente expire dans 1 mois, la nouvelle cotisation doit expirer dans 13 mois' => [ - 'dateFin' => (new \DateTimeImmutable('+1 month'))->setTime(14, 0), - 'expected' => (new \DateTimeImmutable('+1 month'))->setTime(14, 0)->add(new \DateInterval('P1Y')), + 'dateFin' => new \DateTimeImmutable('+1 month')->setTime(14, 0), + 'expected' => new \DateTimeImmutable('+1 month')->setTime(14, 0)->add(new \DateInterval('P1Y')), ], ]; } diff --git a/tests/unit/AppBundle/Association/Model/CompanyMemberTest.php b/tests/unit/AppBundle/Association/Model/CompanyMemberTest.php index 47ddcac18..6e25bc68d 100644 --- a/tests/unit/AppBundle/Association/Model/CompanyMemberTest.php +++ b/tests/unit/AppBundle/Association/Model/CompanyMemberTest.php @@ -20,10 +20,10 @@ public static function companies(): array { return [ 'null' => [(new CompanyMember()), AFUP_COTISATION_PERSONNE_MORALE], - 'under' => [(new CompanyMember())->setMaxMembers(2), AFUP_COTISATION_PERSONNE_MORALE], - 'equal' => [(new CompanyMember())->setMaxMembers(3), AFUP_COTISATION_PERSONNE_MORALE], - 'just over' => [(new CompanyMember())->setMaxMembers(4), 2 * AFUP_COTISATION_PERSONNE_MORALE], - 'over' => [(new CompanyMember())->setMaxMembers(6), 2 * AFUP_COTISATION_PERSONNE_MORALE], + 'under' => [new CompanyMember()->setMaxMembers(2), AFUP_COTISATION_PERSONNE_MORALE], + 'equal' => [new CompanyMember()->setMaxMembers(3), AFUP_COTISATION_PERSONNE_MORALE], + 'just over' => [new CompanyMember()->setMaxMembers(4), 2 * AFUP_COTISATION_PERSONNE_MORALE], + 'over' => [new CompanyMember()->setMaxMembers(6), 2 * AFUP_COTISATION_PERSONNE_MORALE], ]; } diff --git a/tests/unit/AppBundle/Event/Form/Support/EventHelperTest.php b/tests/unit/AppBundle/Event/Form/Support/EventHelperTest.php index 207c80bd1..a2f1a3d43 100644 --- a/tests/unit/AppBundle/Event/Form/Support/EventHelperTest.php +++ b/tests/unit/AppBundle/Event/Form/Support/EventHelperTest.php @@ -29,17 +29,17 @@ public static function groupByYearDataProvider(): \Generator ]; yield 'with start date' => [ - 'event' => (new Event())->setDateStart(new \DateTime('1999-12-13')), + 'event' => new Event()->setDateStart(new \DateTime('1999-12-13')), 'expectedYear' => '1999', ]; yield 'with date in title' => [ - 'event' => (new Event())->setTitle('AFUP Day 2025 Lyon'), + 'event' => new Event()->setTitle('AFUP Day 2025 Lyon'), 'expectedYear' => '2025', ]; yield 'without date in title' => [ - 'event' => (new Event()) + 'event' => new Event() ->setTitle('PHP Tour'), 'expectedYear' => 'Année inconnue', ]; @@ -53,11 +53,11 @@ public static function groupByYearDataProvider(): \Generator public function testSortEventsByStartDate(): void { $events = [ - (new Event())->setDateStart(new \DateTime('2020-05-03')), - (new Event())->setDateStart(new \DateTime('2021-05-03')), - (new Event())->setDateStart(new \DateTime('2022-05-03')), - (new Event())->setDateStart(new \DateTime('2023-05-03')), - (new Event())->setDateStart(new \DateTime('2024-05-03')), + new Event()->setDateStart(new \DateTime('2020-05-03')), + new Event()->setDateStart(new \DateTime('2021-05-03')), + new Event()->setDateStart(new \DateTime('2022-05-03')), + new Event()->setDateStart(new \DateTime('2023-05-03')), + new Event()->setDateStart(new \DateTime('2024-05-03')), ]; $helper = new EventHelper(); diff --git a/tests/unit/AppBundle/Indexation/Meetups/TransformerTest.php b/tests/unit/AppBundle/Indexation/Meetups/TransformerTest.php index 749c9dd01..b0ea46ce2 100644 --- a/tests/unit/AppBundle/Indexation/Meetups/TransformerTest.php +++ b/tests/unit/AppBundle/Indexation/Meetups/TransformerTest.php @@ -15,7 +15,7 @@ public function testTransform(): void { $transformer = new Transformer(new AntenneRepository()); - $meetup = (new Meetup()) + $meetup = new Meetup() ->setId('244992881') ->setDate(new \DateTime('2050-12-14 17:30:00')) ->setTitle('Apéro PHP') diff --git a/tests/unit/AppBundle/Indexation/Talks/TransformerTest.php b/tests/unit/AppBundle/Indexation/Talks/TransformerTest.php index 0c2ea7513..5f863651f 100644 --- a/tests/unit/AppBundle/Indexation/Talks/TransformerTest.php +++ b/tests/unit/AppBundle/Indexation/Talks/TransformerTest.php @@ -115,7 +115,7 @@ public function testTransformEmpty(): void $result = $transformer->transform( new Planning(), - (new Talk())->setLanguageCode('fr'), + new Talk()->setLanguageCode('fr'), new Event(), new \ArrayObject([new Speaker()]), ); diff --git a/tests/unit/AppBundle/Notifier/SlackNotifierTest.php b/tests/unit/AppBundle/Notifier/SlackNotifierTest.php index c1737498d..898e14ac6 100644 --- a/tests/unit/AppBundle/Notifier/SlackNotifierTest.php +++ b/tests/unit/AppBundle/Notifier/SlackNotifierTest.php @@ -38,7 +38,7 @@ public function testSendMessage(): void $message->setUsername("m3"); $message->setIconUrl("m4"); $message->addAttachment( - (new Attachment()) + new Attachment() ->setText("a1") ->setTitle("a2") ->setColor("a3") @@ -50,7 +50,7 @@ public function testSendMessage(): void ->setPretext("a9") ->setTitleLink("a10") ->addField( - (new Field()) + new Field() ->setTitle("f1") ->setValue("f2") ->setShort(true), diff --git a/tests/unit/AppBundle/SocialNetwork/SocialNetworkTest.php b/tests/unit/AppBundle/SocialNetwork/SocialNetworkTest.php index e948401ba..7ac597a9d 100644 --- a/tests/unit/AppBundle/SocialNetwork/SocialNetworkTest.php +++ b/tests/unit/AppBundle/SocialNetwork/SocialNetworkTest.php @@ -25,25 +25,25 @@ public static function speakerHandleDataProvider(): \Generator { yield 'bluesky without @ prefix' => [ SocialNetwork::Bluesky, - (new Speaker())->setBluesky('foo.bar'), + new Speaker()->setBluesky('foo.bar'), '@foo.bar', ]; yield 'bluesky with @ prefix' => [ SocialNetwork::Bluesky, - (new Speaker())->setBluesky('@foo.bar'), + new Speaker()->setBluesky('@foo.bar'), '@foo.bar', ]; yield 'mastodon without @ prefix' => [ SocialNetwork::Mastodon, - (new Speaker())->setMastodon('foo.bar'), + new Speaker()->setMastodon('foo.bar'), '@foo.bar', ]; yield 'mastodon with @ prefix' => [ SocialNetwork::Mastodon, - (new Speaker())->setMastodon('@foo.bar'), + new Speaker()->setMastodon('@foo.bar'), '@foo.bar', ]; } diff --git a/tests/unit/AppBundle/TechLetter/Model/TechLetterFactoryTest.php b/tests/unit/AppBundle/TechLetter/Model/TechLetterFactoryTest.php index db8f290f8..c202536c3 100644 --- a/tests/unit/AppBundle/TechLetter/Model/TechLetterFactoryTest.php +++ b/tests/unit/AppBundle/TechLetter/Model/TechLetterFactoryTest.php @@ -27,7 +27,7 @@ public function testCreateTechLetterFromJson(?string $jsonFilePath, TechLetter $ self::assertIsString($json); } - $actualTechLetter = (new TechLetterFactory(new MapperBuilder()))->createTechLetterFromJson($json); + $actualTechLetter = new TechLetterFactory(new MapperBuilder())->createTechLetterFromJson($json); self::assertEquals($expectedTechLetter, $actualTechLetter); } diff --git a/tests/unit/AppBundle/VideoNotifier/StatusGeneratorTest.php b/tests/unit/AppBundle/VideoNotifier/StatusGeneratorTest.php index ac37e9ded..354edc378 100644 --- a/tests/unit/AppBundle/VideoNotifier/StatusGeneratorTest.php +++ b/tests/unit/AppBundle/VideoNotifier/StatusGeneratorTest.php @@ -44,18 +44,18 @@ public static function textTooLongDataProvider(): \Generator { yield [ SocialNetwork::Bluesky, - (new Talk())->setTitle(self::faker()->realText(SocialNetwork::Bluesky->statusMaxLength() * 2)), + new Talk()->setTitle(self::faker()->realText(SocialNetwork::Bluesky->statusMaxLength() * 2)), [ - (new Speaker())->setBluesky(self::faker()->domainName()), + new Speaker()->setBluesky(self::faker()->domainName()), ], 'Statut généré pour bluesky trop long', ]; yield [ SocialNetwork::Mastodon, - (new Talk())->setTitle(self::faker()->realText(SocialNetwork::Mastodon->statusMaxLength() * 2)), + new Talk()->setTitle(self::faker()->realText(SocialNetwork::Mastodon->statusMaxLength() * 2)), [ - (new Speaker())->setMastodon(self::faker()->domainName()), + new Speaker()->setMastodon(self::faker()->domainName()), ], 'Statut généré pour mastodon trop long', ]; @@ -79,17 +79,17 @@ public static function validStatusDataProvider(): \Generator { yield 'mastodon full case' => [ SocialNetwork::Mastodon, - (new Talk()) + new Talk() ->setId(123) ->setTitle('Lorem ipsum dolor si amet') ->setAbstract('Foo bar') ->setYoutubeId('abcd1234'), [ - (new Speaker())->setMastodon('foo'), - (new Speaker())->setFirstname('John')->setLastname('Smith'), - (new Speaker())->setMastodon('bar'), - (new Speaker())->setFirstname('Jane')->setLastname('Doe'), - (new Speaker())->setMastodon('fiz'), + new Speaker()->setMastodon('foo'), + new Speaker()->setFirstname('John')->setLastname('Smith'), + new Speaker()->setMastodon('bar'), + new Speaker()->setFirstname('Jane')->setLastname('Doe'), + new Speaker()->setMastodon('fiz'), ], new Status( "« Lorem ipsum dolor si amet », la conférence de @foo, John SMITH, @bar, Jane DOE et @fiz à revoir sur le site de l'AFUP", @@ -104,13 +104,13 @@ public static function validStatusDataProvider(): \Generator yield '1 speaker with username' => [ SocialNetwork::Bluesky, - (new Talk()) + new Talk() ->setId(123) ->setTitle('Lorem ipsum dolor si amet') ->setAbstract('Foo bar') ->setYoutubeId('abcd1234'), [ - (new Speaker())->setBluesky('example.bsky.social'), + new Speaker()->setBluesky('example.bsky.social'), ], new Status( "« Lorem ipsum dolor si amet », la conférence de @example.bsky.social à revoir sur le site de l'AFUP", @@ -125,13 +125,13 @@ public static function validStatusDataProvider(): \Generator yield '1 speaker without username' => [ SocialNetwork::Bluesky, - (new Talk()) + new Talk() ->setId(123) ->setTitle('Lorem ipsum dolor si amet') ->setAbstract('Foo bar') ->setYoutubeId('abcd1234'), [ - (new Speaker())->setFirstname('Jane')->setLastname('Doe'), + new Speaker()->setFirstname('Jane')->setLastname('Doe'), ], new Status( "« Lorem ipsum dolor si amet », la conférence de Jane DOE à revoir sur le site de l'AFUP", @@ -146,14 +146,14 @@ public static function validStatusDataProvider(): \Generator yield '2 speakers' => [ SocialNetwork::Bluesky, - (new Talk()) + new Talk() ->setId(123) ->setTitle('Lorem ipsum dolor si amet') ->setAbstract('Foo bar') ->setYoutubeId('abcd1234'), [ - (new Speaker())->setBluesky('foo'), - (new Speaker())->setBluesky('bar'), + new Speaker()->setBluesky('foo'), + new Speaker()->setBluesky('bar'), ], new Status( "« Lorem ipsum dolor si amet », la conférence de @foo et @bar à revoir sur le site de l'AFUP", @@ -168,15 +168,15 @@ public static function validStatusDataProvider(): \Generator yield '3+ speakers' => [ SocialNetwork::Bluesky, - (new Talk()) + new Talk() ->setId(123) ->setTitle('Lorem ipsum dolor si amet') ->setAbstract('Foo bar') ->setYoutubeId('abcd1234'), [ - (new Speaker())->setBluesky('foo'), - (new Speaker())->setBluesky('bar'), - (new Speaker())->setBluesky('fiz'), + new Speaker()->setBluesky('foo'), + new Speaker()->setBluesky('bar'), + new Speaker()->setBluesky('fiz'), ], new Status( "« Lorem ipsum dolor si amet », la conférence de @foo, @bar et @fiz à revoir sur le site de l'AFUP", @@ -191,13 +191,13 @@ public static function validStatusDataProvider(): \Generator yield 'title a bit too long 1' => [ SocialNetwork::Bluesky, - (new Talk()) + new Talk() ->setId(123) ->setTitle('Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab accusantium architecto assumenda consequuntur corporis dolorem doloremque eaque magnam mollitia necessitatibus neque nesciunt, obcaecati odio odit quam, repellat repellendus.') ->setAbstract('Foo bar') ->setYoutubeId('abcd1234'), [ - (new Speaker())->setBluesky('example.bsky.social'), + new Speaker()->setBluesky('example.bsky.social'), ], new Status( "« Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab accusantium architecto assumenda consequuntur corporis dolorem doloremque eaque magnam mollitia necessitatibus neque nesciunt, obcaecati odio odit quam, repellat repellendus. », par @example.bsky.social à revoir sur le site de l'AFUP", @@ -212,13 +212,13 @@ public static function validStatusDataProvider(): \Generator yield 'title a bit too long 2' => [ SocialNetwork::Bluesky, - (new Talk()) + new Talk() ->setId(123) ->setTitle('Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab accusantium architecto assumenda consequuntur corporis dolorem doloremque eaque magnam mollitia necessitatibus neque nesciunt, obcaecati odio odit quam, repellat repellendus magnam.') ->setAbstract('Foo bar') ->setYoutubeId('abcd1234'), [ - (new Speaker())->setBluesky('example.bsky.social'), + new Speaker()->setBluesky('example.bsky.social'), ], new Status( "« Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab accusantium architecto assumenda consequuntur corporis dolorem doloremque eaque magnam mollitia necessitatibus neque nesciunt, obcaecati odio odit quam, repellat repellendus magnam. », par @example.bsky.social à revoir sur l'AFUP", @@ -233,13 +233,13 @@ public static function validStatusDataProvider(): \Generator yield 'title with consecutive spaces' => [ SocialNetwork::Bluesky, - (new Talk()) + new Talk() ->setId(123) ->setTitle(' Lorem ipsum ') ->setAbstract('Foo bar') ->setYoutubeId('abcd1234'), [ - (new Speaker())->setBluesky('example.bsky.social'), + new Speaker()->setBluesky('example.bsky.social'), ], new Status( "« Lorem ipsum », la conférence de @example.bsky.social à revoir sur le site de l'AFUP", From c48e3f99d341dc1a481b42d9b9ee647710c8b823 Mon Sep 17 00:00:00 2001 From: Albin Date: Wed, 27 May 2026 08:36:36 +0200 Subject: [PATCH 08/11] update pdfparser --- behat.php | 8 +++-- composer.json | 2 +- composer.lock | 99 ++++++++++++++++++++++++++------------------------- 3 files changed, 56 insertions(+), 53 deletions(-) diff --git a/behat.php b/behat.php index b82956c14..3ce158518 100644 --- a/behat.php +++ b/behat.php @@ -1,5 +1,7 @@ withContexts( FeatureContext::class, - MinkContext::class + MinkContext::class, ) - ->withPaths('%paths.base%/tests/behat') - ) + ->withPaths('%paths.base%/tests/behat'), + ), ); diff --git a/composer.json b/composer.json index 2ddf75482..64cbd514b 100644 --- a/composer.json +++ b/composer.json @@ -166,7 +166,7 @@ "phpunit/phpunit": "11.*", "rector/rector": "^2.0", "robertfausk/behat-panther-extension": "^1.2", - "smalot/pdfparser": "^1.0", + "smalot/pdfparser": "2.*", "symfony/debug-bundle": "7.4.*", "symfony/json-path": "7.4.*", "symfony/web-profiler-bundle": "7.4.*", diff --git a/composer.lock b/composer.lock index 1bd254b22..a93f5b0a3 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": "60634ebf309f20a43a5a030d5d62a752", + "content-hash": "5e8d8ad10dad49193270adf13ecce55a", "packages": [ { "name": "algolia/algoliasearch-client-php", @@ -2831,16 +2831,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.10.1", + "version": "2.10.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "73ab136360b5dfd858006eae9795e8fe43c80361" + "reference": "a1bbdc172f32a25fe999965b65b6e71fd87da9ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/73ab136360b5dfd858006eae9795e8fe43c80361", - "reference": "73ab136360b5dfd858006eae9795e8fe43c80361", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a1bbdc172f32a25fe999965b65b6e71fd87da9ed", + "reference": "a1bbdc172f32a25fe999965b65b6e71fd87da9ed", "shasum": "" }, "require": { @@ -2928,7 +2928,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.10.1" + "source": "https://github.com/guzzle/psr7/tree/2.10.2" }, "funding": [ { @@ -2944,7 +2944,7 @@ "type": "tidelift" } ], - "time": "2026-05-20T09:27:36+00:00" + "time": "2026-05-25T22:58:15+00:00" }, { "name": "jms/metadata", @@ -8310,16 +8310,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.38.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "9c862df890f7c833b1101ac5578ec4dcf199efb5" + "reference": "e9247d281d694a5120554d9afaf54e070e88a603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/9c862df890f7c833b1101ac5578ec4dcf199efb5", - "reference": "9c862df890f7c833b1101ac5578ec4dcf199efb5", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", + "reference": "e9247d281d694a5120554d9afaf54e070e88a603", "shasum": "" }, "require": { @@ -8368,7 +8368,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" }, "funding": [ { @@ -8388,7 +8388,7 @@ "type": "tidelift" } ], - "time": "2026-05-25T12:39:52+00:00" + "time": "2026-05-26T05:58:03+00:00" }, { "name": "symfony/polyfill-intl-icu", @@ -8480,16 +8480,16 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + "reference": "dc21118016c039a66235cf93d96b435ffb282412" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", - "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/dc21118016c039a66235cf93d96b435ffb282412", + "reference": "dc21118016c039a66235cf93d96b435ffb282412", "shasum": "" }, "require": { @@ -8543,7 +8543,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.38.1" }, "funding": [ { @@ -8563,7 +8563,7 @@ "type": "tidelift" } ], - "time": "2024-09-10T14:38:51+00:00" + "time": "2026-05-25T15:22:23+00:00" }, { "name": "symfony/polyfill-intl-normalizer", @@ -8652,16 +8652,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.38.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6b177d03d2eb04a6c9d01bab9818fb93a30ce7fd" + "reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6b177d03d2eb04a6c9d01bab9818fb93a30ce7fd", - "reference": "6b177d03d2eb04a6c9d01bab9818fb93a30ce7fd", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/14c5439eec4ccff081ac14eca2dc57feb2a66d92", + "reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92", "shasum": "" }, "require": { @@ -8713,7 +8713,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.1" }, "funding": [ { @@ -8733,7 +8733,7 @@ "type": "tidelift" } ], - "time": "2026-05-25T14:08:27+00:00" + "time": "2026-05-26T12:51:13+00:00" }, { "name": "symfony/property-access", @@ -12485,11 +12485,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.55", + "version": "2.1.56", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9eaac3826ed5e9b8427350a43cac825eeca3f566", - "reference": "9eaac3826ed5e9b8427350a43cac825eeca3f566", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/93a603c9fc3be8c3c93bbc8d22170ad766685537", + "reference": "93a603c9fc3be8c3c93bbc8d22170ad766685537", "shasum": "" }, "require": { @@ -12534,7 +12534,7 @@ "type": "github" } ], - "time": "2026-05-18T11:57:34+00:00" + "time": "2026-05-26T17:04:57+00:00" }, { "name": "phpstan/phpstan-beberlei-assert", @@ -13772,21 +13772,21 @@ }, { "name": "rector/rector", - "version": "2.4.4", + "version": "2.4.5", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "4661c582a20f03df585d2e3fdc4af1b83d67a091" + "reference": "cbd86024be5014d3c14d9f0b3f7aae8ecbffd62c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/4661c582a20f03df585d2e3fdc4af1b83d67a091", - "reference": "4661c582a20f03df585d2e3fdc4af1b83d67a091", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/cbd86024be5014d3c14d9f0b3f7aae8ecbffd62c", + "reference": "cbd86024be5014d3c14d9f0b3f7aae8ecbffd62c", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.48" + "phpstan/phpstan": "^2.1.56" }, "conflict": { "rector/rector-doctrine": "*", @@ -13820,7 +13820,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.4.4" + "source": "https://github.com/rectorphp/rector/tree/2.4.5" }, "funding": [ { @@ -13828,7 +13828,7 @@ "type": "github" } ], - "time": "2026-05-20T19:30:21+00:00" + "time": "2026-05-26T21:03:22+00:00" }, { "name": "robertfausk/behat-panther-extension", @@ -14985,19 +14985,20 @@ }, { "name": "smalot/pdfparser", - "version": "v1.1.0", + "version": "v2.12.5", "source": { "type": "git", "url": "https://github.com/smalot/pdfparser.git", - "reference": "43e436f32fd0e3d1f808c3b1768975c598c9a7df" + "reference": "2cfa0d92bd557875c9f52a75fde0e8392302a354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smalot/pdfparser/zipball/43e436f32fd0e3d1f808c3b1768975c598c9a7df", - "reference": "43e436f32fd0e3d1f808c3b1768975c598c9a7df", + "url": "https://api.github.com/repos/smalot/pdfparser/zipball/2cfa0d92bd557875c9f52a75fde0e8392302a354", + "reference": "2cfa0d92bd557875c9f52a75fde0e8392302a354", "shasum": "" }, "require": { + "ext-iconv": "*", "ext-zlib": "*", "php": ">=7.1", "symfony/polyfill-mbstring": "^1.18" @@ -15029,9 +15030,9 @@ ], "support": { "issues": "https://github.com/smalot/pdfparser/issues", - "source": "https://github.com/smalot/pdfparser/tree/v1.1.0" + "source": "https://github.com/smalot/pdfparser/tree/v2.12.5" }, - "time": "2021-08-03T08:33:34+00:00" + "time": "2026-04-17T11:37:58+00:00" }, { "name": "staabm/side-effects-detector", @@ -15781,22 +15782,22 @@ }, { "name": "tomasvotruba/type-coverage", - "version": "2.1.0", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/TomasVotruba/type-coverage.git", - "reference": "468354b3964120806a69890cbeb3fcf005876391" + "reference": "4087caa4639bdd4c646f2984bc333efeddf69e4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TomasVotruba/type-coverage/zipball/468354b3964120806a69890cbeb3fcf005876391", - "reference": "468354b3964120806a69890cbeb3fcf005876391", + "url": "https://api.github.com/repos/TomasVotruba/type-coverage/zipball/4087caa4639bdd4c646f2984bc333efeddf69e4b", + "reference": "4087caa4639bdd4c646f2984bc333efeddf69e4b", "shasum": "" }, "require": { "nette/utils": "^3.2 || ^4.0", "php": "^7.4 || ^8.0", - "phpstan/phpstan": "^2.0" + "phpstan/phpstan": "^2.1.33" }, "type": "phpstan-extension", "extra": { @@ -15822,7 +15823,7 @@ ], "support": { "issues": "https://github.com/TomasVotruba/type-coverage/issues", - "source": "https://github.com/TomasVotruba/type-coverage/tree/2.1.0" + "source": "https://github.com/TomasVotruba/type-coverage/tree/2.2.1" }, "funding": [ { @@ -15834,7 +15835,7 @@ "type": "github" } ], - "time": "2025-12-05T16:38:02+00:00" + "time": "2026-05-26T08:14:01+00:00" } ], "aliases": [], From 6b6ae3a5ec6a2dc2d185672dd864f2bb6c4afced Mon Sep 17 00:00:00 2001 From: Albin Date: Wed, 27 May 2026 08:36:43 +0200 Subject: [PATCH 09/11] php cs fixer --- htdocs/index.php | 5 ++--- importmap.php | 6 ++++-- rector.php | 3 --- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index c13ba7673..8b590667b 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -11,8 +11,7 @@ if ($_SERVER['HTTP_HOST'] === 'afup.dev' || $isDevEnv || $isTestEnv) { if (!$isDevEnv && !$isTestEnv - && - ( + && ( isset($_SERVER['HTTP_CLIENT_IP']) || isset($_SERVER['HTTP_X_FORWARDED_FOR']) || !in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1', '192.168.42.1']) && php_sapi_name() !== 'cli-server' @@ -48,7 +47,7 @@ Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT - | Request::HEADER_X_FORWARDED_PROTO + | Request::HEADER_X_FORWARDED_PROTO, ); $response = $kernel->handle($request); diff --git a/importmap.php b/importmap.php index f58317fa6..794ceb937 100644 --- a/importmap.php +++ b/importmap.php @@ -1,5 +1,7 @@ [ 'version' => '2.5.0', - 'type' => 'css' + 'type' => 'css', ], 'semantic-ui/dist/semantic.min.js' => [ - 'version' => '2.5.0' + 'version' => '2.5.0', ], ]; diff --git a/rector.php b/rector.php index 98b6b28c9..6ff811d8b 100644 --- a/rector.php +++ b/rector.php @@ -4,9 +4,6 @@ use Rector\Config\RectorConfig; use Rector\Set\ValueObject\LevelSetList; -use Rector\PHPUnit\Set\PHPUnitSetList; -use Rector\Symfony\Set\SymfonySetList; -use Rector\Symfony\Set\TwigSetList; return RectorConfig::configure() ->withPaths([ From c7f68bc24df56b4640f9d9094a00ad8b035cb06e Mon Sep 17 00:00:00 2001 From: Albin Date: Wed, 27 May 2026 09:00:40 +0200 Subject: [PATCH 10/11] fix EventHelper group by --- sources/AppBundle/Event/Form/Support/EventHelper.php | 9 +++------ .../AppBundle/Event/Form/Support/EventHelperTest.php | 6 +++--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/sources/AppBundle/Event/Form/Support/EventHelper.php b/sources/AppBundle/Event/Form/Support/EventHelper.php index f5daa21fc..913db27ae 100644 --- a/sources/AppBundle/Event/Form/Support/EventHelper.php +++ b/sources/AppBundle/Event/Form/Support/EventHelper.php @@ -8,16 +8,13 @@ final class EventHelper { - /** - * @param Event|string $event - */ - public function groupByYear($event): string + public function groupByYear(string|Event $event): string { if ($event instanceof Event) { $start = $event->getDateStart(); if ($start !== null) { - return $start->format('Y'); + return 'Année ' . $start->format('Y'); } $title = $event->getTitle(); @@ -26,7 +23,7 @@ public function groupByYear($event): string } if ($title !== null && preg_match('/\d{4}/', $title, $matches)) { - return $matches[0]; + return 'Année ' . $matches[0]; } return 'Année inconnue'; diff --git a/tests/unit/AppBundle/Event/Form/Support/EventHelperTest.php b/tests/unit/AppBundle/Event/Form/Support/EventHelperTest.php index a2f1a3d43..63ac08ce1 100644 --- a/tests/unit/AppBundle/Event/Form/Support/EventHelperTest.php +++ b/tests/unit/AppBundle/Event/Form/Support/EventHelperTest.php @@ -25,17 +25,17 @@ public static function groupByYearDataProvider(): \Generator { yield 'with event as string' => [ 'event' => 'Forum PHP 2014', - 'expectedYear' => '2014', + 'expectedYear' => 'Année 2014', ]; yield 'with start date' => [ 'event' => new Event()->setDateStart(new \DateTime('1999-12-13')), - 'expectedYear' => '1999', + 'expectedYear' => 'Année 1999', ]; yield 'with date in title' => [ 'event' => new Event()->setTitle('AFUP Day 2025 Lyon'), - 'expectedYear' => '2025', + 'expectedYear' => 'Année 2025', ]; yield 'without date in title' => [ From b0adb0d3ecf350555b7c9308ccf40afb510f4903 Mon Sep 17 00:00:00 2001 From: Albin Date: Wed, 27 May 2026 20:34:05 +0200 Subject: [PATCH 11/11] fix PDF context --- tests/behat/bootstrap/PdfContext.php | 7 +++++ .../Admin/Events/FacturesEvennement.feature | 4 +-- .../Admin/Tresorerie/DevisFactures.feature | 28 +++++++++---------- .../behat/features/MembersArea/Index.feature | 4 +-- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/tests/behat/bootstrap/PdfContext.php b/tests/behat/bootstrap/PdfContext.php index 072b3dff2..c6aa91401 100644 --- a/tests/behat/bootstrap/PdfContext.php +++ b/tests/behat/bootstrap/PdfContext.php @@ -42,6 +42,7 @@ public function iParseThePdfContent(): void public function thePageOfThePdfShouldContain(string $page, string $expectedContent): void { $pageContent = $this->pdfPages[$page] ?? null; + $pageContent = str_replace("\t", " ", $pageContent); if (!str_contains((string) $pageContent, $expectedContent)) { throw new ExpectationException( @@ -70,4 +71,10 @@ public function thePageOfThePdfShouldNotContain(string $page, string $expectedCo ); } } + + #[Then('print the page :page of the PDF')] + public function thePrint(string $page): void + { + echo $this->pdfPages[$page] ?? null; + } } diff --git a/tests/behat/features/Admin/Events/FacturesEvennement.feature b/tests/behat/features/Admin/Events/FacturesEvennement.feature index 9763869fe..3a26bb581 100644 --- a/tests/behat/features/Admin/Events/FacturesEvennement.feature +++ b/tests/behat/features/Admin/Events/FacturesEvennement.feature @@ -45,8 +45,8 @@ Feature: Administration - Évènements - Factures d'évènement When I parse the pdf downloaded content Then The page "1" of the PDF should contain "Objet : Facture n°REF-TEST-003" Then The page "1" of the PDF should contain "3 avenue de l'enterprise" - Then The page "1" of the PDF should contain "Type Personne inscrite Prix HT TVA Prix TTC" - Then The page "1" of the PDF should contain "2 Jours James Tiberius Kirk 227,27 € 10% 250,00 €" + Then The page "1" of the PDF should contain "Type Personne inscrite Prix HTT" + Then The page "1" of the PDF should contain "2 Jours James Tiberius Kirk 227,27 €" Then The page "1" of the PDF should contain "Total HT 227,27 €" Then The page "1" of the PDF should contain "Total TVA 10% 22,73 €" Then The page "1" of the PDF should contain "TOTAL TTC 250,00 €" diff --git a/tests/behat/features/Admin/Tresorerie/DevisFactures.feature b/tests/behat/features/Admin/Tresorerie/DevisFactures.feature index 972ad3d78..78c5f7a69 100644 --- a/tests/behat/features/Admin/Tresorerie/DevisFactures.feature +++ b/tests/behat/features/Admin/Tresorerie/DevisFactures.feature @@ -181,10 +181,10 @@ Feature: Administration - Trésorerie - Devis/Facture Then The page "1" of the PDF should contain "Krampouz" Then The page "1" of the PDF should contain "3, rue du port" Then The page "1" of the PDF should contain "Facture n° 2023-01" - Then The page "1" of the PDF should contain "Repère(s) : Forum PHP 2023" + Then The page "1" of the PDF should contain "Repère(s) : Forum PHP 2023" Then The page "1" of the PDF should contain "Comme convenu, nous vous prions de trouver votre facture" - Then The page "1" of the PDF should contain "Type Description Quantite Prix Total" - Then The page "1" of the PDF should contain "forum_php_2023 Forum PHP 2023 - Sponsoring Bronze 1.00 1000.00 € 1000 €" + Then The page "1" of the PDF should contain "Type Description Quantite" + Then The page "1" of the PDF should contain "Forum PHP 2023 - Sponsoring Bronze 1.00 1000.00 € 1000 €" Then The page "1" of the PDF should contain "TOTAL 1000 €" Then The page "1" of the PDF should contain "TVA non applicable - art. 293B du CGI" @@ -203,11 +203,11 @@ Feature: Administration - Trésorerie - Devis/Facture Then The page "1" of the PDF should contain "Krampouz" Then The page "1" of the PDF should contain "3, rue du port" Then The page "1" of the PDF should contain "Facture n° 2025-02" - Then The page "1" of the PDF should contain "Repère(s) : Forum PHP 2025" + Then The page "1" of the PDF should contain "Repère(s) : Forum PHP 2025" Then The page "1" of the PDF should contain "Comme convenu, nous vous prions de trouver votre facture" - Then The page "1" of the PDF should contain "Type Description Quantite TVA Prix HT Total TTC" - Then The page "1" of the PDF should contain "forum_php_2025 Forum PHP 2025 - Sponsoring" - Then The page "1" of the PDF should contain "Bronze 1.00 20.00% 1 000,00 € 1 200,00 €" + Then The page "1" of the PDF should contain "Type Description Quantite" + Then The page "1" of the PDF should contain "Forum PHP 2025 - Sponsoring" + Then The page "1" of the PDF should contain "1 000,00 € 1 200,00 €" Then The page "1" of the PDF should contain "TOTAL HT 1 000,00 €" Then The page "1" of the PDF should contain "Total TVA 20.00% 200,00 €" Then The page "1" of the PDF should contain "TOTAL TTC 1 200,00 €" @@ -226,10 +226,10 @@ Feature: Administration - Trésorerie - Devis/Facture Then The page "1" of the PDF should contain "Krampouz" Then The page "1" of the PDF should contain "3, rue du port" Then The page "1" of the PDF should contain "Devis n° 2023-01" - Then The page "1" of the PDF should contain "Repère(s) : Forum PHP 2023" + Then The page "1" of the PDF should contain "Repère(s) : Forum PHP 2023" Then The page "1" of the PDF should contain "Comme convenu, nous vous prions de trouver votre devis" - Then The page "1" of the PDF should contain "Type Description Quantite Prix Total" - Then The page "1" of the PDF should contain "forum_php_2023 Forum PHP 2023 - Sponsoring Bronze 1.00 1000.00 € 1000 €" + Then The page "1" of the PDF should contain "Type Description" + Then The page "1" of the PDF should contain "Forum PHP 2023 - Sponsoring Bronze 1.00 1000.00 € 1000 €" Then The page "1" of the PDF should contain "TOTAL 1000 €" Then The page "1" of the PDF should contain "TVA non applicable - art. 293B du CGI" Then the checksum of the response content should be "c424b17649ae6bfc83bf6791dc1543ab" @@ -248,11 +248,11 @@ Feature: Administration - Trésorerie - Devis/Facture Then The page "1" of the PDF should contain "Krampouz" Then The page "1" of the PDF should contain "3, rue du port" Then The page "1" of the PDF should contain "Devis n° 2025-02" - Then The page "1" of the PDF should contain "Repère(s) : Forum PHP 2025" + Then The page "1" of the PDF should contain "Repère(s) : Forum PHP 2025" Then The page "1" of the PDF should contain "Comme convenu, nous vous prions de trouver votre devis" - Then The page "1" of the PDF should contain "Type Description Quantite TVA Prix HT Total TTC" - Then The page "1" of the PDF should contain "forum_php_2025 Forum PHP 2025 - Sponsoring" - Then The page "1" of the PDF should contain "Bronze 1.00 20.00% 1 000,00 € 1 200,00 €" + Then The page "1" of the PDF should contain "TVA Prix HT Total TTC" + Then The page "1" of the PDF should contain "Forum PHP 2025 - Sponsoring" + Then The page "1" of the PDF should contain "1 000,00 € 1 200,00 €" Then The page "1" of the PDF should contain "TOTAL HT 1 000,00 €" Then The page "1" of the PDF should contain "Total TVA 20.00% 200,00 €" Then The page "1" of the PDF should contain "TOTAL TTC 1 200,00 €" diff --git a/tests/behat/features/MembersArea/Index.feature b/tests/behat/features/MembersArea/Index.feature index 5c1ed7b44..23d907541 100644 --- a/tests/behat/features/MembersArea/Index.feature +++ b/tests/behat/features/MembersArea/Index.feature @@ -97,8 +97,8 @@ Feature: Espace membre, accueil Then The page "1" of the PDF should contain "93501-1100" Then The page "1" of the PDF should contain "Mojave, CA" Then The page "1" of the PDF should contain "Code Désignation Prix" - Then The page "1" of the PDF should contain "ADH-var Adhésion AFUP jusqu'au 01/01/2025 - part variable 1,50 € 20 % 1,80 €" - Then The page "1" of the PDF should contain "ADH-fixe Adhésion AFUP jusqu'au 01/01/2025 - part fixe 28,20 € 0 % 28,20 €" + Then The page "1" of the PDF should contain "Adhésion AFUP jusqu'au 01/01/2025 - part variable 1,50 € 20 % 1,80 €" + Then The page "1" of the PDF should contain "Adhésion AFUP jusqu'au 01/01/2025 - part fixe 28,20 € 0 % 28,20 €" Then The page "1" of the PDF should contain "Total HT 29,70 €" Then The page "1" of the PDF should contain "Total TVA 20% 0,30 €" Then The page "1" of the PDF should contain "Total TTC 30,00 €"