diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
new file mode 100644
index 0000000..921c11d
--- /dev/null
+++ b/.github/dependabot.yaml
@@ -0,0 +1,7 @@
+version: 2
+updates:
+ - package-ecosystem: "composer"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 223976c..7d5f141 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -22,8 +22,9 @@ jobs:
uses: php-actions/composer@v5
- name: PHPUnit Tests
- uses: php-actions/phpunit@v2
+ uses: php-actions/phpunit@v3
with:
+ version: 9.5
php_version: 8.1
- bootstrap: vendor/autoload.php
+ bootstrap: ./vendor/autoload.php
configuration: ./.github/workflows/phpunit.xml
diff --git a/.github/workflows/phpunit.xml b/.github/workflows/phpunit.xml
index 7cbfdcd..bc8631b 100644
--- a/.github/workflows/phpunit.xml
+++ b/.github/workflows/phpunit.xml
@@ -1,8 +1,13 @@
-
+
../../tests
-
\ No newline at end of file
+
diff --git a/README.md b/README.md
index 410a027..cf826c0 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,20 @@ Utilized by other applications as well:
- [Magento2 module](https://github.com/bluem-development/bluem-magento/), available for Bluem customers.
- Several third-party customer applications by Bluem customers.
+## Documentation
+
+> Read our improved documentation [**here**](https://bluem-development.github.io/bluem-docs/bluemphp.html)
+
+We have several guides available there. They include:
+- [Getting started guide](https://bluem-development.github.io/bluem-docs/tutorial-configuration.html)
+- [Tutorial on payments](https://bluem-development.github.io/bluem-docs/tutorial-payments.html)
+- [Tutorial on webhooks](https://bluem-development.github.io/bluem-docs/tutorial-webhooks.html)
+- More are coming soon!
+
+## Remaining documentation
+
+Most of this will be migrated into the documentation mentioned above. Note: You might find duplicate information below.
+
## Table of Contents
* [Requirements](#requirements)
* [Getting started:](#getting-started)
@@ -50,8 +64,14 @@ Utilized by other applications as well:
* [Appendices](#appendices)
+ [List of all supported BICs per context](#list-of-all-supported-bics-per-context)
+## 2.4 is coming soon
+A new version of the PHP library will be released in the coming 1-2 months.
+Starting this release, **PHP 8.1** is the minimum required version for this library.
+
## Requirements
-- Since our release >= 2.3, **PHP 8.0** is the minimum required version for this library. Previous releases requires **PHP 7.4**.
+- 2024: Starting at our release >= 2.4, **PHP 8.1** is the minimum required version for this library. Previous releases requires **PHP 8.0**.
+- Update April 2023: Since our release >= 2.3, **PHP 8.0** is the minimum required version for this library. Previous releases requires **PHP 7.4**.
+
- Please use the [major git releases](https://github.com/bluem-development/bluem-php/releases) for the stable versions of this plugin.
- Refer to the `composer.json` requirements for any other dependencies
@@ -232,86 +252,6 @@ The Webhook is only needed for ePayments and eMandates: online stores/portals th
Please note that the flow for the IBAN-Name check is shorter: a TransactionRequest is performed. The results return as a TransactionResponse.
This is because the end-user is not needed; the call is straight to the Bank Database, that provides in the TransactionResponse the IBAN-Name check results.
-## Preselecting a bank for Payment requests using debtorWallet
-**Note:** This is relevant for bank-based transactions and services:
-
-It is possible to preselect a Bank within your own application for Payments, based on an IssuerID (BIC/Swift code) when creating a Mandate, Payment or Identity request. This can be used if you want to user to select the given bank in your own interface and skip the bank selection within the Bluem portal interface.
-This reduces the amount of steps required by performing the selection of the bank within your own application and interface by utilizing the preselection feature from the PHP library on the request object as so:
-
-```php
-$BIC = "INGBNL2A";
-$request->selectDebtorWallet($BIC);
-```
-Parameter has to be a valid BIC code of a supported bank. An invalid BIC code will trigger an exception. **Please note that supported BICs differ per service as not every bank offers the same services!** The supported BIC codes per service can also be requested from a Bluem object, given the service context. **As appendix to this Documentation file, you can find a full list of all BICs per context.**
-
-Illustrated here is that a list of BICs per context can also be retrieved programmatically:
-
-```php
-$MandatesBICs = $bluem->retrieveBICsForContext("Mandates"); // also specific to localInstrumentCode, see notes.
-$PaymentsBICs = $bluem->retrieveBICsForContext("Payments");
-$IdentityBICs = $bluem->retrieveBICsForContext("Identity");
-```
-Input of a different context will trigger an exception. If valid, the result is an array of `Bluem\BluemPHP\BIC` objects with attributes `IssuerID` and `IssuerName`: the BIC and Bank name respectively. You can use this to populate your user interface.
-
-Please note that the BIC list will vary when a different `localInstrumentCode` is configured. The localInstrumentCode `CORE` and `B2B` are supported by different banks. Based on your configuration, the right BIC list is loaded from context automatically and used to verify the debtorWallet.
-
-This method can be used when creating iDIN and when creating iDEAL requests; you could store the selected bank (“Issuer”) on user level and use it when creating a request for your user.
-- You can inform the user WHY this is necessary and refer to the new laws and rules, in your own website/application or refer to the news/public announcements.
-- You can inform the user about the amount of trouble required: display a piece of text saying that it only takes a minute or two, and that it is stored for your convenience: that it ensures integrity, and a valid webshop experience.
-
-## Using different Payment transaction methods
-
-**Important note: ensure you have the right BrandID set up for specific payment methods. Refer to your account manager to retrieve a list of the specific BrandIDs per payment method**
-
-You can allow the PayPal and Creditcard payment methods by selecting these within the request object before sending it.
-
-To use iDeal, (default option). A BIC **can** be provided. If left empty, bank selection will occur in the Bluem portal.
-```php
-$BIC = 'INGBNL2A';
-$request = $request->setPaymentMethodToIDEAL($BIC);
-```
-
-To use PayPal, give in a PayPal account email address. The email is also not required.
-```php
-$payPalAccount = 'john.doe@gmail.com';
-$request = $request->setPaymentMethodToPayPal($payPalAccount);
-```
-
-To use Creditcards, you can set the credit card details as follows (not required)
-```php
-$request = $request->setPaymentMethodToCreditCard();
-```
-or
-```php
-$cardNumber = '1234000012340000';
-$name = 'John Doe';
-$securityCode = 123;
-$expirationDateMonth = 11;
-$expirationDateYear = 2025;
-
-$request = $request->setPaymentMethodToCreditCard(
- $cardNumber,
- $name,
- $securityCode,
- $expirationDateMonth,
- $expirationDateYear
-);
-```
-
-To use Sofort, use the following method:
-```php
-$request = $request->setPaymentMethodToSofort();
-```
-
-To use Carte Bancaire, use the following method:
-```php
-$request = $request->setPaymentMethodToCarteBancaire();
-```
-
-These methods will throw an exception if required information is missing.
-
-Once the request executes, the link to the transaction will send you to the Bluem Portal with the corresponding interface and flow.
-
## Webhooks
Webhooks exist for Payments, eMandates and Identity. They trigger during requests to the Bluem flow and send data to your application.
They are vital to ensure all processes are always completed, even if the customer/user does not reach your regular callback method(s) in your flow.
diff --git a/composer.json b/composer.json
index 1d3cdf3..d5f06a6 100644
--- a/composer.json
+++ b/composer.json
@@ -26,19 +26,18 @@
},
"autoload": {
"psr-4": {
- "Bluem\\BluemPHP\\": "src/"
+ "Bluem\\BluemPHP\\": "src/",
+ "Bluem\\BluemPHP\\Tests\\": "tests/"
}
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"phpspec/prophecy": "~1.0",
"vlucas/phpdotenv": "^5.4",
- "roave/security-advisories": "dev-latest",
"rector/rector": "^0.15.10",
"squizlabs/php_codesniffer": "^3.7",
"magento/magento-coding-standard": "^31.0",
"phpcompatibility/php-compatibility": "^9.3"
-
},
"prefer-stable" : true,
"scripts": {
diff --git a/composer.lock b/composer.lock
index 21064a1..a894af6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,31 +4,31 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "48c42aa13be174ca13f0c70933f78e00",
+ "content-hash": "1cd474d4354dafb5533494d852cad5bc",
"packages": [
{
"name": "selective/xmldsig",
- "version": "3.0.0",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/selective-php/xmldsig.git",
- "reference": "fb9cdf2ecfcf4b65931db8796c7336a43b607d73"
+ "reference": "adfa81bc744a29f808a5216bf73e0cb2bcd7af91"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/selective-php/xmldsig/zipball/fb9cdf2ecfcf4b65931db8796c7336a43b607d73",
- "reference": "fb9cdf2ecfcf4b65931db8796c7336a43b607d73",
+ "url": "https://api.github.com/repos/selective-php/xmldsig/zipball/adfa81bc744a29f808a5216bf73e0cb2bcd7af91",
+ "reference": "adfa81bc744a29f808a5216bf73e0cb2bcd7af91",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-openssl": "*",
- "php": "~8.0 || ~8.1 || ~8.2"
+ "php": "~8.1 || ~8.2"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3",
"phpstan/phpstan": "^1",
- "phpunit/phpunit": "^9 || ^10",
+ "phpunit/phpunit": "^10",
"squizlabs/php_codesniffer": "^3",
"starkbank/ecdsa": "^2.0"
},
@@ -52,25 +52,25 @@
],
"support": {
"issues": "https://github.com/selective-php/xmldsig/issues",
- "source": "https://github.com/selective-php/xmldsig/tree/3.0.0"
+ "source": "https://github.com/selective-php/xmldsig/tree/3.1.0"
},
"abandoned": "robrichards/xmlseclibs",
- "time": "2023-01-28T18:17:36+00:00"
+ "time": "2023-09-09T22:17:11+00:00"
}
],
"packages-dev": [
{
"name": "doctrine/deprecations",
- "version": "1.1.2",
+ "version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
- "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
- "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"shasum": ""
},
"require": {
@@ -102,36 +102,36 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/1.1.2"
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
},
- "time": "2023-09-27T20:04:15+00:00"
+ "time": "2024-01-30T19:34:25+00:00"
},
{
"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": {
@@ -158,7 +158,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": [
{
@@ -174,28 +174,28 @@
"type": "tidelift"
}
],
- "time": "2022-12-30T00:15:36+00:00"
+ "time": "2022-12-30T00:23:10+00:00"
},
{
"name": "graham-campbell/result-type",
- "version": "v1.1.1",
+ "version": "v1.1.2",
"source": {
"type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git",
- "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831"
+ "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831",
- "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862",
+ "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
- "phpoption/phpoption": "^1.9.1"
+ "phpoption/phpoption": "^1.9.2"
},
"require-dev": {
- "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12"
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
},
"type": "library",
"autoload": {
@@ -224,7 +224,7 @@
],
"support": {
"issues": "https://github.com/GrahamCampbell/Result-Type/issues",
- "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1"
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2"
},
"funding": [
{
@@ -236,7 +236,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-25T20:23:15+00:00"
+ "time": "2023-11-12T22:16:48+00:00"
},
{
"name": "magento/magento-coding-standard",
@@ -347,25 +347,27 @@
},
{
"name": "nikic/php-parser",
- "version": "v4.17.1",
+ "version": "v5.0.2",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
+ "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
- "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13",
+ "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13",
"shasum": ""
},
"require": {
+ "ext-ctype": "*",
+ "ext-json": "*",
"ext-tokenizer": "*",
- "php": ">=7.0"
+ "php": ">=7.4"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"bin": [
"bin/php-parse"
@@ -373,7 +375,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.9-dev"
+ "dev-master": "5.0-dev"
}
},
"autoload": {
@@ -397,26 +399,27 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2"
},
- "time": "2023-08-13T19:53:39+00:00"
+ "time": "2024-03-05T20:51:40+00:00"
},
{
"name": "phar-io/manifest",
- "version": "2.0.3",
+ "version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ "reference": "54750ef60c58e43759730615a392c31c80e23176"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
+ "reference": "54750ef60c58e43759730615a392c31c80e23176",
"shasum": ""
},
"require": {
"ext-dom": "*",
+ "ext-libxml": "*",
"ext-phar": "*",
"ext-xmlwriter": "*",
"phar-io/version": "^3.0.1",
@@ -457,9 +460,15 @@
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": {
"issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ "source": "https://github.com/phar-io/manifest/tree/2.0.4"
},
- "time": "2021-07-20T11:28:43+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-03T12:33:53+00:00"
},
{
"name": "phar-io/version",
@@ -629,28 +638,35 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.3.0",
+ "version": "5.4.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ "reference": "298d2febfe79d03fe714eb871d5538da55205b1a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/298d2febfe79d03fe714eb871d5538da55205b1a",
+ "reference": "298d2febfe79d03fe714eb871d5538da55205b1a",
"shasum": ""
},
"require": {
+ "doctrine/deprecations": "^1.1",
"ext-filter": "*",
- "php": "^7.2 || ^8.0",
+ "php": "^7.4 || ^8.0",
"phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
+ "phpdocumentor/type-resolver": "^1.7",
+ "phpstan/phpdoc-parser": "^1.7",
"webmozart/assert": "^1.9.1"
},
"require-dev": {
- "mockery/mockery": "~1.3.2",
- "psalm/phar": "^4.8"
+ "mockery/mockery": "~1.3.5",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-webmozart-assert": "^1.2",
+ "phpunit/phpunit": "^9.5",
+ "vimeo/psalm": "^5.13"
},
"type": "library",
"extra": {
@@ -674,33 +690,33 @@
},
{
"name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
+ "email": "opensource@ijaap.nl"
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.0"
},
- "time": "2021-10-19T17:43:47+00:00"
+ "time": "2024-04-09T21:13:58+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.7.3",
+ "version": "1.8.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419"
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
- "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c",
"shasum": ""
},
"require": {
"doctrine/deprecations": "^1.0",
- "php": "^7.4 || ^8.0",
+ "php": "^7.3 || ^8.0",
"phpdocumentor/reflection-common": "^2.0",
"phpstan/phpdoc-parser": "^1.13"
},
@@ -738,22 +754,22 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
},
- "time": "2023-08-12T11:01:26+00:00"
+ "time": "2024-02-23T11:10:43+00:00"
},
{
"name": "phpoption/phpoption",
- "version": "1.9.1",
+ "version": "1.9.2",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
- "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e"
+ "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e",
- "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820",
+ "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820",
"shasum": ""
},
"require": {
@@ -761,7 +777,7 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12"
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
},
"type": "library",
"extra": {
@@ -803,7 +819,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/1.9.1"
+ "source": "https://github.com/schmittjoh/php-option/tree/1.9.2"
},
"funding": [
{
@@ -815,33 +831,33 @@
"type": "tidelift"
}
],
- "time": "2023-02-25T19:38:58+00:00"
+ "time": "2023-11-12T21:59:55+00:00"
},
{
"name": "phpspec/prophecy",
- "version": "v1.17.0",
+ "version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2"
+ "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/15873c65b207b07765dbc3c95d20fdf4a320cbe2",
- "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/67a759e7d8746d501c41536ba40cd9c0a07d6a87",
+ "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.2 || ^2.0",
- "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*",
+ "php": "^7.2 || 8.0.* || 8.1.* || 8.2.* || 8.3.*",
"phpdocumentor/reflection-docblock": "^5.2",
- "sebastian/comparator": "^3.0 || ^4.0",
- "sebastian/recursion-context": "^3.0 || ^4.0"
+ "sebastian/comparator": "^3.0 || ^4.0 || ^5.0 || ^6.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0 || ^5.0 || ^6.0"
},
"require-dev": {
"phpspec/phpspec": "^6.0 || ^7.0",
"phpstan/phpstan": "^1.9",
- "phpunit/phpunit": "^8.0 || ^9.0"
+ "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0"
},
"type": "library",
"extra": {
@@ -874,6 +890,7 @@
"keywords": [
"Double",
"Dummy",
+ "dev",
"fake",
"mock",
"spy",
@@ -881,22 +898,22 @@
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/v1.17.0"
+ "source": "https://github.com/phpspec/prophecy/tree/v1.19.0"
},
- "time": "2023-02-02T15:41:36+00:00"
+ "time": "2024-02-29T11:52:51+00:00"
},
{
"name": "phpstan/phpdoc-parser",
- "version": "1.24.2",
+ "version": "1.28.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "bcad8d995980440892759db0c32acae7c8e79442"
+ "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442",
- "reference": "bcad8d995980440892759db0c32acae7c8e79442",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb",
+ "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb",
"shasum": ""
},
"require": {
@@ -928,22 +945,22 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0"
},
- "time": "2023-09-26T12:28:12+00:00"
+ "time": "2024-04-03T18:51:33+00:00"
},
{
"name": "phpstan/phpstan",
- "version": "1.10.38",
+ "version": "1.10.66",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691"
+ "reference": "94779c987e4ebd620025d9e5fdd23323903950bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5302bb402c57f00fb3c2c015bac86e0827e4b691",
- "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/94779c987e4ebd620025d9e5fdd23323903950bd",
+ "reference": "94779c987e4ebd620025d9e5fdd23323903950bd",
"shasum": ""
},
"require": {
@@ -992,27 +1009,27 @@
"type": "tidelift"
}
],
- "time": "2023-10-06T14:19:14+00:00"
+ "time": "2024-03-28T16:17:31+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.29",
+ "version": "9.2.31",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76"
+ "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76",
- "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965",
+ "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.15",
+ "nikic/php-parser": "^4.18 || ^5.0",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -1062,7 +1079,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31"
},
"funding": [
{
@@ -1070,7 +1087,7 @@
"type": "github"
}
],
- "time": "2023-09-19T04:57:46+00:00"
+ "time": "2024-03-02T06:37:42+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -1315,16 +1332,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.6.13",
+ "version": "9.6.19",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be"
+ "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be",
- "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
+ "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
"shasum": ""
},
"require": {
@@ -1398,7 +1415,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.13"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19"
},
"funding": [
{
@@ -1414,7 +1431,7 @@
"type": "tidelift"
}
],
- "time": "2023-09-19T05:39:22+00:00"
+ "time": "2024-04-05T04:35:58+00:00"
},
{
"name": "rector/rector",
@@ -1477,699 +1494,18 @@
],
"time": "2023-04-20T16:07:39+00:00"
},
- {
- "name": "roave/security-advisories",
- "version": "dev-latest",
- "source": {
- "type": "git",
- "url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "efd339340c840237fad050f3ea6fd8bbbbfc7ed6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/efd339340c840237fad050f3ea6fd8bbbbfc7ed6",
- "reference": "efd339340c840237fad050f3ea6fd8bbbbfc7ed6",
- "shasum": ""
- },
- "conflict": {
- "3f/pygmentize": "<1.2",
- "admidio/admidio": "<4.2.11",
- "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
- "aheinze/cockpit": "<2.2",
- "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5",
- "akaunting/akaunting": "<2.1.13",
- "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53",
- "alextselegidis/easyappointments": "<1.5",
- "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
- "amazing/media2click": ">=1,<1.3.3",
- "amphp/artax": "<1.0.6|>=2,<2.0.6",
- "amphp/http": "<1.0.1",
- "amphp/http-client": ">=4,<4.4",
- "anchorcms/anchor-cms": "<=0.12.7",
- "andreapollastri/cipi": "<=3.1.15",
- "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5",
- "apache-solr-for-typo3/solr": "<2.8.3",
- "apereo/phpcas": "<1.6",
- "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3",
- "appwrite/server-ce": "<=1.2.1",
- "arc/web": "<3",
- "area17/twill": "<1.2.5|>=2,<2.5.3",
- "artesaos/seotools": "<0.17.2",
- "asymmetricrypt/asymmetricrypt": "<9.9.99",
- "athlon1600/php-proxy": "<=5.1",
- "athlon1600/php-proxy-app": "<=3",
- "austintoddj/canvas": "<=3.4.2",
- "automad/automad": "<1.8",
- "awesome-support/awesome-support": "<=6.0.7",
- "aws/aws-sdk-php": ">=3,<3.2.1",
- "azuracast/azuracast": "<0.18.3",
- "backdrop/backdrop": "<1.24.2",
- "backpack/crud": "<3.4.9",
- "badaso/core": "<2.7",
- "bagisto/bagisto": "<0.1.5",
- "barrelstrength/sprout-base-email": "<1.2.7",
- "barrelstrength/sprout-forms": "<3.9",
- "barryvdh/laravel-translation-manager": "<0.6.2",
- "barzahlen/barzahlen-php": "<2.0.1",
- "baserproject/basercms": "<4.7.5",
- "bassjobsen/bootstrap-3-typeahead": ">4.0.2",
- "bigfork/silverstripe-form-capture": ">=3,<3.1.1",
- "billz/raspap-webgui": "<=2.9.2",
- "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
- "bmarshall511/wordpress_zero_spam": "<5.2.13",
- "bolt/bolt": "<3.7.2",
- "bolt/core": "<=4.2",
- "bottelet/flarepoint": "<2.2.1",
- "brightlocal/phpwhois": "<=4.2.5",
- "brotkrueml/codehighlight": "<2.7",
- "brotkrueml/schema": "<1.13.1|>=2,<2.5.1",
- "brotkrueml/typo3-matomo-integration": "<1.3.2",
- "buddypress/buddypress": "<7.2.1",
- "bugsnag/bugsnag-laravel": "<2.0.2",
- "bytefury/crater": "<6.0.2",
- "cachethq/cachet": "<2.5.1",
- "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10",
- "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10",
- "cardgate/magento2": "<2.0.33",
- "cardgate/woocommerce": "<=3.1.15",
- "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
- "cartalyst/sentry": "<=2.1.6",
- "catfan/medoo": "<1.7.5",
- "cecil/cecil": "<7.47.1",
- "centreon/centreon": "<22.10.0.0-beta1",
- "cesnet/simplesamlphp-module-proxystatistics": "<3.1",
- "chriskacerguis/codeigniter-restserver": "<=2.7.1",
- "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3",
- "cockpit-hq/cockpit": "<=2.6.3",
- "codeception/codeception": "<3.1.3|>=4,<4.1.22",
- "codeigniter/framework": "<3.1.9",
- "codeigniter4/framework": "<4.3.5",
- "codeigniter4/shield": "<1.0.0.0-beta4",
- "codiad/codiad": "<=2.8.4",
- "composer/composer": "<1.10.27|>=2,<2.2.22|>=2.3,<2.6.4",
- "concrete5/concrete5": "<=9.2.1",
- "concrete5/core": "<8.5.8|>=9,<9.1",
- "contao-components/mediaelement": ">=2.14.2,<2.21.1",
- "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4",
- "contao/core": ">=2,<3.5.39",
- "contao/core-bundle": "<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10",
- "contao/listing-bundle": ">=4,<4.4.8",
- "contao/managed-edition": "<=1.5",
- "cosenary/instagram": "<=2.3",
- "craftcms/cms": "<=4.4.14",
- "croogo/croogo": "<4",
- "cuyz/valinor": "<0.12",
- "czproject/git-php": "<4.0.3",
- "darylldoyle/safe-svg": "<1.9.10",
- "datadog/dd-trace": ">=0.30,<0.30.2",
- "datatables/datatables": "<1.10.10",
- "david-garcia/phpwhois": "<=4.3.1",
- "dbrisinajumi/d2files": "<1",
- "dcat/laravel-admin": "<=2.1.3.0-beta",
- "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3",
- "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
- "desperado/xml-bundle": "<=0.1.7",
- "directmailteam/direct-mail": "<5.2.4",
- "doctrine/annotations": ">=1,<1.2.7",
- "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
- "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
- "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4",
- "doctrine/doctrine-bundle": "<1.5.2",
- "doctrine/doctrine-module": "<=0.7.1",
- "doctrine/mongodb-odm": ">=1,<1.0.2",
- "doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
- "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
- "dolibarr/dolibarr": "<18",
- "dompdf/dompdf": "<2.0.2|==2.0.2",
- "drupal/core": "<9.4.14|>=9.5,<9.5.8|>=10,<10.0.8",
- "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
- "dweeves/magmi": "<=0.7.24",
- "ecodev/newsletter": "<=4",
- "ectouch/ectouch": "<=2.7.2",
- "elefant/cms": "<2.0.7",
- "elgg/elgg": "<3.3.24|>=4,<4.0.5",
- "encore/laravel-admin": "<=1.8.19",
- "endroid/qr-code-bundle": "<3.4.2",
- "enshrined/svg-sanitize": "<0.15",
- "erusev/parsedown": "<1.7.2",
- "ether/logs": "<3.0.4",
- "exceedone/exment": "<4.4.3|>=5,<5.0.3",
- "exceedone/laravel-admin": "<2.2.3|==3",
- "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev",
- "ezsystems/ez-support-tools": ">=2.2,<2.2.3",
- "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev",
- "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev",
- "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24",
- "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26",
- "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
- "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12",
- "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.26",
- "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
- "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev",
- "ezsystems/ezplatform-user": ">=1,<1.0.1",
- "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.30",
- "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1",
- "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
- "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15",
- "ezyang/htmlpurifier": "<4.1.1",
- "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
- "facturascripts/facturascripts": "<=2022.08",
- "feehi/cms": "<=2.1.1",
- "feehi/feehicms": "<=2.1.1",
- "fenom/fenom": "<=2.12.1",
- "filegator/filegator": "<7.8",
- "firebase/php-jwt": "<6",
- "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2",
- "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6",
- "flarum/core": "<1.8",
- "flarum/framework": "<1.8",
- "flarum/mentions": "<1.6.3",
- "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15",
- "flarum/tags": "<=0.1.0.0-beta13",
- "fluidtypo3/vhs": "<5.1.1",
- "fof/byobu": ">=0.3.0.0-beta2,<1.1.7",
- "fof/upload": "<1.2.3",
- "fooman/tcpdf": "<6.2.22",
- "forkcms/forkcms": "<5.11.1",
- "fossar/tcpdf-parser": "<6.2.22",
- "francoisjacquet/rosariosis": "<11",
- "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2",
- "friendsofsymfony/oauth2-php": "<1.3",
- "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
- "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
- "friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
- "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6",
- "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.1",
- "froxlor/froxlor": "<2.1",
- "fuel/core": "<1.8.1",
- "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3",
- "gaoming13/wechat-php-sdk": "<=1.10.2",
- "genix/cms": "<=1.1.11",
- "getgrav/grav": "<=1.7.42.1",
- "getkirby/cms": "<3.5.8.3-dev|>=3.6,<3.6.6.3-dev|>=3.7,<3.7.5.2-dev|>=3.8,<3.8.4.1-dev|>=3.9,<3.9.6",
- "getkirby/kirby": "<=2.5.12",
- "getkirby/panel": "<2.5.14",
- "getkirby/starterkit": "<=3.7.0.2",
- "gilacms/gila": "<=1.11.4",
- "gleez/cms": "<=1.2|==2",
- "globalpayments/php-sdk": "<2",
- "gogentooss/samlbase": "<1.2.7",
- "google/protobuf": "<3.15",
- "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
- "gree/jose": "<2.2.1",
- "gregwar/rst": "<1.0.3",
- "grumpydictator/firefly-iii": "<6",
- "gugoan/economizzer": "<=0.9.0.0-beta1",
- "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
- "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
- "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2",
- "harvesthq/chosen": "<1.8.7",
- "helloxz/imgurl": "<=2.31",
- "hhxsv5/laravel-s": "<3.7.36",
- "hillelcoren/invoice-ninja": "<5.3.35",
- "himiklab/yii2-jqgrid-widget": "<1.0.8",
- "hjue/justwriting": "<=1",
- "hov/jobfair": "<1.0.13|>=2,<2.0.2",
- "httpsoft/http-message": "<1.0.12",
- "hyn/multi-tenant": ">=5.6,<5.7.2",
- "ibexa/admin-ui": ">=4.2,<4.2.3",
- "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3",
- "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3",
- "ibexa/post-install": "<=1.0.4",
- "ibexa/user": ">=4,<4.4.3",
- "icecoder/icecoder": "<=8.1",
- "idno/known": "<=1.3.1",
- "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10",
- "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
- "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40",
- "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
- "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
- "impresscms/impresscms": "<=1.4.5",
- "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.2",
- "in2code/ipandlanguageredirect": "<5.1.2",
- "in2code/lux": "<17.6.1|>=18,<24.0.2",
- "innologi/typo3-appointments": "<2.0.6",
- "intelliants/subrion": "<4.2.2",
- "islandora/islandora": ">=2,<2.4.1",
- "ivankristianto/phpwhois": "<=4.3",
- "jackalope/jackalope-doctrine-dbal": "<1.7.4",
- "james-heinrich/getid3": "<1.9.21",
- "james-heinrich/phpthumb": "<1.7.12",
- "jasig/phpcas": "<1.3.3",
- "jcbrand/converse.js": "<3.3.3",
- "joomla/application": "<1.0.13",
- "joomla/archive": "<1.1.12|>=2,<2.0.1",
- "joomla/filesystem": "<1.6.2|>=2,<2.0.1",
- "joomla/filter": "<1.4.4|>=2,<2.0.1",
- "joomla/framework": ">=2.5.4,<=3.8.12",
- "joomla/input": ">=2,<2.0.2",
- "joomla/joomla-cms": ">=2.5,<3.9.12",
- "joomla/session": "<1.3.1",
- "joyqi/hyper-down": "<=2.4.27",
- "jsdecena/laracom": "<2.0.9",
- "jsmitty12/phpwhois": "<5.1",
- "kazist/phpwhois": "<=4.2.6",
- "kelvinmo/simplexrd": "<3.1.1",
- "kevinpapst/kimai2": "<1.16.7",
- "khodakhah/nodcms": "<=3",
- "kimai/kimai": "<1.1",
- "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4",
- "klaviyo/magento2-extension": ">=1,<3",
- "knplabs/knp-snappy": "<=1.4.2",
- "kohana/core": "<3.3.3",
- "krayin/laravel-crm": "<1.2.2",
- "kreait/firebase-php": ">=3.2,<3.8.1",
- "la-haute-societe/tcpdf": "<6.2.22",
- "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2",
- "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
- "laminas/laminas-http": "<2.14.2",
- "laravel/fortify": "<1.11.1",
- "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75",
- "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
- "latte/latte": "<2.10.8",
- "lavalite/cms": "<=9",
- "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5",
- "league/commonmark": "<0.18.3",
- "league/flysystem": "<1.1.4|>=2,<2.1.1",
- "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3",
- "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
- "librenms/librenms": "<2017.08.18",
- "liftkit/database": "<2.13.2",
- "limesurvey/limesurvey": "<3.27.19",
- "livehelperchat/livehelperchat": "<=3.91",
- "livewire/livewire": ">2.2.4,<2.2.6",
- "lms/routes": "<2.1.1",
- "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2",
- "luyadev/yii-helpers": "<1.2.1",
- "magento/community-edition": "<=2.4",
- "magento/magento1ce": "<1.9.4.3-dev",
- "magento/magento1ee": ">=1,<1.14.4.3-dev",
- "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2",
- "maikuolan/phpmussel": ">=1,<1.6",
- "mantisbt/mantisbt": "<=2.25.5",
- "marcwillmann/turn": "<0.3.3",
- "matyhtf/framework": "<3.0.6",
- "mautic/core": "<4.3",
- "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
- "mediawiki/matomo": "<2.4.3",
- "melisplatform/melis-asset-manager": "<5.0.1",
- "melisplatform/melis-cms": "<5.0.1",
- "melisplatform/melis-front": "<5.0.1",
- "mezzio/mezzio-swoole": "<3.7|>=4,<4.3",
- "mgallegos/laravel-jqgrid": "<=1.3",
- "microweber/microweber": "<=1.3.4",
- "miniorange/miniorange-saml": "<1.4.3",
- "mittwald/typo3_forum": "<1.2.1",
- "mobiledetect/mobiledetectlib": "<2.8.32",
- "modx/revolution": "<=2.8.3.0-patch",
- "mojo42/jirafeau": "<4.4",
- "mongodb/mongodb": ">=1,<1.9.2",
- "monolog/monolog": ">=1.8,<1.12",
- "moodle/moodle": "<4.2.0.0-RC2-dev|==4.2",
- "movim/moxl": ">=0.8,<=0.10",
- "mpdf/mpdf": "<=7.1.7",
- "mustache/mustache": ">=2,<2.14.1",
- "namshi/jose": "<2.2",
- "neoan3-apps/template": "<1.1.1",
- "neorazorx/facturascripts": "<2022.04",
- "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
- "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3",
- "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2",
- "neos/neos-ui": "<=8.3.3",
- "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
- "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
- "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
- "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
- "nilsteampassnet/teampass": "<3.0.10",
- "notrinos/notrinos-erp": "<=0.7",
- "noumo/easyii": "<=0.9",
- "nukeviet/nukeviet": "<4.5.02",
- "nyholm/psr7": "<1.6.1",
- "nystudio107/craft-seomatic": "<3.4.12",
- "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
- "october/backend": "<1.1.2",
- "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1",
- "october/october": "<=3.4.4",
- "october/rain": "<1.0.472|>=1.1,<1.1.2",
- "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66",
- "onelogin/php-saml": "<2.10.4",
- "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
- "open-web-analytics/open-web-analytics": "<1.7.4",
- "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev",
- "openid/php-openid": "<2.3",
- "openmage/magento-lts": "<=19.5|>=20,<=20.1",
- "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2",
- "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5",
- "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1",
- "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7",
- "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<4.2.8",
- "oxid-esales/oxideshop-ce": "<4.5",
- "packbackbooks/lti-1-3-php-library": "<5",
- "padraic/humbug_get_contents": "<1.1.2",
- "pagarme/pagarme-php": "<3",
- "pagekit/pagekit": "<=1.0.18",
- "paragonie/random_compat": "<2",
- "passbolt/passbolt_api": "<2.11",
- "paypal/merchant-sdk-php": "<3.12",
- "pear/archive_tar": "<1.4.14",
- "pear/crypt_gpg": "<1.6.7",
- "pear/pear": "<=1.10.1",
- "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
- "personnummer/personnummer": "<3.0.2",
- "phanan/koel": "<5.1.4",
- "php-mod/curl": "<2.3.2",
- "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1",
- "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
- "phpmailer/phpmailer": "<6.5",
- "phpmussel/phpmussel": ">=1,<1.6",
- "phpmyadmin/phpmyadmin": "<5.2.1",
- "phpmyfaq/phpmyfaq": "<=3.1.7",
- "phpoffice/phpexcel": "<1.8",
- "phpoffice/phpspreadsheet": "<1.16",
- "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.19",
- "phpservermon/phpservermon": "<3.6",
- "phpsysinfo/phpsysinfo": "<3.2.5",
- "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3",
- "phpwhois/phpwhois": "<=4.2.5",
- "phpxmlrpc/extras": "<0.6.1",
- "phpxmlrpc/phpxmlrpc": "<4.9.2",
- "pi/pi": "<=2.5",
- "pimcore/admin-ui-classic-bundle": "<1.1.2",
- "pimcore/customer-management-framework-bundle": "<3.4.2",
- "pimcore/data-hub": "<1.2.4",
- "pimcore/demo": "<10.3",
- "pimcore/perspective-editor": "<1.5.1",
- "pimcore/pimcore": "<10.6.8",
- "pixelfed/pixelfed": "<=0.11.4",
- "pocketmine/bedrock-protocol": "<8.0.2",
- "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1",
- "pressbooks/pressbooks": "<5.18",
- "prestashop/autoupgrade": ">=4,<4.10.1",
- "prestashop/blockwishlist": ">=2,<2.1.1",
- "prestashop/contactform": ">=1.0.1,<4.3",
- "prestashop/gamification": "<2.3.2",
- "prestashop/prestashop": "<8.1.2",
- "prestashop/productcomments": "<5.0.2",
- "prestashop/ps_emailsubscription": "<2.6.1",
- "prestashop/ps_facetedsearch": "<3.4.1",
- "prestashop/ps_linklist": "<3.1",
- "privatebin/privatebin": "<1.4",
- "processwire/processwire": "<=3.0.200",
- "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7",
- "propel/propel1": ">=1,<=1.7.1",
- "pterodactyl/panel": "<1.7",
- "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2",
- "ptrofimov/beanstalk_console": "<1.7.14",
- "pusher/pusher-php-server": "<2.2.1",
- "pwweb/laravel-core": "<=0.3.6.0-beta",
- "pyrocms/pyrocms": "<=3.9.1",
- "rainlab/blog-plugin": "<1.4.1",
- "rainlab/debugbar-plugin": "<3.1",
- "rainlab/user-plugin": "<=1.4.5",
- "rankmath/seo-by-rank-math": "<=1.0.95",
- "rap2hpoutre/laravel-log-viewer": "<0.13",
- "react/http": ">=0.7,<1.9",
- "really-simple-plugins/complianz-gdpr": "<6.4.2",
- "remdex/livehelperchat": "<3.99",
- "rmccue/requests": ">=1.6,<1.8",
- "robrichards/xmlseclibs": "<3.0.4",
- "roots/soil": "<4.1",
- "rudloff/alltube": "<3.0.3",
- "s-cart/core": "<6.9",
- "s-cart/s-cart": "<6.9",
- "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
- "sabre/dav": "<1.7.11|>=1.8,<1.8.9",
- "scheb/two-factor-bundle": "<3.26|>=4,<4.11",
- "sensiolabs/connect": "<4.2.3",
- "serluck/phpwhois": "<=4.2.6",
- "sfroemken/url_redirect": "<=1.2.1",
- "sheng/yiicms": "<=1.2",
- "shopware/core": "<=6.4.20",
- "shopware/platform": "<=6.4.20",
- "shopware/production": "<=6.3.5.2",
- "shopware/shopware": "<=5.7.17",
- "shopware/storefront": "<=6.4.8.1",
- "shopxo/shopxo": "<2.2.6",
- "showdoc/showdoc": "<2.10.4",
- "silverstripe-australia/advancedreports": ">=1,<=2",
- "silverstripe/admin": "<1.13.6",
- "silverstripe/assets": ">=1,<1.11.1",
- "silverstripe/cms": "<4.11.3",
- "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1",
- "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
- "silverstripe/framework": "<4.13.14|>=5,<5.0.13",
- "silverstripe/graphql": "<3.5.2|>=4.0.0.0-alpha1,<4.0.0.0-alpha2|>=4.1.1,<4.1.2|>=4.2.2,<4.2.3",
- "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
- "silverstripe/recipe-cms": ">=4.5,<4.5.3",
- "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
- "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
- "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1",
- "silverstripe/subsites": ">=2,<2.6.1",
- "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
- "silverstripe/userforms": "<3",
- "silverstripe/versioned-admin": ">=1,<1.11.1",
- "simple-updates/phpwhois": "<=1",
- "simplesamlphp/saml2": "<1.15.4|>=2,<2.3.8|>=3,<3.1.4",
- "simplesamlphp/simplesamlphp": "<1.18.6",
- "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
- "simplesamlphp/simplesamlphp-module-openid": "<1",
- "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9",
- "simplito/elliptic-php": "<1.0.6",
- "sitegeist/fluid-components": "<3.5",
- "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3",
- "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1",
- "slim/slim": "<2.6",
- "slub/slub-events": "<3.0.3",
- "smarty/smarty": "<3.1.48|>=4,<4.3.1",
- "snipe/snipe-it": "<=6.2.2",
- "socalnick/scn-social-auth": "<1.15.2",
- "socialiteproviders/steam": "<1.1",
- "spatie/browsershot": "<3.57.4",
- "spipu/html2pdf": "<5.2.8",
- "spoon/library": "<1.4.1",
- "spoonity/tcpdf": "<6.2.22",
- "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
- "ssddanbrown/bookstack": "<22.02.3",
- "statamic/cms": "<4.10",
- "stormpath/sdk": "<9.9.99",
- "studio-42/elfinder": "<2.1.62",
- "subhh/libconnect": "<7.0.8|>=8,<8.1",
- "sukohi/surpass": "<1",
- "sulu/sulu": "<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8|==2.4.0.0-RC1|>=2.5,<2.5.10",
- "sumocoders/framework-user-bundle": "<1.4",
- "swag/paypal": "<5.4.4",
- "swiftmailer/swiftmailer": ">=4,<5.4.5",
- "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
- "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
- "sylius/grid-bundle": "<1.10.1",
- "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
- "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
- "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2",
- "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
- "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4",
- "symbiote/silverstripe-seed": "<6.0.3",
- "symbiote/silverstripe-versionedfiles": "<=2.0.3",
- "symfont/process": ">=0",
- "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8",
- "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
- "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
- "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
- "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3",
- "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
- "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
- "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
- "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1",
- "symfony/mime": ">=4.3,<4.3.8",
- "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
- "symfony/polyfill": ">=1,<1.10",
- "symfony/polyfill-php55": ">=1,<1.10",
- "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
- "symfony/routing": ">=2,<2.0.19",
- "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8",
- "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
- "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9",
- "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
- "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8",
- "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2",
- "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
- "symfony/symfony": "<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
- "symfony/translation": ">=2,<2.0.17",
- "symfony/ux-autocomplete": "<2.11.2",
- "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
- "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
- "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
- "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
- "t3/dce": "<0.11.5|>=2.2,<2.6.2",
- "t3g/svg-sanitizer": "<1.0.3",
- "tastyigniter/tastyigniter": "<3.3",
- "tcg/voyager": "<=1.4",
- "tecnickcom/tcpdf": "<6.2.22",
- "terminal42/contao-tablelookupwizard": "<3.3.5",
- "thelia/backoffice-default-template": ">=2.1,<2.1.2",
- "thelia/thelia": ">=2.1,<2.1.3",
- "theonedemon/phpwhois": "<=4.2.5",
- "thinkcmf/thinkcmf": "<=5.1.7",
- "thorsten/phpmyfaq": "<3.2.0.0-beta2",
- "tikiwiki/tiki-manager": "<=17.1",
- "tinymce/tinymce": "<5.10.7|>=6,<6.3.1",
- "tinymighty/wiki-seo": "<1.2.2",
- "titon/framework": "<9.9.99",
- "tobiasbg/tablepress": "<=2.0.0.0-RC1",
- "topthink/framework": "<6.0.14",
- "topthink/think": "<=6.1.1",
- "topthink/thinkphp": "<=3.2.3",
- "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
- "tribalsystems/zenario": "<=9.4.59197",
- "truckersmp/phpwhois": "<=4.3.1",
- "ttskch/pagination-service-provider": "<1",
- "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3",
- "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
- "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
- "typo3/cms-core": "<8.7.51|>=9,<9.5.42|>=10,<10.4.39|>=11,<11.5.30|>=12,<12.4.4",
- "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
- "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
- "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30",
- "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
- "typo3/html-sanitizer": ">=1,<1.5.1|>=2,<2.1.2",
- "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
- "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
- "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
- "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
- "ua-parser/uap-php": "<3.8",
- "uasoft-indonesia/badaso": "<=2.9.7",
- "unisharp/laravel-filemanager": "<=2.5.1",
- "userfrosting/userfrosting": ">=0.3.1,<4.6.3",
- "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
- "uvdesk/community-skeleton": "<=1.1.1",
- "vanilla/safecurl": "<0.9.2",
- "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
- "vova07/yii2-fileapi-widget": "<0.1.9",
- "vrana/adminer": "<4.8.1",
- "waldhacker/hcaptcha": "<2.1.2",
- "wallabag/tcpdf": "<6.2.22",
- "wallabag/wallabag": "<2.6.7",
- "wanglelecc/laracms": "<=1.0.3",
- "web-auth/webauthn-framework": ">=3.3,<3.3.4",
- "webbuilders-group/silverstripe-kapost-bridge": "<0.4",
- "webcoast/deferred-image-processing": "<1.0.2",
- "webklex/laravel-imap": "<5.3",
- "webklex/php-imap": "<5.3",
- "webpa/webpa": "<3.1.2",
- "wikibase/wikibase": "<=1.39.3",
- "wikimedia/parsoid": "<0.12.2",
- "willdurand/js-translation-bundle": "<2.1.1",
- "wintercms/winter": "<1.2.3",
- "woocommerce/woocommerce": "<6.6",
- "wp-cli/wp-cli": "<2.5",
- "wp-graphql/wp-graphql": "<=1.14.5",
- "wpanel/wpanel4-cms": "<=4.3.1",
- "wpcloud/wp-stateless": "<3.2",
- "wwbn/avideo": "<=12.4",
- "xataface/xataface": "<3",
- "xpressengine/xpressengine": "<3.0.15",
- "yeswiki/yeswiki": "<4.1",
- "yetiforce/yetiforce-crm": "<=6.4",
- "yidashi/yii2cmf": "<=2",
- "yii2mod/yii2-cms": "<1.9.2",
- "yiisoft/yii": "<1.1.27",
- "yiisoft/yii2": "<2.0.38",
- "yiisoft/yii2-bootstrap": "<2.0.4",
- "yiisoft/yii2-dev": "<2.0.43",
- "yiisoft/yii2-elasticsearch": "<2.0.5",
- "yiisoft/yii2-gii": "<=2.2.4",
- "yiisoft/yii2-jui": "<2.0.4",
- "yiisoft/yii2-redis": "<2.0.8",
- "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6",
- "yoast-seo-for-typo3/yoast_seo": "<7.2.3",
- "yourls/yourls": "<=1.8.2",
- "zencart/zencart": "<=1.5.7.0-beta",
- "zendesk/zendesk_api_client_php": "<2.2.11",
- "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
- "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
- "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
- "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
- "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
- "zendframework/zend-diactoros": "<1.8.4",
- "zendframework/zend-feed": "<2.10.3",
- "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
- "zendframework/zend-http": "<2.8.1",
- "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
- "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
- "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
- "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
- "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
- "zendframework/zend-validator": ">=2.3,<2.3.6",
- "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
- "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
- "zendframework/zendframework": "<=3",
- "zendframework/zendframework1": "<1.12.20",
- "zendframework/zendopenid": "<2.0.2",
- "zendframework/zendrest": "<2.0.2",
- "zendframework/zendservice-amazon": "<2.0.3",
- "zendframework/zendservice-api": "<1",
- "zendframework/zendservice-audioscrobbler": "<2.0.2",
- "zendframework/zendservice-nirvanix": "<2.0.2",
- "zendframework/zendservice-slideshare": "<2.0.2",
- "zendframework/zendservice-technorati": "<2.0.2",
- "zendframework/zendservice-windowsazure": "<2.0.2",
- "zendframework/zendxml": "<1.0.1",
- "zenstruck/collection": "<0.2.1",
- "zetacomponents/mail": "<1.8.2",
- "zf-commons/zfc-user": "<1.2.2",
- "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
- "zfr/zfr-oauth2-server-module": "<0.1.2",
- "zoujingli/thinkadmin": "<6.0.22"
- },
- "default-branch": true,
- "type": "metapackage",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "role": "maintainer"
- },
- {
- "name": "Ilya Tribusean",
- "email": "slash3b@gmail.com",
- "role": "maintainer"
- }
- ],
- "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
- "keywords": [
- "dev"
- ],
- "support": {
- "issues": "https://github.com/Roave/SecurityAdvisories/issues",
- "source": "https://github.com/Roave/SecurityAdvisories/tree/latest"
- },
- "funding": [
- {
- "url": "https://github.com/Ocramius",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories",
- "type": "tidelift"
- }
- ],
- "time": "2023-10-11T21:04:21+00:00"
- },
{
"name": "sebastian/cli-parser",
- "version": "1.0.1",
+ "version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
+ "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
"shasum": ""
},
"require": {
@@ -2204,7 +1540,7 @@
"homepage": "https://github.com/sebastianbergmann/cli-parser",
"support": {
"issues": "https://github.com/sebastianbergmann/cli-parser/issues",
- "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2"
},
"funding": [
{
@@ -2212,7 +1548,7 @@
"type": "github"
}
],
- "time": "2020-09-28T06:08:49+00:00"
+ "time": "2024-03-02T06:27:43+00:00"
},
{
"name": "sebastian/code-unit",
@@ -2401,20 +1737,20 @@
},
{
"name": "sebastian/complexity",
- "version": "2.0.2",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a",
+ "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^4.7",
+ "nikic/php-parser": "^4.18 || ^5.0",
"php": ">=7.3"
},
"require-dev": {
@@ -2446,7 +1782,7 @@
"homepage": "https://github.com/sebastianbergmann/complexity",
"support": {
"issues": "https://github.com/sebastianbergmann/complexity/issues",
- "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3"
},
"funding": [
{
@@ -2454,20 +1790,20 @@
"type": "github"
}
],
- "time": "2020-10-26T15:52:27+00:00"
+ "time": "2023-12-22T06:19:30+00:00"
},
{
"name": "sebastian/diff",
- "version": "4.0.5",
+ "version": "4.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
+ "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
- "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc",
+ "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc",
"shasum": ""
},
"require": {
@@ -2512,7 +1848,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
- "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5"
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6"
},
"funding": [
{
@@ -2520,7 +1856,7 @@
"type": "github"
}
],
- "time": "2023-05-07T05:35:17+00:00"
+ "time": "2024-03-02T06:30:58+00:00"
},
{
"name": "sebastian/environment",
@@ -2587,16 +1923,16 @@
},
{
"name": "sebastian/exporter",
- "version": "4.0.5",
+ "version": "4.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
+ "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
- "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72",
+ "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72",
"shasum": ""
},
"require": {
@@ -2652,7 +1988,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6"
},
"funding": [
{
@@ -2660,20 +1996,20 @@
"type": "github"
}
],
- "time": "2022-09-14T06:03:37+00:00"
+ "time": "2024-03-02T06:33:00+00:00"
},
{
"name": "sebastian/global-state",
- "version": "5.0.6",
+ "version": "5.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bde739e7565280bda77be70044ac1047bc007e34"
+ "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34",
- "reference": "bde739e7565280bda77be70044ac1047bc007e34",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
+ "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
"shasum": ""
},
"require": {
@@ -2716,7 +2052,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
- "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7"
},
"funding": [
{
@@ -2724,24 +2060,24 @@
"type": "github"
}
],
- "time": "2023-08-02T09:26:13+00:00"
+ "time": "2024-03-02T06:35:11+00:00"
},
{
"name": "sebastian/lines-of-code",
- "version": "1.0.3",
+ "version": "1.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
- "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+ "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^4.6",
+ "nikic/php-parser": "^4.18 || ^5.0",
"php": ">=7.3"
},
"require-dev": {
@@ -2773,7 +2109,7 @@
"homepage": "https://github.com/sebastianbergmann/lines-of-code",
"support": {
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4"
},
"funding": [
{
@@ -2781,7 +2117,7 @@
"type": "github"
}
],
- "time": "2020-11-28T06:42:11+00:00"
+ "time": "2023-12-22T06:20:34+00:00"
},
{
"name": "sebastian/object-enumerator",
@@ -2960,16 +2296,16 @@
},
{
"name": "sebastian/resource-operations",
- "version": "3.0.3",
+ "version": "3.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
"shasum": ""
},
"require": {
@@ -2981,7 +2317,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -3002,8 +2338,7 @@
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
"support": {
- "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
- "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4"
},
"funding": [
{
@@ -3011,7 +2346,7 @@
"type": "github"
}
],
- "time": "2020-09-28T06:45:17+00:00"
+ "time": "2024-03-14T16:00:52+00:00"
},
{
"name": "sebastian/type",
@@ -3124,16 +2459,16 @@
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.7.2",
+ "version": "3.9.1",
"source": {
"type": "git",
- "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
- "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879"
+ "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
+ "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879",
- "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/267a4405fff1d9c847134db3a3c92f1ab7f77909",
+ "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909",
"shasum": ""
},
"require": {
@@ -3143,11 +2478,11 @@
"php": ">=5.4.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
},
"bin": [
- "bin/phpcs",
- "bin/phpcbf"
+ "bin/phpcbf",
+ "bin/phpcs"
],
"type": "library",
"extra": {
@@ -3162,35 +2497,58 @@
"authors": [
{
"name": "Greg Sherwood",
- "role": "lead"
+ "role": "Former lead"
+ },
+ {
+ "name": "Juliette Reinders Folmer",
+ "role": "Current lead"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
}
],
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
- "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
"phpcs",
"standards",
"static analysis"
],
"support": {
- "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
- "source": "https://github.com/squizlabs/PHP_CodeSniffer",
- "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
+ "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
+ "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+ "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
},
- "time": "2023-02-22T23:07:41+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/PHPCSStandards",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/jrfnl",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/php_codesniffer",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2024-03-31T21:03:09+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.28.0",
+ "version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
+ "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
- "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
+ "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
"shasum": ""
},
"require": {
@@ -3204,9 +2562,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3243,7 +2598,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
},
"funding": [
{
@@ -3259,20 +2614,20 @@
"type": "tidelift"
}
],
- "time": "2023-01-26T09:26:14+00:00"
+ "time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.28.0",
+ "version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "42292d99c55abe617799667f454222c54c60e229"
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
- "reference": "42292d99c55abe617799667f454222c54c60e229",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"shasum": ""
},
"require": {
@@ -3286,9 +2641,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3326,7 +2678,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
},
"funding": [
{
@@ -3342,20 +2694,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-28T09:04:16+00:00"
+ "time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.28.0",
+ "version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
+ "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
- "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+ "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"shasum": ""
},
"require": {
@@ -3363,9 +2715,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3409,7 +2758,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
},
"funding": [
{
@@ -3425,20 +2774,20 @@
"type": "tidelift"
}
],
- "time": "2023-01-26T09:26:14+00:00"
+ "time": "2024-01-29T20:11:03+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.1",
+ "version": "1.2.3",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+ "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
"shasum": ""
},
"require": {
@@ -3467,7 +2816,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.1"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
},
"funding": [
{
@@ -3475,35 +2824,35 @@
"type": "github"
}
],
- "time": "2021-07-28T10:34:58+00:00"
+ "time": "2024-03-03T12:36:25+00:00"
},
{
"name": "vlucas/phpdotenv",
- "version": "v5.5.0",
+ "version": "v5.6.0",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"
+ "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
- "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4",
+ "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4",
"shasum": ""
},
"require": {
"ext-pcre": "*",
- "graham-campbell/result-type": "^1.0.2",
- "php": "^7.1.3 || ^8.0",
- "phpoption/phpoption": "^1.8",
- "symfony/polyfill-ctype": "^1.23",
- "symfony/polyfill-mbstring": "^1.23.1",
- "symfony/polyfill-php80": "^1.23.1"
+ "graham-campbell/result-type": "^1.1.2",
+ "php": "^7.2.5 || ^8.0",
+ "phpoption/phpoption": "^1.9.2",
+ "symfony/polyfill-ctype": "^1.24",
+ "symfony/polyfill-mbstring": "^1.24",
+ "symfony/polyfill-php80": "^1.24"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.4.1",
+ "bamarni/composer-bin-plugin": "^1.8.2",
"ext-filter": "*",
- "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25"
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
},
"suggest": {
"ext-filter": "Required to use the boolean validator."
@@ -3515,7 +2864,7 @@
"forward-command": true
},
"branch-alias": {
- "dev-master": "5.5-dev"
+ "dev-master": "5.6-dev"
}
},
"autoload": {
@@ -3547,7 +2896,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0"
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0"
},
"funding": [
{
@@ -3559,7 +2908,7 @@
"type": "tidelift"
}
],
- "time": "2022-10-16T01:01:54+00:00"
+ "time": "2023-11-12T22:43:29+00:00"
},
{
"name": "webmozart/assert",
@@ -3621,16 +2970,16 @@
},
{
"name": "webonyx/graphql-php",
- "version": "v15.7.0",
+ "version": "v15.11.1",
"source": {
"type": "git",
"url": "https://github.com/webonyx/graphql-php.git",
- "reference": "44ff70977ee020c0b24bfdfaf947be56943de505"
+ "reference": "ab4ff2719b101dc3bfc3aaaf800edc21a98c56dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/44ff70977ee020c0b24bfdfaf947be56943de505",
- "reference": "44ff70977ee020c0b24bfdfaf947be56943de505",
+ "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/ab4ff2719b101dc3bfc3aaaf800edc21a98c56dc",
+ "reference": "ab4ff2719b101dc3bfc3aaaf800edc21a98c56dc",
"shasum": ""
},
"require": {
@@ -3643,21 +2992,21 @@
"amphp/http-server": "^2.1",
"dms/phpunit-arraysubset-asserts": "dev-master",
"ergebnis/composer-normalize": "^2.28",
- "friendsofphp/php-cs-fixer": "3.30.0",
+ "friendsofphp/php-cs-fixer": "3.51.0",
"mll-lab/php-cs-fixer-config": "^5",
"nyholm/psr7": "^1.5",
"phpbench/phpbench": "^1.2",
"phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "1.10.37",
- "phpstan/phpstan-phpunit": "1.3.14",
- "phpstan/phpstan-strict-rules": "1.5.1",
+ "phpstan/phpstan": "1.10.59",
+ "phpstan/phpstan-phpunit": "1.3.16",
+ "phpstan/phpstan-strict-rules": "1.5.2",
"phpunit/phpunit": "^9.5 || ^10",
"psr/http-message": "^1 || ^2",
"react/http": "^1.6",
- "react/promise": "^2.9",
- "rector/rector": "^0.18",
+ "react/promise": "^2.0 || ^3.0",
+ "rector/rector": "^1.0",
"symfony/polyfill-php81": "^1.23",
- "symfony/var-exporter": "^5 || ^6",
+ "symfony/var-exporter": "^5 || ^6 || ^7",
"thecodingmachine/safe": "^1.3 || ^2"
},
"suggest": {
@@ -3683,7 +3032,7 @@
],
"support": {
"issues": "https://github.com/webonyx/graphql-php/issues",
- "source": "https://github.com/webonyx/graphql-php/tree/v15.7.0"
+ "source": "https://github.com/webonyx/graphql-php/tree/v15.11.1"
},
"funding": [
{
@@ -3691,18 +3040,16 @@
"type": "open_collective"
}
],
- "time": "2023-10-04T09:10:34+00:00"
+ "time": "2024-03-11T10:21:05+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": {
- "roave/security-advisories": 20
- },
+ "stability-flags": [],
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": ">=8.0",
+ "php": ">=8.1",
"ext-dom": "*",
"ext-libxml": "*",
"ext-simplexml": "*",
@@ -3711,5 +3058,5 @@
"ext-openssl": "*"
},
"platform-dev": [],
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.6.0"
}
diff --git a/src/Contexts/BluemContext.php b/src/Contexts/BluemContext.php
index 77d85da..25dd0ef 100644
--- a/src/Contexts/BluemContext.php
+++ b/src/Contexts/BluemContext.php
@@ -8,20 +8,23 @@
namespace Bluem\BluemPHP\Contexts;
+use Bluem\BluemPHP\Helpers\BIC;
use Bluem\BluemPHP\Interfaces\BluemContextInterface;
abstract class BluemContext implements BluemContextInterface
{
-
+ /** @var BIC[] $BICs */
public function __construct(public array $BICs = [])
{
}
+ /** @return BIC[] $BICs */
public function getBICs(): array
{
return $this->BICs;
}
+ /** @return string[] $codes */
public function getBICCodes(): array
{
$codes = [];
diff --git a/src/Contexts/PaymentsContext.php b/src/Contexts/PaymentsContext.php
index b7d2d12..c7caa5c 100644
--- a/src/Contexts/PaymentsContext.php
+++ b/src/Contexts/PaymentsContext.php
@@ -18,14 +18,20 @@ class PaymentsContext extends BluemContext
public const PAYMENT_METHOD_PAYPAL = 'PayPal';
public const PAYMENT_METHOD_CREDITCARD = 'CreditCard';
public const PAYMENT_METHOD_SOFORT = 'Sofort';
+ public const PAYMENT_METHOD_SOFORT_DIGITAL_SERVICES = 'SofortDigitalServices';
public const PAYMENT_METHOD_CARTE_BANCAIRE = 'CarteBancaire';
+ public const PAYMENT_METHOD_BANCONTACT = 'Bancontact';
+ public const PAYMENT_METHOD_GIROPAY = 'Giropay';
public const PAYMENT_METHODS = [
self::PAYMENT_METHOD_IDEAL,
self::PAYMENT_METHOD_PAYPAL,
self::PAYMENT_METHOD_CREDITCARD,
self::PAYMENT_METHOD_SOFORT,
- self::PAYMENT_METHOD_CARTE_BANCAIRE
+ self::PAYMENT_METHOD_SOFORT_DIGITAL_SERVICES,
+ self::PAYMENT_METHOD_CARTE_BANCAIRE,
+ self::PAYMENT_METHOD_BANCONTACT,
+ self::PAYMENT_METHOD_GIROPAY,
];
public string $debtorWalletElementName = self::PAYMENT_METHOD_IDEAL;
diff --git a/src/Exceptions/InvalidBluemRequestException.php b/src/Exceptions/InvalidBluemRequestException.php
new file mode 100644
index 0000000..81d6689
--- /dev/null
+++ b/src/Exceptions/InvalidBluemRequestException.php
@@ -0,0 +1,17 @@
+
+ *
+ * This source file is subject to the license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+
+namespace Bluem\BluemPHP\Exceptions;
+
+use Exception;
+
+class InvalidBluemRequestException extends Exception
+{
+
+}
diff --git a/src/Helpers/Now.php b/src/Helpers/Now.php
index 684bf07..e9f9228 100644
--- a/src/Helpers/Now.php
+++ b/src/Helpers/Now.php
@@ -54,29 +54,29 @@ public function addDay(int $days): static
$this->dateTime = $this->dateTime->add(new DateInterval("P{$days}D"));
return $this;
}
-
+
+ /**
+ * @throws Exception
+ */
public function fromDate(string $dateTimeString): static
{
- try {
- $this->dateTime = new DateTimeImmutable(
- datetime: $dateTimeString,
- timezone: new DateTimeZone(self::DEFAULT_TIMEZONE)
- );
- } catch (Exception $e) {
- throw $e;
- }
+ $this->dateTime = new DateTimeImmutable(
+ datetime: $dateTimeString,
+ timezone: new DateTimeZone(self::DEFAULT_TIMEZONE)
+ );
+
return $this;
}
+ /**
+ * @throws Exception
+ */
public function fromTimestamp(string $timestamp): static
{
- try {
- $this->dateTime = (new DateTimeImmutable())
- ->setTimestamp($timestamp)
- ->setTimezone(new DateTimeZone(self::DEFAULT_TIMEZONE));
- } catch (Exception $e) {
- throw $e;
- }
+ $this->dateTime = (new DateTimeImmutable())
+ ->setTimestamp($timestamp)
+ ->setTimezone(new DateTimeZone(self::DEFAULT_TIMEZONE));
+
return $this;
}
}
diff --git a/src/Requests/BluemRequest.php b/src/Requests/BluemRequest.php
index e950459..6a95133 100644
--- a/src/Requests/BluemRequest.php
+++ b/src/Requests/BluemRequest.php
@@ -8,6 +8,7 @@
namespace Bluem\BluemPHP\Requests;
+use Bluem\BluemPHP\Exceptions\InvalidBluemRequestException;
use Bluem\BluemPHP\Helpers\BluemConfiguration;
use Bluem\BluemPHP\Helpers\Now;
use Bluem\BluemPHP\Interfaces\BluemRequestInterface;
@@ -81,6 +82,7 @@ class BluemRequest implements BluemRequestInterface
private array $_debtorAdditionalData = [];
+ private const TYPE_IDENTIFIERS = [ 'createTransaction', 'requestStatus' ];
/**
* @var string[]
*/
@@ -108,16 +110,15 @@ class BluemRequest implements BluemRequestInterface
*
* @param BluemConfiguration|object $config
*
- * @throws Exception
+ * @throws InvalidBluemRequestException
*/
public function __construct(
$config,
string $entranceCode = "",
string $expectedReturn = ""
) {
- $possibleTypeIdentifiers = [ 'createTransaction', 'requestStatus' ];
- if (! in_array($this->typeIdentifier, $possibleTypeIdentifiers)) {
- throw new Exception("Invalid transaction type called for", 1);
+ if (!in_array($this->typeIdentifier, self::TYPE_IDENTIFIERS, true)) {
+ throw new InvalidBluemRequestException("Invalid transaction type called for", 1);
}
// @todo: move to request validation class?
@@ -452,4 +453,18 @@ public function setBrandId(string $brandID): void
{
$this->brandID = $brandID;
}
+
+ /**
+ * Use the right separator based on the presence of a query string
+ */
+ protected function appendToUrl(string $urlBase, string $key, $value): string
+ {
+ $hasQueryString = preg_match('/\?.+=.+/', $urlBase);
+
+ if ($hasQueryString) {
+ return "{$urlBase}&{$key}={$value}";
+ }
+
+ return "{$urlBase}?{$key}={$value}";
+ }
}
diff --git a/src/Requests/EmandateBluemRequest.php b/src/Requests/EmandateBluemRequest.php
index 70e9989..d111bc6 100644
--- a/src/Requests/EmandateBluemRequest.php
+++ b/src/Requests/EmandateBluemRequest.php
@@ -56,7 +56,8 @@ public function __construct(BluemConfiguration $config, private $debtorReference
$this->mandateID = $mandateID;
// https - unique return URL for customer
- $this->merchantReturnURL = "$this->merchantReturnURLBase?mandateID=$this->mandateID";
+ $this->merchantReturnURL = $this->appendToUrl($this->merchantReturnURLBase, 'mandateID',$this->mandateID);
+
$this->sequenceType = $config->sequenceType ?? "RCUR";
// reason for the mandate; configurable per client
$this->eMandateReason = $config->eMandateReason ?? "Incasso machtiging";
diff --git a/src/Requests/IdentityBluemRequest.php b/src/Requests/IdentityBluemRequest.php
index 59601f9..1f2f73d 100644
--- a/src/Requests/IdentityBluemRequest.php
+++ b/src/Requests/IdentityBluemRequest.php
@@ -60,10 +60,13 @@ public function __construct(
$this->requestCategory = $this->getRequestCategoryElement($requestCategory);
$this->description = $this->_sanitizeDescription($description);
- if ($debtorReturnURL == "") {
- throw new Exception("Debtor return URL is required");
+
+
+ if (!$debtorReturnURL || (string)$debtorReturnURL === "") {
+ $debtorReturnURL = $config->merchantReturnURLBase;
}
- $this->debtorReturnURL = $debtorReturnURL . "?debtorReference=$this->debtorReference";
+
+ $this->debtorReturnURL = $this->appendToUrl($debtorReturnURL,"debtorReference",$this->debtorReference);
// @todo: make this a configurable setting
$this->minAge = $config->minAge ?? BLUEM_DEFAULT_MIN_AGE;
@@ -168,7 +171,7 @@ public function XmlString(): string
}
/**
- * EntranceCodes for iDIN starting with the prefix 'showConsumerGui,
+ * EntranceCodes for iDIN starting with the prefix `showConsumerGui`,
* will always get to a test status page
* of the bank where you can choose which status you want to receive back.
*
diff --git a/src/Requests/PaymentBluemRequest.php b/src/Requests/PaymentBluemRequest.php
index 5e09f0b..4992791 100644
--- a/src/Requests/PaymentBluemRequest.php
+++ b/src/Requests/PaymentBluemRequest.php
@@ -9,11 +9,12 @@
namespace Bluem\BluemPHP\Requests;
use Bluem\BluemPHP\Contexts\PaymentsContext;
+use Bluem\BluemPHP\Exceptions\InvalidBluemRequestException;
use Bluem\BluemPHP\Helpers\BluemConfiguration;
use Bluem\BluemPHP\Helpers\Now;
use Exception;
-class PaymentBluemRequest extends BluemRequest
+class PaymentBluemRequest extends BluemRequest implements PaymentMethodSetterInterface
{
public $request_url_type = "pr";
public $typeIdentifier = "createTransaction";
@@ -34,21 +35,23 @@ class PaymentBluemRequest extends BluemRequest
private float $amount;
/**
+ * @throws InvalidBluemRequestException
* @throws Exception
*/
public function __construct(
BluemConfiguration $config,
- $description,
- $debtorReference,
- $amount,
- $dueDateTime = null,
- $currency = null,
- $transactionID = null,
- $entranceCode = "",
- string $expected_return = "none",
- $debtorReturnURL = "",
- $paymentReference = ""
- ) {
+ $description,
+ $debtorReference,
+ $amount,
+ $dueDateTime = null,
+ $currency = null,
+ $transactionID = null,
+ $entranceCode = "",
+ string $expected_return = "none",
+ $debtorReturnURL = "",
+ $paymentReference = ""
+ )
+ {
parent::__construct($config, $entranceCode, $expected_return);
$this->description = $this->_sanitizeDescription($description);
@@ -56,22 +59,7 @@ public function __construct(
// Default Currency EUR
$this->currency = $this->validateCurrency($currency);
- $now = new Now();
-
- if ($dueDateTime === null) {
- $this->dueDateTime = $now->tomorrow()->getCreateDateTimeForRequest();
- } else {
- try {
- if (is_int($dueDateTime)) {
- $then = ($now->fromTimestamp($dueDateTime));
- } else {
- $then = ($now->fromDate($dueDateTime));
- }
- } catch (Exception $e) {
- throw $e;
- }
- $this->dueDateTime = $then->getCreateDateTimeForRequest();
- }
+ $this->dueDateTime = $this->getDueDateTime($dueDateTime);
// @todo: validate DebtorReference : [0-9a-zA-Z]{1,35}
// $sanitizedDebtorReferenceParts = [];
@@ -98,9 +86,9 @@ public function __construct(
} else {
$this->debtorReturnURL = $config->merchantReturnURLBase;
}
- $this->debtorReturnURL .= "?entranceCode=$this->entranceCode&transactionID=$this->transactionID";
- $this->debtorReturnURL = str_replace('&', '&', $this->debtorReturnURL);
+ $this->debtorReturnURL = $this->appendToUrl($this->debtorReturnURL, 'entranceCode', $this->entranceCode);
+ $this->debtorReturnURL = $this->appendToUrl($this->debtorReturnURL, 'transactionID',$this->transactionID);
// Note: different variable name in config
// added entranceCode as well, useful. Defined in generic bluem request class.
@@ -114,7 +102,7 @@ public function __construct(
private function sanitizeTransactionID(string $transactionID): string
{
- $sanitizedTransactionIDParts = [];
+ $sanitizedTransactionIDParts = [];
$sanitizedTransactionIDCount = preg_match_all(
"/[\da-zA-Z]{1,64}/i",
$transactionID,
@@ -135,16 +123,16 @@ private function sanitizeTransactionID(string $transactionID): string
*
* @param $currency
*
- * @throws Exception
+ * @return string
+ * @throws InvalidBluemRequestException
*/
private function validateCurrency($currency): string
{
- $availableCurrencies = [ "EUR" ]; // @todo: add list of currencies based on
+ $availableCurrencies = ["EUR"]; // @todo: add list of currencies based on
if (!in_array($currency, $availableCurrencies, true)) {
- throw new Exception(
- "Currency not recognized,
- should be one of the following available currencies: " .
- implode(",", $availableCurrencies)
+ throw new InvalidBluemRequestException(
+ "Currency not recognized, should be one of the following available currencies: " .
+ implode(",", $availableCurrencies)
);
}
@@ -160,14 +148,14 @@ public function XmlString(): string
{
$extraOptions = [
'documentType' => "PayRequest",
- 'sendOption' => "none",
- 'language' => "nl",
+ 'sendOption' => "none",
+ 'language' => "nl",
];
if (!empty($this->brandID)) {
$extraOptions['brandID'] = $this->brandID;
}
-
+
return $this->XmlRequestInterfaceWrap(
$this->xmlInterfaceName,
'TransactionRequest',
@@ -206,7 +194,7 @@ public function setPaymentMethodToIDEAL($BIC = ""): self
if (!empty($BIC)) {
$this->context->addPaymentMethodDetails(
[
- 'BIC'=>$BIC
+ 'BIC' => $BIC
]
);
}
@@ -224,7 +212,7 @@ public function setPaymentMethodToPayPal($payPalAccount = ""): self
if (!empty($payPalAccount)) {
$this->context->addPaymentMethodDetails(
[
- 'PayPalAccount'=>$payPalAccount
+ 'PayPalAccount' => $payPalAccount
]
);
}
@@ -238,7 +226,8 @@ public function setPaymentMethodToCreditCard(
string $securityCode = '',
string $expirationDateMonth = '',
string $expirationDateYear = ''
- ): self {
+ ): self
+ {
$this->setPaymentMethod($this->context::PAYMENT_METHOD_CREDITCARD);
/**
@@ -249,11 +238,11 @@ public function setPaymentMethodToCreditCard(
) {
$this->context->addPaymentMethodDetails(
[
- 'CardNumber'=>$cardNumber,
- 'Name'=>$name,
- 'SecurityCode'=>$securityCode,
- 'ExpirationDateMonth'=>$expirationDateMonth,
- 'ExpirationDateYear'=>$expirationDateYear,
+ 'CardNumber' => $cardNumber,
+ 'Name' => $name,
+ 'SecurityCode' => $securityCode,
+ 'ExpirationDateMonth' => $expirationDateMonth,
+ 'ExpirationDateYear' => $expirationDateYear,
]
);
}
@@ -267,16 +256,49 @@ public function setPaymentMethodToSofort(): self
return $this;
}
+ public function setPaymentMethodToSofortDigitalServices(): self
+ {
+ $this->setPaymentMethod($this->context::PAYMENT_METHOD_SOFORT_DIGITAL_SERVICES);
+ return $this;
+ }
+
public function setPaymentMethodToCarteBancaire(): self
{
$this->setPaymentMethod($this->context::PAYMENT_METHOD_CARTE_BANCAIRE);
return $this;
}
- private function addZeroPrefix($number)
+ public function setPaymentMethodToBancontact(): self
{
- if (strlen($number.'') === 1) {
- return (int) '0'.$number;
+ $this->setPaymentMethod($this->context::PAYMENT_METHOD_BANCONTACT);
+ return $this;
+ }
+
+ public function setPaymentMethodToGiropay(): self
+ {
+ $this->setPaymentMethod($this->context::PAYMENT_METHOD_GIROPAY);
+ return $this;
+ }
+
+ /**
+ * @param mixed $dueDateTime
+ * @return string
+ * @throws InvalidBluemRequestException
+ */
+ public function getDueDateTime(mixed $dueDateTime): string
+ {
+ $now = new Now();
+
+ if ($dueDateTime === null) {
+ return $now->tomorrow()->getCreateDateTimeForRequest();
+ }
+ try {
+ $then = is_int($dueDateTime)
+ ? ($now->fromTimestamp($dueDateTime))
+ : ($now->fromDate($dueDateTime));
+ return $then->getCreateDateTimeForRequest();
+ } catch (Exception $e) {
+ throw new InvalidBluemRequestException($e);
}
}
@@ -350,8 +372,7 @@ private function XmlWrapDebtorWalletForPaymentMethod(): string
*/
public function selectDebtorWallet($BIC)
{
-
- if (! in_array($BIC, $this->context->getBICCodes())) {
+ if (!in_array($BIC, $this->context->getBICCodes(), true)) {
throw new Exception("Invalid BIC code given, should be a valid BIC of a supported bank.");
}
diff --git a/src/Requests/PaymentMethodSetterInterface.php b/src/Requests/PaymentMethodSetterInterface.php
new file mode 100644
index 0000000..1324068
--- /dev/null
+++ b/src/Requests/PaymentMethodSetterInterface.php
@@ -0,0 +1,21 @@
+paymentBrandID)
+
+ if(method_exists($config,'setBrandID')) {
+ if (isset($config->paymentBrandID)
+ && $config->paymentBrandID !== ""
+ ) {
+ $config->setBrandID($config->paymentBrandID);
+ } else {
+ $config->setBrandID($config->brandID);
+ }
+ } else if (isset($config->paymentBrandID)
&& $config->paymentBrandID !== ""
) {
- $config->setBrandID($config->paymentBrandID);
- } else {
- $config->setBrandID($config->brandID);
+ $config->brandID = $config->paymentBrandID;
}
$this->transactionID = $transactionID;
diff --git a/tests/Integration/BluemGenericTestCase.php b/tests/Integration/BluemGenericTestCase.php
index 8e339e7..ee13710 100644
--- a/tests/Integration/BluemGenericTestCase.php
+++ b/tests/Integration/BluemGenericTestCase.php
@@ -6,15 +6,15 @@
* with this source code in the file LICENSE.
*/
-namespace Integration;
+namespace Bluem\BluemPHP\Tests\Integration;
use Bluem\BluemPHP\Bluem;
use Bluem\BluemPHP\Interfaces\BluemRequestInterface;
+use Bluem\BluemPHP\Responses\ErrorBluemResponse;
use Dotenv\Dotenv;
use Exception;
use PHPUnit\Framework\TestCase;
use stdClass;
-use Bluem\BluemPHP\Responses\ErrorBluemResponse;
/**
* Abstract base class for all BluemPHP unit tests.
diff --git a/tests/Integration/BluemMainTest.php b/tests/Integration/BluemMainTest.php
index 0337266..9a74b40 100644
--- a/tests/Integration/BluemMainTest.php
+++ b/tests/Integration/BluemMainTest.php
@@ -1,5 +1,5 @@
getValidConfig();
+
+ $bluemConfig = new BluemConfiguration($configData);
+
+ $this->assertInstanceOf(BluemConfiguration::class, $bluemConfig);
+ $this->assertEquals('test', $bluemConfig->environment);
+ // Add other assertions for different properties...
+ }
+
+ public function testConstructorWithInvalidData(): void
+ {
+ $this->expectException(InvalidBluemConfigurationException::class);
+ $invalidConfigData = new stdclass();
+
+ new BluemConfiguration($invalidConfigData);
+ }
+
+ public function testSetBrandId(): void
+ {
+ $configData = $this->getValidConfig();
+
+ $bluemConfig = new BluemConfiguration($configData);
+ $bluemConfig->setBrandId('NewBrand');
+
+ $this->assertEquals('NewBrand', $bluemConfig->brandID);
+ }
+
+ private function getValidConfig(): stdClass
+ {
+ $bluem_config = new stdClass();
+ $bluem_config->environment = 'test';
+ $bluem_config->senderID = 'S12345';
+
+ $bluem_config->brandID = 'BLUEM_BRANDID';
+ $bluem_config->test_accessToken = 'BLUEM_TEST_ACCESS_TOKEN';
+ $bluem_config->IDINBrandID = 'BLUEM_BRANDID';
+ $bluem_config->merchantID = 'BLUEM_MERCHANTID';
+ $bluem_config->merchantReturnURLBase = 'BLUEM_MERCHANTRETURNURLBASE';
+
+ $bluem_config->production_accessToken = "";
+ $bluem_config->expectedReturnStatus = "success";
+ $bluem_config->eMandateReason = "eMandateReason";
+ $bluem_config->sequenceType = "OOFF";
+ $bluem_config->localInstrumentCode = "B2B";
+ return $bluem_config;
+ }
+}
+
diff --git a/tests/Unit/BluemTest.php b/tests/Unit/BluemTest.php
index 8fd67c0..9742fe0 100644
--- a/tests/Unit/BluemTest.php
+++ b/tests/Unit/BluemTest.php
@@ -6,44 +6,85 @@
* with this source code in the file LICENSE.
*/
-namespace Unit;
+namespace Bluem\BluemPHP\Tests\Unit;
use Bluem\BluemPHP\Bluem;
+use Bluem\BluemPHP\Contexts\IdentityContext;
use Bluem\BluemPHP\Exceptions\InvalidBluemConfigurationException;
-use Exception;
+use Bluem\BluemPHP\Interfaces\BluemResponseInterface;
+use Bluem\BluemPHP\Requests\BluemRequest;
+use Bluem\BluemPHP\Responses\ErrorBluemResponse;
use PHPUnit\Framework\TestCase;
+use RuntimeException;
use stdClass;
class BluemTest extends TestCase
{
private Bluem $bluem;
+ /**
+ * @throws InvalidBluemConfigurationException
+ */
protected function setUp(): void
{
- parent::setUp();
+ // Mock the configuration as needed
+ $mockedConfig = $this->getConfig();
+ $this->bluem = new Bluem($mockedConfig);
+ }
+
- $bluem_config = $this->getConfig();
- try {
- $this->bluem = new Bluem(
- $bluem_config
- );
- } catch (Exception $e) {
- $this->fail($e->getMessage());
- }
+ public function testConstructorWithValidConfig(): void
+ {
+ $this->assertInstanceOf(Bluem::class, $this->bluem);
+ }
+
+ public function testConstructorWithInvalidConfig(): void
+ {
+ $this->expectException(InvalidBluemConfigurationException::class);
+ new Bluem(null);
}
- protected function tearDown(): void
+
+ public function testMandateWithValidParameters(): void
{
- //$this->bluem = Bluem;
+ // Mock the expected response
+ $mockedResponse = $this->createMock(BluemResponseInterface::class);
+
+ // Test the Mandate method with valid parameters
+ $response = $this->bluem->Mandate('customer_id', 'order_id', 'mandate_id');
+
+ // Assertions
+ $this->assertInstanceOf(BluemResponseInterface::class, $response);
}
- public function testMandateRequest()
+ public function testMandateWithException(): void
+ {
+ $this->expectException(RuntimeException::class);
+ $this->bluem->Mandate('', '', '');
+ }
+ public function testCreateMandateID(): void
+ {
+ $mandateID = $this->bluem->CreateMandateID('order_id', 'customer_id');
+ $this->assertIsString($mandateID);
+ }
+ public function testPerformRequestWithInvalidXml(): void
{
- $result = true;
- $this->assertEquals(true, $result);
+ // Mock a request that would generate invalid XML
+ $mockBluemRequest = $this->createMock(BluemRequest::class);
+
+ $mockBluemRequest->method('XmlString')
+ ->willReturn('Some invalid aaXML String');
+
+ $mockBluemRequest->method('HttpRequestURL')
+ ->willReturn('https://example.com/api/request');
+ $mockBluemRequest->method('RequestContext')->willReturn(new IdentityContext());
+
+ $result = $this->bluem->PerformRequest($mockBluemRequest);
+ $this->assertInstanceOf(ErrorBluemResponse::class, $result);
}
+ // helper classes
private function getConfig(): stdClass
{
$bluem_config = new stdClass;
diff --git a/validation/EIdentity.xsd b/validation/EIdentity.xsd
index 87c1dd1..5682a79 100644
--- a/validation/EIdentity.xsd
+++ b/validation/EIdentity.xsd
@@ -1,5 +1,5 @@
-
+
@@ -9,8 +9,8 @@
Identity Interface
-
- 2020-MAY-20
+
+ 2023-NOVEMBER-03
@@ -44,6 +44,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -51,14 +61,6 @@
-
-
-
-
-
-
-
-
@@ -105,7 +107,7 @@
-
+
@@ -169,7 +171,7 @@
-
+
@@ -182,13 +184,6 @@
-
-
-
-
-
-
-
@@ -337,7 +332,7 @@
-
+
@@ -346,7 +341,7 @@
-
+
@@ -375,7 +370,6 @@
-
@@ -496,9 +490,7 @@
-
-
-
+
@@ -531,7 +523,7 @@
-
+
@@ -748,14 +740,7 @@
-
-
-
-
-
-
-
-
+
diff --git a/validation/EMandate.xsd b/validation/EMandate.xsd
index fd2fc15..329b720 100644
--- a/validation/EMandate.xsd
+++ b/validation/EMandate.xsd
@@ -1,5 +1,5 @@
-
+
@@ -9,8 +9,8 @@
EMandate Interface
-
- 2020-MAY-20
+
+ 2022-DECEMBER-12
@@ -48,6 +48,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -86,7 +96,7 @@
-
+
@@ -161,9 +171,6 @@
-
-
-
@@ -184,8 +191,9 @@
-
-
+
+
+
@@ -561,17 +569,9 @@
-
-
-
-
-
-
-
-
+
+
-
-
-
+
\ No newline at end of file
diff --git a/validation/EPayment.xsd b/validation/EPayment.xsd
index 361d7c8..65a8b5c 100644
--- a/validation/EPayment.xsd
+++ b/validation/EPayment.xsd
@@ -1,5 +1,5 @@
-
+
@@ -9,8 +9,8 @@
EPayment Interface
-
- 2020-NOVEMBER-26
+
+ 2023-JANUARY-10
@@ -129,9 +129,6 @@
-
-
-
@@ -180,14 +177,7 @@
-
-
-
+
@@ -288,6 +278,7 @@
+
@@ -330,7 +321,10 @@
+
+
+
@@ -468,59 +462,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
@@ -528,20 +472,17 @@
-
-
+
-
-
-
+
-
-
-
+
+
+
+
+
+
@@ -549,14 +490,13 @@
+
+
+
+
-
-
-
-
-
@@ -566,7 +506,10 @@
+
+
+
@@ -600,15 +543,35 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -721,20 +684,8 @@
-
-
-
-
-
-
+
diff --git a/validation/IBANCheck.xsd b/validation/IBANCheck.xsd
index e222564..7cdcc5c 100644
--- a/validation/IBANCheck.xsd
+++ b/validation/IBANCheck.xsd
@@ -52,15 +52,6 @@
-
-
-
-
-
-
-
-
-
@@ -86,7 +77,7 @@
-
+
@@ -133,7 +124,16 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -248,7 +248,7 @@
-
+
@@ -269,7 +269,7 @@
-
+
@@ -286,6 +286,7 @@
+