diff --git a/Gruntfile.js b/Gruntfile.js index 9fbdc4dc06..208f3b8b5e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -208,4 +208,8 @@ module.exports = function ( grunt ) { // Build task(s). grunt.registerTask( 'prep', [ 'clean', 'force:checktextdomain' ] ); + grunt.registerTask( 'build', [ 'clean', 'pro', 'lite' ] ); + grunt.registerTask( 'pro', [ 'copy:pro', 'compress:pro' ] ); + grunt.registerTask( 'lite', [ 'copy:lite', 'replace:pro' ] ); + grunt.registerTask( 'repo', [ 'clean:repo', 'copy:repo', 'replace:repo' ] ); }; diff --git a/bin/update-blocks.sh b/bin/update-blocks.sh deleted file mode 100644 index 05e491685b..0000000000 --- a/bin/update-blocks.sh +++ /dev/null @@ -1,30 +0,0 @@ -# Remove anything that already exists. -rm -rf includes/blocks - -# Initial clone -git clone git@github.com:awesomemotive/edd-blocks includes/blocks - -# Install dependencies -cd includes/blocks -composer install --no-dev -npm install && npm run build - -git rev-parse HEAD > ../.blocks-hash - -# Clean up files for distribution. -# @todo Maybe use git archive? However composer.json would -# need to be removed from .gitattributes export-ignore -rm -rf languages -rm -rf .git -rm -rf .github -rm -rf vendor -rm .gitattributes -rm .gitignore -rm .editorconfig -rm package-lock.json -rm readme.md -rm readme.txt -rm composer.lock - -# Reset cwd -cd ../../ diff --git a/composer.json b/composer.json index 1874005ab7..ecbbc79cf7 100755 --- a/composer.json +++ b/composer.json @@ -9,10 +9,7 @@ "issues": "https://easydigitaldownloads.com/support" }, "config": { - "platform-check": false, - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - } + "platform-check": false }, "require": { "nesbot/carbon": "^2.69.0", @@ -24,11 +21,7 @@ "yoast/phpunit-polyfills": "^1.0.5", "yoast/wp-test-utils": "^1.0", "codedungeon/phpunit-result-printer": "dev-master", - "coenjacobs/mozart": "dev-master", - "wp-coding-standards/wpcs": "dev-develop", - "squizlabs/php_codesniffer": "^3.7.2", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1", - "phpcompatibility/phpcompatibility-wp": "^2.1.4" + "coenjacobs/mozart": "^0.7.1" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/composer.lock b/composer.lock index 33fe458114..66bce901f4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ae501374d2957404094ff57456d85a10", + "content-hash": "b78a6d80b1dd0a3b68ce7452892b6400", "packages": [ { "name": "carbonphp/carbon-doctrine-types", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "a31d3358a2a5d6ae947df1691d1f321418a5f3d5" + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/a31d3358a2a5d6ae947df1691d1f321418a5f3d5", - "reference": "a31d3358a2a5d6ae947df1691d1f321418a5f3d5", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", "shasum": "" }, "require": { @@ -57,7 +57,7 @@ ], "support": { "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.1.0" + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" }, "funding": [ { @@ -73,20 +73,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T15:33:53+00:00" + "time": "2024-02-09T16:56:22+00:00" }, { "name": "nesbot/carbon", - "version": "2.72.3", + "version": "2.72.5", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", - "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed", + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed", "shasum": "" }, "require": { @@ -120,8 +120,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" }, "laravel": { "providers": [ @@ -180,7 +180,7 @@ "type": "tidelift" } ], - "time": "2024-01-25T10:35:09+00:00" + "time": "2024-06-03T19:18:41+00:00" }, { "name": "psr/clock", @@ -292,16 +292,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { @@ -310,7 +310,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -339,7 +339,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -355,20 +355,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", "shasum": "" }, "require": { @@ -419,7 +419,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" }, "funding": [ { @@ -435,20 +435,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", "shasum": "" }, "require": { @@ -499,7 +499,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" }, "funding": [ { @@ -515,20 +515,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/translation", - "version": "v6.4.3", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "637c51191b6b184184bbf98937702bcf554f7d04" + "reference": "94041203f8ac200ae9e7c6a18fa6137814ccecc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/637c51191b6b184184bbf98937702bcf554f7d04", - "reference": "637c51191b6b184184bbf98937702bcf554f7d04", + "url": "https://api.github.com/repos/symfony/translation/zipball/94041203f8ac200ae9e7c6a18fa6137814ccecc9", + "reference": "94041203f8ac200ae9e7c6a18fa6137814ccecc9", "shasum": "" }, "require": { @@ -594,7 +594,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.3" + "source": "https://github.com/symfony/translation/tree/v6.4.10" }, "funding": [ { @@ -610,20 +610,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T13:11:52+00:00" + "time": "2024-07-26T12:30:32+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.1", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "06450585bf65e978026bda220cdebca3f867fde7" + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", - "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", "shasum": "" }, "require": { @@ -632,7 +632,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -672,7 +672,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" }, "funding": [ { @@ -688,7 +688,7 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2024-04-18T09:32:20+00:00" } ], "packages-dev": [ @@ -976,16 +976,16 @@ }, { "name": "coenjacobs/mozart", - "version": "dev-master", + "version": "0.7.1", "source": { "type": "git", "url": "https://github.com/coenjacobs/mozart.git", - "reference": "4f9d00fbc3b3e39f4e334434fe058e516ad82291" + "reference": "dbcdeb992d20d9c8914eef090f9a0d684bb1102c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/coenjacobs/mozart/zipball/4f9d00fbc3b3e39f4e334434fe058e516ad82291", - "reference": "4f9d00fbc3b3e39f4e334434fe058e516ad82291", + "url": "https://api.github.com/repos/coenjacobs/mozart/zipball/dbcdeb992d20d9c8914eef090f9a0d684bb1102c", + "reference": "dbcdeb992d20d9c8914eef090f9a0d684bb1102c", "shasum": "" }, "require": { @@ -996,13 +996,10 @@ }, "require-dev": { "mheap/phpunit-github-actions-printer": "^1.4", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-deprecation-rules": "^1.0", "phpunit/phpunit": "^8.5", - "squizlabs/php_codesniffer": "^3.5" + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" }, - "default-branch": true, "bin": [ "bin/mozart" ], @@ -1025,7 +1022,7 @@ "description": "Composes all dependencies as a package inside a WordPress plugin", "support": { "issues": "https://github.com/coenjacobs/mozart/issues", - "source": "https://github.com/coenjacobs/mozart/tree/master" + "source": "https://github.com/coenjacobs/mozart/tree/0.7.1" }, "funding": [ { @@ -1033,82 +1030,7 @@ "type": "github" } ], - "time": "2022-10-22T08:08:20+00:00" - }, - { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", - "source": { - "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" - }, - "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" - }, - "autoload": { - "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", - "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" - ], - "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" - }, - "time": "2022-02-04T12:51:07+00:00" + "time": "2021-02-02T21:37:03+00:00" }, { "name": "doctrine/instantiator", @@ -1509,16 +1431,16 @@ }, { "name": "mockery/mockery", - "version": "1.6.7", + "version": "1.6.12", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", - "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", "shasum": "" }, "require": { @@ -1530,8 +1452,8 @@ "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.6.10", - "symplify/easy-coding-standard": "^12.0.8" + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" }, "type": "library", "autoload": { @@ -1588,20 +1510,20 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2023-12-10T02:24:34+00:00" + "time": "2024-05-16T03:13:13+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { @@ -1609,11 +1531,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -1639,7 +1562,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, "funding": [ { @@ -1647,24 +1570,25 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-06-12T14:39:25+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", @@ -1705,9 +1629,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", @@ -1760,511 +1690,18 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "php-stubs/wordpress-stubs", - "version": "v6.4.1", - "source": { - "type": "git", - "url": "https://github.com/php-stubs/wordpress-stubs.git", - "reference": "6d6063cf9464a306ca2a0529705d41312b08500b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/6d6063cf9464a306ca2a0529705d41312b08500b", - "reference": "6d6063cf9464a306ca2a0529705d41312b08500b", - "shasum": "" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "nikic/php-parser": "^4.13", - "php": "^7.4 || ~8.0.0", - "php-stubs/generator": "^0.8.3", - "phpdocumentor/reflection-docblock": "^5.3", - "phpstan/phpstan": "^1.10.12", - "phpunit/phpunit": "^9.5", - "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^0.8" - }, - "suggest": { - "paragonie/sodium_compat": "Pure PHP implementation of libsodium", - "symfony/polyfill-php80": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "szepeviktor/phpstan-wordpress": "WordPress extensions for PHPStan" - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "WordPress function and class declaration stubs for static analysis.", - "homepage": "https://github.com/php-stubs/wordpress-stubs", - "keywords": [ - "PHPStan", - "static analysis", - "wordpress" - ], - "support": { - "issues": "https://github.com/php-stubs/wordpress-stubs/issues", - "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.4.1" - }, - "time": "2023-11-10T00:33:47+00:00" - }, - { - "name": "phpcompatibility/php-compatibility", - "version": "9.3.5", - "source": { - "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" - }, - "conflict": { - "squizlabs/php_codesniffer": "2.6.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" - }, - "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." - }, - "type": "phpcodesniffer-standard", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Wim Godden", - "homepage": "https://github.com/wimg", - "role": "lead" - }, - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl", - "role": "lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" - } - ], - "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", - "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", - "keywords": [ - "compatibility", - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibility" - }, - "time": "2019-12-27T09:44:58+00:00" - }, - { - "name": "phpcompatibility/phpcompatibility-paragonie", - "version": "1.3.2", - "source": { - "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", - "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", - "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", - "shasum": "" - }, - "require": { - "phpcompatibility/php-compatibility": "^9.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", - "paragonie/random_compat": "dev-master", - "paragonie/sodium_compat": "dev-master" - }, - "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." - }, - "type": "phpcodesniffer-standard", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Wim Godden", - "role": "lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "lead" - } - ], - "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.", - "homepage": "http://phpcompatibility.com/", - "keywords": [ - "compatibility", - "paragonie", - "phpcs", - "polyfill", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie" - }, - "time": "2022-10-25T01:46:02+00:00" - }, - { - "name": "phpcompatibility/phpcompatibility-wp", - "version": "2.1.4", - "source": { - "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", - "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5", - "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5", - "shasum": "" - }, - "require": { - "phpcompatibility/php-compatibility": "^9.0", - "phpcompatibility/phpcompatibility-paragonie": "^1.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7" - }, - "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." - }, - "type": "phpcodesniffer-standard", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Wim Godden", - "role": "lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "lead" - } - ], - "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.", - "homepage": "http://phpcompatibility.com/", - "keywords": [ - "compatibility", - "phpcs", - "standards", - "static analysis", - "wordpress" - ], - "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP" - }, - "time": "2022-10-24T09:00:36+00:00" - }, - { - "name": "phpcsstandards/phpcsextra", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHPCSExtra.git", - "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", - "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "phpcsstandards/phpcsutils": "^1.0.9", - "squizlabs/php_codesniffer": "^3.8.0" - }, - "require-dev": { - "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcsstandards/phpcsdevcs": "^1.1.6", - "phpcsstandards/phpcsdevtools": "^1.2.1", - "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-stable": "1.x-dev", - "dev-develop": "1.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl", - "role": "lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHPCSExtra/graphs/contributors" - } - ], - "description": "A collection of sniffs and standards for use with PHP_CodeSniffer.", - "keywords": [ - "PHP_CodeSniffer", - "phpcbf", - "phpcodesniffer-standard", - "phpcs", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHPCSStandards/PHPCSExtra/issues", - "security": "https://github.com/PHPCSStandards/PHPCSExtra/security/policy", - "source": "https://github.com/PHPCSStandards/PHPCSExtra" - }, - "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": "2023-12-08T16:49:07+00:00" - }, - { - "name": "phpcsstandards/phpcsutils", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", - "reference": "908247bc65010c7b7541a9551e002db12e9dae70" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/908247bc65010c7b7541a9551e002db12e9dae70", - "reference": "908247bc65010c7b7541a9551e002db12e9dae70", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", - "php": ">=5.4", - "squizlabs/php_codesniffer": "^3.8.0 || 4.0.x-dev@dev" - }, - "require-dev": { - "ext-filter": "*", - "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcsstandards/phpcsdevcs": "^1.1.6", - "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-stable": "1.x-dev", - "dev-develop": "1.x-dev" - } - }, - "autoload": { - "classmap": [ - "PHPCSUtils/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl", - "role": "lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors" - } - ], - "description": "A suite of utility functions for use with PHP_CodeSniffer", - "homepage": "https://phpcsutils.com/", - "keywords": [ - "PHP_CodeSniffer", - "phpcbf", - "phpcodesniffer-standard", - "phpcs", - "phpcs3", - "standards", - "static analysis", - "tokens", - "utility" - ], - "support": { - "docs": "https://phpcsutils.com/", - "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", - "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy", - "source": "https://github.com/PHPCSStandards/PHPCSUtils" - }, - "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": "2023-12-08T14:50:00+00:00" - }, - { - "name": "phpstan/extension-installer", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.0", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.9.0" - }, - "require-dev": { - "composer/composer": "^2.0", - "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" - }, - "type": "composer-plugin", - "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin" - }, - "autoload": { - "psr-4": { - "PHPStan\\ExtensionInstaller\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Composer plugin for automatic installation of PHPStan extensions", - "support": { - "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" - }, - "time": "2023-05-24T08:59:17+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.10.57", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", - "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "keywords": [ - "dev", - "static analysis" - ], - "support": { - "docs": "https://phpstan.org/user-guide/getting-started", - "forum": "https://github.com/phpstan/phpstan/discussions", - "issues": "https://github.com/phpstan/phpstan/issues", - "security": "https://github.com/phpstan/phpstan/security/policy", - "source": "https://github.com/phpstan/phpstan-src" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2024-01-24T11:51:34+00:00" - }, { "name": "phpunit/php-code-coverage", - "version": "7.0.15", + "version": "7.0.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "819f92bba8b001d4363065928088de22f25a3a48" + "reference": "40a4ed114a4aea5afd6df8d0f0c9cd3033097f66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", - "reference": "819f92bba8b001d4363065928088de22f25a3a48", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/40a4ed114a4aea5afd6df8d0f0c9cd3033097f66", + "reference": "40a4ed114a4aea5afd6df8d0f0c9cd3033097f66", "shasum": "" }, "require": { @@ -2316,7 +1753,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.17" }, "funding": [ { @@ -2324,20 +1761,20 @@ "type": "github" } ], - "time": "2021-07-26T12:20:09+00:00" + "time": "2024-03-02T06:09:37+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.5", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" + "reference": "69deeb8664f611f156a924154985fbd4911eb36b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/69deeb8664f611f156a924154985fbd4911eb36b", + "reference": "69deeb8664f611f156a924154985fbd4911eb36b", "shasum": "" }, "require": { @@ -2376,7 +1813,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.6" }, "funding": [ { @@ -2384,7 +1821,7 @@ "type": "github" } ], - "time": "2021-12-02T12:42:26+00:00" + "time": "2024-03-01T13:39:50+00:00" }, { "name": "phpunit/php-text-template", @@ -2433,16 +1870,16 @@ }, { "name": "phpunit/php-timer", - "version": "2.1.3", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a691211e94ff39a34811abd521c31bd5b305b0bb", + "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb", "shasum": "" }, "require": { @@ -2480,7 +1917,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.4" }, "funding": [ { @@ -2488,7 +1925,7 @@ "type": "github" } ], - "time": "2020-11-30T08:20:02+00:00" + "time": "2024-03-01T13:42:41+00:00" }, { "name": "phpunit/php-token-stream", @@ -2552,42 +1989,42 @@ }, { "name": "phpunit/phpunit", - "version": "8.5.36", + "version": "8.5.39", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9652df58e06a681429d8cfdaec3c43d6de581d5a" + "reference": "172ba97bcf97ae6ef86ca256adf77aece8a143fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9652df58e06a681429d8cfdaec3c43d6de581d5a", - "reference": "9652df58e06a681429d8cfdaec3c43d6de581d5a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/172ba97bcf97ae6ef86ca256adf77aece8a143fe", + "reference": "172ba97bcf97ae6ef86ca256adf77aece8a143fe", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.5.0", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.0", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=7.2", - "phpunit/php-code-coverage": "^7.0.12", - "phpunit/php-file-iterator": "^2.0.4", + "phpunit/php-code-coverage": "^7.0.17", + "phpunit/php-file-iterator": "^2.0.6", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", + "phpunit/php-timer": "^2.1.4", "sebastian/comparator": "^3.0.5", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.3", - "sebastian/exporter": "^3.1.5", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", + "sebastian/diff": "^3.0.6", + "sebastian/environment": "^4.2.5", + "sebastian/exporter": "^3.1.6", + "sebastian/global-state": "^3.0.5", + "sebastian/object-enumerator": "^3.0.5", + "sebastian/resource-operations": "^2.0.3", + "sebastian/type": "^1.1.5", "sebastian/version": "^2.0.1" }, "suggest": { @@ -2630,7 +2067,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.36" + "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.39" }, "funding": [ { @@ -2646,7 +2083,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:52:15+00:00" + "time": "2024-07-10T11:43:00+00:00" }, { "name": "psr/container", @@ -2703,16 +2140,16 @@ }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54", + "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54", "shasum": "" }, "require": { @@ -2746,7 +2183,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.3" }, "funding": [ { @@ -2754,7 +2191,7 @@ "type": "github" } ], - "time": "2020-11-30T08:15:22+00:00" + "time": "2024-03-01T13:45:45+00:00" }, { "name": "sebastian/comparator", @@ -2832,16 +2269,16 @@ }, { "name": "sebastian/diff", - "version": "3.0.4", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae" + "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6296a0c086dd0117c1b78b059374d7fcbe7545ae", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/98ff311ca519c3aa73ccd3de053bdb377171d7b6", + "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6", "shasum": "" }, "require": { @@ -2886,7 +2323,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.6" }, "funding": [ { @@ -2894,20 +2331,20 @@ "type": "github" } ], - "time": "2023-05-07T05:30:20+00:00" + "time": "2024-03-02T06:16:36+00:00" }, { "name": "sebastian/environment", - "version": "4.2.4", + "version": "4.2.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "56932f6049a0482853056ffd617c91ffcc754205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/56932f6049a0482853056ffd617c91ffcc754205", + "reference": "56932f6049a0482853056ffd617c91ffcc754205", "shasum": "" }, "require": { @@ -2949,7 +2386,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.5" }, "funding": [ { @@ -2957,24 +2394,24 @@ "type": "github" } ], - "time": "2020-11-30T07:53:42+00:00" + "time": "2024-03-01T13:49:59+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.5", + "version": "3.1.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" + "reference": "1939bc8fd1d39adcfa88c5b35335910869214c56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1939bc8fd1d39adcfa88c5b35335910869214c56", + "reference": "1939bc8fd1d39adcfa88c5b35335910869214c56", "shasum": "" }, "require": { - "php": ">=7.0", + "php": ">=7.2", "sebastian/recursion-context": "^3.0" }, "require-dev": { @@ -3026,7 +2463,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.6" }, "funding": [ { @@ -3034,20 +2471,20 @@ "type": "github" } ], - "time": "2022-09-14T06:00:17+00:00" + "time": "2024-03-02T06:21:38+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.3", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "66783ce213de415b451b904bfef9dda0cf9aeae0" + "reference": "91c7c47047a971f02de57ed6f040087ef110c5d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/66783ce213de415b451b904bfef9dda0cf9aeae0", - "reference": "66783ce213de415b451b904bfef9dda0cf9aeae0", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/91c7c47047a971f02de57ed6f040087ef110c5d9", + "reference": "91c7c47047a971f02de57ed6f040087ef110c5d9", "shasum": "" }, "require": { @@ -3090,7 +2527,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.5" }, "funding": [ { @@ -3098,20 +2535,20 @@ "type": "github" } ], - "time": "2023-08-02T09:23:32+00:00" + "time": "2024-03-02T06:13:16+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.4", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "reference": "ac5b293dba925751b808e02923399fb44ff0d541" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/ac5b293dba925751b808e02923399fb44ff0d541", + "reference": "ac5b293dba925751b808e02923399fb44ff0d541", "shasum": "" }, "require": { @@ -3147,7 +2584,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.5" }, "funding": [ { @@ -3155,20 +2592,20 @@ "type": "github" } ], - "time": "2020-11-30T07:40:27+00:00" + "time": "2024-03-01T13:54:02+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "1d439c229e61f244ff1f211e5c99737f90c67def" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/1d439c229e61f244ff1f211e5c99737f90c67def", + "reference": "1d439c229e61f244ff1f211e5c99737f90c67def", "shasum": "" }, "require": { @@ -3202,7 +2639,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.3" }, "funding": [ { @@ -3210,20 +2647,20 @@ "type": "github" } ], - "time": "2020-11-30T07:37:18+00:00" + "time": "2024-03-01T13:56:04+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/9bfd3c6f1f08c026f542032dfb42813544f7d64c", + "reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c", "shasum": "" }, "require": { @@ -3265,7 +2702,7 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.2" }, "funding": [ { @@ -3273,20 +2710,20 @@ "type": "github" } ], - "time": "2020-11-30T07:34:24+00:00" + "time": "2024-03-01T14:07:30+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/72a7f7674d053d548003b16ff5a106e7e0e06eee", + "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee", "shasum": "" }, "require": { @@ -3316,8 +2753,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/2.0.2" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.3" }, "funding": [ { @@ -3325,20 +2761,20 @@ "type": "github" } ], - "time": "2020-11-30T07:30:19+00:00" + "time": "2024-03-01T13:59:09+00:00" }, { "name": "sebastian/type", - "version": "1.1.4", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" + "reference": "18f071c3a29892b037d35e6b20ddf3ea39b42874" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/18f071c3a29892b037d35e6b20ddf3ea39b42874", + "reference": "18f071c3a29892b037d35e6b20ddf3ea39b42874", "shasum": "" }, "require": { @@ -3373,7 +2809,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + "source": "https://github.com/sebastianbergmann/type/tree/1.1.5" }, "funding": [ { @@ -3381,7 +2817,7 @@ "type": "github" } ], - "time": "2020-11-30T07:25:11+00:00" + "time": "2024-03-01T14:04:07+00:00" }, { "name": "sebastian/version", @@ -3430,86 +2866,6 @@ }, "time": "2016-10-03T07:35:21+00:00" }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.8.1", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", - "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" - }, - "bin": [ - "bin/phpcbf", - "bin/phpcs" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "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/PHPCSStandards/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards", - "static analysis" - ], - "support": { - "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" - }, - "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-01-11T20:47:48+00:00" - }, { "name": "stevegrunwell/phpunit-markup-assertions", "version": "v1.4.0", @@ -3568,16 +2924,16 @@ }, { "name": "symfony/console", - "version": "v5.4.35", + "version": "v5.4.42", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931" + "reference": "cef62396a0477e94fc52e87a17c6e5c32e226b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/dbdf6adcb88d5f83790e1efb57ef4074309d3931", - "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931", + "url": "https://api.github.com/repos/symfony/console/zipball/cef62396a0477e94fc52e87a17c6e5c32e226b7f", + "reference": "cef62396a0477e94fc52e87a17c6e5c32e226b7f", "shasum": "" }, "require": { @@ -3647,7 +3003,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.35" + "source": "https://github.com/symfony/console/tree/v5.4.42" }, "funding": [ { @@ -3663,20 +3019,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:28:09+00:00" + "time": "2024-07-26T12:21:55+00:00" }, { "name": "symfony/finder", - "version": "v5.4.35", + "version": "v5.4.42", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "abe6d6f77d9465fed3cd2d029b29d03b56b56435" + "reference": "0724c51fa067b198e36506d2864e09a52180998a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/abe6d6f77d9465fed3cd2d029b29d03b56b56435", - "reference": "abe6d6f77d9465fed3cd2d029b29d03b56b56435", + "url": "https://api.github.com/repos/symfony/finder/zipball/0724c51fa067b198e36506d2864e09a52180998a", + "reference": "0724c51fa067b198e36506d2864e09a52180998a", "shasum": "" }, "require": { @@ -3710,7 +3066,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.35" + "source": "https://github.com/symfony/finder/tree/v5.4.42" }, "funding": [ { @@ -3726,20 +3082,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-07-22T08:53:29+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "reference": "0424dff1c58f028c451efff2045f5d92410bd540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540", "shasum": "" }, "require": { @@ -3789,7 +3145,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" }, "funding": [ { @@ -3805,20 +3161,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", "shasum": "" }, "require": { @@ -3867,7 +3223,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" }, "funding": [ { @@ -3883,20 +3239,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", "shasum": "" }, "require": { @@ -3948,7 +3304,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" }, "funding": [ { @@ -3964,20 +3320,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "21bd091060673a1177ae842c0ef8fe30893114d2" + "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2", - "reference": "21bd091060673a1177ae842c0ef8fe30893114d2", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/ec444d3f3f6505bb28d11afa41e75faadebc10a1", + "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1", "shasum": "" }, "require": { @@ -4024,7 +3380,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.30.0" }, "funding": [ { @@ -4040,25 +3396,26 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.1", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^1.1|^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -4066,7 +3423,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4106,7 +3463,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -4122,20 +3479,20 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/string", - "version": "v6.4.3", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7a14736fb179876575464e4658fce0c304e8c15b" + "reference": "ccf9b30251719567bfd46494138327522b9a9446" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7a14736fb179876575464e4658fce0c304e8c15b", - "reference": "7a14736fb179876575464e4658fce0c304e8c15b", + "url": "https://api.github.com/repos/symfony/string/zipball/ccf9b30251719567bfd46494138327522b9a9446", + "reference": "ccf9b30251719567bfd46494138327522b9a9446", "shasum": "" }, "require": { @@ -4192,7 +3549,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.3" + "source": "https://github.com/symfony/string/tree/v6.4.10" }, "funding": [ { @@ -4208,20 +3565,20 @@ "type": "tidelift" } ], - "time": "2024-01-25T09:26:29+00:00" + "time": "2024-07-22T10:21:14+00:00" }, { "name": "symfony/yaml", - "version": "v5.4.35", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4" + "reference": "81cad0ceab3d61fe14fe941ff18a230ac9c80f83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e78db7f5c70a21f0417a31f414c4a95fe76c07e4", - "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4", + "url": "https://api.github.com/repos/symfony/yaml/zipball/81cad0ceab3d61fe14fe941ff18a230ac9c80f83", + "reference": "81cad0ceab3d61fe14fe941ff18a230ac9c80f83", "shasum": "" }, "require": { @@ -4267,7 +3624,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.35" + "source": "https://github.com/symfony/yaml/tree/v5.4.40" }, "funding": [ { @@ -4283,82 +3640,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" - }, - { - "name": "szepeviktor/phpstan-wordpress", - "version": "v1.3.2", - "source": { - "type": "git", - "url": "https://github.com/szepeviktor/phpstan-wordpress.git", - "reference": "b8516ed6bab7ec50aae981698ce3f67f1be2e45a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/b8516ed6bab7ec50aae981698ce3f67f1be2e45a", - "reference": "b8516ed6bab7ec50aae981698ce3f67f1be2e45a", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "php-stubs/wordpress-stubs": "^4.7 || ^5.0 || ^6.0", - "phpstan/phpstan": "^1.10.30", - "symfony/polyfill-php73": "^1.12.0" - }, - "require-dev": { - "composer/composer": "^2.1.14", - "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpstan/phpstan-strict-rules": "^1.2", - "phpunit/phpunit": "^8.0 || ^9.0", - "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^0.8" - }, - "suggest": { - "swissspidy/phpstan-no-private": "Detect usage of internal core functions, classes and methods" - }, - "type": "phpstan-extension", - "extra": { - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "SzepeViktor\\PHPStan\\WordPress\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "WordPress extensions for PHPStan", - "keywords": [ - "PHPStan", - "code analyse", - "code analysis", - "static analysis", - "wordpress" - ], - "support": { - "issues": "https://github.com/szepeviktor/phpstan-wordpress/issues", - "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v1.3.2" - }, - "time": "2023-10-16T17:23:56+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -4387,7 +3682,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.2" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -4395,87 +3690,20 @@ "type": "github" } ], - "time": "2023-11-20T00:12:19+00:00" - }, - { - "name": "wp-coding-standards/wpcs", - "version": "dev-develop", - "source": { - "type": "git", - "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", - "reference": "eaa70fe99e8aa5f7fc444b67ae7b8401688f2d5c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/eaa70fe99e8aa5f7fc444b67ae7b8401688f2d5c", - "reference": "eaa70fe99e8aa5f7fc444b67ae7b8401688f2d5c", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "ext-libxml": "*", - "ext-tokenizer": "*", - "ext-xmlreader": "*", - "php": ">=5.4", - "phpcsstandards/phpcsextra": "^1.2.1", - "phpcsstandards/phpcsutils": "^1.0.9", - "squizlabs/php_codesniffer": "^3.8.0" - }, - "require-dev": { - "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^9.0", - "phpcsstandards/phpcsdevtools": "^1.2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" - }, - "suggest": { - "ext-iconv": "For improved results", - "ext-mbstring": "For improved results" - }, - "default-branch": true, - "type": "phpcodesniffer-standard", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Contributors", - "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", - "keywords": [ - "phpcs", - "standards", - "static analysis", - "wordpress" - ], - "support": { - "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues", - "source": "https://github.com/WordPress/WordPress-Coding-Standards", - "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki" - }, - "funding": [ - { - "url": "https://opencollective.com/php_codesniffer", - "type": "custom" - } - ], - "time": "2024-01-03T15:33:57+00:00" + "time": "2024-03-03T12:36:25+00:00" }, { "name": "yoast/phpunit-polyfills", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/Yoast/PHPUnit-Polyfills.git", - "reference": "224e4a1329c03d8bad520e3fc4ec980034a4b212" + "reference": "a0f7d708794a738f328d7b6c94380fd1d6c40446" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/224e4a1329c03d8bad520e3fc4ec980034a4b212", - "reference": "224e4a1329c03d8bad520e3fc4ec980034a4b212", + "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/a0f7d708794a738f328d7b6c94380fd1d6c40446", + "reference": "a0f7d708794a738f328d7b6c94380fd1d6c40446", "shasum": "" }, "require": { @@ -4483,7 +3711,9 @@ "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "require-dev": { - "yoast/yoastcs": "^2.3.0" + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "yoast/yoastcs": "^3.1.0" }, "type": "library", "extra": { @@ -4520,9 +3750,10 @@ ], "support": { "issues": "https://github.com/Yoast/PHPUnit-Polyfills/issues", + "security": "https://github.com/Yoast/PHPUnit-Polyfills/security/policy", "source": "https://github.com/Yoast/PHPUnit-Polyfills" }, - "time": "2023-08-19T14:25:08+00:00" + "time": "2024-04-05T16:01:51+00:00" }, { "name": "yoast/wp-test-utils", @@ -4597,13 +3828,11 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { - "codedungeon/phpunit-result-printer": 20, - "coenjacobs/mozart": 20, - "wp-coding-standards/wpcs": 20 + "codedungeon/phpunit-result-printer": 20 }, "prefer-stable": true, "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } diff --git a/easy-digital-downloads.php b/easy-digital-downloads.php index d84938e821..52e2d9de4c 100755 --- a/easy-digital-downloads.php +++ b/easy-digital-downloads.php @@ -1,11 +1,11 @@ add_notice( + array( + 'id' => 'edd-webhooks-created', + 'message' => __( 'Webhooks have been created for the Stripe gateway.', 'easy-digital-downloads' ), + ) + ); + break; + + case 'stripe_webhooks_error': + $this->add_notice( + array( + 'id' => 'edd-webhooks-error', + 'message' => __( 'There was an error creating webhooks for the Stripe gateway.', 'easy-digital-downloads' ), + 'class' => 'error', + ) + ); + break; } } @@ -937,6 +956,23 @@ private function add_user_action_notices( $notice = '' ) { ) ); break; + case 'order_recalculated': + $this->add_notice( + array( + 'id' => 'edd-order-recalculated', + 'message' => __( 'The order values have been recalculated.', 'easy-digital-downloads' ), + ) + ); + break; + case 'order_not_recalculated': + $this->add_notice( + array( + 'id' => 'edd-order-not-recalculated', + 'message' => __( 'The order values could not be recalculated.', 'easy-digital-downloads' ), + 'class' => 'error', + ) + ); + break; } } @@ -1034,6 +1070,15 @@ private function add_user_action_notices( $notice = '' ) { ) ); } + + if ( current_user_can( 'edit_users' ) && 'capabilities_reset' === $notice ) { + $this->add_notice( + array( + 'id' => 'edd-capabilities-reset', + 'message' => __( 'The user capabilities for Easy Digital Downloads have been reset.', 'easy-digital-downloads' ), + ) + ); + } } /** diff --git a/includes/admin/import/class-batch-import-downloads.php b/includes/admin/import/class-batch-import-downloads.php index c6281a416d..ac5c0bc980 100644 --- a/includes/admin/import/class-batch-import-downloads.php +++ b/includes/admin/import/class-batch-import-downloads.php @@ -11,9 +11,11 @@ * @since 2.6 */ -// Exit if accessed directly +// Exit if accessed directly. defined( 'ABSPATH' ) || exit; +use EDD\Utils\FileSystem; + /** * EDD_Batch_Downloads_Import Class * @@ -29,7 +31,7 @@ class EDD_Batch_Downloads_Import extends EDD_Batch_Import { */ public function init() { - // Set up default field map values + // Set up default field map values. $this->field_mapping = array( 'post_title' => '', 'post_name' => '', @@ -47,7 +49,7 @@ public function init() { 'sales' => '', 'featured_image' => '', 'download_limit' => '', - 'notes' => '' + 'notes' => '', ); } @@ -68,30 +70,30 @@ public function process_step() { $i = 1; $offset = $this->step > 1 ? ( $this->per_step * ( $this->step - 1 ) ) : 0; - if( $offset > $this->total ) { + if ( $offset > $this->total ) { $this->done = true; // Delete the uploaded CSV file. unlink( $this->file ); } - if( ! $this->done && $this->csv ) { + if ( ! $this->done && $this->csv ) { $more = true; - foreach( $this->csv as $key => $row ) { + foreach ( $this->csv as $key => $row ) { - // Skip all rows until we pass our offset - if( $key + 1 <= $offset ) { + // Skip all rows until we pass our offset. + if ( $key + 1 <= $offset ) { continue; } - // Done with this batch - if( $i > $this->per_step ) { + // Done with this batch. + if ( $i > $this->per_step ) { break; } - // Import Download + // Import Download. $args = array( 'post_type' => 'download', 'post_title' => '', @@ -100,7 +102,7 @@ public function process_step() { 'post_author' => '', 'post_date' => '', 'post_content' => '', - 'post_excerpt' => '' + 'post_excerpt' => '', ); foreach ( $args as $key => $field ) { @@ -110,44 +112,42 @@ public function process_step() { } if ( empty( $args['post_author'] ) ) { - $user = wp_get_current_user(); - $args['post_author'] = $user->ID; - } else { - - // Check all forms of possible user inputs, email, ID, login. - if ( is_email( $args['post_author'] ) ) { - $user = get_user_by( 'email', $args['post_author'] ); - } elseif ( is_numeric( $args['post_author'] ) ) { - $user = get_user_by( 'ID', $args['post_author'] ); - } else { - $user = get_user_by( 'login', $args['post_author'] ); - } - - // If we don't find one, resort to the logged in user. - if ( false === $user ) { - $user = wp_get_current_user(); - } - - $args['post_author'] = $user->ID; - } - - // Format the date properly + $user = wp_get_current_user(); + $args['post_author'] = $user->ID; + } else { + + // Check all forms of possible user inputs, email, ID, login. + if ( is_email( $args['post_author'] ) ) { + $user = get_user_by( 'email', $args['post_author'] ); + } elseif ( is_numeric( $args['post_author'] ) ) { + $user = get_user_by( 'ID', $args['post_author'] ); + } else { + $user = get_user_by( 'login', $args['post_author'] ); + } + + // If we don't find one, resort to the logged in user. + if ( false === $user ) { + $user = wp_get_current_user(); + } + + $args['post_author'] = $user->ID; + } + + // Format the date properly. if ( ! empty( $args['post_date'] ) ) { $timestamp = strtotime( $args['post_date'], current_time( 'timestamp' ) ); $date = date( 'Y-m-d H:i:s', $timestamp ); - // If the date provided results in a date string, use it, or just default to today so it imports + // If the date provided results in a date string, use it, or just default to today so it imports. if ( ! empty( $date ) ) { $args['post_date'] = $date; } else { $date = ''; } - } - - // Detect any status that could map to `publish` + // Detect any status that could map to `publish`. if ( ! empty( $args['post_status'] ) ) { $published_statuses = array( @@ -160,13 +160,12 @@ public function process_step() { if ( in_array( $current_status, $published_statuses ) ) { $args['post_status'] = 'publish'; } - } $download_id = wp_insert_post( $args ); - // setup categories - if( ! empty( $this->field_mapping['categories'] ) && ! empty( $row[ $this->field_mapping['categories'] ] ) ) { + // setup categories. + if ( ! empty( $this->field_mapping['categories'] ) && ! empty( $row[ $this->field_mapping['categories'] ] ) ) { $categories = $this->str_to_array( $row[ $this->field_mapping['categories'] ] ); @@ -174,8 +173,8 @@ public function process_step() { } - // setup tags - if( ! empty( $this->field_mapping['tags'] ) && ! empty( $row[ $this->field_mapping['tags'] ] ) ) { + // setup tags. + if ( ! empty( $this->field_mapping['tags'] ) && ! empty( $row[ $this->field_mapping['tags'] ] ) ) { $tags = $this->str_to_array( $row[ $this->field_mapping['tags'] ] ); @@ -183,8 +182,8 @@ public function process_step() { } - // setup price(s) - if( ! empty( $this->field_mapping['price'] ) && ! empty( $row[ $this->field_mapping['price'] ] ) ) { + // setup price(s). + if ( ! empty( $this->field_mapping['price'] ) && ! empty( $row[ $this->field_mapping['price'] ] ) ) { $price = $row[ $this->field_mapping['price'] ]; @@ -192,8 +191,8 @@ public function process_step() { } - // setup files - if( ! empty( $this->field_mapping['files'] ) && ! empty( $row[ $this->field_mapping['files'] ] ) ) { + // setup files. + if ( ! empty( $this->field_mapping['files'] ) && ! empty( $row[ $this->field_mapping['files'] ] ) ) { $files = $this->convert_file_string_to_array( $row[ $this->field_mapping['files'] ] ); @@ -201,8 +200,8 @@ public function process_step() { } - // Product Image - if( ! empty( $this->field_mapping['featured_image'] ) && ! empty( $row[ $this->field_mapping['featured_image'] ] ) ) { + // Product Image. + if ( ! empty( $this->field_mapping['featured_image'] ) && ! empty( $row[ $this->field_mapping['featured_image'] ] ) ) { $image = sanitize_text_field( $row[ $this->field_mapping['featured_image'] ] ); @@ -210,42 +209,40 @@ public function process_step() { } - // File download limit - if( ! empty( $this->field_mapping['download_limit'] ) && ! empty( $row[ $this->field_mapping['download_limit'] ] ) ) { + // File download limit. + if ( ! empty( $this->field_mapping['download_limit'] ) && ! empty( $row[ $this->field_mapping['download_limit'] ] ) ) { update_post_meta( $download_id, '_edd_download_limit', absint( $row[ $this->field_mapping['download_limit'] ] ) ); } - // Sale count - if( ! empty( $this->field_mapping['sales'] ) && ! empty( $row[ $this->field_mapping['sales'] ] ) ) { + // Sale count. + if ( ! empty( $this->field_mapping['sales'] ) && ! empty( $row[ $this->field_mapping['sales'] ] ) ) { update_post_meta( $download_id, '_edd_download_sales', absint( $row[ $this->field_mapping['sales'] ] ) ); } - // Earnings - if( ! empty( $this->field_mapping['earnings'] ) && ! empty( $row[ $this->field_mapping['earnings'] ] ) ) { + // Earnings. + if ( ! empty( $this->field_mapping['earnings'] ) && ! empty( $row[ $this->field_mapping['earnings'] ] ) ) { update_post_meta( $download_id, '_edd_download_earnings', edd_sanitize_amount( $row[ $this->field_mapping['earnings'] ] ) ); } - // Notes - if( ! empty( $this->field_mapping['notes'] ) && ! empty( $row[ $this->field_mapping['notes'] ] ) ) { + // Notes. + if ( ! empty( $this->field_mapping['notes'] ) && ! empty( $row[ $this->field_mapping['notes'] ] ) ) { update_post_meta( $download_id, 'edd_product_notes', sanitize_text_field( $row[ $this->field_mapping['notes'] ] ) ); } - // SKU - if( ! empty( $this->field_mapping[ 'sku' ] ) && ! empty( $row[ $this->field_mapping[ 'sku' ] ] ) ) { + // SKU. + if ( ! empty( $this->field_mapping['sku'] ) && ! empty( $row[ $this->field_mapping['sku'] ] ) ) { update_post_meta( $download_id, 'edd_sku', sanitize_text_field( $row[ $this->field_mapping['sku'] ] ) ); } - // Custom fields - + // Custom fields. - $i++; + ++$i; } - } return $more; @@ -279,7 +276,7 @@ public function get_percentage_complete() { */ private function set_price( $download_id = 0, $price = '' ) { - if( is_numeric( $price ) ) { + if ( is_numeric( $price ) ) { update_post_meta( $download_id, 'edd_price', edd_sanitize_amount( $price ) ); @@ -287,31 +284,31 @@ private function set_price( $download_id = 0, $price = '' ) { $prices = $this->str_to_array( $price ); - if( ! empty( $prices ) ) { + if ( ! empty( $prices ) ) { $variable_prices = array(); $price_id = 1; - foreach( $prices as $price ) { + foreach ( $prices as $price ) { - // See if this matches the EDD Download export for variable prices - if( false !== strpos( $price, ':' ) ) { + // See if this matches the EDD Download export for variable prices. + if ( false !== strpos( $price, ':' ) ) { $price = array_map( 'trim', explode( ':', $price ) ); - $variable_prices[ $price_id ] = array( 'name' => $price[ 0 ], 'amount' => $price[ 1 ] ); - $price_id++; + $variable_prices[ $price_id ] = array( + 'name' => $price[0], + 'amount' => $price[1], + ); + ++$price_id; } - } update_post_meta( $download_id, '_variable_pricing', 1 ); update_post_meta( $download_id, 'edd_variable_prices', $variable_prices ); } - } - } /** @@ -322,11 +319,11 @@ private function set_price( $download_id = 0, $price = '' ) { */ private function set_files( $download_id = 0, $files = array() ) { - if( ! empty( $files ) ) { + if ( ! empty( $files ) ) { $download_files = array(); $file_id = 1; - foreach( $files as $file ) { + foreach ( $files as $file ) { $condition = ''; @@ -346,25 +343,24 @@ private function set_files( $download_id = 0, $files = array() ) { 'index' => $file_id, 'file' => $file_url, 'name' => basename( $file_url ), - 'condition' => empty( $condition ) ? 'all' : $condition + 'condition' => empty( $condition ) ? 'all' : $condition, ); $download_files[ $file_id ] = $download_file_args; - $file_id++; + ++$file_id; } update_post_meta( $download_id, 'edd_download_files', $download_files ); } - } /** * Set up and store the Featured Image * * @since 2.6 - * @return void + * @return bool */ private function set_image( $download_id = 0, $image = '', $post_author = 0 ) { @@ -372,71 +368,66 @@ private function set_image( $download_id = 0, $image = '', $post_author = 0 ) { $is_local = $is_url && false !== strpos( $image, site_url() ); $ext = edd_get_file_extension( $image ); - if( $is_url && $is_local ) { + if ( $is_url && $is_local ) { - // Image given by URL, see if we have an attachment already + // Image given by URL, see if we have an attachment already. $attachment_id = attachment_url_to_postid( $image ); - } elseif( $is_url ) { + } elseif ( $is_url ) { - if( ! function_exists( 'media_sideload_image' ) ) { + if ( ! function_exists( 'media_sideload_image' ) ) { - require_once( ABSPATH . 'wp-admin/includes/file.php' ); + require_once ABSPATH . 'wp-admin/includes/file.php'; } - // Image given by external URL + // Image given by external URL. $url = media_sideload_image( $image, $download_id, '', 'src' ); - if( ! is_wp_error( $url ) ) { + if ( ! is_wp_error( $url ) ) { $attachment_id = attachment_url_to_postid( $url ); } + } elseif ( false === strpos( $image, '/' ) && edd_get_file_extension( $image ) ) { - - } elseif( false === strpos( $image, '/' ) && edd_get_file_extension( $image ) ) { - - // Image given by name only + // Image given by name only. $upload_dir = wp_upload_dir(); - if( file_exists( trailingslashit( $upload_dir['path'] ) . $image ) ) { + if ( FileSystem::file_exists( trailingslashit( $upload_dir['path'] ) . $image ) ) { - // Look in current upload directory first + // Look in current upload directory first. $file = trailingslashit( $upload_dir['path'] ) . $image; } else { - // Now look through year/month sub folders of upload directory for files with our image's same extension + // Now look through year/month sub folders of upload directory for files with our image's same extension. $files = glob( $upload_dir['basedir'] . '/*/*/*' . $ext ); - foreach( $files as $file ) { + foreach ( $files as $file ) { - if( basename( $file ) == $image ) { + if ( basename( $file ) == $image ) { - // Found our file + // Found our file. break; } - // Make sure $file is unset so our empty check below does not return a false positive + // Make sure $file is unset so our empty check below does not return a false positive. unset( $file ); } - } - if( ! empty( $file ) ) { - - // We found the file, let's see if it already exists in the media library + if ( ! empty( $file ) ) { + // We found the file, let's see if it already exists in the media library. $guid = str_replace( $upload_dir['basedir'], $upload_dir['baseurl'], $file ); $attachment_id = attachment_url_to_postid( $guid ); + if ( empty( $attachment_id ) ) { - if( empty( $attachment_id ) ) { - - // Doesn't exist in the media library, let's add it + // Doesn't exist in the media library, let's add it. $filetype = wp_check_filetype( basename( $file ), null ); @@ -447,33 +438,30 @@ private function set_image( $download_id = 0, $image = '', $post_author = 0 ) { 'post_title' => preg_replace( '/\.[^.]+$/', '', $image ), 'post_content' => '', 'post_status' => 'inherit', - 'post_author' => $post_author + 'post_author' => $post_author, ); // Insert the attachment. $attachment_id = wp_insert_attachment( $attachment, $file, $download_id ); // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it. - require_once( ABSPATH . 'wp-admin/includes/image.php' ); + require_once ABSPATH . 'wp-admin/includes/image.php'; // Generate the metadata for the attachment, and update the database record. $attach_data = wp_generate_attachment_metadata( $attachment_id, $file ); wp_update_attachment_metadata( $attachment_id, $attach_data ); } - } - } - if( ! empty( $attachment_id ) ) { + if ( ! empty( $attachment_id ) ) { return set_post_thumbnail( $download_id, $attachment_id ); } return false; - } /** @@ -486,12 +474,11 @@ private function set_taxonomy_terms( $download_id = 0, $terms = array(), $taxono $terms = $this->maybe_create_terms( $terms, $taxonomy ); - if( ! empty( $terms ) ) { + if ( ! empty( $terms ) ) { wp_set_object_terms( $download_id, $terms, $taxonomy ); } - } /** @@ -502,12 +489,12 @@ private function set_taxonomy_terms( $download_id = 0, $terms = array(), $taxono */ private function maybe_create_terms( $terms = array(), $taxonomy = 'download_category' ) { - // Return of term IDs + // Return of term IDs. $term_ids = array(); - foreach( $terms as $term ) { + foreach ( $terms as $term ) { - if( is_numeric( $term ) && 0 === (int) $term ) { + if ( is_numeric( $term ) && 0 === (int) $term ) { $t = get_term( $term, $taxonomy ); @@ -515,15 +502,14 @@ private function maybe_create_terms( $terms = array(), $taxonomy = 'download_cat $t = get_term_by( 'name', $term, $taxonomy ); - if( ! $t ) { + if ( ! $t ) { $t = get_term_by( 'slug', $term, $taxonomy ); } - } - if( ! empty( $t ) ) { + if ( ! empty( $t ) ) { $term_ids[] = $t->term_id; @@ -531,14 +517,12 @@ private function maybe_create_terms( $terms = array(), $taxonomy = 'download_cat $term_data = wp_insert_term( $term, $taxonomy, array( 'slug' => sanitize_title( $term ) ) ); - if( ! is_wp_error( $term_data ) ) { + if ( ! is_wp_error( $term_data ) ) { $term_ids[] = $term_data['term_id']; } - } - } return array_map( 'absint', $term_ids ); @@ -558,10 +542,9 @@ public function get_list_table_url() { * Retrieve Download label * * @since 2.6 - * @return void + * @return string */ public function get_import_type_label() { return edd_get_label_plural( true ); } - } diff --git a/includes/admin/import/class-batch-import.php b/includes/admin/import/class-batch-import.php index f03ed24e33..c8ffdb1747 100644 --- a/includes/admin/import/class-batch-import.php +++ b/includes/admin/import/class-batch-import.php @@ -139,7 +139,7 @@ public function can_import() { */ public function get_csv_file( $file ) { $this->file = $file; - $csv = array_map( 'str_getcsv', file( $file ) ); + $csv = array_map( 'str_getcsv', EDD\Utils\FileSystem::file( $file ) ); array_walk( $csv, function ( &$a ) use ( $csv ) { diff --git a/includes/admin/import/import-functions.php b/includes/admin/import/import-functions.php index 9098d31ead..e87dfac096 100644 --- a/includes/admin/import/import-functions.php +++ b/includes/admin/import/import-functions.php @@ -10,9 +10,11 @@ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License */ -// Exit if accessed directly +// Exit if accessed directly. defined( 'ABSPATH' ) || exit; +use EDD\Utils\FileSystem; + /** * Upload an import file with ajax * @@ -58,7 +60,7 @@ function edd_do_ajax_import_file_upload() { wp_send_json_error( array( 'error' => __( 'The file you uploaded does not appear to be a CSV file.', 'easy-digital-downloads' ), 'request' => $_REQUEST ) ); } - if ( ! file_exists( $_FILES['edd-import-file']['tmp_name'] ) ) { + if ( ! FileSystem::file_exists( $_FILES['edd-import-file']['tmp_name'] ) ) { wp_send_json_error( array( 'error' => __( 'Something went wrong during the upload process, please try again.', 'easy-digital-downloads' ), 'request' => $_REQUEST ) ); } @@ -110,7 +112,7 @@ function edd_do_ajax_import() { wp_send_json_error( array( 'error' => __( 'Missing import parameters. Import class must be specified.', 'easy-digital-downloads' ), 'request' => $_REQUEST ) ); } - if ( ! file_exists( $_REQUEST['upload']['file'] ) ) { + if ( ! FileSystem::file_exists( $_REQUEST['upload']['file'] ) ) { wp_send_json_error( array( 'error' => __( 'Something went wrong during the upload process, please try again.', 'easy-digital-downloads' ), 'request' => $_REQUEST ) ); } diff --git a/includes/admin/payments/actions.php b/includes/admin/payments/actions.php index cf2b67d281..7f4838db66 100644 --- a/includes/admin/payments/actions.php +++ b/includes/admin/payments/actions.php @@ -7,7 +7,7 @@ * @copyright Copyright (c) 2018, Easy Digital Downloads, LLC * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License * @since 1.9 -*/ + */ // Exit if accessed directly defined( 'ABSPATH' ) || exit; @@ -25,8 +25,8 @@ function edd_handle_order_item_change( $request = array() ) { // Bail if missing necessary properties if ( - empty( $request['_wpnonce'] ) || - empty( $request['id'] ) || + empty( $request['_wpnonce'] ) || + empty( $request['id'] ) || empty( $request['order_item'] ) ) { return false; @@ -41,18 +41,22 @@ function edd_handle_order_item_change( $request = array() ) { $data = array(); // Maybe add status to data to update - if ( ! empty( $request['status'] ) && ( 'inherit' === $request['status'] ) || in_array( $request['status'], array_keys( edd_get_payment_statuses() ), true )) { + if ( ! empty( $request['status'] ) && ( 'inherit' === $request['status'] ) || in_array( $request['status'], array_keys( edd_get_payment_statuses() ), true ) ) { $data['status'] = sanitize_key( $request['status'] ); } // Update order item if ( ! empty( $data ) ) { edd_update_order_item( $request['order_item'], $data ); - edd_redirect( edd_get_admin_url( array( - 'page' => 'edd-payment-history', - 'view' => 'view-order-details', - 'id' => absint( $request['id'] ) - ) ) ); + edd_redirect( + edd_get_admin_url( + array( + 'page' => 'edd-payment-history', + 'view' => 'view-order-details', + 'id' => absint( $request['id'] ), + ) + ) + ); } } add_action( 'edd_handle_order_item_change', 'edd_handle_order_item_change' ); @@ -64,7 +68,7 @@ function edd_handle_order_item_change( $request = array() ) { * @since 3.0 Refactored to use new core objects and query methods. * * @param array $data Order data. -*/ + */ function edd_update_payment_details( $data = array() ) { // Bail if an empty array is passed. @@ -219,12 +223,16 @@ function edd_update_payment_details( $data = array() ) { do_action( 'edd_updated_edited_purchase', $order_id ); - edd_redirect( edd_get_admin_url( array( - 'page' => 'edd-payment-history', - 'view' => 'view-order-details', - 'edd-message' => 'payment-updated', - 'id' => absint( $order_id ), - ) ) ); + edd_redirect( + edd_get_admin_url( + array( + 'page' => 'edd-payment-history', + 'view' => 'view-order-details', + 'edd-message' => 'payment-updated', + 'id' => absint( $order_id ), + ) + ) + ); } add_action( 'edd_update_payment_details', 'edd_update_payment_details' ); @@ -279,11 +287,13 @@ function edd_trigger_trash_order( $data ) { edd_trash_order( $payment_id ); - $redirect = edd_get_admin_url( array( - 'page' => 'edd-payment-history', - 'edd-message' => 'order_trashed', - 'order_type' => esc_attr( $data['order_type'] ), - ) ); + $redirect = edd_get_admin_url( + array( + 'page' => 'edd-payment-history', + 'edd-message' => 'order_trashed', + 'order_type' => esc_attr( $data['order_type'] ), + ) + ); edd_redirect( $redirect ); } @@ -309,11 +319,13 @@ function edd_trigger_restore_order( $data ) { edd_restore_order( $payment_id ); - $redirect = edd_get_admin_url( array( - 'page' => 'edd-payment-history', - 'edd-message' => 'order_restored', - 'order_type' => esc_attr( $data['order_type'] ), - ) ); + $redirect = edd_get_admin_url( + array( + 'page' => 'edd-payment-history', + 'edd-message' => 'order_restored', + 'order_type' => esc_attr( $data['order_type'] ), + ) + ); edd_redirect( $redirect ); } @@ -325,7 +337,7 @@ function edd_trigger_restore_order( $data ) { * * @since 2.0 * @return string -*/ + */ function edd_ajax_generate_file_download_link() { $customer_view_role = apply_filters( 'edd_view_customers_role', 'view_shop_reports' ); @@ -463,7 +475,6 @@ function edd_ajax_generate_refund_form() { ); wp_send_json( $return, 200 ); - } add_action( 'wp_ajax_edd_generate_refund_form', 'edd_ajax_generate_refund_form' ); @@ -501,7 +512,7 @@ function edd_ajax_process_refund_form() { // Collect selected order items. $order_items = array(); if ( ! empty( $form_data['refund_order_item'] ) && is_array( $form_data['refund_order_item'] ) ) { - foreach( $form_data['refund_order_item'] as $order_item_id => $order_item ) { + foreach ( $form_data['refund_order_item'] as $order_item_id => $order_item ) { // If there's no quantity or subtotal - bail. if ( empty( $order_item['quantity'] ) || empty( $order_item['subtotal'] ) ) { continue; @@ -511,7 +522,7 @@ function edd_ajax_process_refund_form() { 'order_item_id' => absint( $order_item_id ), 'quantity' => intval( $order_item['quantity'] ), 'subtotal' => edd_sanitize_amount( $order_item['subtotal'] ), - 'tax' => ! empty( $order_item['tax'] ) ? edd_sanitize_amount( $order_item['tax'] ) : 0.00 + 'tax' => ! empty( $order_item['tax'] ) ? edd_sanitize_amount( $order_item['tax'] ) : 0.00, ); } } @@ -519,7 +530,7 @@ function edd_ajax_process_refund_form() { // Collect selected adjustments. $adjustments = array(); if ( ! empty( $form_data['refund_order_adjustment'] ) && is_array( $form_data['refund_order_adjustment'] ) ) { - foreach( $form_data['refund_order_adjustment'] as $adjustment_id => $adjustment ) { + foreach ( $form_data['refund_order_adjustment'] as $adjustment_id => $adjustment ) { // If there's no quantity or subtotal - bail. if ( empty( $adjustment['quantity'] ) || empty( $adjustment['subtotal'] ) ) { continue; @@ -529,7 +540,7 @@ function edd_ajax_process_refund_form() { 'adjustment_id' => absint( $adjustment_id ), 'quantity' => intval( $adjustment['quantity'] ), 'subtotal' => floatval( edd_sanitize_amount( $adjustment['subtotal'] ) ), - 'tax' => ! empty( $adjustment['tax'] ) ? floatval( edd_sanitize_amount( $adjustment['tax'] ) ) : 0.00 + 'tax' => ! empty( $adjustment['tax'] ) ? floatval( edd_sanitize_amount( $adjustment['tax'] ) ) : 0.00, ); } } @@ -545,11 +556,11 @@ function edd_ajax_process_refund_form() { 'message' => sprintf( __( 'Refund successfully processed.', 'easy-digital-downloads' ) ), 'refund_url' => edd_get_admin_url( array( - 'page' => 'edd-payment-history', - 'view' => 'view-refund-details', - 'id' => urlencode( $refund_id ), + 'page' => 'edd-payment-history', + 'view' => 'view-refund-details', + 'id' => urlencode( $refund_id ), ) - ) + ), ); wp_send_json_success( $return, 200 ); } else { @@ -646,7 +657,7 @@ function edd_orders_list_table_process_bulk_actions() { break; case 'resend-receipt': - $order = edd_get_order( $id ); + $order = edd_get_order( $id ); $order_receipt = EDD\Emails\Registry::get( 'order_receipt', array( $order ) ); $order_receipt->send(); break; @@ -658,3 +669,30 @@ function edd_orders_list_table_process_bulk_actions() { wp_safe_redirect( wp_get_referer() ); } add_action( 'load-download_page_edd-payment-history', 'edd_orders_list_table_process_bulk_actions' ); + +/** + * Recalculate the values of an order. + * + * @since 3.3.4 + * @param array $data + */ +function edd_recalculate_order_values( $data ) { + if ( ! current_user_can( 'edit_shop_payments' ) ) { + return; + } + if ( empty( $data['_wpnonce'] ) || ! wp_verify_nonce( $data['_wpnonce'], 'edd_recalculate_order_nonce' ) ) { + return; + } + $order = edd_get_order( $data['id'] ); + $recalculated = $order->recalculate(); + + $url = remove_query_arg( 'edd-action', wp_get_referer() ); + if ( $recalculated ) { + $url = add_query_arg( 'edd-message', 'order_recalculated', $url ); + } else { + $url = add_query_arg( 'edd-message', 'order_not_recalculated', $url ); + } + + edd_redirect( $url ); +} +add_action( 'edd_recalculate_order', 'edd_recalculate_order_values' ); diff --git a/includes/admin/payments/orders.php b/includes/admin/payments/orders.php index 6da0b77c21..00766bf426 100644 --- a/includes/admin/payments/orders.php +++ b/includes/admin/payments/orders.php @@ -145,7 +145,7 @@ function edd_get_order_details_sections( $order ) { ), array( 'id' => 'logs', - 'label' => __( 'Logs', 'easy-digital-downloads' ), + 'label' => __( 'Tools', 'easy-digital-downloads' ), 'icon' => 'admin-tools', 'callback' => 'edd_order_details_logs', ), @@ -595,7 +595,7 @@ function edd_order_details_logs( $order ) { ) ); ?> - +

@@ -609,6 +609,16 @@ function edd_order_details_logs( $order ) { * @param int $order_id ID of the current order. */ do_action( 'edd_view_order_details_logs_after', $order->id ); + + if ( current_user_can( 'edit_shop_payments' ) ) { + $link = wp_nonce_url( add_query_arg( 'edd-action', 'recalculate_order' ), 'edd_recalculate_order_nonce' ); + ?> +
+
+ +
+ diff --git a/includes/admin/reporting/class-export.php b/includes/admin/reporting/class-export.php index fadc1991dc..364656076e 100755 --- a/includes/admin/reporting/class-export.php +++ b/includes/admin/reporting/class-export.php @@ -11,7 +11,7 @@ * @since 1.4.4 */ -// Exit if accessed directly +// Exit if accessed directly. defined( 'ABSPATH' ) || exit; /** @@ -23,8 +23,10 @@ class EDD_Export { /** * Our export type. Used for export-type specific filters/actions - * @var string + * * @since 1.4.4 + * + * @var string */ public $export_type = 'default'; @@ -71,7 +73,7 @@ public function headers() { */ public function csv_cols() { $cols = array( - 'id' => __( 'ID', 'easy-digital-downloads' ), + 'id' => __( 'ID', 'easy-digital-downloads' ), 'date' => __( 'Date', 'easy-digital-downloads' ), ); return $cols; @@ -107,7 +109,7 @@ public function csv_cols_out() { ? '' : ','; - $i++; + ++$i; } echo "\r\n"; } @@ -121,7 +123,7 @@ public function csv_cols_out() { */ public function get_data() { - // Just a sample data array + // Just a sample data array. $data = array( 0 => array( 'id' => '', @@ -175,7 +177,6 @@ public function csv_rows_out() { * * @since 1.4.4 * - * * @uses EDD_Export::can_export() * @uses EDD_Export::headers() * @uses EDD_Export::csv_cols_out() @@ -188,13 +189,13 @@ public function export() { wp_die( __( 'You do not have permission to export data.', 'easy-digital-downloads' ), __( 'Error', 'easy-digital-downloads' ), array( 'response' => 403 ) ); } - // Set headers + // Set headers. $this->headers(); - // Output CSV columns (headers) + // Output CSV columns (headers). $this->csv_cols_out(); - // Output CSV rows + // Output CSV rows. $this->csv_rows_out(); edd_die(); diff --git a/includes/admin/reporting/export/class-batch-export.php b/includes/admin/reporting/export/class-batch-export.php index 2d827abcdc..8a73609d1c 100644 --- a/includes/admin/reporting/export/class-batch-export.php +++ b/includes/admin/reporting/export/class-batch-export.php @@ -14,6 +14,8 @@ // Exit if accessed directly. defined( 'ABSPATH' ) || exit; +use EDD\Utils\FileSystem; + /** * EDD_Export Class * @@ -52,6 +54,15 @@ class EDD_Batch_Export extends EDD_Export { */ public $filetype; + /** + * File system object + * + * @since 3.3.4 + * + * @var object + */ + private $file_system; + /** * The current step being processed * @@ -132,6 +143,7 @@ class EDD_Batch_Export extends EDD_Export { * @param int $_step The step to process. */ public function __construct( $_step = 1 ) { + $this->file_system = FileSystem::get_fs(); $exports_dir = edd_get_exports_dir(); $this->filetype = '.csv'; @@ -146,7 +158,7 @@ public function __construct( $_step = 1 ) { ); $this->file = trailingslashit( $exports_dir ) . $this->filename; - if ( ! is_writeable( $exports_dir ) ) { + if ( ! $this->file_system->is_writable( $exports_dir ) ) { $this->is_writable = false; } @@ -169,8 +181,8 @@ public function process_step() { if ( $this->step < 2 ) { // Make sure we start with a fresh file on step 1. - if ( file_exists( $this->file ) ) { - unlink( $this->file ); + if ( FileSystem::file_exists( $this->file ) ) { + $this->file_system->delete( $this->file ); } $this->print_csv_cols(); } @@ -265,18 +277,18 @@ protected function get_file() { $file = ''; - if ( @file_exists( $this->file ) ) { + if ( FileSystem::file_exists( $this->file ) ) { - if ( ! is_writeable( $this->file ) ) { + if ( ! $this->file_system->is_writable( $this->file ) ) { $this->is_writable = false; } - $file = @file_get_contents( $this->file ); + $file = FileSystem::get_contents( $this->file ); } else { - @file_put_contents( $this->file, '' ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged - @chmod( $this->file, 0664 ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + $this->file_system->put_contents( $this->file, '' ); + $this->file_system->chmod( $this->file, 0664 ); } @@ -294,10 +306,10 @@ protected function stash_step_data( $data = '' ) { $file = $this->get_file(); $file .= $data; - @file_put_contents( $this->file, $file ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + $this->file_system->put_contents( $this->file, $file ); // If we have no rows after this step, mark it as an empty export. - $file_rows = file( $this->file, FILE_SKIP_EMPTY_LINES ); + $file_rows = FileSystem::file( $this->file, FILE_SKIP_EMPTY_LINES ); $default_cols = $this->get_csv_cols(); $default_cols = empty( $default_cols ) ? 0 : 1; @@ -317,7 +329,7 @@ public function export() { $file = $this->get_file(); - @unlink( $this->file ); + $this->file_system->delete( $this->file ); echo $file; diff --git a/includes/admin/tools.php b/includes/admin/tools.php index 73d1cea65d..7cf3439752 100755 --- a/includes/admin/tools.php +++ b/includes/admin/tools.php @@ -1057,8 +1057,8 @@ function edd_tools_import_export_process_import() { wp_die( __( 'Please upload a file to import', 'easy-digital-downloads' ), __( 'Error', 'easy-digital-downloads' ), array( 'response' => 400 ) ); } - // Retrieve the settings from the file and convert the json object to an array - $settings = edd_object_to_array( json_decode( file_get_contents( $import_file ) ) ); + // Retrieve the settings from the file and convert the json object to an array. + $settings = edd_object_to_array( json_decode( EDD\Utils\FileSystem::get_contents( $import_file ) ) ); if ( ! isset( $settings['edd_settings'] ) ) { diff --git a/includes/admin/upload-functions.php b/includes/admin/upload-functions.php index 1bf893f0a5..d815d2da1f 100755 --- a/includes/admin/upload-functions.php +++ b/includes/admin/upload-functions.php @@ -51,7 +51,6 @@ function edd_change_downloads_upload_dir( $file = array() ) { * @param bool $method The method used to download files. */ function edd_create_protection_files( $force = false, $method = false ) { - $file_system = EDD\Utils\FileSystem::get_fs(); if ( false === get_transient( 'edd_check_protection_files' ) || $force ) { $upload_path = edd_get_upload_dir(); @@ -62,23 +61,23 @@ function edd_create_protection_files( $force = false, $method = false ) { // Top level .htaccess file. $rules = edd_get_htaccess_rules( $method ); if ( edd_htaccess_exists() ) { - $contents = $file_system->get_contents( $upload_path . '/.htaccess' ); + $contents = EDD\Utils\FileSystem::get_contents( $upload_path . '/.htaccess' ); if ( $contents !== $rules || ! $contents ) { // Update the .htaccess rules if they don't match. - $file_system->put_contents( $upload_path . '/.htaccess', $rules ); + EDD\Utils\FileSystem::put_contents( $upload_path . '/.htaccess', $rules ); } } elseif ( $upload_path_writeable ) { // Create the file if it doesn't exist. - $file_system->put_contents( $upload_path . '/.htaccess', $rules ); + EDD\Utils\FileSystem::put_contents( $upload_path . '/.htaccess', $rules ); } // Top level blank index.php. - if ( $upload_path_writeable && ! file_exists( $upload_path . '/index.php' ) ) { - $file_system->put_contents( $upload_path . '/index.php', 'put_contents( $upload_path . '/index.html', '' ); + if ( $upload_path_writeable && ! EDD\Utils\FileSystem::file_exists( $upload_path . '/index.html' ) ) { + EDD\Utils\FileSystem::put_contents( $upload_path . '/index.html', '' ); } // Now place index.php files in all sub folders. @@ -90,12 +89,12 @@ function edd_create_protection_files( $force = false, $method = false ) { } // Create index.php, if it doesn't exist. - if ( ! file_exists( $folder . 'index.php' ) ) { - $file_system->put_contents( $folder . 'index.php', 'put_contents( $folder . 'index.html', '' ); + if ( ! EDD\Utils\FileSystem::file_exists( $folder . 'index.html' ) ) { + EDD\Utils\FileSystem::put_contents( $folder . 'index.html', '' ); } } @@ -114,7 +113,7 @@ function edd_create_protection_files( $force = false, $method = false ) { function edd_htaccess_exists() { $upload_path = edd_get_upload_dir(); - return file_exists( $upload_path . '/.htaccess' ); + return EDD\Utils\FileSystem::file_exists( $upload_path . '/.htaccess' ); } /** diff --git a/includes/admin/views/email-editor/editor.php b/includes/admin/views/email-editor/editor.php index 3341281a52..6cda39d74f 100644 --- a/includes/admin/views/email-editor/editor.php +++ b/includes/admin/views/email-editor/editor.php @@ -16,7 +16,11 @@ wp_enqueue_style( 'edd-admin-emails' ); if ( $email->can_edit( 'content' ) ) { $email->maybe_add_required_tag(); - edd_email_tags_inserter_media_button(); + $html_allowed = $email->supports_html(); + edd_email_tags_inserter_media_button( $html_allowed ); + if ( ! $html_allowed ) { + add_filter( 'user_can_richedit', '__return_false', 50 ); + } } else { remove_action( 'media_buttons', 'media_buttons' ); } diff --git a/includes/blocks/edd-blocks.php b/includes/blocks/edd-blocks.php index 9e6c4d59de..f831ead013 100644 --- a/includes/blocks/edd-blocks.php +++ b/includes/blocks/edd-blocks.php @@ -49,7 +49,7 @@ function init_core_blocks() { } if ( edd_is_pro() ) { - if ( file_exists( EDD_BLOCKS_DIR . 'pro/pro.php' ) ) { + if ( \EDD\Utils\FileSystem::file_exists( EDD_BLOCKS_DIR . 'pro/pro.php' ) ) { require_once EDD_BLOCKS_DIR . 'pro/pro.php'; Pro\init(); } diff --git a/includes/blocks/package.json b/includes/blocks/package.json index 72e764df3d..acfa090587 100644 --- a/includes/blocks/package.json +++ b/includes/blocks/package.json @@ -4,7 +4,22 @@ "description": "Core blocks for Easy Digital Downloads.", "author": "Easy Digital Downloads", "license": "GPL-2.0-or-later", + "keywords": [ + "wordpress", + "wordpress-plugin" + ], + "homepage": "https://easydigitaldownloads.com", + "repository": { + "type": "git", + "url": "https://github.com/easydigitaldownloads/easy-digital-downloads/" + }, + "bugs": { + "url": "https://github.com/easydigitaldownloads/easy-digital-downloads/issues" + }, "main": "build/index.js", + "devDependencies": { + "@wordpress/scripts": "^23.6.0" + }, "scripts": { "build": "wp-scripts build", "dev": "wp-scripts start", @@ -13,8 +28,5 @@ "lint:js": "wp-scripts lint-js", "packages-update": "wp-scripts packages-update", "plugin-zip": "wp-scripts plugin-zip" - }, - "devDependencies": { - "@wordpress/scripts": "^23.6.0" } } diff --git a/includes/blocks/views/checkout/purchase-form/personal-info.php b/includes/blocks/views/checkout/purchase-form/personal-info.php index ee7e02382a..01b283ceff 100644 --- a/includes/blocks/views/checkout/purchase-form/personal-info.php +++ b/includes/blocks/views/checkout/purchase-form/personal-info.php @@ -17,7 +17,7 @@

- +
- +