diff --git a/.gitignore b/.gitignore index e54ddf5..e6af885 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ !.gitignore !.php-cs-fixer.php +.php-cs-fixer.cache # Eslint !.eslintrc @@ -64,6 +65,7 @@ Thumbs.db *.log *.sql *.sqlite +pg-log-*.json # ignore compiled files *.com diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php index 4a20191..62e2fbe 100644 --- a/.php-cs-fixer.php +++ b/.php-cs-fixer.php @@ -26,7 +26,7 @@ 'binary_operator_spaces' => [ 'default' => 'single_space', 'operators' => [ - '=>' => null, + '=>' => 'single_space', '|' => 'no_space', ], ], diff --git a/README.md b/README.md index 496f855..4747f6a 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,18 @@ ## Description -Prefill GravityForms fields, based on the dutch BSN number. Retrieve personal information and place these values in the corrensponding fields. +Prefill GravityForms fields, based on the Dutch BSN number. Retrieve personal information and place these values in the corrensponding fields. ## Dependencies -In order to use this plug-in there are two required plug-ins: +To use this plug-in, the following dependencies are required: - GravityForms (premium) -- Yard | GravityForms DigiD (private repo, contact [Yard | Digital Agency](https://www.yard.nl/) for access) -See [here](https://github.com/OpenWebconcept/plugin-prefill-gravity-forms/blob/main/config/core.php) for more details. +In addition, at least one of the following plug-ins must be installed to enable authentication by BSN: + +- Yard | GravityForms DigiD () +- OWC Signicat OpenID () ## Features @@ -46,7 +48,7 @@ See [here](https://github.com/OpenWebconcept/plugin-prefill-gravity-forms/blob/m 2. Go to the form settings of the form you want to configure. 3. Scroll down and look for the 'iConnect' panel and configure the settings. -### 🔐 Cache Encryption +### Cache Encryption To enable secure caching of sensitive data, you **must define an encryption key** in your `wp-config.php` file. This key is used to encrypt and decrypt the cached data and should be kept secret at all times. @@ -66,3 +68,55 @@ Important: ## License The source code is made available under the [EUPL 1.2 license](https://github.com/OpenWebconcept/plugin-prefill-gravity-forms/blob/main/LICENSE.md). Some of the dependencies are licensed differently, with the BSD or MIT license, for example. + +## User model + +The `UserModel` provides a simple way to access BRP (Basisregistratie Personen) data that has been retrieved after a valid DigiD login. +It automatically detects which data supplier is configured (in the add-on settings), loads the correct controller, and exposes a small set of helper methods for use in templates or form-prefill logic. + +Before accessing any user attributes, always check whether the user is authenticated using DigiD. + +### Usage + +```php +$user = new \OWC\PrefillGravityForms\Models\UserModel(); + +if ( $user->isLoggedIn() ) { + $bsn = $user->bsn(); + $age = $user->age(); +} +``` + +This model does not handle authentication itself, it only exposes data retrieved by the underlying BRP supplier controller. +If a controller fails to load (e.g., misconfiguration or missing supplier), the model gracefully returns default values. + +To use this model, make sure it is enabled in the settings available at '/wp-admin/admin.php?page=gf_settings&subview=owc-gravityforms-iconnect'. +Otherwise, the object will be instantiated but will not contain any data. + +## Logging + +Enable logging to monitor errors during communication with the BRP suppliers. + +- Logs are written daily to `pg-log{-date}.json` in the WordPress webroot directory. +- A rotating file handler keeps up to 7 log files by default, deleting the oldest as needed. +- You can change the maximum number of log files using the filter described below. + +## Hooks + +### Change the maximum number of log files + +Use the following filter to alter the rotating file handler's max files setting: + +```php +apply_filters('pg::logger/rotating_filer_handler_max_files', PG_LOGGER_DEFAULT_MAX_FILES) +``` + +### Intercept exceptions for custom handling + +You can intercept exceptions caught by the plugin for additional processing or custom logging using this filter: + +```php +do_action('pg::exception/intercept', $exception, $method) +``` + +The `$exception` parameter contains the caught exception object. diff --git a/build/blocks.asset.php b/build/blocks.asset.php index c618023..c6b30a0 100644 --- a/build/blocks.asset.php +++ b/build/blocks.asset.php @@ -1 +1,3 @@ - ['react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n'], 'version' => 'e0a9481f8d532339066b']; + ['react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n'], 'version' => '33b24b2f8a8b7ff4f915']; diff --git a/build/icons.asset.php b/build/icons.asset.php index ce59946..dea6b34 100644 --- a/build/icons.asset.php +++ b/build/icons.asset.php @@ -1 +1,3 @@ - [], 'version' => '02fa92c9250ff7f119f3']; + [], 'version' => '12341f29470476729a0c']; diff --git a/build/style.asset.php b/build/style.asset.php index 92c6601..3581c37 100644 --- a/build/style.asset.php +++ b/build/style.asset.php @@ -1 +1,3 @@ - [], 'version' => 'd63fd4982613309d5c57']; + [], 'version' => 'd63fd4982613309d5c57']; diff --git a/composer.json b/composer.json index 980e1cf..88508db 100644 --- a/composer.json +++ b/composer.json @@ -1,50 +1,50 @@ { - "name": "plugin/prefill-gravity-forms", - "description": "Prefill GravityForms Plugin", - "authors": [ - { - "name": "Yard | Digital Agency", - "email": "info@yard.nl", - "homepage": "https://www.yard.nl" - } - ], - "type": "wordpress-plugin", - "repositories": [ - { - "type": "composer", - "url": "https://wpackagist.org" - }, - { + "name": "plugin/prefill-gravity-forms", + "description": "Prefill GravityForms Plugin", + "authors": [ + { + "name": "Yard | Digital Agency", + "email": "info@yard.nl", + "homepage": "https://www.yard.nl" + } + ], + "type": "wordpress-plugin", + "repositories": [ + { + "type": "composer", + "url": "https://wpackagist.org" + }, + { "type": "vcs", "url": "git@github.com:OpenWebconcept/idp-userdata" } - ], - "require": { - "php": ">=7.0", - "php-di/php-di": "^6.0", - "owc/idp-userdata": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^9.0", - "10up/wp_mock": "^0.5.0", - "friendsofphp/php-cs-fixer": "^3.0", - "phpstan/phpstan": "^0.12", - "szepeviktor/phpstan-wordpress": "^0.6.0" - }, - "autoload": { - "psr-4": { - "OWC\\PrefillGravityForms\\": "./src/PrefillGravityForms" - } - }, - "autoload-dev": { - "psr-4": { - "OWC\\PrefillGravityForms\\Tests\\": "./tests/Unit" - } - }, - "scripts": { - "test": "clear && ./vendor/bin/phpunit --testsuite 'Unit Test Suite' --colors=always", - "format": "vendor/bin/php-cs-fixer fix", - "phpstan": "./vendor/bin/phpstan analyse" - } + ], + "require": { + "monolog/monolog": "^3.0", + "php": "^8.0", + "php-di/php-di": "^7.0", + "owc/idp-userdata": "^1.0" + }, + "require-dev": { + "10up/wp_mock": "^0.5.0", + "friendsofphp/php-cs-fixer": "^3.0", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^9.0", + "szepeviktor/phpstan-wordpress": "^1.0" + }, + "autoload": { + "psr-4": { + "OWC\\PrefillGravityForms\\": "./src/PrefillGravityForms" + } + }, + "autoload-dev": { + "psr-4": { + "OWC\\PrefillGravityForms\\Tests\\": "./tests/Unit" + } + }, + "scripts": { + "test": "clear && ./vendor/bin/phpunit --testsuite 'Unit Test Suite' --colors=always", + "format": "vendor/bin/php-cs-fixer fix", + "phpstan": "./vendor/bin/phpstan analyse" + } } diff --git a/composer.lock b/composer.lock index cdf2bbb..f42134b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,36 +4,36 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "793309e024bc8a7e5215d456379f694b", + "content-hash": "67f9926596a20e300567ee5d0eac02d0", "packages": [ { "name": "laravel/serializable-closure", - "version": "v1.3.5", + "version": "v2.0.7", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c" + "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", - "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/cb291e4c998ac50637c7eeb58189c14f5de5b9dd", + "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd", "shasum": "" }, "require": { - "php": "^7.3|^8.0" + "php": "^8.1" }, "require-dev": { - "illuminate/support": "^8.0|^9.0|^10.0|^11.0", - "nesbot/carbon": "^2.61|^3.0", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" + "illuminate/support": "^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0|^4.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -65,20 +65,123 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2024-09-23T13:33:08+00:00" + "time": "2025-11-21T20:52:36+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.9.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2025-03-24T10:02:05+00:00" }, { "name": "owc/idp-userdata", - "version": "v1.0.1", + "version": "v1.1.0", "source": { "type": "git", - "url": "git@github.com:OpenWebconcept/idp-userdata.git", - "reference": "ad046c97bf2eb1d575da78c981f7f4ff685a659e" + "url": "https://github.com/OpenWebconcept/idp-userdata.git", + "reference": "a95986c390ab59356922fd12b995c26dc9e88bf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OpenWebconcept/idp-userdata/zipball/ad046c97bf2eb1d575da78c981f7f4ff685a659e", - "reference": "ad046c97bf2eb1d575da78c981f7f4ff685a659e", + "url": "https://api.github.com/repos/OpenWebconcept/idp-userdata/zipball/a95986c390ab59356922fd12b995c26dc9e88bf9", + "reference": "a95986c390ab59356922fd12b995c26dc9e88bf9", "shasum": "" }, "require": { @@ -87,7 +190,7 @@ "type": "library", "autoload": { "psr-4": { - "OWC\\IdpUserdata\\": "src/" + "OWC\\IdpUserData\\": "src/" } }, "authors": [ @@ -98,23 +201,23 @@ ], "description": "Common interfaces for IDP userdata (DigiD, eHerkenning)", "support": { - "source": "https://github.com/OpenWebconcept/idp-userdata/tree/v1.0.1", + "source": "https://github.com/OpenWebconcept/idp-userdata/tree/v1.1.0", "issues": "https://github.com/OpenWebconcept/idp-userdata/issues" }, - "time": "2024-10-04T08:37:21+00:00" + "time": "2024-11-06T10:20:58+00:00" }, { "name": "php-di/invoker", - "version": "2.3.4", + "version": "2.3.7", "source": { "type": "git", "url": "https://github.com/PHP-DI/Invoker.git", - "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86" + "reference": "3c1ddfdef181431fbc4be83378f6d036d59e81e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/33234b32dafa8eb69202f950a1fc92055ed76a86", - "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86", + "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/3c1ddfdef181431fbc4be83378f6d036d59e81e1", + "reference": "3c1ddfdef181431fbc4be83378f6d036d59e81e1", "shasum": "" }, "require": { @@ -124,7 +227,7 @@ "require-dev": { "athletic/athletic": "~0.1.8", "mnapoli/hard-mode": "~0.3.0", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.0 || ^10 || ^11 || ^12" }, "type": "library", "autoload": { @@ -148,7 +251,7 @@ ], "support": { "issues": "https://github.com/PHP-DI/Invoker/issues", - "source": "https://github.com/PHP-DI/Invoker/tree/2.3.4" + "source": "https://github.com/PHP-DI/Invoker/tree/2.3.7" }, "funding": [ { @@ -156,43 +259,40 @@ "type": "github" } ], - "time": "2023-09-08T09:24:21+00:00" + "time": "2025-08-30T10:22:22+00:00" }, { "name": "php-di/php-di", - "version": "6.4.0", + "version": "7.1.1", "source": { "type": "git", "url": "https://github.com/PHP-DI/PHP-DI.git", - "reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4" + "reference": "f88054cc052e40dbe7b383c8817c19442d480352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/ae0f1b3b03d8b29dff81747063cbfd6276246cc4", - "reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4", + "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/f88054cc052e40dbe7b383c8817c19442d480352", + "reference": "f88054cc052e40dbe7b383c8817c19442d480352", "shasum": "" }, "require": { - "laravel/serializable-closure": "^1.0", - "php": ">=7.4.0", + "laravel/serializable-closure": "^1.0 || ^2.0", + "php": ">=8.0", "php-di/invoker": "^2.0", - "php-di/phpdoc-reader": "^2.0.1", - "psr/container": "^1.0" + "psr/container": "^1.1 || ^2.0" }, "provide": { "psr/container-implementation": "^1.0" }, "require-dev": { - "doctrine/annotations": "~1.10", - "friendsofphp/php-cs-fixer": "^2.4", - "mnapoli/phpunit-easymock": "^1.2", - "ocramius/proxy-manager": "^2.11.2", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9.5" + "friendsofphp/php-cs-fixer": "^3", + "friendsofphp/proxy-manager-lts": "^1", + "mnapoli/phpunit-easymock": "^1.3", + "phpunit/phpunit": "^9.6 || ^10 || ^11", + "vimeo/psalm": "^5|^6" }, "suggest": { - "doctrine/annotations": "Install it if you want to use annotations (version ~1.2)", - "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~2.0)" + "friendsofphp/proxy-manager-lts": "Install it if you want to use lazy injection (version ^1)" }, "type": "library", "autoload": { @@ -220,7 +320,7 @@ ], "support": { "issues": "https://github.com/PHP-DI/PHP-DI/issues", - "source": "https://github.com/PHP-DI/PHP-DI/tree/6.4.0" + "source": "https://github.com/PHP-DI/PHP-DI/tree/7.1.1" }, "funding": [ { @@ -232,71 +332,87 @@ "type": "tidelift" } ], - "time": "2022-04-09T16:46:38+00:00" + "time": "2025-08-16T11:10:48+00:00" }, { - "name": "php-di/phpdoc-reader", - "version": "2.2.1", + "name": "psr/container", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/PHP-DI/PhpDocReader.git", - "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c" + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/66daff34cbd2627740ffec9469ffbac9f8c8185c", - "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { - "php": ">=7.2.0" - }, - "require-dev": { - "mnapoli/hard-mode": "~0.3.0", - "phpunit/phpunit": "^8.5|^9.0" + "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { - "PhpDocReader\\": "src/PhpDocReader" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "phpdoc", - "reflection" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "issues": "https://github.com/PHP-DI/PhpDocReader/issues", - "source": "https://github.com/PHP-DI/PhpDocReader/tree/2.2.1" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2020-10-12T12:39:22+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { - "name": "psr/container", - "version": "1.1.2", + "name": "psr/log", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { - "php": ">=7.4.0" + "php": ">=8.0.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -309,20 +425,17 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "log", + "psr", + "psr-3" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2024-09-11T13:17:53+00:00" } ], "packages-dev": [ @@ -374,16 +487,16 @@ }, { "name": "antecedent/patchwork", - "version": "2.2.0", + "version": "2.2.3", "source": { "type": "git", "url": "https://github.com/antecedent/patchwork.git", - "reference": "b07d4fb37c3c723c8755122160c089e077d5de65" + "reference": "8b6b235f405af175259c8f56aea5fc23ab9f03ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antecedent/patchwork/zipball/b07d4fb37c3c723c8755122160c089e077d5de65", - "reference": "b07d4fb37c3c723c8755122160c089e077d5de65", + "url": "https://api.github.com/repos/antecedent/patchwork/zipball/8b6b235f405af175259c8f56aea5fc23ab9f03ce", + "reference": "8b6b235f405af175259c8f56aea5fc23ab9f03ce", "shasum": "" }, "require": { @@ -416,9 +529,9 @@ ], "support": { "issues": "https://github.com/antecedent/patchwork/issues", - "source": "https://github.com/antecedent/patchwork/tree/2.2.0" + "source": "https://github.com/antecedent/patchwork/tree/2.2.3" }, - "time": "2024-09-27T16:59:55+00:00" + "time": "2025-09-17T09:00:56+00:00" }, { "name": "clue/ndjson-react", @@ -486,28 +599,36 @@ }, { "name": "composer/pcre", - "version": "3.1.4", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "04229f163664973f68f38f6f73d917799168ef24" + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", - "reference": "04229f163664973f68f38f6f73d917799168ef24", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, "branch-alias": { "dev-main": "3.x-dev" } @@ -537,7 +658,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.4" + "source": "https://github.com/composer/pcre/tree/3.3.2" }, "funding": [ { @@ -553,20 +674,20 @@ "type": "tidelift" } ], - "time": "2024-05-27T13:40:54+00:00" + "time": "2024-11-12T16:29:46+00:00" }, { "name": "composer/semver", - "version": "3.4.3", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", "shasum": "" }, "require": { @@ -618,7 +739,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.3" + "source": "https://github.com/composer/semver/tree/3.4.4" }, "funding": [ { @@ -628,13 +749,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-09-19T14:15:21+00:00" + "time": "2025-08-20T19:15:30+00:00" }, { "name": "composer/xdebug-handler", @@ -704,30 +821,30 @@ }, { "name": "doctrine/instantiator", - "version": "1.5.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^11", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.30 || ^5.4" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -754,7 +871,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -770,7 +887,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:15:36+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "evenement/evenement", @@ -821,16 +938,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "8520451a140d3f46ac33042715115e290cf5785f" + "reference": "db9508f7b1474469d9d3c53b86f817e344732678" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", - "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678", "shasum": "" }, "require": { @@ -840,10 +957,10 @@ "fidry/makefile": "^0.2.0", "fidry/php-cs-fixer-config": "^1.1.2", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^8.5.31 || ^9.5.26", "webmozarts/strict-phpunit": "^7.5" }, @@ -870,7 +987,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" }, "funding": [ { @@ -878,61 +995,61 @@ "type": "github" } ], - "time": "2024-08-06T10:04:20+00:00" + "time": "2025-08-14T07:29:31+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.64.0", + "version": "v3.91.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "58dd9c931c785a79739310aef5178928305ffa67" + "reference": "9f10aa6390cea91da175ea608880e942d7c0226e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/58dd9c931c785a79739310aef5178928305ffa67", - "reference": "58dd9c931c785a79739310aef5178928305ffa67", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/9f10aa6390cea91da175ea608880e942d7c0226e", + "reference": "9f10aa6390cea91da175ea608880e942d7c0226e", "shasum": "" }, "require": { - "clue/ndjson-react": "^1.0", + "clue/ndjson-react": "^1.3", "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.3", + "composer/xdebug-handler": "^3.0.5", "ext-filter": "*", + "ext-hash": "*", "ext-json": "*", "ext-tokenizer": "*", - "fidry/cpu-core-counter": "^1.0", + "fidry/cpu-core-counter": "^1.3", "php": "^7.4 || ^8.0", - "react/child-process": "^0.6.5", - "react/event-loop": "^1.0", - "react/promise": "^2.0 || ^3.0", - "react/socket": "^1.0", - "react/stream": "^1.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", - "symfony/finder": "^5.4 || ^6.0 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-mbstring": "^1.28", - "symfony/polyfill-php80": "^1.28", - "symfony/polyfill-php81": "^1.28", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + "react/child-process": "^0.6.6", + "react/event-loop": "^1.5", + "react/socket": "^1.16", + "react/stream": "^1.4", + "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", + "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.33", + "symfony/polyfill-php80": "^1.33", + "symfony/polyfill-php81": "^1.33", + "symfony/polyfill-php84": "^1.33", + "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2 || ^8.0", + "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.3", - "infection/infection": "^0.29.5", - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.1", - "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.7", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", - "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", - "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "facile-it/paraunit": "^1.3.1 || ^2.7", + "infection/infection": "^0.31.0", + "justinrainbow/json-schema": "^6.5", + "keradus/cli-executor": "^2.2", + "mikey179/vfsstream": "^1.6.12", + "php-coveralls/php-coveralls": "^2.9", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", + "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", + "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2 || ^8.0", + "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2 || ^8.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -947,7 +1064,7 @@ "PhpCsFixer\\": "src/" }, "exclude-from-classmap": [ - "src/Fixer/Internal/*" + "src/**/Internal/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -973,7 +1090,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.64.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.91.3" }, "funding": [ { @@ -981,24 +1098,24 @@ "type": "github" } ], - "time": "2024-08-30T23:09:38+00:00" + "time": "2025-12-05T19:45:37+00:00" }, { "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" + "php": "^7.4|^8.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -1006,8 +1123,8 @@ "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { @@ -1030,9 +1147,9 @@ ], "support": { "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" }, - "time": "2020-07-09T08:09:16+00:00" + "time": "2025-04-30T06:54:44+00:00" }, { "name": "mockery/mockery", @@ -1119,16 +1236,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.0", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -1167,7 +1284,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -1175,20 +1292,20 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "nikic/php-parser", - "version": "v5.3.0", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3abf7425cd284141dc5d8d14a9ee444de3345d1a", - "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -1207,7 +1324,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -1231,9 +1348,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2024-09-29T13:56:26+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "phar-io/manifest", @@ -1355,27 +1472,31 @@ }, { "name": "php-stubs/wordpress-stubs", - "version": "v5.9.9", + "version": "v6.9.0", "source": { "type": "git", "url": "https://github.com/php-stubs/wordpress-stubs.git", - "reference": "06c51c4863659ea9e9f4c2a23293728a677cb059" + "reference": "5171cb6650e6c583a96943fd6ea0dfa3e1089a8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/06c51c4863659ea9e9f4c2a23293728a677cb059", - "reference": "06c51c4863659ea9e9f4c2a23293728a677cb059", + "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/5171cb6650e6c583a96943fd6ea0dfa3e1089a8a", + "reference": "5171cb6650e6c583a96943fd6ea0dfa3e1089a8a", "shasum": "" }, + "conflict": { + "phpdocumentor/reflection-docblock": "5.6.1" + }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "nikic/php-parser": "^4.13", - "php": "^7.4 || ~8.0.0", + "nikic/php-parser": "^5.5", + "php": "^7.4 || ^8.0", "php-stubs/generator": "^0.8.3", - "phpdocumentor/reflection-docblock": "5.3", - "phpstan/phpstan": "^1.10.49", + "phpdocumentor/reflection-docblock": "^5.4.1", + "phpstan/phpstan": "^2.1", "phpunit/phpunit": "^9.5", - "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^0.11" + "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^1.1.1", + "wp-coding-standards/wpcs": "3.1.0 as 2.3.0" }, "suggest": { "paragonie/sodium_compat": "Pure PHP implementation of libsodium", @@ -1396,26 +1517,21 @@ ], "support": { "issues": "https://github.com/php-stubs/wordpress-stubs/issues", - "source": "https://github.com/php-stubs/wordpress-stubs/tree/v5.9.9" + "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.9.0" }, - "time": "2024-04-14T17:16:00+00:00" + "time": "2025-12-03T23:06:24+00:00" }, { "name": "phpstan/phpstan", - "version": "0.12.100", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "48236ddf823547081b2b153d1cd2994b784328c3" - }, + "version": "1.12.32", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/48236ddf823547081b2b153d1cd2994b784328c3", - "reference": "48236ddf823547081b2b153d1cd2994b784328c3", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/2770dcdf5078d0b0d53f94317e06affe88419aa8", + "reference": "2770dcdf5078d0b0d53f94317e06affe88419aa8", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -1425,11 +1541,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -1440,9 +1551,16 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.100" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -1452,13 +1570,9 @@ { "url": "https://github.com/phpstan", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" } ], - "time": "2022-11-01T09:52:08+00:00" + "time": "2025-09-30T10:16:31+00:00" }, { "name": "phpunit/php-code-coverage", @@ -1781,16 +1895,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.21", + "version": "9.6.31", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa" + "reference": "945d0b7f346a084ce5549e95289962972c4272e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa", - "reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/945d0b7f346a084ce5549e95289962972c4272e5", + "reference": "945d0b7f346a084ce5549e95289962972c4272e5", "shasum": "" }, "require": { @@ -1801,7 +1915,7 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.0", + "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=7.3", @@ -1812,11 +1926,11 @@ "phpunit/php-timer": "^5.0.3", "sebastian/cli-parser": "^1.0.2", "sebastian/code-unit": "^1.0.8", - "sebastian/comparator": "^4.0.8", + "sebastian/comparator": "^4.0.9", "sebastian/diff": "^4.0.6", "sebastian/environment": "^5.1.5", - "sebastian/exporter": "^4.0.6", - "sebastian/global-state": "^5.0.7", + "sebastian/exporter": "^4.0.8", + "sebastian/global-state": "^5.0.8", "sebastian/object-enumerator": "^4.0.4", "sebastian/resource-operations": "^3.0.4", "sebastian/type": "^3.2.1", @@ -1864,7 +1978,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.21" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.31" }, "funding": [ { @@ -1875,12 +1989,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2024-09-19T10:50:18+00:00" + "time": "2025-12-06T07:45:52+00:00" }, { "name": "psr/event-dispatcher", @@ -1932,56 +2054,6 @@ }, "time": "2019-01-08T18:20:26+00:00" }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, { "name": "react/cache", "version": "v1.2.0", @@ -2056,33 +2128,33 @@ }, { "name": "react/child-process", - "version": "v0.6.5", + "version": "v0.6.6", "source": { "type": "git", "url": "https://github.com/reactphp/child-process.git", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", "shasum": "" }, "require": { "evenement/evenement": "^3.0 || ^2.0 || ^1.0", "php": ">=5.3.0", "react/event-loop": "^1.2", - "react/stream": "^1.2" + "react/stream": "^1.4" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/socket": "^1.8", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/socket": "^1.16", "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" }, "type": "library", "autoload": { "psr-4": { - "React\\ChildProcess\\": "src" + "React\\ChildProcess\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2119,32 +2191,28 @@ ], "support": { "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + "source": "https://github.com/reactphp/child-process/tree/v0.6.6" }, "funding": [ { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2022-09-16T13:41:56+00:00" + "time": "2025-01-01T16:37:48+00:00" }, { "name": "react/dns", - "version": "v1.13.0", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/reactphp/dns.git", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "url": "https://api.github.com/repos/reactphp/dns/zipball/7562c05391f42701c1fccf189c8225fece1cd7c3", + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3", "shasum": "" }, "require": { @@ -2199,7 +2267,7 @@ ], "support": { "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.13.0" + "source": "https://github.com/reactphp/dns/tree/v1.14.0" }, "funding": [ { @@ -2207,20 +2275,20 @@ "type": "open_collective" } ], - "time": "2024-06-13T14:18:03+00:00" + "time": "2025-11-18T19:34:28+00:00" }, { "name": "react/event-loop", - "version": "v1.5.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a", + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a", "shasum": "" }, "require": { @@ -2271,7 +2339,7 @@ ], "support": { "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + "source": "https://github.com/reactphp/event-loop/tree/v1.6.0" }, "funding": [ { @@ -2279,27 +2347,27 @@ "type": "open_collective" } ], - "time": "2023-11-13T13:48:05+00:00" + "time": "2025-11-17T20:46:25+00:00" }, { "name": "react/promise", - "version": "v3.2.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", "shasum": "" }, "require": { "php": ">=7.1.0" }, "require-dev": { - "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpstan/phpstan": "1.12.28 || 1.4.10", "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", @@ -2344,7 +2412,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.2.0" + "source": "https://github.com/reactphp/promise/tree/v3.3.0" }, "funding": [ { @@ -2352,20 +2420,20 @@ "type": "open_collective" } ], - "time": "2024-05-24T10:39:05+00:00" + "time": "2025-08-19T18:57:03+00:00" }, { "name": "react/socket", - "version": "v1.16.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "url": "https://api.github.com/repos/reactphp/socket/zipball/ef5b17b81f6f60504c539313f94f2d826c5faa08", + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08", "shasum": "" }, "require": { @@ -2424,7 +2492,7 @@ ], "support": { "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.16.0" + "source": "https://github.com/reactphp/socket/tree/v1.17.0" }, "funding": [ { @@ -2432,7 +2500,7 @@ "type": "open_collective" } ], - "time": "2024-07-26T10:38:09+00:00" + "time": "2025-11-19T20:47:34+00:00" }, { "name": "react/stream", @@ -2681,16 +2749,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "4.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5", + "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5", "shasum": "" }, "require": { @@ -2743,15 +2811,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2025-08-10T06:51:50+00:00" }, { "name": "sebastian/complexity", @@ -2941,16 +3021,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/14c6ba52f95a36c3d27c835d65efc7123c446e8c", + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c", "shasum": "" }, "require": { @@ -3006,28 +3086,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2025-09-24T06:03:27+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.7", + "version": "5.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6", + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6", "shasum": "" }, "require": { @@ -3070,15 +3162,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" } ], - "time": "2024-03-02T06:35:11+00:00" + "time": "2025-08-10T07:10:35+00:00" }, { "name": "sebastian/lines-of-code", @@ -3251,16 +3355,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0", + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0", "shasum": "" }, "require": { @@ -3302,15 +3406,27 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2023-02-03T06:07:39+00:00" + "time": "2025-08-10T06:57:39+00:00" }, { "name": "sebastian/resource-operations", @@ -3477,52 +3593,47 @@ }, { "name": "symfony/console", - "version": "v5.4.44", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "5b5a0aa66e3296e303e22490f90f521551835a83" + "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/5b5a0aa66e3296e303e22490f90f521551835a83", - "reference": "5b5a0aa66e3296e303e22490f90f521551835a83", + "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", + "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2|^8.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3556,7 +3667,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.44" + "source": "https://github.com/symfony/console/tree/v7.4.1" }, "funding": [ { @@ -3567,38 +3678,42 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-20T07:56:40+00:00" + "time": "2025-12-05T15:23:39+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.3", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "80d075412b557d41002320b96a096ca65aa2c98d" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/80d075412b557d41002320b96a096ca65aa2c98d", - "reference": "80d075412b557d41002320b96a096ca65aa2c98d", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -3623,7 +3738,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.3" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -3639,48 +3754,44 @@ "type": "tidelift" } ], - "time": "2023-01-24T14:02:46+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.40", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4" + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a54e2a8a114065f31020d6a89ede83e34c3b27a4", - "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^2|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<4.4" + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3708,7 +3819,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.40" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.0" }, "funding": [ { @@ -3719,42 +3830,43 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T14:33:22+00:00" + "time": "2025-10-28T09:38:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.5.3", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "540f4c73e87fd0c71ca44a6aa305d024ac68cb73" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/540f4c73e87fd0c71ca44a6aa305d024ac68cb73", - "reference": "540f4c73e87fd0c71ca44a6aa305d024ac68cb73", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -3787,7 +3899,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.3" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -3803,30 +3915,29 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.44", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc" + "reference": "d551b38811096d0be9c4691d406991b47c0c630a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/76c3818964e9d32be3862c9318ae3ba9aa280ddc", - "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a", + "reference": "d551b38811096d0be9c4691d406991b47c0c630a", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^5.4|^6.4" + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3854,7 +3965,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.44" + "source": "https://github.com/symfony/filesystem/tree/v7.4.0" }, "funding": [ { @@ -3865,31 +3976,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-16T14:52:48+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/finder", - "version": "v5.4.43", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ae25a9145a900764158d439653d5630191155ca0" + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ae25a9145a900764158d439653d5630191155ca0", - "reference": "ae25a9145a900764158d439653d5630191155ca0", + "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd", + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3917,7 +4033,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.43" + "source": "https://github.com/symfony/finder/tree/v7.4.0" }, "funding": [ { @@ -3928,32 +4044,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-13T14:03:51+00:00" + "time": "2025-11-05T05:42:40+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.40", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4" + "reference": "b38026df55197f9e39a44f3215788edf83187b80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/bd1afbde6613a8d6b956115e0e14b196191fd0c4", - "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b38026df55197f9e39a44f3215788edf83187b80", + "reference": "b38026df55197f9e39a44f3215788edf83187b80", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -3986,7 +4104,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.40" + "source": "https://github.com/symfony/options-resolver/tree/v7.4.0" }, "funding": [ { @@ -3997,16 +4115,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T14:33:22+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -4030,8 +4152,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4065,7 +4187,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -4076,6 +4198,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4085,16 +4211,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { @@ -4106,8 +4232,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4143,7 +4269,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -4154,16 +4280,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -4184,8 +4314,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4224,7 +4354,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" }, "funding": [ { @@ -4235,6 +4365,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4244,19 +4378,20 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { + "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -4268,8 +4403,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4304,7 +4439,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -4315,16 +4450,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", @@ -4342,8 +4481,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4380,7 +4519,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0" }, "funding": [ { @@ -4391,6 +4530,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4400,16 +4543,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { @@ -4418,8 +4561,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4460,7 +4603,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" }, "funding": [ { @@ -4471,16 +4614,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", @@ -4498,8 +4645,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4536,7 +4683,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" }, "funding": [ { @@ -4547,6 +4694,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4554,23 +4705,102 @@ ], "time": "2024-09-09T11:45:10+00:00" }, + { + "name": "symfony/polyfill-php84", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "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.33.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": "2025-06-24T13:30:11+00:00" + }, { "name": "symfony/process", - "version": "v5.4.44", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "1b9fa82b5c62cd49da8c9e3952dd8531ada65096" + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/1b9fa82b5c62cd49da8c9e3952dd8531ada65096", - "reference": "1b9fa82b5c62cd49da8c9e3952dd8531ada65096", + "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -4598,7 +4828,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.44" + "source": "https://github.com/symfony/process/tree/v7.4.0" }, "funding": [ { @@ -4609,52 +4839,56 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-17T12:46:43+00:00" + "time": "2025-10-16T11:21:06+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.3", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a2329596ddc8fd568900e3fc76cba42489ecc7f3", - "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4681,7 +4915,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.3" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -4692,30 +4926,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-04-21T15:04:16+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.40", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625" + "reference": "8a24af0a2e8a872fb745047180649b8418303084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0e9daf3b7c805c747638b2cc48f1649e594f9625", - "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8a24af0a2e8a872fb745047180649b8418303084", + "reference": "8a24af0a2e8a872fb745047180649b8418303084", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/service-contracts": "^1|^2|^3" + "php": ">=8.2", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -4743,7 +4981,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.40" + "source": "https://github.com/symfony/stopwatch/tree/v7.4.0" }, "funding": [ { @@ -4754,43 +4992,48 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T14:33:22+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/string", - "version": "v5.4.44", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "832caa16b6d9aac6bf11747315225f5aba384c24" + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/832caa16b6d9aac6bf11747315225f5aba384c24", - "reference": "832caa16b6d9aac6bf11747315225f5aba384c24", + "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.33", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4829,7 +5072,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.44" + "source": "https://github.com/symfony/string/tree/v7.4.0" }, "funding": [ { @@ -4840,39 +5083,48 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-20T07:56:40+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "szepeviktor/phpstan-wordpress", - "version": "v0.6.6", + "version": "v1.3.5", "source": { "type": "git", "url": "https://github.com/szepeviktor/phpstan-wordpress.git", - "reference": "f5040549dc5f46d81ea2432de726c2a0a4ad1141" + "reference": "7f8cfe992faa96b6a33bbd75c7bace98864161e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/f5040549dc5f46d81ea2432de726c2a0a4ad1141", - "reference": "f5040549dc5f46d81ea2432de726c2a0a4ad1141", + "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/7f8cfe992faa96b6a33bbd75c7bace98864161e7", + "reference": "7f8cfe992faa96b6a33bbd75c7bace98864161e7", "shasum": "" }, "require": { - "php": "~7.1", - "php-stubs/wordpress-stubs": "^4.7 || ^5.0", - "phpstan/phpstan": "^0.12.26", + "php": "^7.2 || ^8.0", + "php-stubs/wordpress-stubs": "^4.7 || ^5.0 || ^6.0", + "phpstan/phpstan": "^1.10.31", "symfony/polyfill-php73": "^1.12.0" }, "require-dev": { - "composer/composer": "^1.8.6", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "composer/composer": "^2.1.14", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", "php-parallel-lint/php-parallel-lint": "^1.1", - "phpstan/phpstan-strict-rules": "^0.12", - "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^0.4.3" + "phpstan/phpstan-strict-rules": "^1.2", + "phpunit/phpunit": "^8.0 || ^9.0", + "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^1.0", + "wp-coding-standards/wpcs": "3.1.0 as 2.3.0" + }, + "suggest": { + "swissspidy/phpstan-no-private": "Detect usage of internal core functions, classes and methods" }, "type": "phpstan-extension", "extra": { @@ -4884,7 +5136,7 @@ }, "autoload": { "psr-4": { - "PHPStan\\WordPress\\": "src/" + "SzepeViktor\\PHPStan\\WordPress\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4901,28 +5153,22 @@ ], "support": { "issues": "https://github.com/szepeviktor/phpstan-wordpress/issues", - "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v0.6.6" + "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v1.3.5" }, - "funding": [ - { - "url": "https://www.paypal.me/szepeviktor", - "type": "custom" - } - ], - "time": "2020-10-18T12:11:45+00:00" + "time": "2024-06-28T22:27:19+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { @@ -4951,7 +5197,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" }, "funding": [ { @@ -4959,17 +5205,17 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.0" + "php": "^8.0" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } diff --git a/config/core.php b/config/core.php index 864d4a0..d3284dd 100644 --- a/config/core.php +++ b/config/core.php @@ -7,27 +7,5 @@ OWC\PrefillGravityForms\Providers\BlockServiceProvider::class, OWC\PrefillGravityForms\Providers\EnqueueServiceProvider::class, ], - - /** - * Dependencies upon which the plugin relies. - * - * Required: type, label - * Optional: message - * - * Type: plugin - * - Required: file - * - Optional: version - * - * Type: class - * - Required: name - */ - 'dependencies' => [ - [ - 'type' => 'plugin', - 'label' => 'Gravity Forms', - 'version' => '>=2.5.8', - 'file' => 'gravityforms/gravityforms.php', - ], - ], 'text_domain' => PG_PLUGIN_SLUG, ]; diff --git a/index.php b/index.php index 8142269..7e187a2 100644 --- a/index.php +++ b/index.php @@ -1 +1,3 @@ -\n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"POT-Creation-Date: 2026-01-07T13:12:37+00:00\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"X-Generator: WP-CLI 2.12.0\n" +"X-Domain: prefill-gravity-forms\n" + +#. Plugin Name of the plugin +#: prefill-gravity-forms.php +msgid "Yard | BRP Prefill GravityForms" +msgstr "" + +#. Plugin URI of the plugin +#: prefill-gravity-forms.php +msgid "https://www.openwebconcept.nl/" +msgstr "" + +#. Description of the plugin +#: prefill-gravity-forms.php +msgid "Prefill GravityForms fields, based on a (Dutch) BSN number. Retrieve personal information and place these values in the corresponding fields." +msgstr "" + +#. Author of the plugin +#: prefill-gravity-forms.php +msgid "Yard | Digital Agency" +msgstr "" + +#. Author URI of the plugin +#: prefill-gravity-forms.php +msgid "https://www.yard.nl/" +msgstr "" + +#: resources/views/partials/gf-field-age-check-settings.php:3 +msgid "Minimale leeftijd" +msgstr "" + +#: resources/views/partials/gf-field-age-check-settings.php:5 +msgid "Minimale leeftijd die de ingelogde burger dient te hebben." +msgstr "" + +#: resources/views/partials/gf-field-age-check-settings.php:10 +msgid "Maximale leeftijd" +msgstr "" + +#: resources/views/partials/gf-field-age-check-settings.php:12 +msgid "Maximale leeftijd die de ingelogde burger dient te hebben." +msgstr "" + +#: resources/views/partials/gf-field-age-check-settings.php:17 +msgid "Bericht bij onjuiste leeftijd" +msgstr "" + +#: resources/views/partials/gf-field-age-check-settings.php:19 +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:243 +msgid "U heeft niet de juiste leeftijd om dit formulier te mogen invullen." +msgstr "" + +#: resources/views/partials/gf-field-age-check-settings.php:23 +msgid "Bericht bij juiste leeftijd" +msgstr "" + +#: resources/views/partials/gf-field-age-check-settings.php:25 +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:254 +msgid "U heeft de juiste leeftijd om dit formulier te mogen invullen." +msgstr "" + +#: resources/views/partials/gf-field-municipality-check-settings.php:3 +msgid "Gemeente code" +msgstr "" + +#: resources/views/partials/gf-field-municipality-check-settings.php:5 +msgid "De gemeente code waarop gecontroleerd dient te worden." +msgstr "" + +#: resources/views/partials/gf-field-municipality-check-settings.php:10 +msgid "Bericht bij onjuiste gemeente" +msgstr "" + +#: resources/views/partials/gf-field-municipality-check-settings.php:16 +msgid "Bericht bij juiste gemeente" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:3 +#: resources/views/partials/gf-field-options-openzaak.php:3 +#: resources/views/partials/gf-field-options-pink-roccade.php:3 +#: resources/views/partials/gf-field-options-vrij-brp.php:3 +#: resources/views/partials/gf-field-options-we-are-frank.php:3 +msgid "Automatisch invullen" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:6 +#: resources/views/partials/gf-field-options-openzaak.php:6 +#: resources/views/partials/gf-field-options-pink-roccade.php:6 +#: resources/views/partials/gf-field-options-vrij-brp.php:6 +#: resources/views/partials/gf-field-options-we-are-frank.php:6 +msgid "Kies veldnaam" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:7 +#: resources/views/partials/gf-field-options-enable-u.php:49 +#: resources/views/partials/gf-field-options-enable-u.php:64 +#: resources/views/partials/gf-field-options-enable-u.php:79 +#: resources/views/partials/gf-field-options-openzaak.php:7 +#: resources/views/partials/gf-field-options-openzaak.php:49 +#: resources/views/partials/gf-field-options-openzaak.php:64 +#: resources/views/partials/gf-field-options-openzaak.php:79 +#: resources/views/partials/gf-field-options-pink-roccade.php:7 +#: resources/views/partials/gf-field-options-pink-roccade.php:49 +#: resources/views/partials/gf-field-options-pink-roccade.php:64 +#: resources/views/partials/gf-field-options-pink-roccade.php:79 +#: resources/views/partials/gf-field-options-vrij-brp.php:7 +#: resources/views/partials/gf-field-options-vrij-brp.php:44 +#: resources/views/partials/gf-field-options-vrij-brp.php:67 +#: resources/views/partials/gf-field-options-vrij-brp.php:82 +#: resources/views/partials/gf-field-options-vrij-brp.php:97 +#: resources/views/partials/gf-field-options-we-are-frank.php:7 +#: resources/views/partials/gf-field-options-we-are-frank.php:44 +#: resources/views/partials/gf-field-options-we-are-frank.php:67 +#: resources/views/partials/gf-field-options-we-are-frank.php:79 +#: resources/views/partials/gf-field-options-we-are-frank.php:91 +msgid "Burgerservicenummer" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:8 +#: resources/views/partials/gf-field-options-openzaak.php:8 +#: resources/views/partials/gf-field-options-pink-roccade.php:8 +#: resources/views/partials/gf-field-options-vrij-brp.php:8 +#: resources/views/partials/gf-field-options-we-are-frank.php:8 +msgid "aNummer" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:9 +#: resources/views/partials/gf-field-options-enable-u.php:50 +#: resources/views/partials/gf-field-options-enable-u.php:65 +#: resources/views/partials/gf-field-options-enable-u.php:80 +#: resources/views/partials/gf-field-options-openzaak.php:9 +#: resources/views/partials/gf-field-options-openzaak.php:50 +#: resources/views/partials/gf-field-options-openzaak.php:65 +#: resources/views/partials/gf-field-options-openzaak.php:80 +#: resources/views/partials/gf-field-options-pink-roccade.php:9 +#: resources/views/partials/gf-field-options-pink-roccade.php:50 +#: resources/views/partials/gf-field-options-pink-roccade.php:65 +#: resources/views/partials/gf-field-options-pink-roccade.php:80 +#: resources/views/partials/gf-field-options-vrij-brp.php:9 +#: resources/views/partials/gf-field-options-vrij-brp.php:68 +#: resources/views/partials/gf-field-options-vrij-brp.php:83 +#: resources/views/partials/gf-field-options-vrij-brp.php:98 +#: resources/views/partials/gf-field-options-we-are-frank.php:68 +#: resources/views/partials/gf-field-options-we-are-frank.php:80 +#: resources/views/partials/gf-field-options-we-are-frank.php:92 +msgid "Geslachtsaanduiding" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:10 +#: resources/views/partials/gf-field-options-openzaak.php:10 +#: resources/views/partials/gf-field-options-pink-roccade.php:10 +#: resources/views/partials/gf-field-options-vrij-brp.php:10 +#: resources/views/partials/gf-field-options-we-are-frank.php:9 +msgid "Leeftijd" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:12 +#: resources/views/partials/gf-field-options-enable-u.php:45 +#: resources/views/partials/gf-field-options-enable-u.php:51 +#: resources/views/partials/gf-field-options-enable-u.php:66 +#: resources/views/partials/gf-field-options-enable-u.php:81 +#: resources/views/partials/gf-field-options-openzaak.php:12 +#: resources/views/partials/gf-field-options-openzaak.php:45 +#: resources/views/partials/gf-field-options-openzaak.php:51 +#: resources/views/partials/gf-field-options-openzaak.php:66 +#: resources/views/partials/gf-field-options-openzaak.php:81 +#: resources/views/partials/gf-field-options-pink-roccade.php:12 +#: resources/views/partials/gf-field-options-pink-roccade.php:45 +#: resources/views/partials/gf-field-options-pink-roccade.php:51 +#: resources/views/partials/gf-field-options-pink-roccade.php:66 +#: resources/views/partials/gf-field-options-pink-roccade.php:81 +#: resources/views/partials/gf-field-options-vrij-brp.php:12 +#: resources/views/partials/gf-field-options-vrij-brp.php:45 +#: resources/views/partials/gf-field-options-vrij-brp.php:69 +#: resources/views/partials/gf-field-options-vrij-brp.php:84 +#: resources/views/partials/gf-field-options-vrij-brp.php:99 +#: resources/views/partials/gf-field-options-we-are-frank.php:11 +#: resources/views/partials/gf-field-options-we-are-frank.php:45 +#: resources/views/partials/gf-field-options-we-are-frank.php:69 +#: resources/views/partials/gf-field-options-we-are-frank.php:81 +#: resources/views/partials/gf-field-options-we-are-frank.php:93 +msgid "Geslachtsnaam" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:13 +#: resources/views/partials/gf-field-options-enable-u.php:52 +#: resources/views/partials/gf-field-options-enable-u.php:67 +#: resources/views/partials/gf-field-options-enable-u.php:82 +#: resources/views/partials/gf-field-options-openzaak.php:13 +#: resources/views/partials/gf-field-options-openzaak.php:52 +#: resources/views/partials/gf-field-options-openzaak.php:67 +#: resources/views/partials/gf-field-options-openzaak.php:82 +#: resources/views/partials/gf-field-options-pink-roccade.php:13 +#: resources/views/partials/gf-field-options-pink-roccade.php:52 +#: resources/views/partials/gf-field-options-pink-roccade.php:67 +#: resources/views/partials/gf-field-options-pink-roccade.php:82 +#: resources/views/partials/gf-field-options-vrij-brp.php:13 +#: resources/views/partials/gf-field-options-vrij-brp.php:46 +#: resources/views/partials/gf-field-options-vrij-brp.php:70 +#: resources/views/partials/gf-field-options-vrij-brp.php:85 +#: resources/views/partials/gf-field-options-vrij-brp.php:100 +#: resources/views/partials/gf-field-options-we-are-frank.php:13 +#: resources/views/partials/gf-field-options-we-are-frank.php:46 +#: resources/views/partials/gf-field-options-we-are-frank.php:70 +#: resources/views/partials/gf-field-options-we-are-frank.php:82 +#: resources/views/partials/gf-field-options-we-are-frank.php:94 +msgid "Voorletters" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:14 +#: resources/views/partials/gf-field-options-enable-u.php:46 +#: resources/views/partials/gf-field-options-enable-u.php:53 +#: resources/views/partials/gf-field-options-enable-u.php:68 +#: resources/views/partials/gf-field-options-enable-u.php:83 +#: resources/views/partials/gf-field-options-openzaak.php:14 +#: resources/views/partials/gf-field-options-openzaak.php:46 +#: resources/views/partials/gf-field-options-openzaak.php:53 +#: resources/views/partials/gf-field-options-openzaak.php:68 +#: resources/views/partials/gf-field-options-openzaak.php:83 +#: resources/views/partials/gf-field-options-pink-roccade.php:14 +#: resources/views/partials/gf-field-options-pink-roccade.php:46 +#: resources/views/partials/gf-field-options-pink-roccade.php:53 +#: resources/views/partials/gf-field-options-pink-roccade.php:68 +#: resources/views/partials/gf-field-options-pink-roccade.php:83 +#: resources/views/partials/gf-field-options-vrij-brp.php:14 +#: resources/views/partials/gf-field-options-vrij-brp.php:47 +#: resources/views/partials/gf-field-options-vrij-brp.php:71 +#: resources/views/partials/gf-field-options-vrij-brp.php:86 +#: resources/views/partials/gf-field-options-vrij-brp.php:101 +#: resources/views/partials/gf-field-options-we-are-frank.php:12 +#: resources/views/partials/gf-field-options-we-are-frank.php:47 +#: resources/views/partials/gf-field-options-we-are-frank.php:71 +#: resources/views/partials/gf-field-options-we-are-frank.php:83 +#: resources/views/partials/gf-field-options-we-are-frank.php:95 +msgid "Voornamen" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:15 +#: resources/views/partials/gf-field-options-enable-u.php:54 +#: resources/views/partials/gf-field-options-enable-u.php:69 +#: resources/views/partials/gf-field-options-enable-u.php:84 +#: resources/views/partials/gf-field-options-openzaak.php:15 +#: resources/views/partials/gf-field-options-openzaak.php:54 +#: resources/views/partials/gf-field-options-openzaak.php:69 +#: resources/views/partials/gf-field-options-openzaak.php:84 +#: resources/views/partials/gf-field-options-pink-roccade.php:15 +#: resources/views/partials/gf-field-options-pink-roccade.php:54 +#: resources/views/partials/gf-field-options-pink-roccade.php:69 +#: resources/views/partials/gf-field-options-pink-roccade.php:84 +#: resources/views/partials/gf-field-options-vrij-brp.php:15 +#: resources/views/partials/gf-field-options-vrij-brp.php:48 +#: resources/views/partials/gf-field-options-vrij-brp.php:72 +#: resources/views/partials/gf-field-options-vrij-brp.php:87 +#: resources/views/partials/gf-field-options-vrij-brp.php:102 +#: resources/views/partials/gf-field-options-we-are-frank.php:14 +#: resources/views/partials/gf-field-options-we-are-frank.php:48 +#: resources/views/partials/gf-field-options-we-are-frank.php:72 +#: resources/views/partials/gf-field-options-we-are-frank.php:84 +#: resources/views/partials/gf-field-options-we-are-frank.php:96 +msgid "Voorvoegsel" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:16 +#: resources/views/partials/gf-field-options-openzaak.php:16 +#: resources/views/partials/gf-field-options-pink-roccade.php:16 +#: resources/views/partials/gf-field-options-vrij-brp.php:16 +msgid "Aanschrijfwijze" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:17 +#: resources/views/partials/gf-field-options-openzaak.php:17 +#: resources/views/partials/gf-field-options-pink-roccade.php:17 +#: resources/views/partials/gf-field-options-vrij-brp.php:17 +msgid "AanduidingNaamgebruik" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:20 +#: resources/views/partials/gf-field-options-openzaak.php:20 +#: resources/views/partials/gf-field-options-pink-roccade.php:20 +msgid "Datum" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:21 +#: resources/views/partials/gf-field-options-openzaak.php:21 +#: resources/views/partials/gf-field-options-pink-roccade.php:21 +msgid "Jaar" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:22 +#: resources/views/partials/gf-field-options-openzaak.php:22 +#: resources/views/partials/gf-field-options-pink-roccade.php:22 +msgid "Maand" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:23 +#: resources/views/partials/gf-field-options-openzaak.php:23 +#: resources/views/partials/gf-field-options-pink-roccade.php:23 +msgid "Dag" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:24 +#: resources/views/partials/gf-field-options-openzaak.php:24 +#: resources/views/partials/gf-field-options-pink-roccade.php:24 +#: resources/views/partials/gf-field-options-vrij-brp.php:20 +msgid "Omschrijving" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:25 +#: resources/views/partials/gf-field-options-openzaak.php:25 +#: resources/views/partials/gf-field-options-pink-roccade.php:25 +#: resources/views/partials/gf-field-options-vrij-brp.php:21 +msgid "Code" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:28 +#: resources/views/partials/gf-field-options-enable-u.php:55 +#: resources/views/partials/gf-field-options-enable-u.php:70 +#: resources/views/partials/gf-field-options-enable-u.php:85 +#: resources/views/partials/gf-field-options-openzaak.php:28 +#: resources/views/partials/gf-field-options-openzaak.php:55 +#: resources/views/partials/gf-field-options-openzaak.php:70 +#: resources/views/partials/gf-field-options-openzaak.php:85 +#: resources/views/partials/gf-field-options-pink-roccade.php:28 +#: resources/views/partials/gf-field-options-pink-roccade.php:55 +#: resources/views/partials/gf-field-options-pink-roccade.php:70 +#: resources/views/partials/gf-field-options-pink-roccade.php:85 +#: resources/views/partials/gf-field-options-vrij-brp.php:24 +#: resources/views/partials/gf-field-options-vrij-brp.php:49 +#: resources/views/partials/gf-field-options-vrij-brp.php:73 +#: resources/views/partials/gf-field-options-vrij-brp.php:88 +#: resources/views/partials/gf-field-options-vrij-brp.php:103 +#: resources/views/partials/gf-field-options-we-are-frank.php:28 +#: resources/views/partials/gf-field-options-we-are-frank.php:49 +#: resources/views/partials/gf-field-options-we-are-frank.php:73 +#: resources/views/partials/gf-field-options-we-are-frank.php:85 +#: resources/views/partials/gf-field-options-we-are-frank.php:97 +msgid "Geboortedatum" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:29 +#: resources/views/partials/gf-field-options-enable-u.php:61 +#: resources/views/partials/gf-field-options-enable-u.php:76 +#: resources/views/partials/gf-field-options-enable-u.php:91 +#: resources/views/partials/gf-field-options-openzaak.php:29 +#: resources/views/partials/gf-field-options-openzaak.php:61 +#: resources/views/partials/gf-field-options-openzaak.php:76 +#: resources/views/partials/gf-field-options-openzaak.php:91 +#: resources/views/partials/gf-field-options-pink-roccade.php:29 +#: resources/views/partials/gf-field-options-pink-roccade.php:61 +#: resources/views/partials/gf-field-options-pink-roccade.php:76 +#: resources/views/partials/gf-field-options-pink-roccade.php:91 +#: resources/views/partials/gf-field-options-vrij-brp.php:30 +#: resources/views/partials/gf-field-options-vrij-brp.php:55 +#: resources/views/partials/gf-field-options-vrij-brp.php:79 +#: resources/views/partials/gf-field-options-vrij-brp.php:94 +#: resources/views/partials/gf-field-options-vrij-brp.php:109 +#: resources/views/partials/gf-field-options-we-are-frank.php:55 +#: resources/views/partials/gf-field-options-we-are-frank.php:76 +#: resources/views/partials/gf-field-options-we-are-frank.php:88 +#: resources/views/partials/gf-field-options-we-are-frank.php:103 +msgid "Geboorteland" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:30 +#: resources/views/partials/gf-field-options-enable-u.php:59 +#: resources/views/partials/gf-field-options-enable-u.php:74 +#: resources/views/partials/gf-field-options-enable-u.php:89 +#: resources/views/partials/gf-field-options-openzaak.php:30 +#: resources/views/partials/gf-field-options-openzaak.php:59 +#: resources/views/partials/gf-field-options-openzaak.php:74 +#: resources/views/partials/gf-field-options-openzaak.php:89 +#: resources/views/partials/gf-field-options-pink-roccade.php:30 +#: resources/views/partials/gf-field-options-pink-roccade.php:59 +#: resources/views/partials/gf-field-options-pink-roccade.php:74 +#: resources/views/partials/gf-field-options-pink-roccade.php:89 +#: resources/views/partials/gf-field-options-vrij-brp.php:28 +#: resources/views/partials/gf-field-options-vrij-brp.php:53 +#: resources/views/partials/gf-field-options-vrij-brp.php:77 +#: resources/views/partials/gf-field-options-vrij-brp.php:92 +#: resources/views/partials/gf-field-options-vrij-brp.php:107 +#: resources/views/partials/gf-field-options-we-are-frank.php:53 +#: resources/views/partials/gf-field-options-we-are-frank.php:74 +#: resources/views/partials/gf-field-options-we-are-frank.php:86 +#: resources/views/partials/gf-field-options-we-are-frank.php:101 +msgid "Geboorteplaats" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:33 +#: resources/views/partials/gf-field-options-openzaak.php:33 +#: resources/views/partials/gf-field-options-pink-roccade.php:33 +#: resources/views/partials/gf-field-options-vrij-brp.php:33 +#: resources/views/partials/gf-field-options-we-are-frank.php:35 +msgid "Straat" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:34 +#: resources/views/partials/gf-field-options-openzaak.php:34 +#: resources/views/partials/gf-field-options-pink-roccade.php:34 +#: resources/views/partials/gf-field-options-vrij-brp.php:34 +#: resources/views/partials/gf-field-options-we-are-frank.php:36 +msgid "Huisnummer" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:35 +#: resources/views/partials/gf-field-options-openzaak.php:35 +#: resources/views/partials/gf-field-options-pink-roccade.php:35 +#: resources/views/partials/gf-field-options-vrij-brp.php:35 +#: resources/views/partials/gf-field-options-we-are-frank.php:37 +msgid "Huisletter" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:36 +#: resources/views/partials/gf-field-options-openzaak.php:36 +#: resources/views/partials/gf-field-options-pink-roccade.php:36 +#: resources/views/partials/gf-field-options-vrij-brp.php:36 +#: resources/views/partials/gf-field-options-we-are-frank.php:38 +msgid "Postcode" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:37 +#: resources/views/partials/gf-field-options-openzaak.php:37 +#: resources/views/partials/gf-field-options-pink-roccade.php:37 +#: resources/views/partials/gf-field-options-vrij-brp.php:37 +#: resources/views/partials/gf-field-options-we-are-frank.php:39 +msgid "Woonplaats" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:38 +#: resources/views/partials/gf-field-options-openzaak.php:38 +#: resources/views/partials/gf-field-options-pink-roccade.php:38 +#: resources/views/partials/gf-field-options-vrij-brp.php:38 +msgid "Adres" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:39 +#: resources/views/partials/gf-field-options-openzaak.php:39 +#: resources/views/partials/gf-field-options-pink-roccade.php:39 +#: resources/views/partials/gf-field-options-vrij-brp.php:39 +msgid "Postcode + plaats" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:40 +#: resources/views/partials/gf-field-options-openzaak.php:40 +#: resources/views/partials/gf-field-options-pink-roccade.php:40 +#: resources/views/partials/gf-field-options-vrij-brp.php:40 +#: resources/views/partials/gf-field-options-we-are-frank.php:40 +msgid "Gemeente" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:41 +#: resources/views/partials/gf-field-options-openzaak.php:41 +#: resources/views/partials/gf-field-options-pink-roccade.php:41 +#: resources/views/partials/gf-field-options-vrij-brp.php:41 +#: resources/views/partials/gf-field-options-we-are-frank.php:41 +msgid "Gemeentecode" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:44 +#: resources/views/partials/gf-field-options-openzaak.php:44 +#: resources/views/partials/gf-field-options-pink-roccade.php:44 +#: resources/views/partials/gf-field-options-vrij-brp.php:56 +#: resources/views/partials/gf-field-options-we-are-frank.php:56 +msgid "Soort verbintenis" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:56 +#: resources/views/partials/gf-field-options-enable-u.php:71 +#: resources/views/partials/gf-field-options-enable-u.php:86 +#: resources/views/partials/gf-field-options-openzaak.php:56 +#: resources/views/partials/gf-field-options-openzaak.php:71 +#: resources/views/partials/gf-field-options-openzaak.php:86 +#: resources/views/partials/gf-field-options-pink-roccade.php:56 +#: resources/views/partials/gf-field-options-pink-roccade.php:71 +#: resources/views/partials/gf-field-options-pink-roccade.php:86 +#: resources/views/partials/gf-field-options-vrij-brp.php:25 +#: resources/views/partials/gf-field-options-vrij-brp.php:50 +#: resources/views/partials/gf-field-options-vrij-brp.php:74 +#: resources/views/partials/gf-field-options-vrij-brp.php:89 +#: resources/views/partials/gf-field-options-vrij-brp.php:104 +#: resources/views/partials/gf-field-options-we-are-frank.php:50 +#: resources/views/partials/gf-field-options-we-are-frank.php:98 +msgid "Geboortedag" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:57 +#: resources/views/partials/gf-field-options-enable-u.php:72 +#: resources/views/partials/gf-field-options-enable-u.php:87 +#: resources/views/partials/gf-field-options-openzaak.php:57 +#: resources/views/partials/gf-field-options-openzaak.php:72 +#: resources/views/partials/gf-field-options-openzaak.php:87 +#: resources/views/partials/gf-field-options-pink-roccade.php:57 +#: resources/views/partials/gf-field-options-pink-roccade.php:72 +#: resources/views/partials/gf-field-options-pink-roccade.php:87 +#: resources/views/partials/gf-field-options-vrij-brp.php:26 +#: resources/views/partials/gf-field-options-vrij-brp.php:51 +#: resources/views/partials/gf-field-options-vrij-brp.php:75 +#: resources/views/partials/gf-field-options-vrij-brp.php:90 +#: resources/views/partials/gf-field-options-vrij-brp.php:105 +#: resources/views/partials/gf-field-options-we-are-frank.php:51 +#: resources/views/partials/gf-field-options-we-are-frank.php:99 +msgid "Geboortemaand" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:58 +#: resources/views/partials/gf-field-options-enable-u.php:73 +#: resources/views/partials/gf-field-options-enable-u.php:88 +#: resources/views/partials/gf-field-options-openzaak.php:58 +#: resources/views/partials/gf-field-options-openzaak.php:73 +#: resources/views/partials/gf-field-options-openzaak.php:88 +#: resources/views/partials/gf-field-options-pink-roccade.php:58 +#: resources/views/partials/gf-field-options-pink-roccade.php:73 +#: resources/views/partials/gf-field-options-pink-roccade.php:88 +#: resources/views/partials/gf-field-options-vrij-brp.php:27 +#: resources/views/partials/gf-field-options-vrij-brp.php:52 +#: resources/views/partials/gf-field-options-vrij-brp.php:76 +#: resources/views/partials/gf-field-options-vrij-brp.php:91 +#: resources/views/partials/gf-field-options-vrij-brp.php:106 +#: resources/views/partials/gf-field-options-we-are-frank.php:30 +#: resources/views/partials/gf-field-options-we-are-frank.php:52 +#: resources/views/partials/gf-field-options-we-are-frank.php:100 +msgid "Geboorteplaats code" +msgstr "" + +#: resources/views/partials/gf-field-options-enable-u.php:60 +#: resources/views/partials/gf-field-options-enable-u.php:75 +#: resources/views/partials/gf-field-options-enable-u.php:90 +#: resources/views/partials/gf-field-options-openzaak.php:60 +#: resources/views/partials/gf-field-options-openzaak.php:75 +#: resources/views/partials/gf-field-options-openzaak.php:90 +#: resources/views/partials/gf-field-options-pink-roccade.php:60 +#: resources/views/partials/gf-field-options-pink-roccade.php:75 +#: resources/views/partials/gf-field-options-pink-roccade.php:90 +#: resources/views/partials/gf-field-options-vrij-brp.php:29 +#: resources/views/partials/gf-field-options-vrij-brp.php:54 +#: resources/views/partials/gf-field-options-vrij-brp.php:78 +#: resources/views/partials/gf-field-options-vrij-brp.php:93 +#: resources/views/partials/gf-field-options-vrij-brp.php:108 +#: resources/views/partials/gf-field-options-we-are-frank.php:32 +#: resources/views/partials/gf-field-options-we-are-frank.php:54 +#: resources/views/partials/gf-field-options-we-are-frank.php:75 +#: resources/views/partials/gf-field-options-we-are-frank.php:87 +#: resources/views/partials/gf-field-options-we-are-frank.php:102 +msgid "Geboorteland code" +msgstr "" + +#: resources/views/partials/gf-field-options-vrij-brp.php:57 +#: resources/views/partials/gf-field-options-we-are-frank.php:57 +msgid "Verbintenis datum" +msgstr "" + +#: resources/views/partials/gf-field-options-vrij-brp.php:58 +#: resources/views/partials/gf-field-options-we-are-frank.php:58 +msgid "Verbintenis dag" +msgstr "" + +#: resources/views/partials/gf-field-options-vrij-brp.php:59 +#: resources/views/partials/gf-field-options-we-are-frank.php:59 +msgid "Verbintenis maand" +msgstr "" + +#: resources/views/partials/gf-field-options-vrij-brp.php:60 +#: resources/views/partials/gf-field-options-we-are-frank.php:60 +msgid "Verbintenis jaar" +msgstr "" + +#: resources/views/partials/gf-field-options-vrij-brp.php:61 +#: resources/views/partials/gf-field-options-we-are-frank.php:61 +msgid "Verbintenis land code" +msgstr "" + +#: resources/views/partials/gf-field-options-vrij-brp.php:62 +#: resources/views/partials/gf-field-options-we-are-frank.php:62 +msgid "Verbintenis land" +msgstr "" + +#: resources/views/partials/gf-field-options-vrij-brp.php:63 +#: resources/views/partials/gf-field-options-we-are-frank.php:63 +msgid "Verbintenis plaats code" +msgstr "" + +#: resources/views/partials/gf-field-options-vrij-brp.php:64 +#: resources/views/partials/gf-field-options-we-are-frank.php:64 +msgid "Verbintenis plaats" +msgstr "" + +#: resources/views/partials/gf-field-options-we-are-frank.php:15 +msgid "Aanduiding naamgebruik" +msgstr "" + +#: resources/views/partials/gf-field-options-we-are-frank.php:16 +msgid "Adellijke Titel" +msgstr "" + +#: resources/views/partials/gf-field-options-we-are-frank.php:17 +msgid "Volledige naam" +msgstr "" + +#: resources/views/partials/gf-field-options-we-are-frank.php:20 +msgid "Geslacht code" +msgstr "" + +#: resources/views/partials/gf-field-options-we-are-frank.php:21 +msgid "Geslacht omschrijving" +msgstr "" + +#: resources/views/partials/gf-field-options-we-are-frank.php:24 +msgid "Nationaliteit omschrijving" +msgstr "" + +#: resources/views/partials/gf-field-options-we-are-frank.php:25 +msgid "Nationaliteit code" +msgstr "" + +#: resources/views/partials/gf-field-options-we-are-frank.php:29 +msgid "Geboorteplaats omschrijving" +msgstr "" + +#: resources/views/partials/gf-field-options-we-are-frank.php:31 +msgid "Geboorteland omschrijving" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:26 +msgid "OWC leeftijdscheck" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:31 +msgid "Op basis van het BSN-nummer, verkregen wanneer een burger inlogt met DigiD, wordt de BRP bevraagd. De leeftijd van de burger wordt berekend en op basis daarvan wordt een melding weergegeven die aangeeft of de burger de juiste leeftijd heeft." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:73 +msgid "Het ophalen van uw geboortedatum is mislukt, probeer het later nog eens." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:88 +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:87 +msgid "Geslaagd" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:88 +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:87 +msgid "Mislukt" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:103 +msgid "Log in met uw DigiD, zonder BSN-nummer kan de leeftijdscheck niet uitgevoerd worden." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:106 +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:104 +msgid "Dit veld is onjuist geconfigueerd, contacteer de beheerder van deze website." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:264 +msgid "Dit is een voorbeeldweergave van het veld 'OWC leeftijdscheck'. Stel de minimale en/of maximale leeftijd en de gewenste validatie berichten in via de instellingen van dit veld onder de kop 'OWC leeftijdscheck'." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/AgeCheckField.php:265 +msgid "Vergeet niet om dit veld automatisch te laten invullen met de geboortedatum vanuit de BRP." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:23 +msgid "OWC Gemeentecheck" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:28 +msgid "Op basis van de gemeentecode uit de BRP, verkregen wanneer een burger inlogt met DigiD, wordt er gekeken of de burger in de juiste gemeente woont. De gemeentecode waarop gecontroleerd wordt is instelbaar." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:70 +msgid "Het ophalen van de gemeentecode van uw gemeente is mislukt, probeer het later nog eens." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:101 +msgid "Log in met uw DigiD, zonder BSN-nummer kan de gemeentecheck niet uitgevoerd worden." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:233 +msgid "U woont niet in de juiste gemeente om dit formulier te mogen invullen." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:244 +msgid "U woont in de juiste gemeente om dit formulier te mogen invullen." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:254 +msgid "Dit is een voorbeeldweergave van het veld 'OWC Gemeentecheck'. Stel de gemeentecode in waarop gecontroleerd dient te worden in via de instellingen van dit veld onder de kop 'OWC Gemeentecheck'." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/Fields/MunicipalityCheckField.php:255 +msgid "Vergeet niet om dit veld automatisch te laten invullen met de gemeentecode vanuit de BRP." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:82 +msgid "Algemeen" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:85 +msgid "OIN nummer" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:92 +msgid "Basis URL" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:99 +msgid "Leverancier" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:112 +msgid "Gebruik API authenticatie" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:113 +msgid "Deze authenticatie zal gebruikt worden naast de gebruikelijke authenticatie middels certificaten." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:122 +msgid "API sleutel" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:124 +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:155 +msgid "Vul alleen in als de API van de leverancier dit gebruikt." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:127 +msgid "Sleutel" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:131 +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:162 +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:170 +msgid "Vul een waarde in" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:134 +msgid "Header naam" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:139 +msgid "Is vereist als header in HTTP verzoeken." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:153 +msgid "API OAuth 2.0" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:158 +msgid "Gebruikersnaam" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:165 +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:238 +msgid "Wachtwoord" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:184 +msgid "Gebruikersmodel" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:187 +msgid "Activeer gebruikersmodel" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:188 +msgid "Het Gebruikersmodel (UserModel) bevat gegevens van de ingelogde burger die beschikbaar worden gesteld voor gebruik in templates en weergaven. Meer informatie is te vinden in de README van deze plugin." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:200 +msgid "Berichtenverkeer logboek" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:204 +msgid "Logging inschakelen" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:208 +msgid "Schakel deze optie in om het loggen van foutmeldingen te activeren. Dit kan nuttig zijn voor het opsporen en oplossen van problemen binnen de plug-in." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:213 +msgid "Certificaten" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:216 +msgid "Certificaten hoofd locatie" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:224 +msgid "Publieke locatie certificaten" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:231 +msgid "PrivĂ© locatie certificaten" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:243 +msgid "Dit veld mag leeg gelaten worden als er geen wachtwoord vereist is voor het maken van de verzoeken naar de \"Haalcentraal\" API." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsAddon.php:257 +msgid "Geen certificaat geselecteerd" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:12 +msgid "OWC Prefill" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:23 +msgid "Breid de resultaten uit met andere entiteiten. Kommagescheiden waardes in vullen. Bijvoorbeeld: 'ouders,partners,kinderen'" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:28 +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:30 +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:34 +msgid "Selecteer een leverancier" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:28 +msgid "Kies een leverancier. Let op dat je de inloggegevens ook moet configureren in de algemene instellingen van Gravity Forms." +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:39 +msgid "OpenZaak" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:44 +msgid "EnableU" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:49 +msgid "PinkRoccade" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:54 +msgid "VrijBRP" +msgstr "" + +#: src/PrefillGravityForms/GravityForms/GravityFormsFormSettings.php:59 +msgid "WeAreFrank!" +msgstr "" + +#: src/PrefillGravityForms/Providers/GravityFormsServiceProvider.php:90 +msgid "BRP Prefill velden" +msgstr "" + +#: resources/js/blocks/personal-data-table/block.json +msgctxt "block title" +msgid "Profielpagina" +msgstr "" + +#: resources/js/blocks/personal-data-table/block.json +msgctxt "block description" +msgid "Maak een profielpagina met persoonsgegevens van de ingelogde gebruiker." +msgstr "" + +#: resources/js/blocks/personal-data-table/personal-data-row/block.json +msgctxt "block title" +msgid "Persoonsgegevens" +msgstr "" + +#: resources/js/blocks/personal-data-table/personal-data-row/block.json +msgctxt "block description" +msgid "Toon persoonsgegevens van de ingelogde gebruiker." +msgstr "" diff --git a/prefill-gravity-forms.php b/prefill-gravity-forms.php index 054fa97..0fd4a9d 100644 --- a/prefill-gravity-forms.php +++ b/prefill-gravity-forms.php @@ -11,6 +11,7 @@ * License URI: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * Text Domain: prefill-gravity-forms * Domain Path: /languages + * Requires Plugins: gravityforms */ /** @@ -24,12 +25,21 @@ define('PG_DIR', basename(__DIR__)); define('PG_ROOT_PATH', __DIR__); define('PG_PLUGIN_SLUG', 'prefill-gravity-forms'); +define('PG_LOGGER_DEFAULT_MAX_FILES', 7); /** - * Manual loaded file: the autoloader. + * Not all the members of the OpenWebconcept are using composer in the root of their project. + * Therefore they are required to run a composer install inside this plugin directory. + * In this case the composer autoload file needs to be required. */ -require_once __DIR__ . '/autoloader.php'; -$autoloader = new OWC\PrefillGravityForms\Autoloader(); +$composerAutoload = __DIR__ . '/vendor/autoload.php'; + +if (file_exists($composerAutoload)) { + require_once $composerAutoload; +} else { + require_once __DIR__ . '/autoloader.php'; + $autoloader = new OWC\PrefillGravityForms\Autoloader(); +} /** * Begin execution of the plugin diff --git a/resources/js/blocks/personal-data-table/personal-data-row/render.php b/resources/js/blocks/personal-data-table/personal-data-row/render.php index 8795abd..fa1eaaa 100644 --- a/resources/js/blocks/personal-data-table/personal-data-row/render.php +++ b/resources/js/blocks/personal-data-table/personal-data-row/render.php @@ -9,7 +9,7 @@ -%s", $attributes['htmlElement'] ?? 'p', diff --git a/src/PrefillGravityForms/Controllers/BaseController.php b/src/PrefillGravityForms/Controllers/BaseController.php index 5c2b7e0..dfd12e3 100644 --- a/src/PrefillGravityForms/Controllers/BaseController.php +++ b/src/PrefillGravityForms/Controllers/BaseController.php @@ -7,17 +7,17 @@ use DateTime; use Exception; use GF_Field; -use function OWC\PrefillGravityForms\Foundation\Helpers\resolve_teams; use function OWC\PrefillGravityForms\Foundation\Helpers\view; -use OWC\PrefillGravityForms\Foundation\TeamsLogger; use OWC\PrefillGravityForms\GravityForms\GravityFormsSettings; use OWC\PrefillGravityForms\Services\CacheService; +use OWC\PrefillGravityForms\Traits\Logger; use OWC\PrefillGravityForms\Traits\SessionTrait; use TypeError; use WP_Screen; abstract class BaseController { + use Logger; use SessionTrait; protected const CUSTOM_FIELDS_TYPES = [ @@ -26,13 +26,11 @@ abstract class BaseController ]; protected GravityFormsSettings $settings; - protected TeamsLogger $teams; protected array $prefilledChildrenMappingOptions = []; public function __construct() { $this->settings = GravityFormsSettings::make(); - $this->teams = resolve_teams(); } abstract public function handle(array $form): array; @@ -55,14 +53,6 @@ public function get(): array abstract protected function makeRequest(): array; - protected function logError(string $message, $status): void - { - $this->teams->addRecord('error', 'BRP Prefill GravityForms', [ - 'message' => $message, - 'status' => $status, - ]); - } - protected function preFillFields(array $form, array $response): array { foreach ($form['fields'] as $field) { @@ -309,7 +299,7 @@ protected function handleCurl(array $args, string $transientKey): array return $cachedResponse; } } catch (Exception $e) { - $this->logError('Failed to get transient: ' . $e->getMessage(), $e->getCode()); + $this->logException($e); } $curl = curl_init(); @@ -399,7 +389,7 @@ protected function handleTransient(array $response, string $transientKey): void try { CacheService::setTransient($transientKey, $response); } catch (Exception $e) { - $this->logError('Failed to set transient: ' . $e->getMessage(), $e->getCode()); + $this->logException($e); } } diff --git a/src/PrefillGravityForms/Controllers/EnableUController.php b/src/PrefillGravityForms/Controllers/EnableUController.php index 6c84d9d..6a47797 100644 --- a/src/PrefillGravityForms/Controllers/EnableUController.php +++ b/src/PrefillGravityForms/Controllers/EnableUController.php @@ -4,6 +4,7 @@ namespace OWC\PrefillGravityForms\Controllers; +use Exception; use OWC\PrefillGravityForms\Services\CacheService; class EnableUController extends BaseController @@ -60,7 +61,7 @@ protected function fetchApiResponse(string $bsn, string $doelBinding = '', strin $message = sprintf('%s: %s', $message, $apiResponse['message']); } - $this->logError($message, $apiResponse['status'] ?? 500); + $this->logException(new Exception($message, (int) ($response['status'] ?? 500))); return []; } diff --git a/src/PrefillGravityForms/Controllers/PinkRoccadeController.php b/src/PrefillGravityForms/Controllers/PinkRoccadeController.php index e56c0c6..91f6307 100644 --- a/src/PrefillGravityForms/Controllers/PinkRoccadeController.php +++ b/src/PrefillGravityForms/Controllers/PinkRoccadeController.php @@ -4,6 +4,7 @@ namespace OWC\PrefillGravityForms\Controllers; +use Exception; use OWC\PrefillGravityForms\Services\CacheService; class PinkRoccadeController extends BaseController @@ -60,7 +61,7 @@ protected function fetchApiResponse(string $bsn, string $doelBinding = '', strin $message = sprintf('%s: %s', $message, $apiResponse['message']); } - $this->logError($message, $apiResponse['status'] ?? 500); + $this->logException(new Exception($message, (int) ($response['status'] ?? 500))); return []; } diff --git a/src/PrefillGravityForms/Controllers/VrijBRPController.php b/src/PrefillGravityForms/Controllers/VrijBRPController.php index 770cbbe..f57dcf6 100644 --- a/src/PrefillGravityForms/Controllers/VrijBRPController.php +++ b/src/PrefillGravityForms/Controllers/VrijBRPController.php @@ -4,6 +4,7 @@ namespace OWC\PrefillGravityForms\Controllers; +use Exception; use OWC\PrefillGravityForms\Services\CacheService; class VrijBRPController extends BaseController @@ -60,7 +61,7 @@ protected function fetchApiResponse(string $bsn, string $doelBinding = '', strin $message = sprintf('%s: %s', $message, $apiResponse['message']); } - $this->logError($message, $apiResponse['status'] ?? 500); + $this->logException(new Exception($message, (int) ($response['status'] ?? 500))); return []; } diff --git a/src/PrefillGravityForms/Controllers/WeAreFrankController.php b/src/PrefillGravityForms/Controllers/WeAreFrankController.php index c9ba2ee..d88951d 100644 --- a/src/PrefillGravityForms/Controllers/WeAreFrankController.php +++ b/src/PrefillGravityForms/Controllers/WeAreFrankController.php @@ -133,7 +133,7 @@ protected function fetchPersonData(array $preparedData, string $bsn): array $message = sprintf('%s: %s', $message, $apiResponse['message']); } - $this->logError($message, $apiResponse['status'] ?? 500); + $this->logException(new Exception($message, (int) ($response['status'] ?? 500))); return []; } diff --git a/src/PrefillGravityForms/Foundation/Cryptor.php b/src/PrefillGravityForms/Foundation/Cryptor.php index 3c30955..9ecd788 100644 --- a/src/PrefillGravityForms/Foundation/Cryptor.php +++ b/src/PrefillGravityForms/Foundation/Cryptor.php @@ -2,6 +2,8 @@ namespace OWC\PrefillGravityForms\Foundation; +use Exception; + class Cryptor { protected string $method = 'aes-128-ctr'; // default cipher method if none supplied @@ -18,7 +20,7 @@ public function __construct(bool $method = false) } if ($method) { if (! in_array(strtolower($method), openssl_get_cipher_methods())) { - throw new \Exception(__METHOD__ . ": unrecognised cipher method: {$method}"); + throw new Exception(__METHOD__ . ": unrecognised cipher method: {$method}"); } $this->method = $method; } diff --git a/src/PrefillGravityForms/Foundation/DependencyChecker.php b/src/PrefillGravityForms/Foundation/DependencyChecker.php deleted file mode 100644 index fb30351..0000000 --- a/src/PrefillGravityForms/Foundation/DependencyChecker.php +++ /dev/null @@ -1,132 +0,0 @@ -dependencies = $dependencies; - } - - /** - * Determines if the dependencies are not met. - */ - public function failed(): bool - { - foreach ($this->dependencies as $dependency) { - switch ($dependency['type']) { - case 'class': - $this->checkClass($dependency); - - break; - case 'plugin': - $this->checkPlugin($dependency); - - break; - } - } - - return 0 < count($this->failed); - } - - /** - * Notifies the administrator which plugins need to be enabled, - * or which plugins have the wrong version. - */ - public function notify(): void - { - add_action('admin_notices', function () { - $list = '

' . __( - 'The following plugins are required to use the Yard | Prefill GravityForms:', - 'prefill-gravity-forms' - ) . '

    '; - - foreach ($this->failed as $dependency) { - $info = isset($dependency['message']) ? ' (' . $dependency['message'] . ')' : ''; - $list .= sprintf('
  1. %s%s
  2. ', $dependency['label'], $info); - } - - $list .= '
'; - - printf('

%s

', $list); - }); - } - - /** - * Marks a dependency as failed. - */ - private function markFailed(array $dependency, string $defaultMessage): void - { - $this->failed[] = array_merge([ - 'message' => $dependency['message'] ?? $defaultMessage, - ], $dependency); - } - - /** - * Checks if required class exists. - */ - private function checkClass(array $dependency): void - { - if (! class_exists($dependency['name'])) { - $this->markFailed($dependency, __('Class does not exist', 'prefill-gravity-forms')); - - return; - } - } - - /** - * Check if a plugin is enabled and has the correct version. - */ - private function checkPlugin(array $dependency): void - { - if (! function_exists('is_plugin_active')) { - include_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - if (! is_plugin_active($dependency['file'])) { - $this->markFailed($dependency, __('Inactive', 'prefill-gravity-forms')); - - return; - } - - // If there is a version lock set on the dependency... - if (isset($dependency['version'])) { - if (! $this->checkVersion($dependency)) { - $this->markFailed($dependency, __('Minimal version:', 'prefill-gravity-forms') . ' ' . $dependency['version'] . ''); - } - } - } - - /** - * Checks the installed version of the plugin. - */ - private function checkVersion(array $dependency): bool - { - $file = file_get_contents(WP_PLUGIN_DIR . '/' . $dependency['file']); - - preg_match('/^(?: ?\* ?Version: ?)(.*)$/m', $file, $matches); - $version = isset($matches[1]) ? str_replace(' ', '', $matches[1]) : '0.0.0'; - - return version_compare($version, $dependency['version'], '>='); - } -} diff --git a/src/PrefillGravityForms/Foundation/Helpers.php b/src/PrefillGravityForms/Foundation/Helpers.php index cbc309a..75ee50e 100644 --- a/src/PrefillGravityForms/Foundation/Helpers.php +++ b/src/PrefillGravityForms/Foundation/Helpers.php @@ -4,7 +4,6 @@ use Exception; use OWC\PrefillGravityForms\Foundation\Plugin; -use OWC\PrefillGravityForms\Foundation\TeamsLogger; function app(): Plugin { @@ -93,25 +92,3 @@ function get_supplier(array $form, bool $getKey = false): string return $allowed[$supplier] ?? ''; } - -/** - * Use teams definition from Yard | GravityForms DigiD plugin. - */ -function resolve_teams(): TeamsLogger -{ - try { - if (! function_exists('Yard\DigiD\Foundation\Helpers\resolve')) { - throw new Exception(); - } - - $logger = \Yard\DigiD\Foundation\Helpers\resolve('teams'); - - if (! $logger instanceof \Psr\Log\LoggerInterface) { - throw new Exception(); - } - - return TeamsLogger::make($logger); - } catch (Exception $e) { - return TeamsLogger::make(new \Psr\Log\NullLogger()); - } -} diff --git a/src/PrefillGravityForms/Foundation/Plugin.php b/src/PrefillGravityForms/Foundation/Plugin.php index 61fc686..b1ae1f1 100644 --- a/src/PrefillGravityForms/Foundation/Plugin.php +++ b/src/PrefillGravityForms/Foundation/Plugin.php @@ -1,7 +1,11 @@ addDefinitions([ 'app' => $this, - 'config' => function () { - return new Config($this->rootPath . '/config'); + 'config' => create(Config::class)->constructor($this->rootPath . '/config'), + 'logger' => function () { + $logger = new \Monolog\Logger('pg_log'); + $maxFiles = apply_filters('pg::logger/rotating_filer_handler_max_files', PG_LOGGER_DEFAULT_MAX_FILES); + + $handler = (new \Monolog\Handler\RotatingFileHandler( + filename: sprintf('%s/pg-log.json', dirname(ABSPATH)), + maxFiles: is_int($maxFiles) && 0 < $maxFiles ? $maxFiles : PG_LOGGER_DEFAULT_MAX_FILES, + level: \Monolog\Level::Debug + ))->setFormatter(new \Monolog\Formatter\JsonFormatter()); + + $logger->pushHandler($handler); + $logger->pushProcessor(new \Monolog\Processor\IntrospectionProcessor()); + + return $logger; }, ]); $this->container = $builder->build(); @@ -85,15 +102,6 @@ public function boot(): bool { $this->config = resolve('config'); - $dependencyChecker = new DependencyChecker($this->config->get('core.dependencies')); - - if ($dependencyChecker->failed()) { - $dependencyChecker->notify(); - deactivate_plugins(plugin_basename($this->rootPath . '/' . $this->getName() . '.php')); - - return false; - } - $this->loadTextDomain(); // Set up service providers @@ -108,11 +116,10 @@ private function loadTextDomain(): void load_plugin_textdomain($this->getName(), false, $this->getName() . '/languages/'); } - /** * Call method on service providers. * - * @throws \Exception + * @throws Exception */ public function callServiceProviders(string $method, string $key = ''): void { @@ -127,7 +134,7 @@ public function callServiceProviders(string $method, string $key = ''): void $service = new $service($this); if (! $service instanceof ServiceProvider) { - throw new \Exception('Provider must be an instance of ServiceProvider.'); + throw new Exception('Provider must be an instance of ServiceProvider.'); } if (method_exists($service, $method)) { diff --git a/src/PrefillGravityForms/Foundation/TeamsLogger.php b/src/PrefillGravityForms/Foundation/TeamsLogger.php deleted file mode 100644 index 702a10c..0000000 --- a/src/PrefillGravityForms/Foundation/TeamsLogger.php +++ /dev/null @@ -1,43 +0,0 @@ -teams = $teams; - $this->name = 'Yard | BRP Prefill GravityForms'; - } - - /** - * Static constructor. - */ - public static function make(LoggerInterface $teams): self - { - return new static($teams); - } - - /** - * Add a log record and send to Teams. - */ - public function addRecord(string $method = 'info', string $title, array $context): void - { - if (! $this->isValid($method)) { - return; - } - - $this->teams->withName($this->name)->$method($title, $context); - } - - protected function isValid(string $method): bool - { - return method_exists('\Monolog\Logger', $method); - } -} diff --git a/src/PrefillGravityForms/GravityForms/GravityFormsAddon.php b/src/PrefillGravityForms/GravityForms/GravityFormsAddon.php index 16e821b..50b86f2 100644 --- a/src/PrefillGravityForms/GravityForms/GravityFormsAddon.php +++ b/src/PrefillGravityForms/GravityForms/GravityFormsAddon.php @@ -6,6 +6,7 @@ use GFAddOn; +use function OWC\PrefillGravityForms\Foundation\Helpers\config; use function OWC\PrefillGravityForms\Foundation\Helpers\storage_path; class GravityFormsAddon extends GFAddOn @@ -81,7 +82,7 @@ public function plugin_settings_fields(): array 'title' => __('Algemeen', 'prefill-gravity-forms'), 'fields' => [ [ - 'label' => __('OIN number', 'prefill-gravity-forms'), + 'label' => __('OIN nummer', 'prefill-gravity-forms'), 'type' => 'text', 'class' => 'medium', 'name' => "{$prefix}oin-number", @@ -94,6 +95,19 @@ public function plugin_settings_fields(): array 'name' => "{$prefix}base-url", 'required' => true, ], + [ + 'label' => __('Leverancier', 'prefill-gravity-forms'), + 'type' => 'select', + 'class' => 'medium', + 'name' => "{$prefix}supplier", + 'required' => true, + 'choices' => array_merge([['label' => 'Selecteer een leverancier', 'value' => '']], array_map(function ($supplier) { + return [ + 'label' => $supplier, + 'value' => $supplier, + ]; + }, array_values(config('suppliers', [])))), + ], [ 'label' => __('Gebruik API authenticatie', 'prefill-gravity-forms'), 'description' => __('Deze authenticatie zal gebruikt worden naast de gebruikelijke authenticatie middels certificaten.', 'prefill-gravity-forms'), @@ -126,8 +140,13 @@ public function plugin_settings_fields(): array ], ], 'dependency' => [ - 'field' => "{$prefix}api-use-authentication", - 'values' => [true], + 'live' => true, + 'fields' => [ + [ + 'field' => "{$prefix}api-use-authentication", + 'values' => [true, '1'], + ] + ] ], ], [ @@ -152,8 +171,42 @@ public function plugin_settings_fields(): array ], ], 'dependency' => [ - 'field' => "{$prefix}api-use-authentication", - 'values' => [true], + 'live' => true, + 'fields' => [ + [ + 'field' => "{$prefix}api-use-authentication", + 'values' => [true, '1'], + ] + ] + ], + ], + [ + 'title' => esc_html__('Gebruikersmodel', 'prefill-gravity-forms'), + 'fields' => [ + [ + 'label' => __('Activeer gebruikersmodel', 'prefill-gravity-forms'), + 'description' => __( + 'Het Gebruikersmodel (UserModel) bevat gegevens van de ingelogde burger die beschikbaar worden gesteld voor gebruik in templates en weergaven. Meer informatie is te vinden in de README van deze plugin.', + 'prefill-gravity-forms' + ), + 'type' => 'toggle', + 'name' => "{$prefix}enable-user-model", + 'required' => false, + 'default_value' => false, + ], + ], + ], + [ + 'title' => esc_html__('Berichtenverkeer logboek', 'prefill-gravity-forms'), + 'fields' => [ + [ + 'name' => "{$prefix}logging-enabled", + 'label' => __('Logging inschakelen', 'prefill-gravity-forms'), + 'type' => 'toggle', + 'required' => false, + 'default_value' => false, + 'description' => __('Schakel deze optie in om het loggen van foutmeldingen te activeren. Dit kan nuttig zijn voor het opsporen en oplossen van problemen binnen de plug-in.', 'prefill-gravity-forms'), + ], ], ], [ diff --git a/src/PrefillGravityForms/GravityForms/GravityFormsSettings.php b/src/PrefillGravityForms/GravityForms/GravityFormsSettings.php index 4be76ff..f6d4627 100644 --- a/src/PrefillGravityForms/GravityForms/GravityFormsSettings.php +++ b/src/PrefillGravityForms/GravityForms/GravityFormsSettings.php @@ -38,6 +38,18 @@ public function getBaseURL(): string return $this->options[$this->prefix . 'base-url'] ?? ''; } + public function getSupplier(): string + { + return $this->options[$this->prefix . 'supplier'] ?? ''; + } + + public function isUserModelEnabled(): bool + { + $value = $this->options[$this->prefix . 'enable-user-model'] ?? '0'; + + return boolval($value); + } + public function getNumberOIN(): string { return $this->options[$this->prefix . 'oin-number'] ?? ''; @@ -70,6 +82,13 @@ public function getAPITokenPassword(): string return $this->options[$this->prefix . 'api-basic-token-password'] ?? ''; } + public function loggingEnabled(): bool + { + $value = $this->options[$this->prefix . 'logging-enabled'] ?? '0'; + + return boolval($value); + } + public function getPublicCertificate(): string { return $this->options[$this->prefix . 'public-certificate'] ?? ''; diff --git a/src/PrefillGravityForms/Models/UserModel.php b/src/PrefillGravityForms/Models/UserModel.php new file mode 100644 index 0000000..dcfca3b --- /dev/null +++ b/src/PrefillGravityForms/Models/UserModel.php @@ -0,0 +1,79 @@ +supplier = GravityFormsSettings::make()->getSupplier(); + $this->controller = $this->handleController(); + $this->data = $this->controller?->get() ?? []; + } + + private function handleController(): ?BaseController + { + if (! GravityFormsSettings::make()->isUserModelEnabled()) { + return null; + } + + try { + return $this->getController($this->supplier); + } catch (Exception $e) { + $this->logException($e); + + return null; + } + } + + /** + * Use this method to determine whether the user is logged in or not before using any of the class methods. + * A DigiD login is required to retrieve user data. + */ + public function isLoggedIn(): bool + { + $bsn = (string) $this->bsn(); + + return 7 < strlen($bsn) && 10 > strlen($bsn); + } + + public function bsn(): int + { + return (int) ($this->data['burgerservicenummer'] ?? 0); + } + + public function age(): int + { + return (int) ($this->data['leeftijd'] ?? 0); + } + + public function firstNames(): string + { + return (string) ($this->data['naam']['voornamen'] ?? ''); + } + + public function lastName(): string + { + return (string) ($this->data['naam']['geslachtsnaam'] ?? ''); + } + + public function lastNamePrefix(): string + { + return (string) ($this->data['naam']['voorvoegsel'] ?? ''); + } +} diff --git a/src/PrefillGravityForms/Services/PersonalDataService.php b/src/PrefillGravityForms/Services/PersonalDataService.php index 22baea3..c1d4692 100644 --- a/src/PrefillGravityForms/Services/PersonalDataService.php +++ b/src/PrefillGravityForms/Services/PersonalDataService.php @@ -2,12 +2,15 @@ namespace OWC\PrefillGravityForms\Services; +use Exception; use OWC\PrefillGravityForms\Controllers\BaseController; use OWC\PrefillGravityForms\Traits\ControllerTrait; +use OWC\PrefillGravityForms\Traits\Logger; class PersonalDataService { use ControllerTrait; + use Logger; private string $supplier; private ?BaseController $controller; @@ -15,7 +18,18 @@ class PersonalDataService public function __construct(string $supplier) { $this->supplier = $supplier; - $this->controller = $this->getController($this->supplier); + $this->controller = $this->handleController(); + } + + private function handleController(): ?BaseController + { + try { + return $this->getController($this->supplier); + } catch (Exception $e) { + $this->logException($e); + + return null; + } } public function get(string $key): string diff --git a/src/PrefillGravityForms/Traits/ControllerTrait.php b/src/PrefillGravityForms/Traits/ControllerTrait.php index af2a815..3ae1d8f 100644 --- a/src/PrefillGravityForms/Traits/ControllerTrait.php +++ b/src/PrefillGravityForms/Traits/ControllerTrait.php @@ -1,17 +1,25 @@ getCode()); + $method = $level->toPsrLogLevel(); + } catch (Exception $e) { + $method = 'error'; + } + + /** @var Logger */ + $logger = resolve('logger'); + + if (! method_exists($logger, $method)) { + $method = 'error'; + } + + /** + * Intercept the exception for further processing, such as logging to e.g. Sentry from the project itself. + * + * @param Exception $exception The exception to intercept. + * @param string $method PSR‑3 log level name (e.g. 'error', 'debug'). + * + * @since NEXT + */ + do_action('pg::exception/intercept', $exception, $method); + + if (! GravityFormsSettings::make()->loggingEnabled()) { + return; + } + + $logger->$method($exception->getMessage(), $context); + } +} diff --git a/src/PrefillGravityForms/Traits/SessionTrait.php b/src/PrefillGravityForms/Traits/SessionTrait.php index f41eceb..1b31338 100644 --- a/src/PrefillGravityForms/Traits/SessionTrait.php +++ b/src/PrefillGravityForms/Traits/SessionTrait.php @@ -1,37 +1,54 @@ getBsn(); + if ($bsn = $this->idpDigiD()) { + return $this->validateBSN($bsn); + } + if ($bsn = $this->samlDigiD()) { return $this->validateBSN($bsn); } - try { - $session = resolve('session'); - $bsn = $session->getSegment('digid')->get('bsn') ?: $session->getSegment('eidas')->get('bsn'); - } catch (Exception $e) { - $bsn = ''; + return ''; + } + + private function idpDigiD(): string + { + if (! class_exists('\OWC\IdpUserData\DigiDSession')) { + return ''; } - $bsn = is_string($bsn) && ! empty($bsn) ? decrypt($bsn) : ''; + if (! \OWC\IdpUserData\DigiDSession::isLoggedIn() || is_null(\OWC\IdpUserData\DigiDSession::getUserData())) { + return ''; + } + + return \OWC\IdpUserData\DigiDSession::getUserData()->getBsn(); + } + + private function samlDigiD(): string + { + if (! function_exists('\\Yard\\DigiD\\Foundation\\Helpers\\resolve')) { + return ''; + } - if (empty($bsn)) { + if (! function_exists('\\Yard\\DigiD\\Foundation\\Helpers\\decrypt')) { return ''; } - return $this->validateBSN($bsn); + $bsn = \Yard\DigiD\Foundation\Helpers\resolve('session')->getSegment('digid')->get('bsn'); + + return ! empty($bsn) && is_string($bsn) ? \Yard\DigiD\Foundation\Helpers\decrypt($bsn) : ''; } private function validateBSN(string $bsn) @@ -39,9 +56,7 @@ private function validateBSN(string $bsn) $bsn = $this->supplementBSN($bsn); if (strlen($bsn) !== 9) { - resolve_teams()->addRecord('error', 'BSN', [ - 'message' => 'BSN does not meet the required length of 9.', - ]); + $this->logException(new Exception('BSN does not meet the required length of 9.', 400)); return ''; } @@ -64,6 +79,6 @@ private function supplementBSN(string $bsn): string return $bsn; } - return sprintf("%'.0" . $requiredLength . "d", $bsn); + return sprintf("%'.0" . $requiredLength . 'd', $bsn); } }