From ebadc24b598ba52fb2b74519db3ade4200d66cfb Mon Sep 17 00:00:00 2001 From: Marijn Doeve Date: Sat, 7 Jun 2025 22:18:38 +0200 Subject: [PATCH] PHP 8.4 --- .idea/TijdVoorDeTest.iml | 2 +- .idea/php.xml | 27 ++---- .idea/symfony2.xml | 1 + Dockerfile | 3 +- compose.override.yaml | 1 + composer.json | 10 +- composer.lock | 112 ++++++++++++---------- src/Controller/RegistrationController.php | 2 +- src/DataFixtures/KrtekFixtures.php | 64 ++++++------- src/Helpers/Base64.php | 2 +- src/Service/QuizSpreadsheetService.php | 7 +- tests/bootstrap.php | 2 +- 12 files changed, 118 insertions(+), 115 deletions(-) diff --git a/.idea/TijdVoorDeTest.iml b/.idea/TijdVoorDeTest.iml index 325953a..3b16971 100644 --- a/.idea/TijdVoorDeTest.iml +++ b/.idea/TijdVoorDeTest.iml @@ -134,7 +134,6 @@ - @@ -166,6 +165,7 @@ + diff --git a/.idea/php.xml b/.idea/php.xml index 7e4821b..03f8634 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -7,11 +7,6 @@ - - - - - @@ -31,11 +26,6 @@ - - - - - @@ -108,7 +98,6 @@ - @@ -201,11 +190,12 @@ + - + @@ -219,15 +209,15 @@ - - - /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini, /usr/local/etc/php/conf.d/docker-php-ext-intl.ini, /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini, /usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini, /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini, /usr/local/etc/php/conf.d/docker-php-ext-zip.ini, /usr/local/etc/php/app.conf.d/10-app.ini, /usr/local/etc/php/app.conf.d/20-app.dev.ini + + + /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini, /usr/local/etc/php/conf.d/docker-php-ext-excimer.ini, /usr/local/etc/php/conf.d/docker-php-ext-gd.ini, /usr/local/etc/php/conf.d/docker-php-ext-intl.ini, /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini, /usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini, /usr/local/etc/php/conf.d/docker-php-ext-uuid.ini, /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini, /usr/local/etc/php/conf.d/docker-php-ext-zip.ini, /usr/local/etc/php/app.conf.d/10-app.ini, /usr/local/etc/php/app.conf.d/20-app.dev.ini /usr/local/etc/php/php.ini - + @@ -244,8 +234,10 @@ + + @@ -265,6 +257,7 @@ + @@ -276,7 +269,7 @@ - + diff --git a/.idea/symfony2.xml b/.idea/symfony2.xml index bd98e40..ba828bc 100644 --- a/.idea/symfony2.xml +++ b/.idea/symfony2.xml @@ -2,5 +2,6 @@ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 85c6644..ce53a97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ #syntax=docker/dockerfile:1 # Versions -FROM dunglas/frankenphp:1-php8.3 AS frankenphp_upstream +FROM dunglas/frankenphp:1-php8.4 AS frankenphp_upstream # The different stages of this Dockerfile are meant to be built into separate images # https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage @@ -31,7 +31,6 @@ RUN set -eux; \ intl \ opcache \ zip \ - uuid \ gd \ excimer-1.2.3 \ ; diff --git a/compose.override.yaml b/compose.override.yaml index 65cb06d..9b0554e 100644 --- a/compose.override.yaml +++ b/compose.override.yaml @@ -15,6 +15,7 @@ services: # See https://xdebug.org/docs/all_settings#mode XDEBUG_MODE: "${XDEBUG_MODE:-off}" MAILER_DSN: "smtp://mailer:1025" + PHP_CS_FIXER_IGNORE_ENV: 1 extra_hosts: # Ensure that host.docker.internal is correctly defined on Linux - host.docker.internal:host-gateway diff --git a/composer.json b/composer.json index ce11459..694bad2 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "minimum-stability": "stable", "prefer-stable": true, "require": { - "php": ">=8.3.15", + "php": ">=8.4", "ext-ctype": "*", "ext-iconv": "*", "doctrine/dbal": "^4.2.3", @@ -15,7 +15,7 @@ "doctrine/orm": "^3.3.3", "easycorp/easyadmin-bundle": "^4.24.7", "phpdocumentor/reflection-docblock": "^5.6.2", - "phpoffice/phpspreadsheet": "^4.2.0", + "phpoffice/phpspreadsheet": "^4.3.1", "phpstan/phpdoc-parser": "^2.1", "runtime/frankenphp-symfony": "^0.2.0", "sentry/sentry-symfony": "^5.2", @@ -52,8 +52,8 @@ "phpstan/phpstan-doctrine": "^2.0.3", "phpstan/phpstan-phpunit": "^2.0.6", "phpstan/phpstan-symfony": "^2.0.6", - "phpunit/phpunit": "^12.1.6", - "rector/rector": "^2.0.16", + "phpunit/phpunit": "^12.2.1", + "rector/rector": "^2.0.17", "roave/security-advisories": "dev-latest", "symfony/browser-kit": "7.3.*", "symfony/css-selector": "7.3.*", @@ -95,7 +95,7 @@ "symfony/polyfill-php81": "*", "symfony/polyfill-php82": "*", "symfony/polyfill-php83": "*", - "symfony/polyfill-uuid": "*" + "symfony/polyfill-php84": "*" }, "scripts": { "auto-scripts": { diff --git a/composer.lock b/composer.lock index 273744f..5f27bce 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": "8e84c8f351737535bac2dc1def6448eb", + "content-hash": "1161162825d29714bbcec15a80d114fc", "packages": [ { "name": "composer/pcre", @@ -1992,16 +1992,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "4.2.0", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "5f6d7410e5fd72cac1aa67d4f05f4fe664d01ba6" + "reference": "d0ac70d610fb62ccad38c2696569ae1ad42acc70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/5f6d7410e5fd72cac1aa67d4f05f4fe664d01ba6", - "reference": "5f6d7410e5fd72cac1aa67d4f05f4fe664d01ba6", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/d0ac70d610fb62ccad38c2696569ae1ad42acc70", + "reference": "d0ac70d610fb62ccad38c2696569ae1ad42acc70", "shasum": "" }, "require": { @@ -2092,9 +2092,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/4.2.0" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/4.3.1" }, - "time": "2025-04-17T02:41:45+00:00" + "time": "2025-05-26T18:51:08+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -2702,16 +2702,16 @@ }, { "name": "sentry/sentry", - "version": "4.11.1", + "version": "4.12.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "53dc0bcb6a667cac5b760b46f98d5380e63e02ca" + "reference": "0173702ffcbe36ce7638f07f090271294866a7a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/53dc0bcb6a667cac5b760b46f98d5380e63e02ca", - "reference": "53dc0bcb6a667cac5b760b46f98d5380e63e02ca", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/0173702ffcbe36ce7638f07f090271294866a7a0", + "reference": "0173702ffcbe36ce7638f07f090271294866a7a0", "shasum": "" }, "require": { @@ -2775,7 +2775,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/4.11.1" + "source": "https://github.com/getsentry/sentry-php/tree/4.12.0" }, "funding": [ { @@ -2787,7 +2787,7 @@ "type": "custom" } ], - "time": "2025-05-12T11:30:33+00:00" + "time": "2025-06-07T08:37:56+00:00" }, { "name": "sentry/sentry-symfony", @@ -5551,22 +5551,28 @@ "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/polyfill-php84", + "name": "symfony/polyfill-uuid", "version": "v1.32.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "000df7860439609837bbe28670b0be15783b7fbf" + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/000df7860439609837bbe28670b0be15783b7fbf", - "reference": "000df7860439609837bbe28670b0be15783b7fbf", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", "shasum": "" }, "require": { "php": ">=7.2" }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, "type": "library", "extra": { "thanks": { @@ -5579,11 +5585,8 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php84\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Symfony\\Polyfill\\Uuid\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5591,24 +5594,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "description": "Symfony polyfill for uuid functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "polyfill", "portable", - "shim" + "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.32.0" }, "funding": [ { @@ -5624,7 +5627,7 @@ "type": "tidelift" } ], - "time": "2025-02-20T12:04:08+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", @@ -9914,16 +9917,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.1.6", + "version": "12.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2fdf0056c673c8f0f1eed00030be5f8243c1e6e0" + "reference": "5f09fda04e7caea93cff50b4e90319184f3e6ee3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2fdf0056c673c8f0f1eed00030be5f8243c1e6e0", - "reference": "2fdf0056c673c8f0f1eed00030be5f8243c1e6e0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5f09fda04e7caea93cff50b4e90319184f3e6ee3", + "reference": "5f09fda04e7caea93cff50b4e90319184f3e6ee3", "shasum": "" }, "require": { @@ -9937,7 +9940,7 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.3", - "phpunit/php-code-coverage": "^12.2.1", + "phpunit/php-code-coverage": "^12.3.0", "phpunit/php-file-iterator": "^6.0.0", "phpunit/php-invoker": "^6.0.0", "phpunit/php-text-template": "^5.0.0", @@ -9945,7 +9948,7 @@ "sebastian/cli-parser": "^4.0.0", "sebastian/comparator": "^7.0.1", "sebastian/diff": "^7.0.0", - "sebastian/environment": "^8.0.1", + "sebastian/environment": "^8.0.2", "sebastian/exporter": "^7.0.0", "sebastian/global-state": "^8.0.0", "sebastian/object-enumerator": "^7.0.0", @@ -9959,7 +9962,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "12.1-dev" + "dev-main": "12.2-dev" } }, "autoload": { @@ -9991,7 +9994,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.1.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.2.1" }, "funding": [ { @@ -10015,7 +10018,7 @@ "type": "tidelift" } ], - "time": "2025-05-21T12:36:31+00:00" + "time": "2025-06-07T05:17:47+00:00" }, { "name": "react/cache", @@ -10545,21 +10548,21 @@ }, { "name": "rector/rector", - "version": "2.0.16", + "version": "2.0.17", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "f1366d1f8c7490541c8f7af6e5c7cef7cca1b5a2" + "reference": "caa4ffda1d48bde44434e6ba95d132ec32e7fd40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/f1366d1f8c7490541c8f7af6e5c7cef7cca1b5a2", - "reference": "f1366d1f8c7490541c8f7af6e5c7cef7cca1b5a2", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/caa4ffda1d48bde44434e6ba95d132ec32e7fd40", + "reference": "caa4ffda1d48bde44434e6ba95d132ec32e7fd40", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.14" + "phpstan/phpstan": "^2.1.17" }, "conflict": { "rector/rector-doctrine": "*", @@ -10592,7 +10595,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.0.16" + "source": "https://github.com/rectorphp/rector/tree/2.0.17" }, "funding": [ { @@ -10600,7 +10603,7 @@ "type": "github" } ], - "time": "2025-05-12T16:37:16+00:00" + "time": "2025-05-30T10:59:08+00:00" }, { "name": "roave/security-advisories", @@ -10608,12 +10611,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "2145fcfdd72e389dce5082df4fb02d58fe32c5ca" + "reference": "d1d1619048a615bd2836f095f8dd3dd33e4ba457" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/2145fcfdd72e389dce5082df4fb02d58fe32c5ca", - "reference": "2145fcfdd72e389dce5082df4fb02d58fe32c5ca", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/d1d1619048a615bd2836f095f8dd3dd33e4ba457", + "reference": "d1d1619048a615bd2836f095f8dd3dd33e4ba457", "shasum": "" }, "conflict": { @@ -10678,6 +10681,7 @@ "baserproject/basercms": "<=5.1.1", "bassjobsen/bootstrap-3-typeahead": ">4.0.2", "bbpress/bbpress": "<2.6.5", + "bcit-ci/codeigniter": "<3.1.3", "bcosca/fatfree": "<3.7.2", "bedita/bedita": "<4", "bednee/cooluri": "<1.0.30", @@ -10713,6 +10717,7 @@ "centreon/centreon": "<22.10.15", "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", + "chrome-php/chrome": "<1.14", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", "ckeditor/ckeditor": "<4.25", "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3", @@ -11006,6 +11011,7 @@ "livewire/volt": "<1.7", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", + "lomkit/laravel-rest-api": "<2.13", "luracast/restler": "<3.1", "luyadev/yii-helpers": "<1.2.1", "macropay-solutions/laravel-crud-wizard-free": "<3.4.17", @@ -11023,7 +11029,7 @@ "marcwillmann/turn": "<0.3.3", "matomo/matomo": "<1.11", "matyhtf/framework": "<3.0.6", - "mautic/core": "<5.2.3", + "mautic/core": "<5.2.6|>=6.0.0.0-alpha,<6.0.2", "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", "maximebf/debugbar": "<1.19", "mdanter/ecc": "<2", @@ -11145,6 +11151,7 @@ "phpmyadmin/phpmyadmin": "<5.2.2", "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1", "phpoffice/common": "<0.2.9", + "phpoffice/math": "<=0.2", "phpoffice/phpexcel": "<=1.8.2", "phpoffice/phpspreadsheet": "<1.29.9|>=2,<2.1.8|>=2.2,<2.3.7|>=3,<3.9", "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", @@ -11211,6 +11218,7 @@ "rmccue/requests": ">=1.6,<1.8", "robrichards/xmlseclibs": ">=1,<3.0.4", "roots/soil": "<4.1", + "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11", "rudloff/alltube": "<3.0.3", "rudloff/rtmpdump-bin": "<=2.3.1", "s-cart/core": "<6.9", @@ -11462,7 +11470,7 @@ "yiisoft/yii2-elasticsearch": "<2.0.5", "yiisoft/yii2-gii": "<=2.2.4", "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.8", + "yiisoft/yii2-redis": "<2.0.20", "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", "yourls/yourls": "<=1.8.2", @@ -11541,7 +11549,7 @@ "type": "tidelift" } ], - "time": "2025-05-20T20:06:01+00:00" + "time": "2025-06-06T23:05:15+00:00" }, { "name": "sebastian/cli-parser", @@ -13073,7 +13081,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.3.15", + "php": ">=8.4", "ext-ctype": "*", "ext-iconv": "*" }, diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php index 2eb90cc..60fb204 100644 --- a/src/Controller/RegistrationController.php +++ b/src/Controller/RegistrationController.php @@ -45,7 +45,7 @@ final class RegistrationController extends AbstractController // generate a signed url and email it to the user $this->emailVerifier->sendEmailConfirmation('app_verify_email', $user, - (new TemplatedEmail()) + new TemplatedEmail() ->to((string) $user->getEmail()) ->subject($this->translator->trans('Please Confirm your Email')) ->htmlTemplate('backoffice/registration/confirmation_email.html.twig'), diff --git a/src/DataFixtures/KrtekFixtures.php b/src/DataFixtures/KrtekFixtures.php index 2f6dc18..2932678 100644 --- a/src/DataFixtures/KrtekFixtures.php +++ b/src/DataFixtures/KrtekFixtures.php @@ -44,18 +44,18 @@ class KrtekFixtures extends Fixture private function createQuiz1(Season $season): Quiz { - return (new Quiz()) + return new Quiz() ->setName('Quiz 1') ->setSeason($season) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Is de Krtek een man of een vrouw?') ->addAnswer(new Answer('Vrouw', true)) ->addAnswer(new Answer('Man')) ->setOrdering(1), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Hoeveel broers heeft de Krtek?') ->addAnswer(new Answer('Geen', true)) ->addAnswer(new Answer('1')) @@ -63,7 +63,7 @@ class KrtekFixtures extends Fixture ->setOrdering(2), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Wat is de lievelingsfeestdag van de Krtek?') ->addAnswer(new Answer('Geen')) ->addAnswer(new Answer('Diens eigen verjaardag')) @@ -73,13 +73,13 @@ class KrtekFixtures extends Fixture ->setOrdering(3), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Hoe kwam de Krtek naar Kersteren vandaag?') ->addAnswer(new Answer('Met het OV', true)) ->addAnswer(new Answer('Met de auto')) ->setOrdering(4), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Met wie keek de Krtek video bij binnenkomst?') ->addAnswer(new Answer('Claudia')) ->addAnswer(new Answer('Eelco')) @@ -97,7 +97,7 @@ class KrtekFixtures extends Fixture ->setOrdering(5), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Welk advies zou de Krtek zichzelf als kind geven?') ->addAnswer(new Answer('Geef je vader een knuffel.')) ->addAnswer(new Answer('Trek je wat minder aan van anderen.')) @@ -110,7 +110,7 @@ class KrtekFixtures extends Fixture ->setOrdering(6), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Wat voor soort schoenen droeg de Krtek bij het diner?') ->addAnswer(new Answer('Sneakers')) ->addAnswer(new Answer('Wandel-/bergschoenen', true)) @@ -121,7 +121,7 @@ class KrtekFixtures extends Fixture ->setOrdering(7), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Met welk vervoersmiddel reist de Krtek het liefste?') ->addAnswer(new Answer('Fiets', true)) ->addAnswer(new Answer('Auto')) @@ -129,14 +129,14 @@ class KrtekFixtures extends Fixture ->setOrdering(8), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Heeft de Krtek een eigen auto?') ->addAnswer(new Answer('Ja')) ->addAnswer(new Answer('Nee', true)) ->setOrdering(9), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Van wie is de quote die de Krtek gepakt heeft') ->addAnswer(new Answer('Karen')) ->addAnswer(new Answer('Gilles de Coster')) @@ -156,14 +156,14 @@ class KrtekFixtures extends Fixture ->setOrdering(10), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Zou de Krtek molboekjes, jokers, vrijstellingen of topito’s uit iemands rugzak stelen om te kunnen winnen?') ->addAnswer(new Answer('Ja')) ->addAnswer(new Answer('Nee', true)) ->setOrdering(11), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('In wat voor bed slaapt de Krtek dit weekend?') ->addAnswer(new Answer('Éénpersoons, losstaand bed')) ->addAnswer(new Answer('Éénpersoonsbed, tegen een ander bed aan', true)) @@ -171,7 +171,7 @@ class KrtekFixtures extends Fixture ->setOrdering(12), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Hoeveel jaar heeft de Krtek gedaan over de middelbare school?') ->addAnswer(new Answer('5')) ->addAnswer(new Answer('6', true)) @@ -180,14 +180,14 @@ class KrtekFixtures extends Fixture ->setOrdering(13), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Waar zat de Krtek aan tafel bij het diner?') ->addAnswer(new Answer('Met de rug naar de accommodatie')) ->addAnswer(new Answer('Met de rug naar de buitenmuur', true)) ->setOrdering(14), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Wie is de Krtek?') ->addAnswer(new Answer('Claudia', true)) ->addAnswer(new Answer('Eelco')) @@ -209,18 +209,18 @@ class KrtekFixtures extends Fixture private function createQuiz2(Season $season): Quiz { - return (new Quiz()) + return new Quiz() ->setName('Quiz 2') ->setSeason($season) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Is de Krtek een man of een vrouw?') ->addAnswer(new Answer('Man')) ->addAnswer(new Answer('Vrouw', true)) ->setOrdering(1), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Heeft de Krtek dieetwensen of allergieën?') ->addAnswer(new Answer('nee')) ->addAnswer(new Answer('De Krtek is vegetariër', true)) @@ -232,7 +232,7 @@ class KrtekFixtures extends Fixture ->setOrdering(2), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Hoe heet het huisdier/de huisdieren van de Krtek?') ->addAnswer(new Answer('Amy, Karel en Floyd')) ->addAnswer(new Answer('Flip en Majoor')) @@ -244,7 +244,7 @@ class KrtekFixtures extends Fixture ->setOrdering(3), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Wat dronk de Krtek deze ochtend bij het ontbijt?') ->addAnswer(new Answer('Koffie')) ->addAnswer(new Answer('Thee')) @@ -255,7 +255,7 @@ class KrtekFixtures extends Fixture ->setOrdering(4), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Waar ging de eerste vakantie die de Krtek zich nog herinnert heen?') ->addAnswer(new Answer('Denemarken')) ->addAnswer(new Answer('Drenthe')) @@ -267,7 +267,7 @@ class KrtekFixtures extends Fixture ->setOrdering(5), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Met welk groepje ging de Krtek als eerste het Douanespel in?') ->addAnswer(new Answer('Het eerste groepje', true)) ->addAnswer(new Answer('Het tweede groepje')) @@ -277,7 +277,7 @@ class KrtekFixtures extends Fixture ->setOrdering(6), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Gelooft de Krtek ergens in?') ->addAnswer(new Answer('Nee')) ->addAnswer(new Answer('Het universum', true)) @@ -286,14 +286,14 @@ class KrtekFixtures extends Fixture ->setOrdering(7), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('At de Krtek op vrijdagavond heksenkaas tijdens het diner?') ->addAnswer(new Answer('Ja', true)) ->addAnswer(new Answer('Nee')) ->setOrdering(8), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Hoe laat ging de Krtek gisteravond naar bed?') ->addAnswer(new Answer('Tussen 0:00 en 0:59 uur')) ->addAnswer(new Answer('Tussen 1:00 en 1:59 uur', true)) @@ -302,7 +302,7 @@ class KrtekFixtures extends Fixture ->setOrdering(9), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Hoeveel batterijen heeft de Krtek naar het bord gebracht bij het douanespel?') ->addAnswer(new Answer('1')) ->addAnswer(new Answer('2')) @@ -311,7 +311,7 @@ class KrtekFixtures extends Fixture ->setOrdering(10), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Wat keek de Krtek als kind graag op TV?') ->addAnswer(new Answer('Digimon', true)) ->addAnswer(new Answer('Floris')) @@ -322,7 +322,7 @@ class KrtekFixtures extends Fixture ->setOrdering(11), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Waarin zat op de heenreis de bagage van de Krtek (voornamelijk)?') ->addAnswer(new Answer('In koffer(s)', true)) ->addAnswer(new Answer('In losse tas(sen)')) @@ -330,7 +330,7 @@ class KrtekFixtures extends Fixture ->setOrdering(12), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Van welk geluid gaan de haren van de Krtek overeind staan?') ->addAnswer(new Answer('Een vork die door een metalen pan krast ')) ->addAnswer(new Answer('Smakkende mensen')) @@ -343,14 +343,14 @@ class KrtekFixtures extends Fixture ->setOrdering(13), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Wilde de Krtek penningmeester worden?') ->addAnswer(new Answer('Ja')) ->addAnswer(new Answer('Nee', true)) ->setOrdering(14), ) - ->addQuestion((new Question()) + ->addQuestion(new Question() ->setQuestion('Wie is de Krtek?') ->addAnswer(new Answer('Claudia', true)) ->addAnswer(new Answer('Eelco')) diff --git a/src/Helpers/Base64.php b/src/Helpers/Base64.php index 1bf6f87..40463bc 100644 --- a/src/Helpers/Base64.php +++ b/src/Helpers/Base64.php @@ -10,7 +10,7 @@ class Base64 { public static function base64UrlEncode(string $input): string { - return rtrim(strtr(base64_encode($input), '+/', '-_'), '='); + return mb_rtrim(strtr(base64_encode($input), '+/', '-_'), '='); } /** @throws UrlException */ diff --git a/src/Service/QuizSpreadsheetService.php b/src/Service/QuizSpreadsheetService.php index 430de90..285045c 100644 --- a/src/Service/QuizSpreadsheetService.php +++ b/src/Service/QuizSpreadsheetService.php @@ -8,8 +8,9 @@ use App\Entity\Answer; use App\Entity\Question; use App\Entity\Quiz; use App\Exception\SpreadsheetDataException; +use PhpOffice\PhpSpreadsheet\Reader; use PhpOffice\PhpSpreadsheet\Spreadsheet; -use PhpOffice\PhpSpreadsheet\Writer\Xlsx; +use PhpOffice\PhpSpreadsheet\Writer; use Symfony\Component\HttpFoundation\File\File; class QuizSpreadsheetService @@ -64,7 +65,7 @@ class QuizSpreadsheetService private function readSheet(File $file): Spreadsheet { - return (new \PhpOffice\PhpSpreadsheet\Reader\Xlsx())->setReadDataOnly(true)->load($file->getRealPath()); + return new Reader\Xlsx()->setReadDataOnly(true)->load($file->getRealPath()); } /** @@ -117,7 +118,7 @@ class QuizSpreadsheetService private function toXlsx(Spreadsheet $spreadsheet): \Closure { - $writer = new Xlsx($spreadsheet); + $writer = new Writer\Xlsx($spreadsheet); return static fn () => $writer->save('php://output'); } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 96185bd..78fc6af 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -6,7 +6,7 @@ use Symfony\Component\Dotenv\Dotenv; require dirname(__DIR__).'/vendor/autoload.php'; -(new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); +new Dotenv()->bootEnv(dirname(__DIR__).'/.env'); if ($_SERVER['APP_DEBUG']) { umask(0000);