diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 623f6f682..c348de067 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -11,6 +11,7 @@ on: - 3.x - 4.x - 4.0.x + - 4.1.x env: LABELS: ${{toJSON(github.event.pull_request.labels)}} @@ -29,7 +30,7 @@ jobs: run: composer install --no-dev -o - name: Clean-up project - uses: 'PrestaShopCorp/github-action-clean-before-deploy@v1.1' + uses: 'PrestaShopCorp/github-action-clean-before-deploy@v2.0' - name: Cache module folder uses: 'actions/cache@v3' @@ -37,66 +38,10 @@ jobs: path: ./ key: ${{ github.run_id }} - upload_prestabulle: - name: Create prestabulle zip - runs-on: ubuntu-latest - needs: deploy - if: contains(github.event.pull_request.labels.*.name, 'prestabulle1') || - contains(github.event.pull_request.labels.*.name, 'prestabulle2') || - contains(github.event.pull_request.labels.*.name, 'prestabulle3') || - contains(github.event.pull_request.labels.*.name, 'prestabulle4') || - contains(github.event.pull_request.labels.*.name, 'prestabulle5') || - contains(github.event.pull_request.labels.*.name, 'prestabulle6') || - contains(github.event.pull_request.labels.*.name, 'prestabulle7') || - contains(github.event.pull_request.labels.*.name, 'prestabulle8') || - contains(github.event.pull_request.labels.*.name, 'prestabulle9') - steps: - - - name: Retrieve from cache module folder - id: retrieve-cache - uses: 'actions/cache@v3' - with: - path: ./ - key: ${{ github.run_id }} - - - name: Check if retrieved from cache was successful - if: steps.retrieve-cache.outputs.cache-hit != 'true' - run: exit 1 - - - name: Manually perform GCP CLI authentication - run: | - echo $GOOGLE_JSON_CRED > token.json - gcloud auth activate-service-account --key-file=token.json - rm token.json - env: - GOOGLE_JSON_CRED: ${{ secrets.G_CREDENTIAL_INTEGRATION }} - - - name: Setting up Bubble variable - run: echo "BULLE=$BULLE$(echo $LABELS > labels.json && cat labels.json | jq -r '.[]|.name'|grep prestabulle)" >> $GITHUB_OUTPUT - id: get_bulle - - - name: Copy env files - run: | - rm -f .env.dist - gcloud secrets versions access latest --project distribution-integration --secret=mbo-module-${{ steps.get_bulle.outputs.BULLE }}-env > .env - env: - GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.G_CREDENTIAL_INTEGRATION }} - - - name: Prepare the zip - run: | - cd .. - zip -r ${{ github.event.repository.name }}.zip ${{ github.event.repository.name }} - - - name: Create & upload artifact for prestabulle - uses: 'actions/upload-artifact@v1' - with: - name: ${{ github.event.repository.name }}.${{ steps.get_bulle.outputs.BULLE }} - path: ../${{ github.event.repository.name }}.zip - upload_asset_preproduction: runs-on: ubuntu-latest needs: [deploy] - if: github.event_name == 'push' && (github.ref == 'refs/heads/4.x' || github.ref == 'refs/heads/4.0.x') + if: github.event_name == 'push' && (github.ref == 'refs/heads/4.x' || github.ref == 'refs/heads/4.0.x' || github.ref == 'refs/heads/4.1.x') steps: - name: Retrieve from cache module folder @@ -169,6 +114,11 @@ jobs: env: GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.G_CREDENTIAL_PRODUCTION }} + - name: Remove test settings files + run: | + rm -f ./src/Traits/HaveConfigurationPage.php + sed -i '/HaveConfigurationPage/d' ps_mbo.php + - name: Prepare the production zip run: | cd .. diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index b0dd36e6b..d5b5b9ba2 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -25,6 +25,8 @@ jobs: uses: actions/checkout@v2.0.0 - name: Run PHP-CS-Fixer uses: prestashopcorp/github-action-php-cs-fixer@master + with: + other-cmds: '--config=.php-cs-fixer.dist.php' phpstan: name: PHPStan runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 76a7f9455..a60ed4884 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,23 @@ config_*.xml !/vendor/index.php tests/.phpunit.result.cache .env + +## Directory-based project format: + +### PhpStorm ### +.idea/ + +### NetBeans ### +nbproject/ +nbbuild/ +dist/ +nbdist/ +nbactions.xml +nb-configuration.xml +.nb-gradle/ + +### Eclipse ### +.buildpath +.project +.settings/ +.externalToolBuilders/ diff --git a/composer.json b/composer.json index 8f987ab2c..c19a72240 100644 --- a/composer.json +++ b/composer.json @@ -24,9 +24,9 @@ "prestashop/circuit-breaker": "^4", "guzzlehttp/guzzle": "^7.4", "ramsey/uuid": "^4.2", - "sentry/sdk": "^3.2", + "sentry/sdk": "^3.3", "symfony/workflow": "^4.4.20", - "prestashop/prestashop-accounts-installer": "^1.0.1", + "prestashop/prestashop-accounts-installer": "^1.0", "firebase/php-jwt": "^6.3" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 956536041..bd5c87e3b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "14738e893435dc71fe853ca417fa7a60", + "content-hash": "ea6d9358bd5432abf6a413a749bae2a1", "packages": [ { "name": "brick/math", @@ -133,112 +133,120 @@ "time": "2022-02-21T13:15:14+00:00" }, { - "name": "composer/semver", - "version": "3.2.6", + "name": "firebase/php-jwt", + "version": "v6.3.1", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "83e511e247de329283478496f7a1e114c9517506" + "url": "https://github.com/firebase/php-jwt.git", + "reference": "ddfaddcb520488b42bca3a75e17e9dd53c3667da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506", - "reference": "83e511e247de329283478496f7a1e114c9517506", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/ddfaddcb520488b42bca3a75e17e9dd53c3667da", + "reference": "ddfaddcb520488b42bca3a75e17e9dd53c3667da", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.1||^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", - "symfony/phpunit-bridge": "^4.2 || ^5" + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^1.1", + "phpunit/phpunit": "^7.5||^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } + "suggest": { + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" }, + "type": "library", "autoload": { "psr-4": { - "Composer\\Semver\\": "src" + "Firebase\\JWT\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" }, { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", "keywords": [ - "semantic", - "semver", - "validation", - "versioning" + "jwt", + "php" ], "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.6" + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.3.1" }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-10-25T11:34:17+00:00" + "time": "2022-11-01T21:20:08+00:00" }, { - "name": "composer/xdebug-handler", - "version": "2.0.2", + "name": "guzzlehttp/guzzle", + "version": "7.5.0", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1 || ^2 || ^3" + "ext-json": "*", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.9 || ^2.4", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" + "bamarni/composer-bin-plugin": "^1.8.1", + "ext-curl": "*", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "7.5-dev" + } + }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Composer\\XdebugHandler\\": "src" + "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -247,67 +255,105 @@ ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], - "description": "Restarts a process without Xdebug.", + "description": "Guzzle is a PHP HTTP client library", "keywords": [ - "Xdebug", - "performance" + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" ], "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.2" + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.5.0" }, "funding": [ { - "url": "https://packagist.com", - "type": "custom" + "url": "https://github.com/GrahamCampbell", + "type": "github" }, { - "url": "https://github.com/composer", + "url": "https://github.com/Nyholm", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", "type": "tidelift" } ], - "time": "2021-07-31T17:03:58+00:00" + "time": "2022-08-28T15:39:27+00:00" }, { - "name": "doctrine/annotations", - "version": "1.13.2", + "name": "guzzlehttp/promises", + "version": "1.5.2", "source": { "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "url": "https://github.com/guzzle/promises.git", + "reference": "b94b2807d85443f9719887892882d0329d1e2598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", + "reference": "b94b2807d85443f9719887892882d0329d1e2598", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" + "php": ">=5.5" }, "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + "GuzzleHttp\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -316,70 +362,95 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" }, { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "description": "Guzzle promises library", "keywords": [ - "annotations", - "docblock", - "parser" + "promise" ], "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.2" }, - "time": "2021-08-05T19:00:23+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2022-08-28T14:55:35+00:00" }, { - "name": "doctrine/lexer", - "version": "1.2.1", + "name": "guzzlehttp/psr7", + "version": "2.4.3", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "url": "https://github.com/guzzle/psr7.git", + "reference": "67c26b443f348a51926030c83481b85718457d3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", + "reference": "67c26b443f348a51926030c83481b85718457d3d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "2.4-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "GuzzleHttp\\Psr7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -388,170 +459,160 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { - "name": "Roman Borschel", - "email": "roman@code-factory.org" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" ], "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.4.3" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" + "url": "https://github.com/GrahamCampbell", + "type": "github" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "url": "https://github.com/Nyholm", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2022-10-26T14:07:24+00:00" }, { - "name": "firebase/php-jwt", - "version": "v6.3.0", + "name": "http-interop/http-factory-guzzle", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8" + "url": "https://github.com/http-interop/http-factory-guzzle.git", + "reference": "6e1efa1e020bf1c47cf0f13654e8ef9efb1463b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", - "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", + "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/6e1efa1e020bf1c47cf0f13654e8ef9efb1463b3", + "reference": "6e1efa1e020bf1c47cf0f13654e8ef9efb1463b3", "shasum": "" }, "require": { - "php": "^7.1||^8.0" - }, - "require-dev": { - "guzzlehttp/guzzle": "^6.5||^7.4", - "phpspec/prophecy-phpunit": "^1.1", - "phpunit/phpunit": "^7.5||^9.5", - "psr/cache": "^1.0||^2.0", - "psr/http-client": "^1.0", + "guzzlehttp/psr7": "^1.4.2||^2.0", "psr/http-factory": "^1.0" }, - "suggest": { - "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + "provide": { + "psr/http-factory-implementation": "^1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5" }, "type": "library", "autoload": { "psr-4": { - "Firebase\\JWT\\": "src" + "Http\\Factory\\Guzzle\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" - }, - { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", + "description": "An HTTP Factory using Guzzle PSR7", "keywords": [ - "jwt", - "php" + "factory", + "http", + "psr-17", + "psr-7" ], "support": { - "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.3.0" + "issues": "https://github.com/http-interop/http-factory-guzzle/issues", + "source": "https://github.com/http-interop/http-factory-guzzle/tree/1.1.1" }, - "time": "2022-07-15T16:48:45+00:00" + "time": "2021-07-23T15:14:50+00:00" }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.3.1", + "name": "jean85/pretty-package-versions", + "version": "2.0.5", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11" + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/b37bf90405cec3f7a83c18e645ef748bcb87ac11", - "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", "shasum": "" }, "require": { - "composer/semver": "^3.2", - "composer/xdebug-handler": "^2.0", - "doctrine/annotations": "^1.12", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^7.2.5 || ^8.0", - "php-cs-fixer/diff": "^2.0", - "symfony/console": "^4.4.20 || ^5.1.3", - "symfony/event-dispatcher": "^4.4.20 || ^5.0", - "symfony/filesystem": "^4.4.20 || ^5.0", - "symfony/finder": "^4.4.20 || ^5.0", - "symfony/options-resolver": "^4.4.20 || ^5.0", - "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php72": "^1.23", - "symfony/polyfill-php80": "^1.23", - "symfony/polyfill-php81": "^1.23", - "symfony/process": "^4.4.20 || ^5.0", - "symfony/stopwatch": "^4.4.20 || ^5.0" + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" }, "require-dev": { - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^1.5", - "mikey179/vfsstream": "^1.6.8", - "php-coveralls/php-coveralls": "^2.4.3", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.10.3", - "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^5.2.4", - "symfony/yaml": "^4.4.20 || ^5.0" + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", "autoload": { "psr-4": { - "PhpCsFixer\\": "src/" + "Jean85\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -560,76 +621,72 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" } ], - "description": "A tool to automatically fix PHP code style", + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.3.1" + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" - } - ], - "time": "2021-11-15T18:01:18+00:00" + "time": "2021-10-08T21:21:46+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "7.4.5", + "name": "php-http/client-common", + "version": "2.6.0", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" + "url": "https://github.com/php-http/client-common.git", + "reference": "45db684cd4e186dcdc2b9c06b22970fe123796c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "url": "https://api.github.com/repos/php-http/client-common/zipball/45db684cd4e186dcdc2b9c06b22970fe123796c0", + "reference": "45db684cd4e186dcdc2b9c06b22970fe123796c0", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", - "php": "^7.2.5 || ^8.0", + "php": "^7.1 || ^8.0", + "php-http/httplug": "^2.0", + "php-http/message": "^1.6", + "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0", + "symfony/polyfill-php80": "^1.17" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "psr/log": "^1.1 || ^2.0 || ^3.0" + "doctrine/instantiator": "^1.1", + "guzzlehttp/psr7": "^1.4", + "nyholm/psr7": "^1.2", + "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", + "phpspec/prophecy": "^1.10.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" }, "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" + "ext-json": "To detect JSON responses with the ContentTypePlugin", + "ext-libxml": "To detect XML responses with the ContentTypePlugin", + "php-http/cache-plugin": "PSR-6 Cache plugin", + "php-http/logger-plugin": "PSR-3 Logger plugin", + "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.4-dev" + "dev-master": "2.3.x-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\": "src/" + "Http\\Client\\Common\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -637,106 +694,63 @@ "MIT" ], "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, { "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "email": "mark.sagikazar@gmail.com" } ], - "description": "Guzzle is a PHP HTTP client library", + "description": "Common HTTP Client implementations and tools for HTTPlug", + "homepage": "http://httplug.io", "keywords": [ "client", - "curl", - "framework", + "common", "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" + "httplug" ], "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.5" + "issues": "https://github.com/php-http/client-common/issues", + "source": "https://github.com/php-http/client-common/tree/2.6.0" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2022-06-20T22:16:13+00:00" + "time": "2022-09-29T09:59:43+00:00" }, { - "name": "guzzlehttp/promises", - "version": "1.5.1", + "name": "php-http/discovery", + "version": "1.14.3", "source": { "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "url": "https://github.com/php-http/discovery.git", + "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/php-http/discovery/zipball/31d8ee46d0215108df16a8527c7438e96a4d7735", + "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1" + }, + "suggest": { + "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5-dev" + "dev-master": "1.9-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\Promise\\": "src/" + "Http\\Discovery\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -745,91 +759,60 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "Guzzle promises library", + "description": "Finds installed HTTPlug implementations and PSR-7 message factories", + "homepage": "http://php-http.org", "keywords": [ - "promise" + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr7" ], "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.14.3" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2022-07-11T14:04:40+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "2.4.0", + "name": "php-http/httplug", + "version": "2.3.0", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "13388f00956b1503577598873fffb5ae994b5737" + "url": "https://github.com/php-http/httplug.git", + "reference": "f640739f80dfa1152533976e3c112477f69274eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737", - "reference": "13388f00956b1503577598873fffb5ae994b5737", + "url": "https://api.github.com/repos/php-http/httplug/zipball/f640739f80dfa1152533976e3c112477f69274eb", + "reference": "f640739f80dfa1152533976e3c112477f69274eb", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "php": "^7.1 || ^8.0", + "php-http/promise": "^1.1", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + "friends-of-phpspec/phpspec-code-coverage": "^4.1", + "phpspec/phpspec": "^5.1 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" + "Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -838,34 +821,8 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" }, { "name": "Márk Sági-Kazár", @@ -873,67 +830,68 @@ "homepage": "https://sagikazarmark.hu" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" + "client", + "http" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.0" + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/2.3.0" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2022-06-20T21:43:11+00:00" + "time": "2022-02-21T09:52:22+00:00" }, { - "name": "http-interop/http-factory-guzzle", - "version": "1.1.1", + "name": "php-http/message", + "version": "1.13.0", "source": { "type": "git", - "url": "https://github.com/http-interop/http-factory-guzzle.git", - "reference": "6e1efa1e020bf1c47cf0f13654e8ef9efb1463b3" + "url": "https://github.com/php-http/message.git", + "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/6e1efa1e020bf1c47cf0f13654e8ef9efb1463b3", - "reference": "6e1efa1e020bf1c47cf0f13654e8ef9efb1463b3", + "url": "https://api.github.com/repos/php-http/message/zipball/7886e647a30a966a1a8d1dad1845b71ca8678361", + "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361", "shasum": "" }, "require": { - "guzzlehttp/psr7": "^1.4.2||^2.0", - "psr/http-factory": "^1.0" + "clue/stream-filter": "^1.5", + "php": "^7.1 || ^8.0", + "php-http/message-factory": "^1.0.2", + "psr/http-message": "^1.0" }, "provide": { - "psr/http-factory-implementation": "^1.0" + "php-http/message-factory-implementation": "1.0" }, "require-dev": { - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5" + "ergebnis/composer-normalize": "^2.6", + "ext-zlib": "*", + "guzzlehttp/psr7": "^1.0", + "laminas/laminas-diactoros": "^2.0", + "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", + "slim/slim": "^3.0" }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Factory\\Guzzle\\": "src/" - } + "suggest": { + "ext-zlib": "Used with compressor/decompressor streams", + "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", + "laminas/laminas-diactoros": "Used with Diactoros Factories", + "slim/slim": "Used with Slim Framework PSR-7 implementation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "files": [ + "src/filters.php" + ], + "psr-4": { + "Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -941,57 +899,50 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "An HTTP Factory using Guzzle PSR7", + "description": "HTTP Message related tools", + "homepage": "http://php-http.org", "keywords": [ - "factory", "http", - "psr-17", + "message", "psr-7" ], "support": { - "issues": "https://github.com/http-interop/http-factory-guzzle/issues", - "source": "https://github.com/http-interop/http-factory-guzzle/tree/1.1.1" + "issues": "https://github.com/php-http/message/issues", + "source": "https://github.com/php-http/message/tree/1.13.0" }, - "time": "2021-07-23T15:14:50+00:00" + "time": "2022-02-11T13:41:14+00:00" }, { - "name": "jean85/pretty-package-versions", - "version": "2.0.5", + "name": "php-http/message-factory", + "version": "v1.0.2", "source": { "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + "url": "https://github.com/php-http/message-factory.git", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", "shasum": "" }, "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", - "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "php": ">=5.4", + "psr/http-message": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "1.0-dev" } }, "autoload": { "psr-4": { - "Jean85\\": "src/" + "Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1000,245 +951,201 @@ ], "authors": [ { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "A library to get pretty versions strings of installed dependencies", + "description": "Factory interfaces for PSR-7 HTTP Message", + "homepage": "http://php-http.org", "keywords": [ - "composer", - "package", - "release", - "versions" + "factory", + "http", + "message", + "stream", + "uri" ], "support": { - "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + "issues": "https://github.com/php-http/message-factory/issues", + "source": "https://github.com/php-http/message-factory/tree/master" }, - "time": "2021-10-08T21:21:46+00:00" + "time": "2015-12-19T14:08:53+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.13.2", + "name": "php-http/promise", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "url": "https://github.com/php-http/promise.git", + "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", + "phpspec/phpspec": "^5.1.2 || ^6.2" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "1.1-dev" } }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Http\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "A PHP parser written in PHP", + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", "keywords": [ - "parser", - "php" + "promise" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.1.0" }, - "time": "2021-11-30T19:35:32+00:00" + "time": "2020-07-07T09:29:14+00:00" }, { - "name": "php-cs-fixer/diff", - "version": "v2.0.2", + "name": "prestashop/circuit-breaker", + "version": "v4.0.1", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" + "url": "https://github.com/PrestaShop/circuit-breaker.git", + "reference": "8dff14c1411448d4d64b740d12100637ad64f5c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "url": "https://api.github.com/repos/PrestaShop/circuit-breaker/zipball/8dff14c1411448d4d64b740d12100637ad64f5c7", + "reference": "8dff14c1411448d4d64b740d12100637ad64f5c7", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0 || ^8.0" + "guzzlehttp/guzzle": "^7.3" }, "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", - "symfony/process": "^3.3" + "doctrine/cache": "^1.10.2", + "phpunit/phpunit": "^8", + "prestashop/php-dev-tools": "^4.1", + "psr/simple-cache": "^1.0", + "symfony/cache": "^4.4", + "symfony/event-dispatcher": "^4.4" + }, + "suggest": { + "doctrine/cache": "Allows use of Doctrine Cache adapters to store transactions", + "ext-apcu": "Allows use of APCu adapter (performant) to store transactions", + "symfony/cache": "Allows use of Symfony Cache adapters to store transactions" }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PrestaShop\\CircuitBreaker\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "PrestaShop SA", + "email": "contact@prestashop.com" }, { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" + "name": "PrestaShop Community", + "homepage": "http://contributors.prestashop.com/" } ], - "description": "sebastian/diff v3 backport support for PHP 5.6+", - "homepage": "https://github.com/PHP-CS-Fixer", - "keywords": [ - "diff" - ], + "description": "A circuit breaker implementation for PHP", "support": { - "issues": "https://github.com/PHP-CS-Fixer/diff/issues", - "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" + "issues": "https://github.com/PrestaShop/circuit-breaker/issues", + "source": "https://github.com/PrestaShop/circuit-breaker/tree/v4.0.1" }, - "time": "2020-10-14T08:32:19+00:00" + "time": "2021-10-12T15:22:50+00:00" }, { - "name": "php-http/client-common", - "version": "2.5.0", + "name": "prestashop/prestashop-accounts-installer", + "version": "v1.0.1", "source": { "type": "git", - "url": "https://github.com/php-http/client-common.git", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054" + "url": "https://github.com/PrestaShopCorp/prestashop-accounts-installer.git", + "reference": "f038af2408968d1045330b32aa1fed65fcaf4c9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/d135751167d57e27c74de674d6a30cef2dc8e054", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054", + "url": "https://api.github.com/repos/PrestaShopCorp/prestashop-accounts-installer/zipball/f038af2408968d1045330b32aa1fed65fcaf4c9b", + "reference": "f038af2408968d1045330b32aa1fed65fcaf4c9b", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "php-http/httplug": "^2.0", - "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0", - "symfony/polyfill-php80": "^1.17" + "php": ">=5.6" }, "require-dev": { - "doctrine/instantiator": "^1.1", - "guzzlehttp/psr7": "^1.4", - "nyholm/psr7": "^1.2", - "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", - "phpspec/prophecy": "^1.10.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" - }, - "suggest": { - "ext-json": "To detect JSON responses with the ContentTypePlugin", - "ext-libxml": "To detect XML responses with the ContentTypePlugin", - "php-http/cache-plugin": "PSR-6 Cache plugin", - "php-http/logger-plugin": "PSR-3 Logger plugin", - "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" + "friendsofphp/php-cs-fixer": "^2.16", + "fzaninotto/faker": "^1.9", + "phpunit/phpunit": "^5.7", + "prestashop/php-dev-tools": "3.*" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { "psr-4": { - "Http\\Client\\Common\\": "src/" + "PrestaShop\\PsAccountsInstaller\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Common HTTP Client implementations and tools for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "common", - "http", - "httplug" - ], + "description": "Utility package to install `ps_accounts` module or present data to trigger manual install from psx configuration page.", "support": { - "issues": "https://github.com/php-http/client-common/issues", - "source": "https://github.com/php-http/client-common/tree/2.5.0" + "issues": "https://github.com/PrestaShopCorp/prestashop-accounts-installer/issues", + "source": "https://github.com/PrestaShopCorp/prestashop-accounts-installer/tree/v1.0.1" }, - "time": "2021-11-26T15:01:24+00:00" + "time": "2021-07-23T15:40:36+00:00" }, { - "name": "php-http/discovery", - "version": "1.14.3", + "name": "psr/container", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735" + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/31d8ee46d0215108df16a8527c7438e96a4d7735", - "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": ">=7.2.0" }, - "conflict": { - "nyholm/psr7": "<1.0" - }, - "require-dev": { - "graham-campbell/phpspec-skip-example-extension": "^5.0", - "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1" - }, - "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Discovery\\": "src/" - } + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1246,60 +1153,52 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Finds installed HTTPlug implementations and PSR-7 message factories", - "homepage": "http://php-http.org", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "adapter", - "client", - "discovery", - "factory", - "http", - "message", - "psr7" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.14.3" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" }, - "time": "2022-07-11T14:04:40+00:00" + "time": "2021-03-05T17:36:06+00:00" }, { - "name": "php-http/httplug", - "version": "2.3.0", + "name": "psr/http-client", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "f640739f80dfa1152533976e3c112477f69274eb" + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/f640739f80dfa1152533976e3c112477f69274eb", - "reference": "f640739f80dfa1152533976e3c112477f69274eb", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", + "php": "^7.0 || ^8.0", "psr/http-message": "^1.0" }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1", - "phpspec/phpspec": "^5.1 || ^6.0" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Http\\Client\\": "src/" + "Psr\\Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1308,76 +1207,50 @@ ], "authors": [ { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", "keywords": [ - "client", - "http" + "http", + "http-client", + "psr", + "psr-18" ], "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/2.3.0" + "source": "https://github.com/php-fig/http-client/tree/master" }, - "time": "2022-02-21T09:52:22+00:00" + "time": "2020-06-29T06:28:15+00:00" }, { - "name": "php-http/message", - "version": "1.13.0", + "name": "psr/http-factory", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/php-http/message.git", - "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361" + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/7886e647a30a966a1a8d1dad1845b71ca8678361", - "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", "shasum": "" }, "require": { - "clue/stream-filter": "^1.5", - "php": "^7.1 || ^8.0", - "php-http/message-factory": "^1.0.2", + "php": ">=7.0.0", "psr/http-message": "^1.0" }, - "provide": { - "php-http/message-factory-implementation": "1.0" - }, - "require-dev": { - "ergebnis/composer-normalize": "^2.6", - "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "laminas/laminas-diactoros": "^2.0", - "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", - "slim/slim": "^3.0" - }, - "suggest": { - "ext-zlib": "Used with compressor/decompressor streams", - "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "laminas/laminas-diactoros": "Used with Diactoros Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "files": [ - "src/filters.php" - ], "psr-4": { - "Http\\Message\\": "src/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1386,50 +1259,52 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", + "description": "Common interfaces for PSR-7 HTTP message factories", "keywords": [ + "factory", "http", "message", - "psr-7" + "psr", + "psr-17", + "psr-7", + "request", + "response" ], "support": { - "issues": "https://github.com/php-http/message/issues", - "source": "https://github.com/php-http/message/tree/1.13.0" + "source": "https://github.com/php-fig/http-factory/tree/master" }, - "time": "2022-02-11T13:41:14+00:00" + "time": "2019-04-30T12:38:16+00:00" }, { - "name": "php-http/message-factory", - "version": "v1.0.2", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Http\\Message\\": "src/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1438,55 +1313,51 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "factory", "http", - "message", - "stream", - "uri" + "http-message", + "psr", + "psr-7", + "request", + "response" ], "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/master" + "source": "https://github.com/php-fig/http-message/tree/master" }, - "time": "2015-12-19T14:08:53+00:00" + "time": "2016-08-06T14:39:51+00:00" }, { - "name": "php-http/promise", - "version": "1.1.0", + "name": "psr/log", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "Http\\Promise\\": "src/" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1495,109 +1366,105 @@ ], "authors": [ { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "promise" + "log", + "psr", + "psr-3" ], "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.1.0" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2020-07-07T09:29:14+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { - "name": "prestashop/autoindex", - "version": "v2.0.0", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/PrestaShopCorp/autoindex.git", - "reference": "355c224de4ca8766d63a038dcdcb24f56cb19fec" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PrestaShopCorp/autoindex/zipball/355c224de4ca8766d63a038dcdcb24f56cb19fec", - "reference": "355c224de4ca8766d63a038dcdcb24f56cb19fec", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", - "php": ">=7.2", - "symfony/console": "^3.4 || ~4.0 || ~5.0", - "symfony/finder": "^3.4 || ~4.0 || ~5.0" + "php": ">=5.6" }, "require-dev": { - "phpstan/phpstan": "^0.12.83", - "prestashop/php-dev-tools": "1.*" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, - "bin": [ - "bin/autoindex" - ], "type": "library", "autoload": { - "psr-4": { - "PrestaShop\\AutoIndex\\": "src/" - } + "files": [ + "src/getallheaders.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "AFL-3.0" + "MIT" ], "authors": [ { - "name": "PrestaShop SA", - "email": "contact@prestashop.com" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "Automatically add an 'index.php' in all the current or specified directories and all sub-directories.", - "homepage": "https://github.com/PrestaShopCorp/autoindex", + "description": "A polyfill for getallheaders.", "support": { - "source": "https://github.com/PrestaShopCorp/autoindex/tree/v2.0.0" + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" }, - "time": "2021-06-09T15:37:17+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { - "name": "prestashop/circuit-breaker", - "version": "v4.0.0", + "name": "ramsey/collection", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/PrestaShop/circuit-breaker.git", - "reference": "9744f98f5f5a3c678fd14cd60b70d2872d9295f2" + "url": "https://github.com/ramsey/collection.git", + "reference": "ab2237657ad99667a5143e32ba2683c8029563d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PrestaShop/circuit-breaker/zipball/9744f98f5f5a3c678fd14cd60b70d2872d9295f2", - "reference": "9744f98f5f5a3c678fd14cd60b70d2872d9295f2", + "url": "https://api.github.com/repos/ramsey/collection/zipball/ab2237657ad99667a5143e32ba2683c8029563d4", + "reference": "ab2237657ad99667a5143e32ba2683c8029563d4", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^7.3", - "prestashop/php-dev-tools": "^4.0" + "php": "^7.2 || ^8" }, "require-dev": { - "doctrine/cache": "^1.10.2", - "phpunit/phpunit": "^8", - "psr/simple-cache": "^1.0", - "symfony/cache": "^4.4", - "symfony/event-dispatcher": "^4.4" - }, - "suggest": { - "doctrine/cache": "Allows use of Doctrine Cache adapters to store transactions", - "ext-apcu": "Allows use of APCu adapter (performant) to store transactions", - "symfony/cache": "Allows use of Symfony Cache adapters to store transactions" + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", + "mockery/mockery": "^1.3", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { "psr-4": { - "PrestaShop\\CircuitBreaker\\": "src/" + "Ramsey\\Collection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1606,280 +1473,326 @@ ], "authors": [ { - "name": "PrestaShop SA", - "email": "contact@prestashop.com" - }, - { - "name": "PrestaShop Community", - "homepage": "http://contributors.prestashop.com/" + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" } ], - "description": "A circuit breaker implementation for PHP", + "description": "A PHP 7.2+ library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], "support": { - "issues": "https://github.com/PrestaShop/circuit-breaker/issues", - "source": "https://github.com/PrestaShop/circuit-breaker/tree/v4.0.0" + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.1.4" }, - "time": "2021-04-20T14:48:25+00:00" + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2021-07-30T00:58:27+00:00" }, { - "name": "prestashop/header-stamp", - "version": "v2.1", + "name": "ramsey/uuid", + "version": "4.2.3", "source": { "type": "git", - "url": "https://github.com/PrestaShopCorp/header-stamp.git", - "reference": "d00c2ce550fe9b1a3713cebafee669f44a93ff2a" + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PrestaShopCorp/header-stamp/zipball/d00c2ce550fe9b1a3713cebafee669f44a93ff2a", - "reference": "d00c2ce550fe9b1a3713cebafee669f44a93ff2a", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", - "php": ">=7.2.5", - "symfony/console": "^3.4 || ~4.0 || ~5.0", - "symfony/finder": "^3.4 || ~4.0 || ~5.0" + "brick/math": "^0.8 || ^0.9", + "ext-json": "*", + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" + }, + "replace": { + "rhumsaa/uuid": "self.version" }, "require-dev": { - "phpstan/phpstan": "^0.12.83", - "prestashop/php-dev-tools": "1.*" + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, - "bin": [ - "bin/header-stamp" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "PrestaShop\\HeaderStamp\\": "src/" + "Ramsey\\Uuid\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "AFL-3.0" + "MIT" ], - "authors": [ - { - "name": "PrestaShop SA", - "email": "contact@prestashop.com" - } + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" ], - "description": "Rewrite your file headers to add the license or to make them up-to-date", - "homepage": "https://github.com/PrestaShopCorp/header-stamp", "support": { - "issues": "https://github.com/PrestaShopCorp/header-stamp/issues", - "source": "https://github.com/PrestaShopCorp/header-stamp/tree/v2.1" + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.2.3" }, - "time": "2021-11-15T16:57:29+00:00" + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2021-09-25T23:10:38+00:00" }, { - "name": "prestashop/php-dev-tools", - "version": "v4.2.1", + "name": "sentry/sdk", + "version": "3.3.0", "source": { "type": "git", - "url": "https://github.com/PrestaShop/php-dev-tools.git", - "reference": "359a2896c5115014b01155af1af2bea18ea28451" + "url": "https://github.com/getsentry/sentry-php-sdk.git", + "reference": "d0678fc7274dbb03046ed05cb24eb92945bedf8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PrestaShop/php-dev-tools/zipball/359a2896c5115014b01155af1af2bea18ea28451", - "reference": "359a2896c5115014b01155af1af2bea18ea28451", + "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/d0678fc7274dbb03046ed05cb24eb92945bedf8e", + "reference": "d0678fc7274dbb03046ed05cb24eb92945bedf8e", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^3.2", - "php": ">=7.2.5", - "prestashop/autoindex": "^2.0", - "prestashop/header-stamp": "^2.0", - "squizlabs/php_codesniffer": "^3.4", - "symfony/console": "~3.2 || ~4.0 || ~5.0", - "symfony/filesystem": "~3.2 || ~4.0 || ~5.0" - }, - "bin": [ - "bin/prestashop-coding-standards" - ], - "type": "library", - "autoload": { - "psr-4": { - "PrestaShop\\CodingStandards\\": "src/" - } + "http-interop/http-factory-guzzle": "^1.0", + "sentry/sentry": "^3.9", + "symfony/http-client": "^4.3|^5.0|^6.0" }, + "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PrestaShop coding standards", + "authors": [ + { + "name": "Sentry", + "email": "accounts@sentry.io" + } + ], + "description": "This is a metapackage shipping sentry/sentry with a recommended HTTP client.", + "homepage": "http://sentry.io", + "keywords": [ + "crash-reporting", + "crash-reports", + "error-handler", + "error-monitoring", + "log", + "logging", + "sentry" + ], "support": { - "issues": "https://github.com/PrestaShop/php-dev-tools/issues", - "source": "https://github.com/PrestaShop/php-dev-tools/tree/v4.2.1" + "issues": "https://github.com/getsentry/sentry-php-sdk/issues", + "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.3.0" }, - "time": "2021-12-01T11:02:58+00:00" + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], + "time": "2022-10-11T09:05:00+00:00" }, { - "name": "prestashop/prestashop-accounts-installer", - "version": "v1.0.1", + "name": "sentry/sentry", + "version": "3.11.0", "source": { "type": "git", - "url": "https://github.com/PrestaShopCorp/prestashop-accounts-installer.git", - "reference": "f038af2408968d1045330b32aa1fed65fcaf4c9b" + "url": "https://github.com/getsentry/sentry-php.git", + "reference": "91bd6e54d9352754bbdd1d800d2b88618f8130d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PrestaShopCorp/prestashop-accounts-installer/zipball/f038af2408968d1045330b32aa1fed65fcaf4c9b", - "reference": "f038af2408968d1045330b32aa1fed65fcaf4c9b", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/91bd6e54d9352754bbdd1d800d2b88618f8130d4", + "reference": "91bd6e54d9352754bbdd1d800d2b88618f8130d4", "shasum": "" }, "require": { - "php": ">=5.6" + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/promises": "^1.4", + "guzzlehttp/psr7": "^1.8.4|^2.1.1", + "jean85/pretty-package-versions": "^1.5|^2.0.4", + "php": "^7.2|^8.0", + "php-http/async-client-implementation": "^1.0", + "php-http/client-common": "^1.5|^2.0", + "php-http/discovery": "^1.11", + "php-http/httplug": "^1.1|^2.0", + "php-http/message": "^1.5", + "psr/http-factory": "^1.0", + "psr/http-message-implementation": "^1.0", + "psr/log": "^1.0|^2.0|^3.0", + "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0", + "symfony/polyfill-php80": "^1.17" }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "fzaninotto/faker": "^1.9", - "phpunit/phpunit": "^5.7", - "prestashop/php-dev-tools": "3.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "PrestaShop\\PsAccountsInstaller\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Utility package to install `ps_accounts` module or present data to trigger manual install from psx configuration page.", - "support": { - "issues": "https://github.com/PrestaShopCorp/prestashop-accounts-installer/issues", - "source": "https://github.com/PrestaShopCorp/prestashop-accounts-installer/tree/v1.0.1" - }, - "time": "2021-07-23T15:40:36+00:00" - }, - { - "name": "psr/cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "conflict": { + "php-http/client-common": "1.8.0", + "raven/raven": "*" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19|3.4.*", + "http-interop/http-factory-guzzle": "^1.0", + "monolog/monolog": "^1.6|^2.0|^3.0", + "nikic/php-parser": "^4.10.3", + "php-http/mock-client": "^1.3", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5.14|^9.4", + "symfony/phpunit-bridge": "^5.2|^6.0", + "vimeo/psalm": "^4.17" }, - "require": { - "php": ">=5.3.0" + "suggest": { + "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.11.x-dev" } }, "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "Psr\\Cache\\": "src/" + "Sentry\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Sentry", + "email": "accounts@sentry.io" } ], - "description": "Common interface for caching libraries", + "description": "A PHP SDK for Sentry (http://sentry.io)", + "homepage": "http://sentry.io", "keywords": [ - "cache", - "psr", - "psr-6" + "crash-reporting", + "crash-reports", + "error-handler", + "error-monitoring", + "log", + "logging", + "sentry" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" - }, - "time": "2016-08-06T20:24:11+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } + "issues": "https://github.com/getsentry/sentry-php/issues", + "source": "https://github.com/getsentry/sentry-php/tree/3.11.0" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" - }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2022-10-25T14:36:50+00:00" }, { - "name": "psr/http-client", - "version": "1.0.1", + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } + "files": [ + "function.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1887,51 +1800,86 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" }, - "time": "2020-06-29T06:28:15+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" }, { - "name": "psr/http-factory", - "version": "1.0.1", + "name": "symfony/http-client", + "version": "v5.4.15", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "url": "https://github.com/symfony/http-client.git", + "reference": "8f29b0f06c9ff48c8431e78eb90c8bd6f82cb12b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/symfony/http-client/zipball/8f29b0f06c9ff48c8431e78eb90c8bd6f82cb12b", + "reference": "8f29b0f06c9ff48c8431e78eb90c8bd6f82cb12b", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-client-contracts": "^2.4", + "symfony/polyfill-php73": "^1.11", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.0|^2|^3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "2.4" + }, + "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, + "type": "library", "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" - } + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1939,52 +1887,68 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/symfony/http-client/tree/v5.4.15" }, - "time": "2019-04-30T12:38:16+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-25T16:22:13+00:00" }, { - "name": "psr/http-message", - "version": "1.0.1", + "name": "symfony/http-client-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.5" + }, + "suggest": { + "symfony/http-client-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Symfony\\Contracts\\HttpClient\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -1993,52 +1957,71 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" }, - "time": "2016-08-06T14:39:51+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T15:48:08+00:00" }, { - "name": "psr/log", - "version": "1.1.4", + "name": "symfony/options-resolver", + "version": "v5.4.11", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/54f14e36aa73cb8f7261d7686691fd4d75ea2690", + "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2046,105 +2029,79 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", "keywords": [ - "log", - "psr", - "psr-3" + "config", + "configuration", + "options" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] + "source": "https://github.com/symfony/options-resolver/tree/v5.4.11" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" + "time": "2022-07-20T13:00:38+00:00" }, - { - "name": "ramsey/collection", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "ab2237657ad99667a5143e32ba2683c8029563d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/ab2237657ad99667a5143e32ba2683c8029563d4", - "reference": "ab2237657ad99667a5143e32ba2683c8029563d4", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" + { + "name": "symfony/polyfill-ctype", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Ramsey\\Collection\\": "src/" + "Symfony\\Polyfill\\Ctype\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2153,408 +2110,404 @@ ], "authors": [ { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP 7.2+ library for representing and manipulating collections.", + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" + "compatibility", + "ctype", + "polyfill", + "portable" ], "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.1.4" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" }, "funding": [ { - "url": "https://github.com/ramsey", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2021-07-30T00:58:27+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { - "name": "ramsey/uuid", - "version": "4.2.3", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "433d05519ce6990bf3530fba6957499d327395c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", + "reference": "433d05519ce6990bf3530fba6957499d327395c2", "shasum": "" }, "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "moontoast/math": "^1.1", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "php": ">=7.1" }, "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.x-dev" + "dev-main": "1.26-dev" }, - "captainhook": { - "force-install": true + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "files": [ - "src/functions.php" + "bootstrap.php" ], "psr-4": { - "Ramsey\\Uuid\\": "src/" + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", "keywords": [ - "guid", - "identifier", - "uuid" + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.2.3" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" }, "funding": [ { - "url": "https://github.com/ramsey", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2021-09-25T23:10:38+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { - "name": "sentry/sdk", - "version": "3.2.0", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "6d78bd83b43efbb52f81d6824f4af344fa9ba292" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/6d78bd83b43efbb52f81d6824f4af344fa9ba292", - "reference": "6d78bd83b43efbb52f81d6824f4af344fa9ba292", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", "shasum": "" }, "require": { - "http-interop/http-factory-guzzle": "^1.0", - "sentry/sentry": "^3.5", - "symfony/http-client": "^4.3|^5.0|^6.0" + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, - "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Sentry", - "email": "accounts@sentry.io" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "This is a metapackage shipping sentry/sentry with a recommended HTTP client.", - "homepage": "http://sentry.io", + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "log", - "logging", - "sentry" + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/getsentry/sentry-php-sdk/issues", - "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.2.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" }, "funding": [ { - "url": "https://sentry.io/", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://sentry.io/pricing/", - "type": "custom" + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2022-05-21T11:10:11+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { - "name": "sentry/sentry", - "version": "3.7.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/getsentry/sentry-php.git", - "reference": "877bca3f0f0ac0fc8ec0a218c6070cccea266795" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/877bca3f0f0ac0fc8ec0a218c6070cccea266795", - "reference": "877bca3f0f0ac0fc8ec0a218c6070cccea266795", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.8.4|^2.1.1", - "jean85/pretty-package-versions": "^1.5|^2.0.4", - "php": "^7.2|^8.0", - "php-http/async-client-implementation": "^1.0", - "php-http/client-common": "^1.5|^2.0", - "php-http/discovery": "^1.11", - "php-http/httplug": "^1.1|^2.0", - "php-http/message": "^1.5", - "psr/http-factory": "^1.0", - "psr/http-message-implementation": "^1.0", - "psr/log": "^1.0|^2.0|^3.0", - "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0", - "symfony/polyfill-php80": "^1.17", - "symfony/polyfill-uuid": "^1.13.1" - }, - "conflict": { - "php-http/client-common": "1.8.0", - "raven/raven": "*" + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "shasum": "" }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.19|3.4.*", - "http-interop/http-factory-guzzle": "^1.0", - "monolog/monolog": "^1.6|^2.0|^3.0", - "nikic/php-parser": "^4.10.3", - "php-http/mock-client": "^1.3", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^8.5.14|^9.4", - "symfony/phpunit-bridge": "^5.2|^6.0", - "vimeo/psalm": "^4.17" + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" }, "suggest": { - "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.7.x-dev" + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "files": [ - "src/functions.php" + "bootstrap.php" ], "psr-4": { - "Sentry\\": "src/" + "Symfony\\Polyfill\\Mbstring\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sentry", - "email": "accounts@sentry.io" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP SDK for Sentry (http://sentry.io)", - "homepage": "http://sentry.io", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "log", - "logging", - "sentry" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/3.7.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" }, "funding": [ { - "url": "https://sentry.io/", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://sentry.io/pricing/", - "type": "custom" + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2022-07-18T07:55:36+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "3.6.1", + "name": "symfony/polyfill-php73", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/f268ca40d54617c6e06757f83f699775c9b3ff2e", - "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "php": ">=7.1" }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Greg Sherwood", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "phpcs", - "standards" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" }, - "time": "2021-10-11T04:00:11+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" }, { - "name": "symfony/console", - "version": "v5.4.0", + "name": "symfony/polyfill-php80", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "ec3661faca1d110d6c307e124b44f99ac54179e3" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ec3661faca1d110d6c307e124b44f99ac54179e3", - "reference": "ec3661faca1d110d6c307e124b44f99ac54179e3", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2563,24 +2516,28 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "cli", - "command line", - "console", - "terminal" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" }, "funding": [ { @@ -2596,38 +2553,41 @@ "type": "tidelift" } ], - "time": "2021-11-29T15:30:56+00:00" + "time": "2022-05-10T07:21:04+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "name": "symfony/property-access", + "version": "v5.4.15", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "url": "https://github.com/symfony/property-access.git", + "reference": "0f3e8f40a1d3da90f674b3dd772e4777ccde4273" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/property-access/zipball/0f3e8f40a1d3da90f674b3dd772e4777ccde4273", + "reference": "0f3e8f40a1d3da90f674b3dd772e4777ccde4273", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/property-info": "^5.2|^6.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "require-dev": { + "symfony/cache": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." }, + "type": "library", "autoload": { - "files": [ - "function.php" + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2636,18 +2596,29 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/property-access/tree/v5.4.15" }, "funding": [ { @@ -2663,52 +2634,51 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-10-27T07:55:40+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.4.44", + "name": "symfony/property-info", + "version": "v5.4.15", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" + "url": "https://github.com/symfony/property-info.git", + "reference": "3ef5e026a71a39345da241292c153979893033c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "url": "https://api.github.com/repos/symfony/property-info/zipball/3ef5e026a71a39345da241292c153979893033c2", + "reference": "3ef5e026a71a39345da241292c153979893033c2", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/string": "^5.1|^6.0" }, "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "doctrine/annotations": "^1.10.4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Component\\PropertyInfo\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2720,18 +2690,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "description": "Extracts information about PHP class' properties using metadata of popular sources", "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" + "source": "https://github.com/symfony/property-info/tree/v5.4.15" }, "funding": [ { @@ -2747,33 +2725,37 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2022-10-27T07:55:40+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.13", + "name": "symfony/service-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "symfony/service-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -2782,7 +2764,7 @@ }, "autoload": { "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" + "Symfony\\Contracts\\Service\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2799,7 +2781,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ "abstractions", @@ -2810,7 +2792,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -2826,95 +2808,46 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { - "name": "symfony/filesystem", - "version": "v5.4.0", + "name": "symfony/string", + "version": "v5.4.15", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01" + "url": "https://github.com/symfony/string.git", + "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/731f917dc31edcffec2c6a777f3698c33bea8f01", - "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01", + "url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", + "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-10-28T13:39:27+00:00" - }, - { - "name": "symfony/finder", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590" + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d2f29dac98e96a98be467627bd49c2efb1bc2590", - "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590", - "shasum": "" + "conflict": { + "symfony/translation-contracts": ">=3.0" }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Component\\String\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2926,18 +2859,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Finds files and directories via an intuitive fluent interface", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.0" + "source": "https://github.com/symfony/string/tree/v5.4.15" }, "funding": [ { @@ -2953,59 +2894,43 @@ "type": "tidelift" } ], - "time": "2021-11-28T15:25:38+00:00" + "time": "2022-10-05T15:16:54+00:00" }, { - "name": "symfony/http-client", - "version": "v5.4.9", + "name": "symfony/workflow", + "version": "v4.4.44", "source": { "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "dc0b15e42b762c040761c1eb9ce86a55d47cf672" + "url": "https://github.com/symfony/workflow.git", + "reference": "19ab88556cf9d09d08a376bbb6152a4f8f40a449" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/dc0b15e42b762c040761c1eb9ce86a55d47cf672", - "reference": "dc0b15e42b762c040761c1eb9ce86a55d47cf672", + "url": "https://api.github.com/repos/symfony/workflow/zipball/19ab88556cf9d09d08a376bbb6152a4f8f40a449", + "reference": "19ab88556cf9d09d08a376bbb6152a4f8f40a449", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-client-contracts": "^2.4", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2|^3" + "php": ">=7.1.3", + "symfony/property-access": "^3.4|^4.3|^5.0" }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "2.4" + "conflict": { + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/security-core": ">=5" }, "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", - "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4", - "nyholm/psr7": "^1.0", - "php-http/httplug": "^1.0|^2.0", - "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "psr/log": "^1|^2|^3", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/security-core": "^3.4|^4.0", + "symfony/validator": "^3.4|^4.0|^5.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Component\\Workflow\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3013,18 +2938,30 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "description": "Provides tools for managing a workflow or finite state machine", "homepage": "https://symfony.com", + "keywords": [ + "petrinet", + "place", + "state", + "statemachine", + "transition", + "workflow" + ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.9" + "source": "https://github.com/symfony/workflow/tree/v4.4.44" }, "funding": [ { @@ -3040,41 +2977,41 @@ "type": "tidelift" } ], - "time": "2022-05-21T08:57:05+00:00" - }, + "time": "2022-07-20T09:59:04+00:00" + } + ], + "packages-dev": [ { - "name": "symfony/http-client-contracts", - "version": "v2.5.2", + "name": "composer/pcre", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" + "url": "https://github.com/composer/pcre.git", + "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": "^5.3.2 || ^7.0 || ^8.0" }, - "suggest": { - "symfony/http-client-implementation": "" + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-main": "1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3083,71 +3020,69 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "PCRE", + "preg", + "regex", + "regular expression" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/1.0.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2022-01-21T20:24:37+00:00" }, { - "name": "symfony/options-resolver", - "version": "v5.4.3", + "name": "composer/semver", + "version": "3.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8" + "url": "https://github.com/composer/semver.git", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Composer\\Semver\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3155,77 +3090,78 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", + "description": "Semver library that offers utilities, version constraint parsing and validation.", "keywords": [ - "config", - "configuration", - "options" + "semantic", + "semver", + "validation", + "versioning" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.3" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-04-01T19:23:25+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "composer/xdebug-handler", + "version": "2.0.5", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a", + "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a", "shasum": "" }, "require": { - "php": ">=7.1" + "composer/pcre": "^1", + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Composer\\XdebugHandler\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3233,78 +3169,69 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", + "description": "Restarts a process without Xdebug.", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "Xdebug", + "performance" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/2.0.5" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-02-24T20:20:32+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "name": "doctrine/annotations", + "version": "1.13.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "url": "https://github.com/doctrine/annotations.git", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0", "shasum": "" }, "require": { - "php": ">=7.1" + "doctrine/lexer": "1.*", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^6.0 || ^8.1", + "phpstan/phpstan": "^1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", + "symfony/cache": "^4.4 || ^5.2", + "vimeo/psalm": "^4.10" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3312,83 +3239,71 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" - }, - "funding": [ + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, { - "url": "https://symfony.com/sponsor", - "type": "custom" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" }, { - "url": "https://github.com/fabpot", - "type": "github" + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "time": "2021-05-27T12:26:48+00:00" + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.13.3" + }, + "time": "2022-07-02T10:48:51+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "name": "doctrine/instantiator", + "version": "1.4.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.1 || ^8.0" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "doctrine/coding-standard": "^9", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3396,80 +3311,65 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "constructor", + "instantiate" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://www.doctrine-project.org/sponsorship.html", "type": "custom" }, { - "url": "https://github.com/fabpot", - "type": "github" + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "doctrine/lexer", + "version": "1.2.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/doctrine/lexer.git", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.1 || ^8.0" }, - "suggest": { - "ext-mbstring": "For best performance" + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3477,76 +3377,109 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "annotations", + "docblock", + "lexer", + "parser", + "php" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://www.doctrine-project.org/sponsorship.html", "type": "custom" }, { - "url": "https://github.com/fabpot", - "type": "github" + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "name": "friendsofphp/php-cs-fixer", + "version": "v3.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/b37bf90405cec3f7a83c18e645ef748bcb87ac11", + "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11", "shasum": "" }, "require": { - "php": ">=7.1" + "composer/semver": "^3.2", + "composer/xdebug-handler": "^2.0", + "doctrine/annotations": "^1.12", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.2.5 || ^8.0", + "php-cs-fixer/diff": "^2.0", + "symfony/console": "^4.4.20 || ^5.1.3", + "symfony/event-dispatcher": "^4.4.20 || ^5.0", + "symfony/filesystem": "^4.4.20 || ^5.0", + "symfony/finder": "^4.4.20 || ^5.0", + "symfony/options-resolver": "^4.4.20 || ^5.0", + "symfony/polyfill-mbstring": "^1.23", + "symfony/polyfill-php72": "^1.23", + "symfony/polyfill-php80": "^1.23", + "symfony/polyfill-php81": "^1.23", + "symfony/process": "^4.4.20 || ^5.0", + "symfony/stopwatch": "^4.4.20 || ^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^1.5", + "mikey179/vfsstream": "^1.6.8", + "php-coveralls/php-coveralls": "^2.4.3", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", + "phpspec/prophecy": "^1.10.3", + "phpspec/prophecy-phpunit": "^1.1 || ^2.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5", + "phpunitgoodpractices/polyfill": "^1.5", + "phpunitgoodpractices/traits": "^1.9.1", + "symfony/phpunit-bridge": "^5.2.4", + "symfony/yaml": "^4.4.20 || ^5.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] + "PhpCsFixer\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3554,1066 +3487,840 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], + "description": "A tool to automatically fix PHP code style", "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", + "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.3.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/keradus", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2021-11-15T18:01:18+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.26.0", + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "2.1-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "This is the PHP port of Hamcrest Matchers", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "test" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2020-07-09T08:09:16+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "name": "mockery/mockery", + "version": "1.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "url": "https://github.com/mockery/mockery.git", + "reference": "dc206df4fa314a50bbb81cf72239a305c5bbd5c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/mockery/mockery/zipball/dc206df4fa314a50bbb81cf72239a305c5bbd5c0", + "reference": "dc206df4fa314a50bbb81cf72239a305c5bbd5c0", "shasum": "" }, "require": { - "php": ">=7.1" + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "1.3.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "psr-0": { + "Mockery": "library/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "issues": "https://github.com/mockery/mockery/issues", + "source": "https://github.com/mockery/mockery/tree/1.3.6" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2022-09-07T15:05:49+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.23.0", + "name": "myclabs/deep-copy", + "version": "1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.1 || ^8.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, + "type": "library", "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ - "bootstrap.php" + "src/DeepCopy/deep_copy.php" ], - "classmap": [ - "Resources/stubs" - ] + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Create deep copies (clones) of your objects", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", "type": "tidelift" } ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { - "name": "symfony/polyfill-uuid", - "version": "v1.26.0", + "name": "nikic/php-parser", + "version": "v4.15.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/a41886c1c81dc075a09c71fe6db5b9d68c79de23", - "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "provide": { - "ext-uuid": "*" + "ext-tokenizer": "*", + "php": ">=7.0" }, - "suggest": { - "ext-uuid": "For best performance" + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.9-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" + "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Nikita Popov" } ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", + "description": "A PHP parser written in PHP", "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" + "parser", + "php" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.26.0" + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-09-04T07:30:47+00:00" }, { - "name": "symfony/process", - "version": "v5.4.0", + "name": "phar-io/manifest", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "5be20b3830f726e019162b26223110c8f47cf274" + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/5be20b3830f726e019162b26223110c8f47cf274", - "reference": "5be20b3830f726e019162b26223110c8f47cf274", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" }, { - "url": "https://github.com/fabpot", - "type": "github" + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "time": "2021-11-28T15:25:38+00:00" + "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" + }, + "time": "2021-07-20T11:28:43+00:00" }, { - "name": "symfony/property-access", - "version": "v5.4.11", + "name": "phar-io/version", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "c641d63e943ed31981bad4b4dcf29fe7da2ffa8c" + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/c641d63e943ed31981bad4b4dcf29fe7da2ffa8c", - "reference": "c641d63e943ed31981bad4b4dcf29fe7da2ffa8c", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2|^6.0" - }, - "require-dev": { - "symfony/cache": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", - "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" - ], - "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" }, { - "url": "https://github.com/fabpot", - "type": "github" + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "time": "2022-06-27T16:58:25+00:00" + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "symfony/property-info", - "version": "v5.4.11", + "name": "php-cs-fixer/diff", + "version": "v2.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "8a9a2b638a808cc92a2fbce185b9318e76b0e20c" + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/8a9a2b638a808cc92a2fbce185b9318e76b0e20c", - "reference": "8a9a2b638a808cc92a2fbce185b9318e76b0e20c", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" + "php": "^5.6 || ^7.0 || ^8.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", + "symfony/process": "^3.3" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", - "homepage": "https://symfony.com", + "description": "sebastian/diff v3 backport support for PHP 5.6+", + "homepage": "https://github.com/PHP-CS-Fixer", "keywords": [ - "doctrine", - "phpdoc", - "property", - "symfony", - "type", - "validator" + "diff" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.11" + "issues": "https://github.com/PHP-CS-Fixer/diff/issues", + "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-19T08:07:51+00:00" + "abandoned": true, + "time": "2020-10-14T08:32:19+00:00" }, { - "name": "symfony/service-contracts", - "version": "v2.5.0", + "name": "phpstan/phpstan", + "version": "1.9.1", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" + "url": "https://github.com/phpstan/phpstan.git", + "reference": "a59c8b5bfd4a236f27efc8b5ce72c313c2b54b5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a59c8b5bfd4a236f27efc8b5ce72c313c2b54b5f", + "reference": "a59c8b5bfd4a236f27efc8b5ce72c313c2b54b5f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1" + "php": "^7.2|^8.0" }, "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" + "phpstan/phpstan-shim": "*" }, + "bin": [ + "phpstan", + "phpstan.phar" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", + "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "dev", + "static analysis" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/1.9.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" + "url": "https://github.com/ondrejmirtes", + "type": "github" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/phpstan", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", "type": "tidelift" } ], - "time": "2021-11-04T16:48:04+00:00" + "time": "2022-11-04T13:35:59+00:00" }, { - "name": "symfony/stopwatch", - "version": "v5.4.0", + "name": "phpunit/php-code-coverage", + "version": "7.0.15", "source": { "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "208ef96122bfed82a8f3a61458a07113a08bdcfe" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "819f92bba8b001d4363065928088de22f25a3a48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/208ef96122bfed82a8f3a61458a07113a08bdcfe", - "reference": "208ef96122bfed82a8f3a61458a07113a08bdcfe", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", + "reference": "819f92bba8b001d4363065928088de22f25a3a48", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/service-contracts": "^1|^2|^3" + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": ">=7.2", + "phpunit/php-file-iterator": "^2.0.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.1.3 || ^4.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^4.2.2", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.2.2" + }, + "suggest": { + "ext-xdebug": "^2.7.2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides a way to profile code", - "homepage": "https://symfony.com", + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.0" + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-11-23T10:19:22+00:00" + "time": "2021-07-26T12:20:09+00:00" }, { - "name": "symfony/string", - "version": "v5.4.0", + "name": "phpunit/php-file-iterator", + "version": "2.0.5", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "9ffaaba53c61ba75a3c7a3a779051d1e9ec4fd2d" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/9ffaaba53c61ba75a3c7a3a779051d1e9ec4fd2d", - "reference": "9ffaaba53c61ba75a3c7a3a779051d1e9ec4fd2d", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "conflict": { - "symfony/translation-contracts": ">=3.0" + "php": ">=7.1" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "phpunit/phpunit": "^8.5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.php" - ], - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" + "filesystem", + "iterator" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.0" + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-11-24T10:02:00+00:00" + "time": "2021-12-02T12:42:26+00:00" }, { - "name": "symfony/workflow", - "version": "v4.4.44", + "name": "phpunit/php-text-template", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/workflow.git", - "reference": "19ab88556cf9d09d08a376bbb6152a4f8f40a449" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/workflow/zipball/19ab88556cf9d09d08a376bbb6152a4f8f40a449", - "reference": "19ab88556cf9d09d08a376bbb6152a4f8f40a449", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/property-access": "^3.4|^4.3|^5.0" - }, - "conflict": { - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/security-core": ">=5" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/security-core": "^3.4|^4.0", - "symfony/validator": "^3.4|^4.0|^5.0" + "php": ">=5.3.3" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\Workflow\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides tools for managing a workflow or finite state machine", - "homepage": "https://symfony.com", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "petrinet", - "place", - "state", - "statemachine", - "transition", - "workflow" + "template" ], "support": { - "source": "https://github.com/symfony/workflow/tree/v4.4.44" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-20T09:59:04+00:00" - } - ], - "packages-dev": [ + "time": "2015-06-21T13:50:34+00:00" + }, { - "name": "doctrine/instantiator", - "version": "1.4.0", + "name": "phpunit/php-timer", + "version": "2.1.3", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": ">=7.1" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^8.5" }, "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "constructor", - "instantiate" + "timer" ], "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2020-11-30T08:20:02+00:00" }, { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "name": "phpunit/php-token-stream", + "version": "3.1.3", "source": { "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "9c1da83261628cb24b6a6df371b6e312b3954768" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9c1da83261628cb24b6a6df371b6e312b3954768", + "reference": "9c1da83261628cb24b6a6df371b6e312b3954768", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" + "ext-tokenizer": "*", + "php": ">=7.1" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "3.1-dev" } }, "autoload": { "classmap": [ - "hamcrest" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "This is the PHP port of Hamcrest Matchers", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", "keywords": [ - "test" + "tokenizer" ], "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.3" }, - "time": "2020-07-09T08:09:16+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "abandoned": true, + "time": "2021-07-26T12:15:06+00:00" }, { - "name": "mockery/mockery", - "version": "1.3.5", + "name": "phpunit/phpunit", + "version": "8.5.31", "source": { "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "472fa8ca4e55483d55ee1e73c963718c4393791d" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "33c126b09a42de5c99e5e8032b54e8221264a74e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/472fa8ca4e55483d55ee1e73c963718c4393791d", - "reference": "472fa8ca4e55483d55ee1e73c963718c4393791d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33c126b09a42de5c99e5e8032b54e8221264a74e", + "reference": "33c126b09a42de5c99e5e8032b54e8221264a74e", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": ">=5.6.0" + "doctrine/instantiator": "^1.3.1", + "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", + "php": ">=7.2", + "phpunit/php-code-coverage": "^7.0.12", + "phpunit/php-file-iterator": "^2.0.4", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1.2", + "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/version": "^2.0.1" }, - "require-dev": { - "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0.0" }, + "bin": [ + "phpunit" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "8.5-dev" } }, "autoload": { - "psr-0": { - "Mockery": "library/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4621,231 +4328,208 @@ ], "authors": [ { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" + "phpunit", + "testing", + "xunit" ], "support": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.3.5" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.31" }, - "time": "2021-09-13T15:33:03+00:00" + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2022-10-28T05:57:37+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.10.2", + "name": "prestashop/autoindex", + "version": "v2.1.0", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "url": "https://github.com/PrestaShopCorp/autoindex.git", + "reference": "235f3ec115432ffc32d582198ea498467b3946d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/PrestaShopCorp/autoindex/zipball/235f3ec115432ffc32d582198ea498467b3946d0", + "reference": "235f3ec115432ffc32d582198ea498467b3946d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" + "nikic/php-parser": "^4.10", + "php": "^8.0 || ^7.2", + "symfony/console": "^3.4 || ~4.0 || ~5.0 || ~6.0", + "symfony/finder": "^3.4 || ~4.0 || ~5.0 || ~6.0" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "phpstan/phpstan": "^0.12.83", + "prestashop/php-dev-tools": "1.*" }, + "bin": [ + "bin/autoindex" + ], "type": "library", "autoload": { "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] + "PrestaShop\\AutoIndex\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "AFL-3.0" ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" - }, - "funding": [ + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" + "name": "PrestaShop SA", + "email": "contact@prestashop.com" } ], - "time": "2020-11-13T09:40:50+00:00" + "description": "Automatically add an 'index.php' in all the current or specified directories and all sub-directories.", + "homepage": "https://github.com/PrestaShopCorp/autoindex", + "support": { + "source": "https://github.com/PrestaShopCorp/autoindex/tree/v2.1.0" + }, + "time": "2022-10-10T08:35:00+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.3", + "name": "prestashop/header-stamp", + "version": "v2.2", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "url": "https://github.com/PrestaShopCorp/header-stamp.git", + "reference": "ae1533967ca797e7c8efd5bbbf4351d163253cf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/PrestaShopCorp/header-stamp/zipball/ae1533967ca797e7c8efd5bbbf4351d163253cf4", + "reference": "ae1533967ca797e7c8efd5bbbf4351d163253cf4", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "nikic/php-parser": "^4.10", + "php": "^8.0 || ^7.2", + "symfony/console": "^3.4 || ~4.0 || ~5.0 || ~6.0", + "symfony/finder": "^3.4 || ~4.0 || ~5.0 || ~6.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "require-dev": { + "phpstan/phpstan": "^0.12.83", + "prestashop/php-dev-tools": "1.*" }, + "bin": [ + "bin/header-stamp" + ], + "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PrestaShop\\HeaderStamp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "AFL-3.0" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "name": "PrestaShop SA", + "email": "contact@prestashop.com" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "description": "Rewrite your file headers to add the license or to make them up-to-date", + "homepage": "https://github.com/PrestaShopCorp/header-stamp", "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "issues": "https://github.com/PrestaShopCorp/header-stamp/issues", + "source": "https://github.com/PrestaShopCorp/header-stamp/tree/v2.2" }, - "time": "2021-07-20T11:28:43+00:00" + "time": "2022-10-10T08:26:55+00:00" }, { - "name": "phar-io/version", - "version": "3.1.0", + "name": "prestashop/php-dev-tools", + "version": "v4.3.0", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "url": "https://github.com/PrestaShop/php-dev-tools.git", + "reference": "843275b19729ba810d8ba2b9c97b568e5bbabe03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/PrestaShop/php-dev-tools/zipball/843275b19729ba810d8ba2b9c97b568e5bbabe03", + "reference": "843275b19729ba810d8ba2b9c97b568e5bbabe03", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "friendsofphp/php-cs-fixer": "^3.2", + "php": ">=7.2.5", + "prestashop/autoindex": "^2.0", + "prestashop/header-stamp": "^2.0", + "squizlabs/php_codesniffer": "^3.4", + "symfony/console": "~3.2 || ~4.0 || ~5.0 || ~6.0", + "symfony/filesystem": "~3.2 || ~4.0 || ~5.0 || ~6.0" }, + "bin": [ + "bin/prestashop-coding-standards" + ], "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PrestaShop\\CodingStandards\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } + "MIT" ], - "description": "Library for handling version information and constraints", + "description": "PrestaShop coding standards", "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "issues": "https://github.com/PrestaShop/php-dev-tools/issues", + "source": "https://github.com/PrestaShop/php-dev-tools/tree/v4.3.0" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-10-18T14:19:51+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "psr/cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-2.x": "2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4854,299 +4538,305 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "Common interface for caching libraries", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "cache", + "psr", + "psr-6" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "source": "https://github.com/php-fig/cache/tree/master" }, - "time": "2020-06-27T09:03:43+00:00" + "time": "2016-08-06T20:24:11+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" + "php": ">=5.6" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" }, - "time": "2021-10-19T17:43:47+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:15:22+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.5.1", + "name": "sebastian/comparator", + "version": "3.0.5", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770", + "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "php": ">=7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5" }, - "time": "2021-10-02T14:08:47+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T12:31:48+00:00" }, { - "name": "phpspec/prophecy", - "version": "1.14.0", + "name": "sebastian/diff", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" + "php": ">=7.1" }, "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "diff", + "udiff", + "unidiff", + "unified diff" ], "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.14.0" + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" }, - "time": "2021-09-10T09:02:12+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:59:04+00:00" }, { - "name": "phpstan/phpstan", - "version": "1.4.6", + "name": "sebastian/environment", + "version": "4.2.4", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "8a7761f1c520e0dad6e04d862fdc697445457cfe" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8a7761f1c520e0dad6e04d862fdc697445457cfe", - "reference": "8a7761f1c520e0dad6e04d862fdc697445457cfe", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": ">=7.1" }, - "conflict": { - "phpstan/phpstan-shim": "*" + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, - "bin": [ - "phpstan", - "phpstan.phar" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" ], - "description": "PHPStan - PHP Static Analysis Tool", "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.4.6" + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" }, "funding": [ { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" } ], - "time": "2022-02-06T12:56:13+00:00" + "time": "2020-11-30T07:53:42+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "7.0.15", + "name": "sebastian/exporter", + "version": "3.1.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "819f92bba8b001d4363065928088de22f25a3a48" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", - "reference": "819f92bba8b001d4363065928088de22f25a3a48", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", + "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", "shasum": "" }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": ">=7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.3 || ^4.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" + "require": { + "php": ">=7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^8.2.2" - }, - "suggest": { - "ext-xdebug": "^2.7.2" + "ext-mbstring": "*", + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -5161,20 +4851,34 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ - "coverage", - "testing", - "xunit" + "export", + "exporter" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" }, "funding": [ { @@ -5182,32 +4886,38 @@ "type": "github" } ], - "time": "2021-07-26T12:20:09+00:00" + "time": "2022-09-14T06:00:17+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "2.0.4", + "name": "sebastian/global-state", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "28af674ff175d0768a5a978e6de83f697d4a7f05" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/28af674ff175d0768a5a978e6de83f697d4a7f05", - "reference": "28af674ff175d0768a5a978e6de83f697d4a7f05", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921", + "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "ext-dom": "*", + "phpunit/phpunit": "^8.0" + }, + "suggest": { + "ext-uopz": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5222,19 +4932,17 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "filesystem", - "iterator" + "global state" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.4" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.2" }, "funding": [ { @@ -5242,26 +4950,36 @@ "type": "github" } ], - "time": "2021-07-19T06:46:01+00:00" + "time": "2022-02-10T06:55:38+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "sebastian/object-enumerator", + "version": "3.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -5274,45 +4992,47 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" }, - "time": "2015-06-21T13:50:34+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:40:27+00:00" }, { - "name": "phpunit/php-timer", - "version": "2.1.3", + "name": "sebastian/object-reflector", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "1.1-dev" } }, "autoload": { @@ -5327,18 +5047,14 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" }, "funding": [ { @@ -5346,33 +5062,32 @@ "type": "github" } ], - "time": "2020-11-30T08:20:02+00:00" + "time": "2020-11-30T07:37:18+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "3.1.3", + "name": "sebastian/recursion-context", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "9c1da83261628cb24b6a6df371b6e312b3954768" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9c1da83261628cb24b6a6df371b6e312b3954768", - "reference": "9c1da83261628cb24b6a6df371b6e312b3954768", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.1" + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -5388,16 +5103,21 @@ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.3" + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" }, "funding": [ { @@ -5405,65 +5125,29 @@ "type": "github" } ], - "abandoned": true, - "time": "2021-07-26T12:15:06+00:00" + "time": "2020-11-30T07:34:24+00:00" }, { - "name": "phpunit/phpunit", - "version": "8.5.26", + "name": "sebastian/resource-operations", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ef117c59fc4c54a979021b26d08a3373e386606d" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ef117c59fc4c54a979021b26d08a3373e386606d", - "reference": "ef117c59fc4c54a979021b26d08a3373e386606d", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", - "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", - "php": ">=7.2", - "phpspec/prophecy": "^1.10.3", - "phpunit/php-code-coverage": "^7.0.12", - "phpunit/php-file-iterator": "^2.0.4", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.2", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.3", - "sebastian/exporter": "^3.1.2", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "php": ">=7.1" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "8.5-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -5478,57 +5162,47 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], + "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/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.26" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" }, "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2022-04-01T12:34:39+00:00" + "time": "2020-11-30T07:30:19+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "name": "sebastian/type", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" }, "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/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.2" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1-dev" } }, "autoload": { @@ -5543,14 +5217,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" }, "funding": [ { @@ -5558,34 +5233,29 @@ "type": "github" } ], - "time": "2020-11-30T08:15:22+00:00" + "time": "2020-11-30T07:25:11+00:00" }, { - "name": "sebastian/comparator", - "version": "3.0.3", + "name": "sebastian/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { - "php": ">=7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^8.5" + "php": ">=5.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -5600,497 +5270,551 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/master" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-30T08:04:30+00:00" + "time": "2016-10-03T07:35:21+00:00" }, { - "name": "sebastian/diff", - "version": "3.0.3", + "name": "squizlabs/php_codesniffer", + "version": "3.7.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.x-dev" } }, - "autoload": { - "classmap": [ - "src/" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" + "name": "Greg Sherwood", + "role": "lead" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" + "phpcs", + "standards" ], "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-30T07:59:04+00:00" + "time": "2022-06-18T07:21:10+00:00" }, { - "name": "sebastian/environment", - "version": "4.2.4", + "name": "symfony/console", + "version": "v5.4.15", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "url": "https://github.com/symfony/console.git", + "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/symfony/console/zipball/ea59bb0edfaf9f28d18d8791410ee0355f317669", + "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { - "ext-posix": "*" + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", "keywords": [ - "Xdebug", - "environment", - "hhvm" + "cli", + "command line", + "console", + "terminal" ], "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "source": "https://github.com/symfony/console/tree/v5.4.15" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-11-30T07:53:42+00:00" + "time": "2022-10-26T21:41:52+00:00" }, { - "name": "sebastian/exporter", - "version": "3.1.3", + "name": "symfony/event-dispatcher", + "version": "v4.4.44", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/error-handler": "~3.4|~4.4", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^3.4|^4.0|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-11-30T07:47:53+00:00" + "time": "2022-07-20T09:59:04+00:00" }, { - "name": "sebastian/global-state", - "version": "3.0.1", + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.13", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/474fb9edb7ab891665d3bfc6317f42a0a150454b", - "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", "shasum": "" }, "require": { - "php": ">=7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "php": ">=7.1.3" }, "suggest": { - "ext-uopz": "*" + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", "keywords": [ - "global state" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-11-30T07:43:24+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "3.0.4", + "name": "symfony/filesystem", + "version": "v5.4.13", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "url": "https://github.com/symfony/filesystem.git", + "reference": "ac09569844a9109a5966b9438fc29113ce77cf51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/ac09569844a9109a5966b9438fc29113ce77cf51", + "reference": "ac09569844a9109a5966b9438fc29113ce77cf51", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/symfony/filesystem/tree/v5.4.13" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-11-30T07:40:27+00:00" + "time": "2022-09-21T19:53:16+00:00" }, { - "name": "sebastian/object-reflector", - "version": "1.1.2", + "name": "symfony/finder", + "version": "v5.4.11", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "url": "https://github.com/symfony/finder.git", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", "shasum": "" }, "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/symfony/finder/tree/v5.4.11" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-11-30T07:37:18+00:00" + "time": "2022-07-29T07:37:50+00:00" }, { - "name": "sebastian/recursion-context", - "version": "3.0.1", + "name": "symfony/polyfill-php72", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", "shasum": "" }, "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-11-30T07:34:24+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { - "name": "sebastian/resource-operations", - "version": "2.0.2", + "name": "symfony/polyfill-php81", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", "shasum": "" }, "require": { @@ -6099,140 +5823,188 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-11-30T07:30:19+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { - "name": "sebastian/type", - "version": "1.1.4", + "name": "symfony/process", + "version": "v5.4.11", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" + "url": "https://github.com/symfony/process.git", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", "shasum": "" }, "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.2" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + "source": "https://github.com/symfony/process/tree/v5.4.11" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-11-30T07:25:11+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { - "name": "sebastian/version", - "version": "2.0.1", + "name": "symfony/stopwatch", + "version": "v5.4.13", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "url": "https://github.com/symfony/stopwatch.git", + "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6df7a3effde34d81717bbef4591e5ffe32226d69", + "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.2.5", + "symfony/service-contracts": "^1|^2|^3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/master" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.13" }, - "time": "2016-10-03T07:35:21+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-09-28T13:19:49+00:00" }, { "name": "theseer/tokenizer", @@ -6283,64 +6055,6 @@ } ], "time": "2021-07-28T10:34:58+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" } ], "aliases": [], diff --git a/config.xml b/config.xml index 0edb0b7f4..bfbee3e32 100644 --- a/config.xml +++ b/config.xml @@ -2,7 +2,7 @@ ps_mbo - + diff --git a/config/routes/index.php b/config/routes/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/config/routes/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/config/routes/modules_catalog.yml b/config/routes/modules_catalog.yml index deac2642b..cb758a440 100644 --- a/config/routes/modules_catalog.yml +++ b/config/routes/modules_catalog.yml @@ -23,3 +23,9 @@ admin_mbo_module_see_more: _controller: mbo.controller.modules.catalog:seeMoreAction requirements: moduleId: \d+ + +admin_mbo_module_cdc_error: + path: /cdc_error + methods: [ GET ] + defaults: + _controller: mbo.controller.modules.catalog:cdcErrorAction diff --git a/config/services/addons.php b/config/services/addons.php index 29c6bd50e..70ac6b744 100644 --- a/config/services/addons.php +++ b/config/services/addons.php @@ -30,7 +30,15 @@ //Only load event subscriber when module is enabled to avoid logging events if disabled if (ps_mbo::checkModuleStatus()) { $services->set('mbo.addons.event_subscriber', ModuleManagementEventSubscriber::class) - ->args([ref('logger'), ref('mbo.modules.repository'), ref('mbo.tab.collection.provider'), ref('mbo.cdc.context_builder')]) + ->args([ + ref('logger'), + ref('mbo.modules.repository'), + ref('mbo.tab.collection.provider'), + ref('mbo.cdc.context_builder'), + ref('mbo.cdc.client.distribution_api'), + ref('mbo.security.admin_authentication.provider'), + ref('mbo.distribution.api_version_change_config_apply_handler'), + ]) ->public() ->tag('kernel.event_subscriber'); } diff --git a/config/services/addons.yml b/config/services/addons.yml index bf10bc777..a8d5bd2be 100644 --- a/config/services/addons.yml +++ b/config/services/addons.yml @@ -32,7 +32,7 @@ services: - "@=service('translator').getLocale()" - "@=service('prestashop.adapter.data_provider.country').getIsoCodebyId()" - "@=service('prestashop.adapter.legacy.configuration').get('_PS_BASE_URL_')" - - "@=service('prestashop.core.foundation.version').getVersion()" + - "@=service('prestashop.core.foundation.version').getSemVersion()" mbo.addons.toolbar: class: PrestaShop\Module\Mbo\Addons\Toolbar diff --git a/config/services/api.yml b/config/services/api.yml index 83668b32e..826f9914a 100644 --- a/config/services/api.yml +++ b/config/services/api.yml @@ -26,3 +26,22 @@ services: - '@ps_mbo' - '@PrestaShop\Module\Mbo\Api\Config\Env' - '@logger' + + mbo.api.service.executors.module_transition: + class: PrestaShop\Module\Mbo\Api\Service\ModuleTransitionExecutor + arguments: + - '@mbo.modules.state_machine.module_status_transition_handler' + + mbo.api.service.executors.config_apply: + class: PrestaShop\Module\Mbo\Api\Service\ConfigApplyExecutor + arguments: + - '@mbo.distribution.api_config_change_handler' + - '@ps_mbo' + + mbo.api.service.factory: + class: PrestaShop\Module\Mbo\Api\Service\Factory + arguments: + - [ + '@mbo.api.service.executors.module_transition', + '@mbo.api.service.executors.config_apply' + ] diff --git a/config/services/api/distribution.yml b/config/services/api/distribution.yml new file mode 100644 index 000000000..5b2576e11 --- /dev/null +++ b/config/services/api/distribution.yml @@ -0,0 +1,38 @@ +services: + _defaults: + public: true + + mbo.distribution.config_factory: + class: 'PrestaShop\Module\Mbo\Distribution\Config\Factory' + + mbo.distribution.config_applier: + class: 'PrestaShop\Module\Mbo\Distribution\Config\Applier' + arguments: + - '@mbo.distribution.config_appliers_factory' + + mbo.distribution.theme_catalog_menu_config_applier: + class: PrestaShop\Module\Mbo\Distribution\Config\Appliers\ThemeCatalogMenuConfigApplier + + mbo.distribution.module_selection_menu_config_applier: + class: PrestaShop\Module\Mbo\Distribution\Config\Appliers\ModuleSelectionMenuConfigApplier + + mbo.distribution.config_appliers_factory: + class: 'PrestaShop\Module\Mbo\Distribution\Config\Appliers\Factory' + arguments: + - [ + '@mbo.distribution.theme_catalog_menu_config_applier', + '@mbo.distribution.module_selection_menu_config_applier' + ] + + mbo.distribution.api_config_change_handler: + class: 'PrestaShop\Module\Mbo\Distribution\Config\CommandHandler\ConfigChangeCommandHandler' + arguments: + - '@mbo.distribution.config_factory' + - '@mbo.distribution.config_applier' + + + mbo.distribution.api_version_change_config_apply_handler: + class: 'PrestaShop\Module\Mbo\Distribution\Config\CommandHandler\VersionChangeApplyConfigCommandHandler' + arguments: + - '@mbo.distribution.config_factory' + - '@mbo.distribution.config_applier' diff --git a/config/services/api/index.php b/config/services/api/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/config/services/api/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/config/services/api_admin.yml b/config/services/api_admin.yml index 3991db20a..23dbd012a 100644 --- a/config/services/api_admin.yml +++ b/config/services/api_admin.yml @@ -1,3 +1,4 @@ imports: - { resource: modules.yml } - { resource: api/modules.yml } + - { resource: api/distribution.yml } diff --git a/config/services/cdc.yml b/config/services/cdc.yml index fd9c87ba8..ae9c88ec1 100644 --- a/config/services/cdc.yml +++ b/config/services/cdc.yml @@ -10,3 +10,4 @@ services: - '@router' - '@doctrine.cache.provider' - '@mbo.security.admin_authentication.provider' + - '@mbo.accounts.data_provider' diff --git a/config/services/index.php b/config/services/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/config/services/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/controllers/admin/apiPsMbo.php b/controllers/admin/apiPsMbo.php index 5bdcf8d36..4c4c5afde 100755 --- a/controllers/admin/apiPsMbo.php +++ b/controllers/admin/apiPsMbo.php @@ -1,9 +1,27 @@ + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ -use PrestaShop\Module\Mbo\Api\Config\Config; use PrestaShop\Module\Mbo\Api\Controller\AbstractAdminApiController; +use PrestaShop\Module\Mbo\Api\Exception\IncompleteSignatureParamsException; use PrestaShop\Module\Mbo\Api\Exception\QueryParamsException; -use PrestaShop\Module\Mbo\Module\Command\ModuleStatusTransitionCommand; +use PrestaShop\Module\Mbo\Api\Service\Factory as ExcutorsFactory; /** * This controller is responsible to execute actions on modules installed on the current shop. @@ -11,68 +29,56 @@ */ class apiPsMboController extends AbstractAdminApiController { - public $type = Config::MODULE_ACTIONS; - /** * @return void */ public function postProcess() { - $module = null; + $response = null; try { - $transition = Tools::getValue('action'); - $moduleName = Tools::getValue('module'); - $source = Tools::getValue('source', null); - - if (empty($transition) || empty($moduleName)) { - throw new QueryParamsException('You need transition and module parameters'); + $service = Tools::getValue('service'); + if (empty($service)) { + throw new QueryParamsException('[service] parameter is required'); } - $command = new ModuleStatusTransitionCommand($transition, $moduleName, $source); + /** @var ExcutorsFactory $executorsFactory */ + $executorsFactory = $this->module->get('mbo.api.service.factory'); - /** @var \PrestaShop\Module\Mbo\Module\Module $module */ - $module = $this->module->get('mbo.modules.state_machine.module_status_transition_handler')->handle($command); - - $moduleUrls = $module->get('urls'); - $configUrl = (bool) $module->get('is_configurable') && isset($moduleUrls['configure']) ? $this->generateTokenizedModuleActionUrl($moduleUrls['configure']) : null; - - // Clear the cache after download to force reload module services - $this->module->get('prestashop.adapter.cache.clearer.symfony_cache_clearer')->clear(); + $response = $executorsFactory->build($service)->execute($this->module); } catch (\Exception $exception) { $this->exitWithExceptionMessage($exception); } - $this->exitWithResponse([ - 'message' => 'Transition successfully executed', - 'module_status' => $module->getStatus(), - 'version' => $module->get('version'), - 'config_url' => $configUrl, - ]); + $this->exitWithResponse($response); } - private function generateTokenizedModuleActionUrl($url): string + /** + * {@inheritdoc} + */ + protected function buildSignatureMessage(): string { - $components = parse_url($url); - $baseUrl = ($components['path'] ?? ''); - $queryParams = []; - if (isset($components['query'])) { - $query = $components['query']; - - parse_str($query, $queryParams); - } + // Payload elements + $action = Tools::getValue('action', ''); + $module = Tools::getValue('module', ''); + $adminToken = Tools::getValue('admin_token', ''); + $actionUuid = Tools::getValue('action_uuid'); - if (!isset($queryParams['_token'])) { - return $url; + if ( + !$action || + !$module || + !$adminToken || + !$actionUuid + ) { + throw new IncompleteSignatureParamsException('Expected signature elements are not given'); } - $adminToken = Tools::getValue('admin_token'); - $queryParams['_token'] = $adminToken; + $keyVersion = Tools::getValue('version'); - $url = $baseUrl . '?' . http_build_query($queryParams, '', '&'); - if (isset($components['fragment']) && $components['fragment'] !== '') { - /* This copy-paste from Symfony's UrlGenerator */ - $url .= '#' . strtr(rawurlencode($components['fragment']), ['%2F' => '/', '%3F' => '?']); - } - - return $url; + return json_encode([ + 'action' => $action, + 'module' => $module, + 'admin_token' => $adminToken, + 'action_uuid' => $actionUuid, + 'version' => $keyVersion, + ]); } } diff --git a/controllers/admin/apiSecurityPsMbo.php b/controllers/admin/apiSecurityPsMbo.php index 23e90d542..d01815b08 100755 --- a/controllers/admin/apiSecurityPsMbo.php +++ b/controllers/admin/apiSecurityPsMbo.php @@ -1,4 +1,22 @@ + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ use PrestaShop\Module\Mbo\Api\Config\Config; use PrestaShop\Module\Mbo\Api\Controller\AbstractAdminApiController; diff --git a/controllers/admin/index.php b/controllers/admin/index.php index 1dd39a599..296d682e8 100755 --- a/controllers/admin/index.php +++ b/controllers/admin/index.php @@ -1,28 +1,22 @@ -* @copyright 2007-2020 PrestaShop SA -* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); diff --git a/controllers/index.php b/controllers/index.php index 1dd39a599..296d682e8 100755 --- a/controllers/index.php +++ b/controllers/index.php @@ -1,28 +1,22 @@ -* @copyright 2007-2020 PrestaShop SA -* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); diff --git a/ps_mbo.php b/ps_mbo.php index 14b7a8f07..de6978356 100755 --- a/ps_mbo.php +++ b/ps_mbo.php @@ -42,13 +42,14 @@ class ps_mbo extends Module use PrestaShop\Module\Mbo\Traits\HaveTabs; use PrestaShop\Module\Mbo\Traits\UseHooks; use PrestaShop\Module\Mbo\Traits\HaveShopOnExternalService; + use PrestaShop\Module\Mbo\Traits\HaveConfigurationPage; public const DEFAULT_ENV = ''; /** * @var string */ - public const VERSION = '4.0.1'; + public const VERSION = '4.1.0'; public const CONTROLLERS_WITH_CONNECTION_TOOLBAR = [ 'AdminPsMboModule', @@ -66,6 +67,7 @@ class ps_mbo extends Module public $configurationList = [ 'PS_MBO_SHOP_ADMIN_UUID' => '', // 'ADMIN' because there will be only one for all shops in a multishop context 'PS_MBO_SHOP_ADMIN_MAIL' => '', + 'PS_MBO_LAST_PS_VERSION_API_CONFIG' => '', ]; /** @@ -99,7 +101,7 @@ class ps_mbo extends Module public function __construct() { $this->name = 'ps_mbo'; - $this->version = self::VERSION; + $this->version = '4.1.0'; $this->author = 'PrestaShop'; $this->tab = 'administration'; $this->module_key = '6cad5414354fbef755c7df4ef1ab74eb'; @@ -137,6 +139,7 @@ public function install(): bool // For now, do nothing } + $this->installTables(); if (parent::install() && $this->registerHook($this->getHooksNames())) { // Do come extra operations on modules' registration like modifying orders $this->installHooks(); @@ -147,6 +150,9 @@ public function install(): bool return true; } + // If installation fails, we remove the tables previously created + $this->uninstallTables(); + return false; } @@ -176,6 +182,8 @@ public function uninstall() // This will reset cached configuration values (uuid, mail, ...) to avoid reusing them Config::resetConfigValues(); + $this->uninstallTables(); + /** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher */ $eventDispatcher = $this->get('event_dispatcher'); if (!$eventDispatcher->hasListeners(ModuleManagementEvent::UNINSTALL)) { @@ -372,6 +380,45 @@ private function getModuleEnv(?string $default = null): string return getenv($this->getModuleEnvVar()) ?: $default ?: self::DEFAULT_ENV; } + public function installTables(?string $table = null): bool + { + $sqlQueries = []; + + if (null === $table || 'mbo_api_config' === $table) { + $sqlQueries[] = ' CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'mbo_api_config` ( + `id_mbo_api_config` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `config_key` varchar(255) NULL, + `config_value` varchar(255) NULL, + `ps_version` varchar(255) NULL, + `mbo_version` varchar(255) NULL, + `applied` TINYINT(1) NOT NULL DEFAULT \'0\', + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_mbo_api_config`) + ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;'; + } + + foreach ($sqlQueries as $query) { + if (!Db::getInstance()->execute($query)) { + return false; + } + } + + return true; + } + + private function uninstallTables(): bool + { + $sqlQueries[] = 'DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'mbo_api_config`'; + + foreach ($sqlQueries as $query) { + if (!Db::getInstance()->execute($query)) { + return false; + } + } + + return true; + } + public function getAccountsDataProvider(): AccountsDataProvider { return $this->getService('mbo.accounts.data_provider'); diff --git a/src/Accounts/Provider/AccountsDataProvider.php b/src/Accounts/Provider/AccountsDataProvider.php index 5f549bc5d..2e8bba5f8 100644 --- a/src/Accounts/Provider/AccountsDataProvider.php +++ b/src/Accounts/Provider/AccountsDataProvider.php @@ -73,6 +73,17 @@ public function getAccountsShopId(): ?string return $this->getAccountsService()->getShopUuid() ?? null; } + public function getAccountsUserId(): ?string + { + try { + $userUuid = $this->getAccountsService()->getUserUuid(); + } catch (Exception $e) { + $userUuid = null; + } + + return $userUuid ? $userUuid : null; + } + private function isAccountLinked(): bool { try { diff --git a/src/Accounts/Provider/index.php b/src/Accounts/Provider/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Accounts/Provider/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Accounts/index.php b/src/Accounts/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Accounts/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Addons/Exception/index.php b/src/Addons/Exception/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Addons/Exception/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Addons/Provider/index.php b/src/Addons/Provider/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Addons/Provider/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Addons/Subscriber/ModuleManagementEventSubscriber.php b/src/Addons/Subscriber/ModuleManagementEventSubscriber.php index ff9342a26..942b225a7 100644 --- a/src/Addons/Subscriber/ModuleManagementEventSubscriber.php +++ b/src/Addons/Subscriber/ModuleManagementEventSubscriber.php @@ -21,6 +21,10 @@ namespace PrestaShop\Module\Mbo\Addons\Subscriber; +use PrestaShop\Module\Mbo\Api\Security\AdminAuthenticationProvider; +use PrestaShop\Module\Mbo\Distribution\Client; +use PrestaShop\Module\Mbo\Distribution\Config\Command\VersionChangeApplyConfigCommand; +use PrestaShop\Module\Mbo\Distribution\Config\CommandHandler\VersionChangeApplyConfigCommandHandler; use PrestaShop\Module\Mbo\Module\Repository; use PrestaShop\Module\Mbo\Service\View\ContextBuilder; use PrestaShop\Module\Mbo\Tab\TabCollectionProviderInterface; @@ -50,52 +54,78 @@ class ModuleManagementEventSubscriber implements EventSubscriberInterface */ private $contextBuilder; + /** + * @var Client + */ + private $distributionClient; + + /** + * @var AdminAuthenticationProvider + */ + private $adminAuthenticationProvider; + + /** + * @var VersionChangeApplyConfigCommandHandler + */ + private $versionChangeApplyConfigCommandHandler; + + /** + * @var ModuleRepository + */ + private $coreModuleRepository; + public function __construct( LoggerInterface $logger, Repository $moduleRepository, TabCollectionProviderInterface $tabCollectionProvider, - ContextBuilder $contextBuilder + ContextBuilder $contextBuilder, + Client $distributionClient, + AdminAuthenticationProvider $adminAuthenticationProvider, + VersionChangeApplyConfigCommandHandler $versionChangeApplyConfigCommandHandler ) { $this->logger = $logger; $this->moduleRepository = $moduleRepository; $this->tabCollectionProvider = $tabCollectionProvider; $this->contextBuilder = $contextBuilder; + $this->distributionClient = $distributionClient; + $this->adminAuthenticationProvider = $adminAuthenticationProvider; + $this->versionChangeApplyConfigCommandHandler = $versionChangeApplyConfigCommandHandler; } public static function getSubscribedEvents(): array { return [ ModuleManagementEvent::INSTALL => [ - ['onInstall'], ['clearCatalogCache'], + ['onInstall'], ], ModuleManagementEvent::POST_INSTALL => [ - ['onPostInstall'], ['clearCatalogCache'], + ['onPostInstall'], ], ModuleManagementEvent::UNINSTALL => [ - ['onUninstall'], ['clearCatalogCache'], + ['onUninstall'], ], ModuleManagementEvent::ENABLE => [ - ['onEnable'], ['clearCatalogCache'], + ['onEnable'], ], ModuleManagementEvent::DISABLE => [ - ['onDisable'], ['clearCatalogCache'], + ['onDisable'], ], ModuleManagementEvent::ENABLE_MOBILE => [ - ['onEnableMobile'], ['clearCatalogCache'], + ['onEnableMobile'], ], ModuleManagementEvent::DISABLE_MOBILE => [ - ['onDisableMobile'], ['clearCatalogCache'], + ['onDisableMobile'], ], ModuleManagementEvent::UPGRADE => [ - ['onUpgrade'], ['clearCatalogCache'], + ['onUpgrade'], ], ModuleManagementEvent::RESET => [ ['onReset'], @@ -103,11 +133,6 @@ public static function getSubscribedEvents(): array ]; } - public function onInstall(ModuleManagementEvent $event): void - { - $this->logEvent(ModuleManagementEvent::INSTALL); - } - public function clearCatalogCache(): void { $this->moduleRepository->clearCache(); @@ -115,48 +140,67 @@ public function clearCatalogCache(): void $this->contextBuilder->clearCache(); } + public function onInstall(ModuleManagementEvent $event): void + { + $this->logEvent(ModuleManagementEvent::INSTALL, $event); + } + public function onPostInstall(ModuleManagementEvent $event): void { - $this->logEvent(ModuleManagementEvent::POST_INSTALL); + $this->logEvent(ModuleManagementEvent::POST_INSTALL, $event); } public function onUninstall(ModuleManagementEvent $event): void { - $this->logEvent(ModuleManagementEvent::UNINSTALL); + $this->logEvent(ModuleManagementEvent::UNINSTALL, $event); } public function onEnable(ModuleManagementEvent $event): void { - $this->logEvent(ModuleManagementEvent::ENABLE); + $this->logEvent(ModuleManagementEvent::ENABLE, $event); } public function onDisable(ModuleManagementEvent $event): void { - $this->logEvent(ModuleManagementEvent::DISABLE); + $this->logEvent(ModuleManagementEvent::DISABLE, $event); } public function onEnableMobile(ModuleManagementEvent $event): void { - $this->logEvent(ModuleManagementEvent::ENABLE); + $this->logEvent(ModuleManagementEvent::ENABLE_MOBILE, $event); } public function onDisableMobile(ModuleManagementEvent $event): void { - $this->logEvent(ModuleManagementEvent::DISABLE); + $this->logEvent(ModuleManagementEvent::DISABLE_MOBILE, $event); } public function onUpgrade(ModuleManagementEvent $event): void { - $this->logEvent(ModuleManagementEvent::UPGRADE); + $this->logEvent(ModuleManagementEvent::UPGRADE, $event); + + if ('ps_mbo' === $event->getModule()->get('name')) { + $command = new VersionChangeApplyConfigCommand( + _PS_VERSION_, + $event->getModule()->disk->get('version') + ); + + $configCollection = $this->versionChangeApplyConfigCommandHandler->handle($command); + } } public function onReset(ModuleManagementEvent $event): void { - $this->logEvent(ModuleManagementEvent::RESET); + $this->logEvent(ModuleManagementEvent::RESET, $event); } - protected function logEvent(string $eventName): void + protected function logEvent(string $eventName, ModuleManagementEvent $event): void { - $this->logger->info(sprintf('Event %s triggered', $eventName)); + $data = $this->contextBuilder->getEventContext(); + $data['event_name'] = $eventName; + $data['module_name'] = $event->getModule()->get('name'); + + $this->distributionClient->setBearer($this->adminAuthenticationProvider->getMboJWT()); + $this->distributionClient->trackEvent($data); } } diff --git a/src/Addons/Subscriber/index.php b/src/Addons/Subscriber/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Addons/Subscriber/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Addons/User/index.php b/src/Addons/User/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Addons/User/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Addons/index.php b/src/Addons/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Addons/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Api/Config/Config.php b/src/Api/Config/Config.php index 7c7c59778..1f78419cd 100755 --- a/src/Api/Config/Config.php +++ b/src/Api/Config/Config.php @@ -39,6 +39,7 @@ class Config self::RETRIEVE_NEW_KEY_ERROR_CODE => 'Failed to retrieve key', ]; + const API_CONFIG = 'api_config'; const MODULE_ACTIONS = 'module_actions'; const SECURITY_ME = 'security_me'; } diff --git a/src/Api/Config/index.php b/src/Api/Config/index.php index 1dd39a599..296d682e8 100644 --- a/src/Api/Config/index.php +++ b/src/Api/Config/index.php @@ -1,28 +1,22 @@ -* @copyright 2007-2020 PrestaShop SA -* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); diff --git a/src/Api/Controller/AbstractAdminApiController.php b/src/Api/Controller/AbstractAdminApiController.php index f611a91a3..9003063f9 100755 --- a/src/Api/Controller/AbstractAdminApiController.php +++ b/src/Api/Controller/AbstractAdminApiController.php @@ -33,6 +33,7 @@ use PrestaShop\Module\Mbo\Api\Security\AuthorizationChecker; use PrestaShop\Module\Mbo\Helpers\Config as ConfigHelper; use ps_mbo; +use Psr\Log\LoggerInterface; use Tools; abstract class AbstractAdminApiController extends ModuleAdminController @@ -64,6 +65,11 @@ abstract class AbstractAdminApiController extends ModuleAdminController */ private $authorizationChecker; + /** + * @var LoggerInterface + */ + protected $logger; + public function __construct() { parent::__construct(); @@ -71,11 +77,13 @@ public function __construct() $this->errorHandler = $this->module->get(ErrorHandler::class); $this->adminAuthenticationProvider = $this->module->get('mbo.security.admin_authentication.provider'); $this->authorizationChecker = $this->module->get(AuthorizationChecker::class); + $this->logger = $this->module->get('logger'); } public function init(): void { try { + $this->logger->info('API Call received = ' . $_SERVER['REQUEST_URI']); $this->authorize(); } catch (IncompleteSignatureParamsException $exception) { $this->errorHandler->handle($exception); @@ -154,34 +162,46 @@ private function dieWithResponse(array $response, int $code): void */ protected function authorize() { - $keyVersion = \Tools::getValue('version'); + $keyVersion = Tools::getValue('version'); $signature = isset($_SERVER['HTTP_MBO_SIGNATURE']) ? $_SERVER['HTTP_MBO_SIGNATURE'] : false; + if (!$keyVersion || !$signature) { + throw new IncompleteSignatureParamsException('Expected signature elements are not given'); + } + + $message = $this->buildSignatureMessage(); + + $this->authorizationChecker->verify($keyVersion, $signature, $message); + } + + /** + * Generate elements composing the signature. + * This is the standard composition. + * Please build your own if other elements are included to the signature. + * + * @return string + * + * @throws IncompleteSignatureParamsException + */ + protected function buildSignatureMessage(): string + { // Payload elements - $action = Tools::getValue('action'); - $module = Tools::getValue('module'); $adminToken = Tools::getValue('admin_token'); $actionUuid = Tools::getValue('action_uuid'); if ( - !$keyVersion || - !$signature || - !$action || - !$module || !$adminToken || !$actionUuid ) { throw new IncompleteSignatureParamsException('Expected signature elements are not given'); } - $message = json_encode([ - 'action' => $action, - 'module' => $module, + $keyVersion = Tools::getValue('version'); + + return json_encode([ 'admin_token' => $adminToken, 'action_uuid' => $actionUuid, 'version' => $keyVersion, ]); - - $this->authorizationChecker->verify($keyVersion, $signature, $message); } } diff --git a/src/Api/Controller/index.php b/src/Api/Controller/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Api/Controller/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Api/Exception/UnknownServiceException.php b/src/Api/Exception/UnknownServiceException.php new file mode 100755 index 000000000..f729a4fea --- /dev/null +++ b/src/Api/Exception/UnknownServiceException.php @@ -0,0 +1,26 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Api\Exception; + +class UnknownServiceException extends \Exception +{ +} diff --git a/src/Api/Exception/index.php b/src/Api/Exception/index.php index 4b8dc0718..296d682e8 100755 --- a/src/Api/Exception/index.php +++ b/src/Api/Exception/index.php @@ -1,21 +1,21 @@ - * @copyright 2007-2020 PrestaShop SA and Contributors - * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) - * International Registered Trademark & Property of PrestaShop SA + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); diff --git a/src/Api/Handler/ErrorHandler/index.php b/src/Api/Handler/ErrorHandler/index.php index 1dd39a599..296d682e8 100644 --- a/src/Api/Handler/ErrorHandler/index.php +++ b/src/Api/Handler/ErrorHandler/index.php @@ -1,28 +1,22 @@ -* @copyright 2007-2020 PrestaShop SA -* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); diff --git a/src/Api/Handler/index.php b/src/Api/Handler/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Api/Handler/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Api/Repository/index.php b/src/Api/Repository/index.php index 4b8dc0718..296d682e8 100755 --- a/src/Api/Repository/index.php +++ b/src/Api/Repository/index.php @@ -1,21 +1,21 @@ - * @copyright 2007-2020 PrestaShop SA and Contributors - * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) - * International Registered Trademark & Property of PrestaShop SA + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); diff --git a/src/Api/Security/AuthorizationChecker.php b/src/Api/Security/AuthorizationChecker.php index ff0c380f4..ebce46b39 100644 --- a/src/Api/Security/AuthorizationChecker.php +++ b/src/Api/Security/AuthorizationChecker.php @@ -55,8 +55,11 @@ class AuthorizationChecker */ private $keyCacheIndex; - public function __construct(CacheProvider $cacheProvider, Client $distributionClient, AdminAuthenticationProvider $adminAuthenticationProvider) - { + public function __construct( + CacheProvider $cacheProvider, + Client $distributionClient, + AdminAuthenticationProvider $adminAuthenticationProvider + ) { $this->cacheProvider = $cacheProvider; $this->distributionClient = $distributionClient; $this->adminAuthenticationProvider = $adminAuthenticationProvider; diff --git a/src/Api/Service/ConfigApplyExecutor.php b/src/Api/Service/ConfigApplyExecutor.php new file mode 100644 index 000000000..b2016c5a0 --- /dev/null +++ b/src/Api/Service/ConfigApplyExecutor.php @@ -0,0 +1,67 @@ +configChangeCommandHandler = $configChangeCommandHandler; + } + + /** + * {@inheritDoc} + */ + public function canExecute(string $service): bool + { + return self::SERVICE === $service; + } + + /** + * {@inheritDoc} + */ + public function execute(...$parameters): array + { + if (!$parameters[0] instanceof \Module) { + throw new InvalidArgumentException(); + } + + $module = $parameters[0]; + + try { + $config = json_decode(Tools::getValue('conf'), true); + } catch (\JsonException $exception) { + throw new InvalidConfigException($exception->getMessage()); + } + + if ($config === null && json_last_error() !== JSON_ERROR_NONE) { + var_dump(Tools::getValue('conf'), gettype(Tools::getValue('conf')), $config, json_last_error_msg()); + throw new InvalidConfigException('Config given is invalid. Please check the structure.'); + } + + $command = new ConfigChangeCommand( + $config, + _PS_VERSION_, + $module->version + ); + + $configCollection = $this->configChangeCommandHandler->handle($command); + + return [ + 'message' => 'Config successfully applied', + ]; + } +} diff --git a/src/Api/Service/Factory.php b/src/Api/Service/Factory.php new file mode 100644 index 000000000..e5e2f75a0 --- /dev/null +++ b/src/Api/Service/Factory.php @@ -0,0 +1,65 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Api\Service; + +use PrestaShop\Module\Mbo\Api\Exception\UnknownServiceException; + +final class Factory +{ + private const ALLOWED_SERVICES = [ + ModuleTransitionExecutor::SERVICE, + ConfigApplyExecutor::SERVICE, + ]; + + /** + * @param ServiceExecutorInterface[] $executors + */ + public function __construct(array $executors) + { + $this->executors = $executors; + } + + /** + * @var ServiceExecutorInterface[] + */ + private $executors; + + public function build(string $service): ServiceExecutorInterface + { + $this->assertServiceIsAllowed($service); + + foreach ($this->executors as $executor) { + if ($executor->canExecute($service)) { + return $executor; + } + } + + throw new UnknownServiceException('No executor have been found for that service'); + } + + private function assertServiceIsAllowed(string $service): void + { + if (!in_array($service, self::ALLOWED_SERVICES)) { + throw new UnknownServiceException(sprintf('Unknown service given : %s', $service)); + } + } +} diff --git a/src/Api/Service/ModuleTransitionExecutor.php b/src/Api/Service/ModuleTransitionExecutor.php new file mode 100644 index 000000000..a3759c8bb --- /dev/null +++ b/src/Api/Service/ModuleTransitionExecutor.php @@ -0,0 +1,99 @@ +moduleStatusTransitionCommandHandler = $moduleStatusTransitionCommandHandler; + } + + /** + * {@inheritDoc} + */ + public function canExecute(string $service): bool + { + return self::SERVICE === $service; + } + + /** + * {@inheritDoc} + */ + public function execute(...$parameters): array + { + if (!$parameters[0] instanceof \Module) { + throw new InvalidArgumentException(); + } + + $psMbo = $parameters[0]; + + $transition = Tools::getValue('action'); + $moduleName = Tools::getValue('module'); + $source = Tools::getValue('source', null); + + if (empty($transition) || empty($moduleName)) { + throw new QueryParamsException('You need transition and module parameters'); + } + $command = new ModuleStatusTransitionCommand($transition, $moduleName, $source); + + /** @var \PrestaShop\Module\Mbo\Module\Module $module */ + $module = $this->moduleStatusTransitionCommandHandler->handle($command); + + $moduleUrls = $module->get('urls'); + $configUrl = (bool) $module->get('is_configurable') && isset($moduleUrls['configure']) ? $this->generateTokenizedModuleActionUrl($moduleUrls['configure']) : null; + + if (ModuleTransitionCommand::MODULE_COMMAND_DOWNLOAD === $transition) { + // Clear the cache after download to force reload module services + $psMbo->get('prestashop.adapter.cache.clearer.symfony_cache_clearer')->clear(); + } + + return [ + 'message' => 'Transition successfully executed', + 'module_status' => $module->getStatus(), + 'version' => $module->get('version'), + 'config_url' => $configUrl, + ]; + } + + private function generateTokenizedModuleActionUrl($url): string + { + $components = parse_url($url); + $baseUrl = ($components['path'] ?? ''); + $queryParams = []; + if (isset($components['query'])) { + $query = $components['query']; + + parse_str($query, $queryParams); + } + + if (!isset($queryParams['_token'])) { + return $url; + } + + $adminToken = Tools::getValue('admin_token'); + $queryParams['_token'] = $adminToken; + + $url = $baseUrl . '?' . http_build_query($queryParams, '', '&'); + if (isset($components['fragment']) && $components['fragment'] !== '') { + /* This copy-paste from Symfony's UrlGenerator */ + $url .= '#' . strtr(rawurlencode($components['fragment']), ['%2F' => '/', '%3F' => '?']); + } + + return $url; + } +} diff --git a/src/Api/Service/ServiceExecutorInterface.php b/src/Api/Service/ServiceExecutorInterface.php new file mode 100644 index 000000000..53741ca9a --- /dev/null +++ b/src/Api/Service/ServiceExecutorInterface.php @@ -0,0 +1,24 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Controller/Admin/AddonsController.php b/src/Controller/Admin/AddonsController.php index 5c961d3a3..24d3c2460 100644 --- a/src/Controller/Admin/AddonsController.php +++ b/src/Controller/Admin/AddonsController.php @@ -246,13 +246,13 @@ private function createCookieUser(Response $response, \stdClass $json, array $pa $phpEncryption = new PhpEncryption(_NEW_COOKIE_KEY_); $response->headers->setCookie( - new Cookie('username_addons', $phpEncryption->encrypt($params['username']), $expiresAt) + new Cookie('username_addons', $phpEncryption->encrypt($params['username']), $expiresAt, null, null, null, false) ); $response->headers->setCookie( - new Cookie('password_addons', $phpEncryption->encrypt($params['password']), $expiresAt) + new Cookie('password_addons', $phpEncryption->encrypt($params['password']), $expiresAt, null, null, null, false) ); $response->headers->setCookie( - new Cookie('is_contributor', (string) $json->is_contributor, $expiresAt) + new Cookie('is_contributor', (string) $json->is_contributor, $expiresAt, null, null, null, false) ); return $response; diff --git a/src/Controller/Admin/ModuleCatalogController.php b/src/Controller/Admin/ModuleCatalogController.php index c79e14243..ac0cb67fc 100644 --- a/src/Controller/Admin/ModuleCatalogController.php +++ b/src/Controller/Admin/ModuleCatalogController.php @@ -108,4 +108,16 @@ public function seeMoreAction(int $moduleId): Response ] ); } + + /** + * Responsible for displaying error block when CDC cannot be loaded. + * + * @return \Symfony\Component\HttpFoundation\Response + */ + public function cdcErrorAction(): Response + { + return $this->render( + '@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/cdc-error.html.twig' + ); + } } diff --git a/src/DependencyInjection/ContainerProvider.php b/src/DependencyInjection/ContainerProvider.php index 358f0f9bc..13140bbca 100644 --- a/src/DependencyInjection/ContainerProvider.php +++ b/src/DependencyInjection/ContainerProvider.php @@ -98,6 +98,7 @@ public function get(string $containerName): ContainerInterface $loader->load('http_clients.yml'); $loader->load('distribution.yml'); $loader->load('accounts.yml'); + $loader->load('api/distribution.yml'); $containerBuilder->compile(true); $dumper = new PhpDumper($containerBuilder); diff --git a/src/DependencyInjection/index.php b/src/DependencyInjection/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/DependencyInjection/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Distribution/Client.php b/src/Distribution/Client.php index 8be470407..eed6331e8 100644 --- a/src/Distribution/Client.php +++ b/src/Distribution/Client.php @@ -57,6 +57,7 @@ class Client 'shop_uuid', 'shop_url', 'isoLang', + 'shopVersion', ]; /** * @var array @@ -188,9 +189,7 @@ public function updateShop(array $params): stdClass /** * Retrieve the user menu from NEST Api * - * @return false|\stdClass - * - * @throws \GuzzleHttp\Exception\GuzzleException + * @return false|stdClass */ public function getConf() { @@ -203,10 +202,11 @@ public function getConf() $this->setQueryParams([ 'isoLang' => $languageIsoCode, + 'shopVersion' => _PS_VERSION_, ]); try { $conf = $this->processRequestAndReturn('shops/conf'); - } catch (\Exception $e) { + } catch (\Throwable $e) { return false; } if (empty($conf)) { @@ -217,6 +217,39 @@ public function getConf() return $this->cacheProvider->fetch($cacheKey); } + /** + * Retrieve API config from Distribution API. + * + * @return array + * + * @throws \GuzzleHttp\Exception\GuzzleException + * @usage \PrestaShop\Module\Mbo\Traits\HaveShopOnExternalService::registerShop + */ + public function getApiConf(): array + { + return $this->processRequestAndReturn('shops/conf-mbo'); + } + + /** + * Send a tracking to the API + * Send it asynchronously to avoid blocking process for this feature + * + * @param array $eventData + */ + public function trackEvent(array $eventData): void + { + try { + $this->processRequestAndReturn( + 'shops/events', + null, + self::HTTP_METHOD_POST, + ['form_params' => $eventData] + ); + } catch (\Throwable $e) { + // Do nothing if the tracking fails + } + } + private function mergeShopDataWithParams(array $params): array { return array_merge([ @@ -232,8 +265,10 @@ private function mergeShopDataWithParams(array $params): array * Process the request with the current parameters, given the $method, and return the $attribute from * the response body, or the default fallback value $default. * + * @param string $uri * @param string|null $attributeToReturn * @param string $method + * @param array $options * @param mixed $default * * @return mixed @@ -263,6 +298,10 @@ private function processRequestAndReturn( /** * Process the request with the current parameters, given the $method, return the body as string * + * @param string $method + * @param string $uri + * @param array $options + * * @return string * * @throws GuzzleException diff --git a/src/Distribution/Config/Applier.php b/src/Distribution/Config/Applier.php new file mode 100644 index 000000000..ea6c6820c --- /dev/null +++ b/src/Distribution/Config/Applier.php @@ -0,0 +1,111 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config; + +use Db; +use Doctrine\DBAL\Query\QueryException; +use PrestaShop\Module\Mbo\Distribution\Config\Appliers\Factory as AppliersFactory; +use PrestaShop\Module\Mbo\Distribution\Config\Exception\CannotSaveConfigException; +use PrestaShop\Module\Mbo\Distribution\Config\Exception\InvalidConfigException; +use PrestaShopDatabaseException; + +final class Applier +{ + /** + * @var AppliersFactory + */ + private $appliersFactory; + + public function __construct(AppliersFactory $appliersFactory) + { + $this->appliersFactory = $appliersFactory; + } + + /** + * This method will receive an array of config objects and apply them. + * + * @param Config[] $config + * + * @throws QueryException + * @throws InvalidConfigException + * @throws CannotSaveConfigException + * @throws PrestaShopDatabaseException + */ + public function apply(array $configCollection, string $psVersion, string $mboVersion) + { + foreach ($configCollection as $config) { + if ($this->canBeApplied($config, $psVersion, $mboVersion)) { + $this->applyConfig($config); + } + } + } + + /** + * This method will determinate if the config given can be applied depending on the psVersion and mboVersion. + * + * @param Config $config + */ + private function canBeApplied(Config $config, string $psVersion, string $mboVersion): bool + { + return $this->versionCompareWithSemVer($psVersion, $config->getPsVersion(), '==') && + $this->versionCompareWithSemVer($mboVersion, $config->getMboVersion(), '==') && + true !== $config->isApplied(); + } + + /** + * @param Config $config + * + * @throws InvalidConfigException + */ + private function applyConfig(Config $config): void + { + $applier = $this->appliersFactory->get($config->getConfigKey()); + + if (null === $applier) { + return; + } + + if ($applier->apply($config) && null !== $config->getConfigId()) { + $sql = []; + $sql[] = 'UPDATE `' . _DB_PREFIX_ . 'mbo_api_config` SET `applied` = 1 WHERE `id_mbo_api_config`=' . $config->getConfigId(); + + foreach ($sql as $query) { + if (Db::getInstance()->execute($query) == false) { + throw new QueryException($this->db->getMsgError()); + } + } + } + } + + private function versionCompareWithSemVer(string $a, string $b, string $operator) + { + $a = explode('.', $a); + $b = explode('.', $b); + + $minSize = count($a) <= count($b) ? count($a) : count($b); + + $versionA = implode('.', array_slice($a, 0, $minSize)); + $versionB = implode('.', array_slice($b, 0, $minSize)); + + return version_compare($versionA, $versionB, $operator); + } +} diff --git a/src/Distribution/Config/Appliers/ConfigApplierInterface.php b/src/Distribution/Config/Appliers/ConfigApplierInterface.php new file mode 100644 index 000000000..c1307f521 --- /dev/null +++ b/src/Distribution/Config/Appliers/ConfigApplierInterface.php @@ -0,0 +1,35 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config\Appliers; + +use PrestaShop\Module\Mbo\Distribution\Config\Config; +use PrestaShop\Module\Mbo\Distribution\Config\Exception\InvalidConfigException; + +interface ConfigApplierInterface +{ + public function supports(string $configKey): bool; + + /** + * @throws InvalidConfigException + */ + public function apply(Config $config): bool; +} diff --git a/src/Distribution/Config/Appliers/Factory.php b/src/Distribution/Config/Appliers/Factory.php new file mode 100644 index 000000000..256389353 --- /dev/null +++ b/src/Distribution/Config/Appliers/Factory.php @@ -0,0 +1,55 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config\Appliers; + +final class Factory +{ + /** + * @var ConfigApplierInterface[] + */ + private $configAppliers = []; + + public function __construct(array $configAppliers) + { + foreach ($configAppliers as $configApplier) { + if ($configApplier instanceof ConfigApplierInterface) { + $this->configAppliers[] = $configApplier; + } + } + } + + /** + * @param string $configKey + * + * @return ConfigApplierInterface|null + */ + public function get(string $configKey): ?ConfigApplierInterface + { + foreach ($this->configAppliers as $configApplier) { + if ($configApplier->supports($configKey)) { + return $configApplier; + } + } + + return null; + } +} diff --git a/src/Distribution/Config/Appliers/ModuleSelectionMenuConfigApplier.php b/src/Distribution/Config/Appliers/ModuleSelectionMenuConfigApplier.php new file mode 100644 index 000000000..9958a08fe --- /dev/null +++ b/src/Distribution/Config/Appliers/ModuleSelectionMenuConfigApplier.php @@ -0,0 +1,59 @@ +getModuleSelectionMenu(); + if (null === $moduleSelectionMenu) { + return true; + } + + $configValue = $config->getConfigValue(); + if ('hide' === $configValue) { + return $this->applyDown($moduleSelectionMenu); + } elseif ('show' === $configValue) { + return $this->applyUp($moduleSelectionMenu); + } else { + throw new InvalidConfigException(sprintf('%s is not a valid config value', $configValue)); + } + } + + private function getModuleSelectionMenu() + { + $tab = Tab::getInstanceFromClassName('AdminPsMboSelection'); + + return Validate::isLoadedObject($tab) ? $tab : null; + } + + private function applyUp(Tab $moduleSelectionMenu): bool + { + $moduleSelectionMenu->enabled = true; + $moduleSelectionMenu->active = true; + + return $moduleSelectionMenu->save(); + } + + private function applyDown(Tab $moduleSelectionMenu): bool + { + $moduleSelectionMenu->enabled = false; + $moduleSelectionMenu->active = false; + + return $moduleSelectionMenu->save(); + } +} diff --git a/src/Distribution/Config/Appliers/ThemeCatalogMenuConfigApplier.php b/src/Distribution/Config/Appliers/ThemeCatalogMenuConfigApplier.php new file mode 100644 index 000000000..46a46b956 --- /dev/null +++ b/src/Distribution/Config/Appliers/ThemeCatalogMenuConfigApplier.php @@ -0,0 +1,59 @@ +getThemeCatalogMenu(); + if (null === $themeCatalogMenu) { + return true; + } + + $configValue = $config->getConfigValue(); + if ('hide' === $configValue) { + return $this->applyDown($themeCatalogMenu); + } elseif ('show' === $configValue) { + return $this->applyUp($themeCatalogMenu); + } else { + throw new InvalidConfigException(sprintf('%s is not a valid config value', $configValue)); + } + } + + private function getThemeCatalogMenu() + { + $tab = Tab::getInstanceFromClassName('AdminPsMboTheme'); + + return Validate::isLoadedObject($tab) ? $tab : null; + } + + private function applyUp(Tab $themeCatalogMenu): bool + { + $themeCatalogMenu->enabled = true; + $themeCatalogMenu->active = true; + + return $themeCatalogMenu->save(); + } + + private function applyDown(Tab $themeCatalogMenu): bool + { + $themeCatalogMenu->enabled = false; + $themeCatalogMenu->active = false; + + return $themeCatalogMenu->save(); + } +} diff --git a/src/Distribution/Config/Command/ConfigChangeCommand.php b/src/Distribution/Config/Command/ConfigChangeCommand.php new file mode 100644 index 000000000..f8c2cb21b --- /dev/null +++ b/src/Distribution/Config/Command/ConfigChangeCommand.php @@ -0,0 +1,80 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config\Command; + +class ConfigChangeCommand +{ + /** + * @var array + */ + private $config; + + /** + * This is the current PS version in the instance. + * + * @var string + */ + private $psVersion; + + /** + * This is the current MBO module version in the instance. + * + * @var string + */ + private $mboVersion; + + /** + * @param array $config + * @param string $psVersion + * @param string $mboVersion + */ + public function __construct(array $config, string $psVersion, string $mboVersion) + { + $this->config = $config; + $this->psVersion = $psVersion; + $this->mboVersion = $mboVersion; + } + + /** + * @return array + */ + public function getConfig(): array + { + return $this->config; + } + + /** + * @return string + */ + public function getPsVersion(): string + { + return $this->psVersion; + } + + /** + * @return string + */ + public function getMboVersion(): string + { + return $this->mboVersion; + } +} diff --git a/src/Distribution/Config/Command/VersionChangeApplyConfigCommand.php b/src/Distribution/Config/Command/VersionChangeApplyConfigCommand.php new file mode 100644 index 000000000..9266630d5 --- /dev/null +++ b/src/Distribution/Config/Command/VersionChangeApplyConfigCommand.php @@ -0,0 +1,65 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config\Command; + +class VersionChangeApplyConfigCommand +{ + /** + * This is the current PS version in the instance. May be just upgraded. + * + * @var string + */ + private $psVersion; + + /** + * This is the current MBO module version in the instance. May be just upgraded. + * + * @var string + */ + private $mboVersion; + + /** + * @param string $psVersion + * @param string $mboVersion + */ + public function __construct(string $psVersion, string $mboVersion) + { + $this->psVersion = $psVersion; + $this->mboVersion = $mboVersion; + } + + /** + * @return string + */ + public function getPsVersion(): string + { + return $this->psVersion; + } + + /** + * @return string + */ + public function getMboVersion(): string + { + return $this->mboVersion; + } +} diff --git a/src/Distribution/Config/CommandHandler/ConfigChangeCommandHandler.php b/src/Distribution/Config/CommandHandler/ConfigChangeCommandHandler.php new file mode 100644 index 000000000..51626983d --- /dev/null +++ b/src/Distribution/Config/CommandHandler/ConfigChangeCommandHandler.php @@ -0,0 +1,51 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config\CommandHandler; + +use PrestaShop\Module\Mbo\Distribution\Config\Applier; +use PrestaShop\Module\Mbo\Distribution\Config\Command\ConfigChangeCommand; +use PrestaShop\Module\Mbo\Distribution\Config\Factory; + +final class ConfigChangeCommandHandler +{ + /** + * @var Factory + */ + private $configFactory; + + /** + * @var Applier + */ + private $configApplier; + + public function __construct(Factory $configFactory, Applier $configApplier) + { + $this->configFactory = $configFactory; + $this->configApplier = $configApplier; + } + + public function handle(ConfigChangeCommand $command): void + { + $collection = $this->configFactory->buildAndSave($command->getConfig()); + $this->configApplier->apply($collection, $command->getPsVersion(), $command->getMboVersion()); + } +} diff --git a/src/Distribution/Config/CommandHandler/VersionChangeApplyConfigCommandHandler.php b/src/Distribution/Config/CommandHandler/VersionChangeApplyConfigCommandHandler.php new file mode 100644 index 000000000..29f49da9f --- /dev/null +++ b/src/Distribution/Config/CommandHandler/VersionChangeApplyConfigCommandHandler.php @@ -0,0 +1,51 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config\CommandHandler; + +use PrestaShop\Module\Mbo\Distribution\Config\Applier; +use PrestaShop\Module\Mbo\Distribution\Config\Command\VersionChangeApplyConfigCommand; +use PrestaShop\Module\Mbo\Distribution\Config\Factory; + +class VersionChangeApplyConfigCommandHandler +{ + /** + * @var Factory + */ + private $configFactory; + + /** + * @var Applier + */ + private $configApplier; + + public function __construct(Factory $configFactory, Applier $configApplier) + { + $this->configFactory = $configFactory; + $this->configApplier = $configApplier; + } + + public function handle(VersionChangeApplyConfigCommand $command): void + { + $collection = $this->configFactory->getCollectionFromDB(); + $this->configApplier->apply($collection, $command->getPsVersion(), $command->getMboVersion()); + } +} diff --git a/src/Distribution/Config/Config.php b/src/Distribution/Config/Config.php new file mode 100644 index 000000000..94ead485e --- /dev/null +++ b/src/Distribution/Config/Config.php @@ -0,0 +1,101 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config; + +class Config +{ + /** + * @var int|null + */ + private $configId; + + /** + * @var string + */ + private $configKey; + + /** + * @var string + */ + private $configValue; + + /** + * @var string + */ + private $psVersion; + + /** + * @var string + */ + private $mboVersion; + + /** + * @var bool + */ + private $applied; + + public function __construct( + string $configKey, + string $configValue, + string $psVersion, + string $mboVersion, + bool $applied, + ?int $configId = null + ) { + $this->configId = $configId; + $this->configKey = $configKey; + $this->configValue = $configValue; + $this->psVersion = $psVersion; + $this->mboVersion = $mboVersion; + $this->applied = $applied; + } + + public function getConfigId(): ?int + { + return $this->configId; + } + + public function getConfigKey(): string + { + return $this->configKey; + } + + public function getConfigValue(): string + { + return $this->configValue; + } + + public function getPsVersion(): string + { + return $this->psVersion; + } + + public function getMboVersion(): string + { + return $this->mboVersion; + } + + public function isApplied(): bool + { + return $this->applied; + } +} diff --git a/src/Distribution/Config/Exception/CannotApplyConfigException.php b/src/Distribution/Config/Exception/CannotApplyConfigException.php new file mode 100644 index 000000000..759795b84 --- /dev/null +++ b/src/Distribution/Config/Exception/CannotApplyConfigException.php @@ -0,0 +1,26 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config\Exception; + +class CannotApplyConfigException extends \Exception +{ +} diff --git a/src/Distribution/Config/Exception/CannotSaveConfigException.php b/src/Distribution/Config/Exception/CannotSaveConfigException.php new file mode 100644 index 000000000..f8d4c8572 --- /dev/null +++ b/src/Distribution/Config/Exception/CannotSaveConfigException.php @@ -0,0 +1,26 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config\Exception; + +class CannotSaveConfigException extends \Exception +{ +} diff --git a/src/Distribution/Config/Exception/InvalidConfigException.php b/src/Distribution/Config/Exception/InvalidConfigException.php new file mode 100644 index 000000000..f12151084 --- /dev/null +++ b/src/Distribution/Config/Exception/InvalidConfigException.php @@ -0,0 +1,26 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config\Exception; + +class InvalidConfigException extends \Exception +{ +} diff --git a/src/Distribution/Config/Factory.php b/src/Distribution/Config/Factory.php new file mode 100644 index 000000000..60e915abe --- /dev/null +++ b/src/Distribution/Config/Factory.php @@ -0,0 +1,191 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Distribution\Config; + +use Db; +use Doctrine\DBAL\Query\QueryException; +use PrestaShop\Module\Mbo\Distribution\Config\Exception\CannotSaveConfigException; +use PrestaShop\Module\Mbo\Distribution\Config\Exception\InvalidConfigException; +use PrestaShopDatabaseException; + +final class Factory +{ + public function __construct() + { + $this->db = Db::getInstance(); + } + + /** + * This method will receive an array of config, validate its structure, + * build a collection of config objects and save it in DB. + * + * @param array $config + * + * @throws QueryException + * @throws InvalidConfigException + * @throws CannotSaveConfigException + * @throws PrestaShopDatabaseException + */ + public function buildAndSave(array $config) + { + if (!$this->assertConfigIsValid($config)) { + throw new InvalidConfigException('Config given is invalid. Please check the structure.'); + } + + $collection = $this->buildConfigCollection($config); + + $oldCollection = $this->getCollectionFromDB(); + + $this->cleanConfig(); + + try { + $this->saveCollection($collection); + } catch (\Exception $e) { + // If something goes wrong when saving config, we roll back the old config + $this->cleanConfig(); + $this->saveCollection($oldCollection); + + throw new CannotSaveConfigException('Unable to save the config given.'); + } + + return $this->getCollectionFromDB(); + } + + private function assertConfigIsValid(array $config): bool + { + if (empty($config)) { + return false; + } + + foreach ($config as $singleConfig) { + if ( + !isset($singleConfig['config_key']) || + !isset($singleConfig['config_value']) || + !isset($singleConfig['ps_version']) || + !isset($singleConfig['mbo_version']) + ) { + return false; + } + } + + return true; + } + + /** + * @param array $config + * + * @return Config[] + * + * @throws InvalidConfigException + */ + private function buildConfigCollection(array $config): array + { + $collection = []; + + foreach ($config as $singleConfig) { + $collection[] = new Config( + $singleConfig['config_key'], + $singleConfig['config_value'], + $singleConfig['ps_version'], + $singleConfig['mbo_version'], + isset($singleConfig['applied']) ? (bool) $singleConfig['applied'] : false, + isset($singleConfig['id_mbo_api_config']) ? (int) $singleConfig['id_mbo_api_config'] : null + ); + } + + return $collection; + } + + /** + * @throws PrestaShopDatabaseException + * @throws InvalidConfigException + */ + public function getCollectionFromDB(): array + { + $collection = []; + + if (count(Db::getInstance()->executeS('SHOW TABLES LIKE \'' . _DB_PREFIX_ . 'mbo_api_config\' '))) { //check if table exist + $query = 'SELECT + `id_mbo_api_config`, + `config_key`, + `config_value`, + `ps_version`, + `mbo_version`, + `applied` + FROM ' . _DB_PREFIX_ . 'mbo_api_config'; + + /** @var array $results */ + $results = $this->db->executeS($query); + + if (!is_array($results)) { + throw new PrestaShopDatabaseException(sprintf('Retrieving config from DB returns a non array : %s. Query was : %s', gettype($results), $query)); + } + + $collection = $this->buildConfigCollection($results); + } + + return $collection; + } + + private function cleanConfig(): void + { + $sql = []; + $sql[] = 'TRUNCATE TABLE `' . _DB_PREFIX_ . 'mbo_api_config`'; + + foreach ($sql as $query) { + if ($this->db->execute($query) == false) { + throw new QueryException($this->db->getMsgError()); + } + } + } + + /** + * @param Config[] $collection + */ + private function saveCollection(array $collection) + { + if (empty($collection)) { + return true; + } + + $dateAdd = (new \DateTime())->format('Y-m-d H:i:s'); + $sql = 'INSERT INTO `' . _DB_PREFIX_ . 'mbo_api_config`(`config_key`,`config_value`,`ps_version`,`mbo_version`,`applied`,`date_add`) VALUES '; + /** + * @var Config $config + */ + foreach ($collection as $config) { + $sql .= sprintf( + "('%s', '%s', '%s', '%s', '%d', '%s'),", + $config->getConfigKey(), + $config->getConfigValue(), + $config->getPsVersion(), + $config->getMboVersion(), + $config->isApplied(), + $dateAdd + ); + } + + $sql = rtrim($sql, ',') . ';'; + + return $this->db->execute($sql); + } +} diff --git a/src/Distribution/index.php b/src/Distribution/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Distribution/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Helpers/AsyncClient.php b/src/Helpers/AsyncClient.php new file mode 100644 index 000000000..d8929dc70 --- /dev/null +++ b/src/Helpers/AsyncClient.php @@ -0,0 +1,110 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\Mbo\Helpers; + +/** + * The purpose of this class is to provide a way to make asynchronous HTTP requests. + * GuzzleHttp\Client::requestAsync() is not used because it does not allow "Fire and Forget" requests. + */ +class AsyncClient +{ + public const METHOD_POST = 'POST'; + + public const METHOD_GET = 'GET'; + + /** + * Process an async request using the socket connection + * + * @param string $url + * @param array $params + * @param array $customHeaders + * @param string $method + * + * @return bool + */ + public static function request(string $url, array $params = [], array $customHeaders = [], string $method = self::METHOD_POST): bool + { + $endpointParts = parse_url($url); + $endpointParts['path'] = $endpointParts['path'] ?? '/'; + $endpointParts['port'] = $endpointParts['port'] ?? ($endpointParts['scheme'] === 'https' ? 443 : 80); + $socket = self::openSocket($endpointParts['host'], $endpointParts['port']); + + if (!$socket) { + return false; + } + + if ($method === self::METHOD_GET) { + return self::get($endpointParts, $socket, $customHeaders); + } + + return self::post($endpointParts, $socket, $params, $customHeaders); + } + + private static function get(array $endpointParts, $socket, array $customHeaders = []): bool + { + if (!empty($endpointParts['query'])) { + $endpointParts['path'] .= '?' . $endpointParts['query']; + } + $request = "GET {$endpointParts['path']} HTTP/1.1\r\n"; + $request .= "Host: {$endpointParts['host']}\r\n"; + foreach ($customHeaders as $header) { + $request .= "{$header}\r\n"; + } + $request .= "Content-Type: application/json\r\n\r\n"; + $request .= "Connection:Close\r\n\r\n"; + + fwrite($socket, $request); + fclose($socket); + + return true; + } + + private static function post(array $endpointParts, $socket, array $postData = [], array $customHeaders = []): bool + { + $encodedPostData = http_build_query($postData, '', '&'); + $contentLength = strlen($encodedPostData); + + $request = "POST {$endpointParts['path']} HTTP/1.1\r\n"; + $request .= "Accept: application/json\r\n"; + $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; + $request .= "Host: {$endpointParts['host']}\r\n"; + foreach ($customHeaders as $header) { + $request .= "{$header}\r\n"; + } + $request .= "Content-Length: {$contentLength}\r\n\r\n"; + $request .= $encodedPostData; + + fwrite($socket, $request); + fclose($socket); + + return true; + } + + private static function openSocket(string $host, int $port) + { + try { + return fsockopen($host, $port, $errno, $errstr, 0.1); + } catch (\Exception $e) { + return false; + } + } +} diff --git a/src/Helpers/Config.php b/src/Helpers/Config.php index f3c20faf0..3b0678b62 100644 --- a/src/Helpers/Config.php +++ b/src/Helpers/Config.php @@ -49,7 +49,7 @@ public static function resetConfigValues(): void public static function getShopMboUuid(): ?string { if (null === self::$SHOP_MBO_UUID) { - // PS_MBO_SHOP_ADMIN_UUID have the save value for all shops + // PS_MBO_SHOP_ADMIN_UUID have the same value for all shops // to prevent errors in a multishop context, // we request the shops list and get the config value for the 1st one $singleShop = self::getSingleShop(); @@ -69,7 +69,7 @@ public static function getShopMboUuid(): ?string public static function getShopMboAdminMail(): ?string { if (null === self::$SHOP_MBO_ADMIN_MAIL) { - // PS_MBO_SHOP_ADMIN_ADMIN_MAIL have the save value for all shops + // PS_MBO_SHOP_ADMIN_ADMIN_MAIL have the same value for all shops // to prevent errors in a multishop context, // we request the shops list and get the config value for the 1st one $singleShop = self::getSingleShop(); @@ -130,6 +130,22 @@ public static function isUsingSecureProtocol(): bool ); } + public static function getLastPsVersionApiConfig(): ?string + { + // PS_MBO_LAST_PS_VERSION_API_CONFIG have the same value for all shops + // to prevent errors in a multishop context, + // we request the shops list and get the config value for the 1st one + $singleShop = self::getSingleShop(); + + return Configuration::get( + 'PS_MBO_LAST_PS_VERSION_API_CONFIG', + null, + $singleShop->id_shop_group, + $singleShop->id, + null + ); + } + private static function getSingleShop(): Shop { $shops = Shop::getShops(false, null, true); diff --git a/src/Helpers/index.php b/src/Helpers/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Helpers/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/Command/index.php b/src/Module/Command/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/Command/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/CommandHandler/index.php b/src/Module/CommandHandler/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/CommandHandler/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/Exception/index.php b/src/Module/Exception/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/Exception/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/Filters/index.php b/src/Module/Filters/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/Filters/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/SourceRetriever/index.php b/src/Module/SourceRetriever/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/SourceRetriever/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/ValueObject/index.php b/src/Module/ValueObject/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/ValueObject/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/Workflow/Event/index.php b/src/Module/Workflow/Event/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/Workflow/Event/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/Workflow/Exception/index.php b/src/Module/Workflow/Exception/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/Workflow/Exception/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/Workflow/index.php b/src/Module/Workflow/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/Workflow/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Module/index.php b/src/Module/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Module/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Security/index.php b/src/Security/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Security/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Service/View/ContextBuilder.php b/src/Service/View/ContextBuilder.php index 513a8e7b5..a6eb4055c 100644 --- a/src/Service/View/ContextBuilder.php +++ b/src/Service/View/ContextBuilder.php @@ -26,9 +26,11 @@ use Country; use Doctrine\Common\Cache\CacheProvider; use Language; +use PrestaShop\Module\Mbo\Accounts\Provider\AccountsDataProvider; use PrestaShop\Module\Mbo\Api\Security\AdminAuthenticationProvider; use PrestaShop\Module\Mbo\Helpers\Config; use PrestaShop\Module\Mbo\Module\Module; +use PrestaShop\Module\Mbo\Module\Workflow\ModuleStateMachine; use PrestaShop\Module\Mbo\Tab\Tab; use PrestaShop\PrestaShop\Adapter\LegacyContext as ContextAdapter; use PrestaShop\PrestaShop\Adapter\Module\Module as CoreModule; @@ -63,20 +65,27 @@ class ContextBuilder /** * @var AdminAuthenticationProvider */ - private $adminAuthentificationProvider; + private $adminAuthenticationProvider; + + /** + * @var AccountsDataProvider + */ + private $accountsDataProvider; public function __construct( ContextAdapter $contextAdapter, ModuleRepository $moduleRepository, Router $router, CacheProvider $cacheProvider, - AdminAuthenticationProvider $adminAuthentificationProvider + AdminAuthenticationProvider $adminAuthenticationProvider, + AccountsDataProvider $accountsDataProvider ) { $this->contextAdapter = $contextAdapter; $this->moduleRepository = $moduleRepository; $this->router = $router; $this->cacheProvider = $cacheProvider; - $this->adminAuthentificationProvider = $adminAuthentificationProvider; + $this->adminAuthenticationProvider = $adminAuthenticationProvider; + $this->accountsDataProvider = $accountsDataProvider; } public function getViewContext(): array @@ -97,6 +106,25 @@ public function getRecommendedModulesContext(Tab $tab): array return $context; } + public function getEventContext(): array + { + $modules = []; + // Filter : remove uninstalled modules + foreach ($this->getInstalledModules() as $installedModule) { + if ($installedModule['status'] !== ModuleStateMachine::STATUS_UNINSTALLED) { + $modules[] = $installedModule['name']; + } + } + + return [ + 'modules' => $modules, + 'user_id' => $this->accountsDataProvider->getAccountsUserId(), + 'shop_id' => $this->accountsDataProvider->getAccountsShopId(), + 'iso_lang' => $this->getLanguage()->getIsoCode(), + 'iso_code' => $this->getCountry()->iso_code, + ]; + } + public function clearCache(): bool { $cacheKey = $this->getCacheKey(); @@ -131,7 +159,7 @@ private function getCommonContextContent(): array 'shop_version' => _PS_VERSION_, 'shop_url' => Config::getShopUrl(), 'shop_uuid' => Config::getShopMboUuid(), - 'mbo_token' => $this->adminAuthentificationProvider->getMboJWT(), + 'mbo_token' => $this->adminAuthenticationProvider->getMboJWT(), 'user_id' => $context->cookie->id_employee, 'admin_token' => $token, 'refresh_url' => $refreshUrl, @@ -165,6 +193,9 @@ private function getCurrencyCode(): string return $currency->iso_code; } + /** + * @return array + */ private function getInstalledModules(): array { $cacheKey = $this->getCacheKey(); diff --git a/src/Service/View/InstalledModule.php b/src/Service/View/InstalledModule.php index 7fc70ff02..9a73e09c6 100644 --- a/src/Service/View/InstalledModule.php +++ b/src/Service/View/InstalledModule.php @@ -1,4 +1,22 @@ + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ namespace PrestaShop\Module\Mbo\Service\View; diff --git a/src/Service/View/index.php b/src/Service/View/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Service/View/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Traits/HaveConfigurationPage.php b/src/Traits/HaveConfigurationPage.php new file mode 100644 index 000000000..539fa91b3 --- /dev/null +++ b/src/Traits/HaveConfigurationPage.php @@ -0,0 +1,178 @@ + [ + 'cdc' => 'http://localhost:8080/mbo-cdc.umd.js', + 'api' => 'http://localhost:3000', + ], + 'prestabulle' => [ + 'cdc' => 'https://integration-assets.prestashop3.com/dst/mbo/#prestabulle#/mbo-cdc.umd.js', + 'api' => 'https://mbo-api-#prestabulle#.prestashop.com', + ], + 'preprod' => [ + 'cdc' => 'https://preproduction-assets.prestashop3.com/dst/mbo/latest/mbo-cdc.umd.js', + 'api' => 'https://mbo-api-preprod.prestashop.com', + ], + 'prod' => [ + 'cdc' => 'https://assets.prestashop3.com/dst/mbo/latest/mbo-cdc.umd.js', + 'api' => 'https://mbo-api.prestashop.com', + ], + ]; + + /** + * This method handles the module's configuration page + * + * @return string The page's HTML content + */ + public function getContent(): string + { + $output = $this->handleSaveForm(); + + return $output . $this->displayForm(); + } + + private function handleSaveForm(): string + { + $output = ''; + if (Tools::isSubmit('submit' . $this->name)) { + $possibleEnvFiles = [ + '.env', + '.env.local', + '.env.dist', + ]; + + $correctEnvFile = false; + foreach ($possibleEnvFiles as $envFile) { + $envFilePath = $this->getLocalPath() . $envFile; + if (file_exists($envFilePath)) { + $correctEnvFile = true; + break; + } + } + if ($correctEnvFile) { + $output .= $this->saveNewDotenvData($envFilePath); + } + } + + return $output; + } + + private function saveNewDotenvData(string $envFilePath): string + { + $newValue = Tools::getValue('DISTRIBUTION_ENVIRONMENT'); + + if (strpos($newValue, 'prestabulle') !== false) { + $cdcUrl = str_replace('#prestabulle#', $newValue, $this->environmentData['prestabulle']['cdc']); + $apiUrl = str_replace('#prestabulle#', $newValue, $this->environmentData['prestabulle']['api']); + } else { + $cdcUrl = $this->environmentData[$newValue]['cdc']; + $apiUrl = $this->environmentData[$newValue]['api']; + } + + $envData = file_get_contents($envFilePath); + $envData = preg_replace('#MBO_CDC_URL=".*"#', 'MBO_CDC_URL="' . $cdcUrl . '"', $envData); + $envData = preg_replace('#DISTRIBUTION_API_URL=".*"#', 'DISTRIBUTION_API_URL="' . $apiUrl . '"', $envData); + + // Update the .env file + file_put_contents($envFilePath, $envData); + + // Force reload of the .env file + $dotenv = new Dotenv(); + $dotenv->overload($envFilePath); + + return 'Configuration updated to ' . ucfirst($newValue) . ".Don't forget to reset the module."; + } + + /** + * Builds the configuration form + * + * @return string HTML code + */ + public function displayForm(): string + { + $options = [[ + 'value' => 'local', + 'name' => 'Local', + ]]; + + for ($i = 1; $i < 10; ++$i) { + $options[] = [ + 'value' => "prestabulle$i", + 'name' => "Prestabulle $i", + ]; + } + $options = array_merge($options, [[ + 'value' => 'preprod', + 'name' => 'Preprod', + ], + [ + 'value' => 'prod', + 'name' => 'Prod', + ], + ]); + + // Init Fields form array + $form = [ + 'form' => [ + 'legend' => [ + 'title' => $this->trans('Settings', [], 'Admin.Global'), + ], + 'input' => [ + [ + 'type' => 'select', + 'label' => $this->trans('Configuration value', [], 'Admin.Global'), + 'name' => 'DISTRIBUTION_ENVIRONMENT', + 'options' => [ + 'id' => 'value', + 'name' => 'name', + 'query' => $options, + ], + 'required' => true, + ], + ], + 'submit' => [ + 'title' => $this->trans('Save', [], 'Admin.Global'), + 'class' => 'btn btn-default pull-right', + ], + ], + ]; + + $helper = new HelperForm(); + + // Module, token and currentIndex + $helper->table = $this->table; + $helper->name_controller = $this->name; + $helper->token = Tools::getAdminTokenLite('AdminModules'); + $helper->currentIndex = AdminController::$currentIndex . '&' . http_build_query(['configure' => $this->name]); + $helper->submit_action = 'submit' . $this->name; + + $helper->default_form_language = (int) Configuration::get('PS_LANG_DEFAULT'); + + $currentCdcUrl = getenv('MBO_CDC_URL'); + + if (strpos($currentCdcUrl, 'prestabulle') !== false) { + preg_match('#(prestabulle(?:\d+))#', $currentCdcUrl, $matches); + $currentValue = $matches[1]; + } elseif (strpos($currentCdcUrl, 'preprod') !== false) { + $currentValue = 'preprod'; + } elseif (strpos($currentCdcUrl, 'local') !== false) { + $currentValue = 'local'; + } else { + $currentValue = 'prod'; + } + + $helper->fields_value['DISTRIBUTION_ENVIRONMENT'] = $currentValue; + + return $helper->generateForm([$form]); + } +} diff --git a/src/Traits/HaveShopOnExternalService.php b/src/Traits/HaveShopOnExternalService.php index 08f8095ad..3d7a9014a 100644 --- a/src/Traits/HaveShopOnExternalService.php +++ b/src/Traits/HaveShopOnExternalService.php @@ -25,6 +25,7 @@ use Exception; use GuzzleHttp\Exception\GuzzleException; use PrestaShop\Module\Mbo\Distribution\Client; +use PrestaShop\Module\Mbo\Distribution\Config\Command\ConfigChangeCommand; use Ramsey\Uuid\Uuid; use Shop; @@ -42,6 +43,7 @@ private function registerShop(): void // Furthermore, this make a check and ensure existence in case of accidental removal $this->installConfiguration(); $this->callServiceWithLockFile('registerShop'); + $this->syncApiConfig(); } /** @@ -130,6 +132,7 @@ private function installConfiguration(): bool $adminUuid = Uuid::uuid4()->toString(); $this->configurationList['PS_MBO_SHOP_ADMIN_UUID'] = $adminUuid; $this->configurationList['PS_MBO_SHOP_ADMIN_MAIL'] = sprintf('mbo-%s@prestashop.com', $adminUuid); + $this->configurationList['PS_MBO_LAST_PS_VERSION_API_CONFIG'] = _PS_VERSION_; foreach (Shop::getShops(false, null, true) as $shopId) { foreach ($this->configurationList as $name => $value) { @@ -147,4 +150,28 @@ private function installConfiguration(): bool return $result; } + + private function syncApiConfig() + { + if (file_exists($this->moduleCacheDir . 'registerShop.lock')) { + // The shop is not registered yet, do nothing + return; + } + + /** @var Client $distributionApi */ + $distributionApi = $this->getService('mbo.cdc.client.distribution_api'); + + $distributionApi->setBearer($this->getAdminAuthenticationProvider()->getMboJWT()); + $config = $distributionApi->getApiConf(); + + if (empty($config)) { + return; + } + + // We need that conversion to ensure we have an array instead of stdClass + $config = json_decode(json_encode($config), true); + + $command = new ConfigChangeCommand($config, _PS_VERSION_, $this->version); + $configCollection = $this->getService('mbo.distribution.api_config_change_handler')->handle($command); + } } diff --git a/src/Traits/HaveTabs.php b/src/Traits/HaveTabs.php index 69be67900..4daf6e879 100644 --- a/src/Traits/HaveTabs.php +++ b/src/Traits/HaveTabs.php @@ -21,6 +21,7 @@ namespace PrestaShop\Module\Mbo\Traits; +use Db; use LanguageCore as Language; use PrestaShopBundle\Entity\Repository\TabRepository; use Symfony\Component\String\UnicodeString; @@ -71,7 +72,7 @@ trait HaveTabs 'class_name' => 'ApiPsMbo', 'parent_class_name' => 'AdminParentModulesSf', ], - 'ApiPsMboSecurity' => [ + 'ApiSecurityPsMbo' => [ 'name' => 'MBO Api Security', 'visible' => false, 'position' => 1, @@ -178,19 +179,53 @@ public function uninstallTab(array $tabData): bool return false; } - if (isset($tabData['core_reference'])) { - $tabCoreId = $this->tabRepository->findOneIdByClassName($tabData['core_reference']); - $tabCore = new Tab($tabCoreId); + return true; + } + + /** + * Update tabs in DB. + * Search current tabs registered in DB and compare them with the tabs declared in the module. + * If a tab is missing, it will be added. If a tab is not declared in the module, it will be removed. + * + * @return void + */ + public function updateTabs(): void + { + $tabData = Db::getInstance()->executeS(' + SELECT class_name + FROM `' . _DB_PREFIX_ . 'tab` + WHERE `module` = "' . pSQL($this->name) . '"' + ); + + //Flatten $tabData array + $tabData = array_unique(array_map('current', $tabData)); + $currentModuleTabs = array_keys(static::$ADMIN_CONTROLLERS); - if (Validate::isLoadedObject($tabCore)) { - $tabCore->active = true; + $oldTabs = []; + $newTabs = []; + + // Iterate on DB tabs to get only the old ones + foreach ($tabData as $tabInDb) { + if (!in_array($tabInDb, $currentModuleTabs)) { + $oldTabs[] = $tabInDb; } + } - if (false === $tabCore->save()) { - return false; + // Iterate on module tabs to get only the new ones + foreach ($currentModuleTabs as $tab) { + if (!in_array($tab, $tabData)) { + $newTabs[] = $tab; } } - return true; + $tabRepository = $this->get('prestashop.core.admin.tab.repository'); + $this->tabRepository = $tabRepository; + + foreach ($oldTabs as $oldTab) { + $this->uninstallTab(['class_name' => $oldTab]); + } + foreach ($newTabs as $newTab) { + $this->installTab(static::$ADMIN_CONTROLLERS[$newTab]); + } } } diff --git a/src/Traits/Hooks/UseActionAdminControllerSetMedia.php b/src/Traits/Hooks/UseActionAdminControllerSetMedia.php index 0d266ad0b..575263440 100644 --- a/src/Traits/Hooks/UseActionAdminControllerSetMedia.php +++ b/src/Traits/Hooks/UseActionAdminControllerSetMedia.php @@ -102,6 +102,16 @@ private function loadCdcMedia(): void return; } - $this->context->controller->addJs(getenv('MBO_CDC_URL')); + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error-templating.js'); + $this->context->controller->addCss($this->getPathUri() . 'views/css/cdc-error-templating.css'); + + $cdcJsFile = getenv('MBO_CDC_URL'); + if (false === $cdcJsFile || !is_string($cdcJsFile) || empty($cdcJsFile)) { + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error.js'); + + return; + } + + $this->context->controller->addJs($cdcJsFile); } } diff --git a/src/Traits/Hooks/UseActionBeforeUpgradeModule.php b/src/Traits/Hooks/UseActionBeforeUpgradeModule.php index 04873d0ec..166daf183 100644 --- a/src/Traits/Hooks/UseActionBeforeUpgradeModule.php +++ b/src/Traits/Hooks/UseActionBeforeUpgradeModule.php @@ -22,7 +22,6 @@ namespace PrestaShop\Module\Mbo\Traits\Hooks; use PrestaShop\Module\Mbo\Module\ActionsManager; -use PrestaShop\Module\Mbo\Module\Exception\ModuleUpgradeNotNeededException; use PrestaShop\PrestaShop\Adapter\Module\ModuleDataProvider; trait UseActionBeforeUpgradeModule @@ -33,7 +32,6 @@ trait UseActionBeforeUpgradeModule * @param array $params * * @throws \PrestaShop\Module\Mbo\Module\Exception\ModuleNewVersionNotFoundException - * @throws \PrestaShop\Module\Mbo\Module\Exception\ModuleUpgradeNotNeededException * @throws \PrestaShop\Module\Mbo\Module\Exception\UnexpectedModuleSourceContentException */ public function hookActionBeforeUpgradeModule(array $params): void @@ -54,11 +52,9 @@ public function hookActionBeforeUpgradeModule(array $params): void $moduleActionsManager = $this->get('mbo.modules.actions_manager'); $module = $moduleActionsManager->findVersionForUpdate($moduleName); - if (null === $module) { - throw new ModuleUpgradeNotNeededException(sprintf('Upgrade not needed for module %s', $moduleName)); + if (null !== $module) { + $moduleActionsManager->downloadAndReplaceModuleFiles($module); } - - $moduleActionsManager->downloadAndReplaceModuleFiles($module); } /** diff --git a/src/Traits/Hooks/UseActionDispatcherBefore.php b/src/Traits/Hooks/UseActionDispatcherBefore.php index 94a64ab6f..6f16c36f3 100644 --- a/src/Traits/Hooks/UseActionDispatcherBefore.php +++ b/src/Traits/Hooks/UseActionDispatcherBefore.php @@ -22,7 +22,10 @@ namespace PrestaShop\Module\Mbo\Traits\Hooks; use Cache; +use Configuration; use Context; +use PrestaShop\Module\Mbo\Distribution\Config\Command\VersionChangeApplyConfigCommand; +use PrestaShop\Module\Mbo\Helpers\Config; use PrestaShop\PrestaShop\Core\Domain\Employee\Exception\EmployeeException; use Tools; @@ -45,6 +48,7 @@ public function hookActionDispatcherBefore(array $params): void ])) { $this->ensureShopIsRegistered(); $this->ensureShopIsUpdated(); + $this->ensureApiConfigIsApplied(); } $this->ensureApiUserExistAndIsLogged($controllerName, $params); @@ -66,6 +70,35 @@ private function ensureShopIsUpdated(): void $this->updateShop(); } + private function ensureApiConfigIsApplied(): void + { + $cacheProvider = $this->get('doctrine.cache.provider'); + $cacheKey = 'mbo_last_ps_version_api_config_check'; + + if ($cacheProvider->contains($cacheKey)) { + $lastCheck = $cacheProvider->fetch($cacheKey); + + $timeSinceLastCheck = (strtotime('now') - strtotime($lastCheck)) / (60 * 60); + if ($timeSinceLastCheck < 3) { // If last check happened lss than 3hrs, do nothing + return; + } + } + + if (_PS_VERSION_ === Config::getLastPsVersionApiConfig()) { + // Config already applied for this version of PS + return; + } + + // Apply the config for the new PS version + $command = new VersionChangeApplyConfigCommand(_PS_VERSION_, $this->version); + $configCollection = $this->get('mbo.distribution.api_version_change_config_apply_handler')->handle($command); + + // Update the PS_MBO_LAST_PS_VERSION_API_CONFIG + Configuration::updateValue('PS_MBO_LAST_PS_VERSION_API_CONFIG', _PS_VERSION_); + + $cacheProvider->save($cacheKey, (new \DateTime())->format('Y-m-d H:i:s'), 0); + } + /** * @param string|bool $controllerName * @param array $params diff --git a/src/Traits/Hooks/UseActionGetAlternativeSearchPanels.php b/src/Traits/Hooks/UseActionGetAlternativeSearchPanels.php index 2c6cdf9ea..0b8c87546 100644 --- a/src/Traits/Hooks/UseActionGetAlternativeSearchPanels.php +++ b/src/Traits/Hooks/UseActionGetAlternativeSearchPanels.php @@ -38,12 +38,19 @@ public function hookActionGetAlternativeSearchPanels(array $params): array { $searchedExpression = $params['bo_query']; + $version = defined('_PS_VERSION_') ? _PS_VERSION_ : ''; + if ($lastDotIndex = strrpos($version, '.')) { + $trailingVersion = str_replace('.', '_', substr($version, 0, $lastDotIndex)); + } else { + $trailingVersion = ''; + } + $queryParams = [ 'search_query' => $searchedExpression, 'utm_source' => 'back-office', 'utm_medium' => 'search', 'utm_campaign' => 'back-office-' . $this->context->language->iso_code, - 'utm_content' => 'download', + 'utm_content' => 'download' . $trailingVersion, ]; $searchPanels = []; diff --git a/src/Traits/Hooks/UseDashboardZoneOne.php b/src/Traits/Hooks/UseDashboardZoneOne.php index 17b74af54..8be3d5a56 100644 --- a/src/Traits/Hooks/UseDashboardZoneOne.php +++ b/src/Traits/Hooks/UseDashboardZoneOne.php @@ -38,6 +38,7 @@ public function hookDashboardZoneOne(array $params) $this->context->smarty->assign( [ 'shop_context' => json_encode($this->get('mbo.cdc.context_builder')->getViewContext()), + 'cdcErrorUrl' => $this->get('router')->generate('admin_mbo_module_cdc_error'), ] ); @@ -66,7 +67,17 @@ public function bootUseDashboardZoneOne(): void protected function loadMediaDashboardZoneOne(): void { if (\Tools::getValue('controller') === 'AdminDashboard') { - $this->context->controller->addJs(getenv('MBO_CDC_URL')); + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error-templating.js'); + $this->context->controller->addCss($this->getPathUri() . 'views/css/cdc-error-templating.css'); + + $cdcJsFile = getenv('MBO_CDC_URL'); + if (false === $cdcJsFile || !is_string($cdcJsFile) || empty($cdcJsFile)) { + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error.js'); + + return; + } + + $this->context->controller->addJs($cdcJsFile); $this->context->controller->addJs($this->getPathUri() . 'views/js/addons-connector.js?v=' . $this->version); $this->context->controller->addCSS($this->getPathUri() . 'views/css/addons-connect.css'); } diff --git a/src/Traits/Hooks/UseDashboardZoneThree.php b/src/Traits/Hooks/UseDashboardZoneThree.php index 610c5ef41..290a5488b 100644 --- a/src/Traits/Hooks/UseDashboardZoneThree.php +++ b/src/Traits/Hooks/UseDashboardZoneThree.php @@ -49,6 +49,7 @@ public function hookDashboardZoneThree(array $params) $this->context->smarty->assign( [ 'shop_context' => json_encode($this->get('mbo.cdc.context_builder')->getViewContext()), + 'cdcErrorUrl' => $this->get('router')->generate('admin_mbo_module_cdc_error'), ] ); @@ -65,7 +66,17 @@ public function hookDashboardZoneThree(array $params) protected function loadMediaForDashboardColumnThree(): void { if (Tools::getValue('controller') === 'AdminDashboard') { - $this->context->controller->addJs(getenv('MBO_CDC_URL')); + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error-templating.js'); + $this->context->controller->addCss($this->getPathUri() . 'views/css/cdc-error-templating.css'); + + $cdcJsFile = getenv('MBO_CDC_URL'); + if (false === $cdcJsFile || !is_string($cdcJsFile) || empty($cdcJsFile)) { + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error.js'); + + return; + } + + $this->context->controller->addJs($cdcJsFile); } } } diff --git a/src/Traits/Hooks/UseDashboardZoneTwo.php b/src/Traits/Hooks/UseDashboardZoneTwo.php index c2567565d..bd168eb89 100644 --- a/src/Traits/Hooks/UseDashboardZoneTwo.php +++ b/src/Traits/Hooks/UseDashboardZoneTwo.php @@ -49,6 +49,7 @@ public function hookDashboardZoneTwo(array $params) $this->context->smarty->assign( [ 'shop_context' => json_encode($this->get('mbo.cdc.context_builder')->getViewContext()), + 'cdcErrorUrl' => $this->get('router')->generate('admin_mbo_module_cdc_error'), ] ); @@ -65,7 +66,17 @@ public function hookDashboardZoneTwo(array $params) protected function loadMediaForDashboardColumnTwo(): void { if (Tools::getValue('controller') === 'AdminDashboard') { - $this->context->controller->addJs(getenv('MBO_CDC_URL')); + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error-templating.js'); + $this->context->controller->addCss($this->getPathUri() . 'views/css/cdc-error-templating.css'); + + $cdcJsFile = getenv('MBO_CDC_URL'); + if (false === $cdcJsFile || !is_string($cdcJsFile) || empty($cdcJsFile)) { + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error.js'); + + return; + } + + $this->context->controller->addJs($cdcJsFile); } } } diff --git a/src/Traits/Hooks/UseDisplayAdminThemesListAfter.php b/src/Traits/Hooks/UseDisplayAdminThemesListAfter.php index f52cedf80..4b11f3e0c 100644 --- a/src/Traits/Hooks/UseDisplayAdminThemesListAfter.php +++ b/src/Traits/Hooks/UseDisplayAdminThemesListAfter.php @@ -42,6 +42,7 @@ public function hookDisplayAdminThemesListAfter(array $params): string $this->smarty->assign([ 'shop_context' => json_encode($context), + 'cdcErrorUrl' => $this->get('router')->generate('admin_mbo_module_cdc_error'), ]); return $this->fetch('module:ps_mbo/views/templates/hook/recommended-themes.tpl'); @@ -69,7 +70,17 @@ public function bootUseDisplayAdminThemesListAfter(): void protected function loadMediaAdminThemesListAfter(): void { if (\Tools::getValue('controller') === 'AdminThemes') { - $this->context->controller->addJs(getenv('MBO_CDC_URL')); + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error-templating.js'); + $this->context->controller->addCss($this->getPathUri() . 'views/css/cdc-error-templating.css'); + + $cdcJsFile = getenv('MBO_CDC_URL'); + if (false === $cdcJsFile || !is_string($cdcJsFile) || empty($cdcJsFile)) { + $this->context->controller->addJs($this->getPathUri() . 'views/js/cdc-error.js'); + + return; + } + + $this->context->controller->addJs($cdcJsFile); } } } diff --git a/src/Traits/Hooks/UseDisplayDashboardTop.php b/src/Traits/Hooks/UseDisplayDashboardTop.php index a851f8420..0d9620228 100644 --- a/src/Traits/Hooks/UseDisplayDashboardTop.php +++ b/src/Traits/Hooks/UseDisplayDashboardTop.php @@ -121,23 +121,23 @@ protected function displayPushOnConfigurationPage(string $moduleName): string switch ($moduleName) { case 'contactform': $this->smarty->assign([ - 'catchPhrase' => $this->trans('For even more security on your website forms, consult our Security & Access modules category on the'), - 'linkTarget' => $this->trans('https://addons.prestashop.com/en/429-website-security-access?utm_source=back-office&utm_medium=native-contactform&utm_campaign=back-office-EN&utm_content=security'), - 'linkText' => $this->trans('PrestaShop Addons Marketplace'), + 'catchPhrase' => $this->trans('For even more security on your website forms, consult our Security & Access modules category on the', 'Modules.Mbo.Global'), + 'linkTarget' => $this->trans('https://addons.prestashop.com/en/429-website-security-access?utm_source=back-office&utm_medium=native-contactform&utm_campaign=back-office-EN&utm_content=security', 'Modules.Mbo.Links'), + 'linkText' => $this->trans('PrestaShop Addons Marketplace', 'Modules.Mbo.Global'), ]); break; case 'blockreassurance': $this->smarty->assign([ - 'catchPhrase' => $this->trans('Discover more modules to improve your shop on'), - 'linkTarget' => $this->trans('https://addons.prestashop.com/en/517-blocks-tabs-banners?utm_source=back-office&utm_medium=modules&utm_campaign=back-office-EN'), - 'linkText' => $this->trans('PrestaShop Addons Marketplace'), + 'catchPhrase' => $this->trans('Discover more modules to improve your shop on', 'Modules.Mbo.Global'), + 'linkTarget' => $this->trans('https://addons.prestashop.com/en/517-blocks-tabs-banners?utm_source=back-office&utm_medium=modules&utm_campaign=back-office-EN', 'Modules.Mbo.Links'), + 'linkText' => $this->trans('PrestaShop Addons Marketplace', 'Modules.Mbo.Global'), ]); break; default: $this->smarty->assign([ - 'catchPhrase' => $this->trans('Discover more modules to improve your shop on'), - 'linkTarget' => $this->trans('https://addons.prestashop.com/?utm_source=back-office&utm_medium=modules&utm_campaign=back-office-EN'), - 'linkText' => $this->trans('PrestaShop Addons Marketplace'), + 'catchPhrase' => $this->trans('Discover more modules to improve your shop on', 'Modules.Mbo.Global'), + 'linkTarget' => $this->trans('https://addons.prestashop.com/?utm_source=back-office&utm_medium=modules&utm_campaign=back-office-EN', 'Modules.Mbo.Links'), + 'linkText' => $this->trans('PrestaShop Addons Marketplace', 'Modules.Mbo.Global'), ]); } diff --git a/src/Traits/Hooks/index.php b/src/Traits/Hooks/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Traits/Hooks/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/src/Traits/UseHooks.php b/src/Traits/UseHooks.php index 71c5ebe0e..b476edffb 100644 --- a/src/Traits/UseHooks.php +++ b/src/Traits/UseHooks.php @@ -21,6 +21,7 @@ namespace PrestaShop\Module\Mbo\Traits; +use Db; use Symfony\Component\String\UnicodeString; trait UseHooks @@ -110,4 +111,54 @@ protected function getTraitNames(): array return $traits; } + + /** + * Update hooks in DB. + * Search current hooks registered in DB and compare them with the hooks declared in the module. + * If a hook is missing, it will be added. If a hook is not declared in the module, it will be removed. + * + * @return void + */ + public function updateHooks(): void + { + $hookData = Db::getInstance()->executeS(' + SELECT DISTINCT(phm.id_hook), name + FROM `' . _DB_PREFIX_ . 'hook_module` phm + JOIN `' . _DB_PREFIX_ . 'hook` ph ON ph.id_hook=phm.id_hook + WHERE `id_module` = ' . (int) $this->id + ); + + $currentModuleHooks = $this->getHooksNames(); + + $oldHooks = []; + $newHooks = []; + + // Iterate on DB hooks to get only the old ones + foreach ($hookData as $hook) { + if (!in_array(strtolower($hook['name']), array_map('strtolower', $currentModuleHooks))) { + $oldHooks[] = $hook; + } + } + + // Iterate on module hooks to get only the new ones + foreach ($currentModuleHooks as $moduleHook) { + $isNew = true; + foreach ($hookData as $hookInDb) { + if (strtolower($moduleHook) === strtolower($hookInDb['name'])) { + $isNew = false; + break; + } + } + if ($isNew) { + $newHooks[] = $moduleHook; + } + } + + foreach ($oldHooks as $oldHook) { + $this->unregisterHook($oldHook['id']); + } + if (!empty($newHooks)) { + $this->registerHook($newHooks); + } + } } diff --git a/src/Traits/index.php b/src/Traits/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/src/Traits/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/tests/Helpers/VersionTest.php b/tests/Helpers/VersionTest.php index 5ae6e5c0b..f0f03bf96 100644 --- a/tests/Helpers/VersionTest.php +++ b/tests/Helpers/VersionTest.php @@ -5,7 +5,7 @@ * * NOTICE OF LICENSE * - * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * This source file is subject to the Academic Free License version 3.0 * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/AFL-3.0 @@ -13,9 +13,9 @@ * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * - * @author PrestaShop SA + * @author PrestaShop SA and Contributors * @copyright Since 2007 PrestaShop SA and Contributors - * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\Mbo\Tests\Helpers; diff --git a/tests/Helpers/index.php b/tests/Helpers/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/tests/Helpers/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/tests/Module/Filters/FiltersTest.php b/tests/Module/Filters/FiltersTest.php index 4c7b5b84a..4b17b4959 100644 --- a/tests/Module/Filters/FiltersTest.php +++ b/tests/Module/Filters/FiltersTest.php @@ -5,7 +5,7 @@ * * NOTICE OF LICENSE * - * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * This source file is subject to the Academic Free License version 3.0 * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/AFL-3.0 @@ -13,9 +13,9 @@ * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * - * @author PrestaShop SA + * @author PrestaShop SA and Contributors * @copyright Since 2007 PrestaShop SA and Contributors - * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\Mbo\Tests\Module\Filters; diff --git a/tests/Module/Filters/index.php b/tests/Module/Filters/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/tests/Module/Filters/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/tests/Module/TransitionModuleTest.php b/tests/Module/TransitionModuleTest.php index 6c71af968..7f1acf041 100644 --- a/tests/Module/TransitionModuleTest.php +++ b/tests/Module/TransitionModuleTest.php @@ -5,7 +5,7 @@ * * NOTICE OF LICENSE * - * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * This source file is subject to the Academic Free License version 3.0 * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/AFL-3.0 @@ -13,9 +13,9 @@ * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * - * @author PrestaShop SA + * @author PrestaShop SA and Contributors * @copyright Since 2007 PrestaShop SA and Contributors - * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\Mbo\Tests\Module; diff --git a/tests/Module/Workflow/ModuleStateMachineTest.php b/tests/Module/Workflow/ModuleStateMachineTest.php index 7f31ae507..70727f187 100644 --- a/tests/Module/Workflow/ModuleStateMachineTest.php +++ b/tests/Module/Workflow/ModuleStateMachineTest.php @@ -5,7 +5,7 @@ * * NOTICE OF LICENSE * - * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * This source file is subject to the Academic Free License version 3.0 * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/AFL-3.0 @@ -13,9 +13,9 @@ * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * - * @author PrestaShop SA + * @author PrestaShop SA and Contributors * @copyright Since 2007 PrestaShop SA and Contributors - * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\Mbo\Tests\Module\Workflow; diff --git a/tests/Module/Workflow/index.php b/tests/Module/Workflow/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/tests/Module/Workflow/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/tests/Module/index.php b/tests/Module/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/tests/Module/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/tests/bootstrap.php b/tests/bootstrap.php index d36682b0d..ddfd676a1 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,5 +1,22 @@ + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ require __DIR__ . '/../vendor/autoload.php'; define('_PS_IN_TEST_', true); diff --git a/tests/index.php b/tests/index.php new file mode 100644 index 000000000..3c82fdf67 --- /dev/null +++ b/tests/index.php @@ -0,0 +1,29 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/tests/phpstan/index.php b/tests/phpstan/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/tests/phpstan/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/de-DE/ModulesMboAddons.de-DE.xlf b/translations/de-DE/ModulesMboAddons.de-DE.xlf index f64a53466..443bac1ab 100644 --- a/translations/de-DE/ModulesMboAddons.de-DE.xlf +++ b/translations/de-DE/ModulesMboAddons.de-DE.xlf @@ -1,16 +1,12 @@ - + Connect to Addons marketplace Mit dem Addons Marktplatz verbinden - Line: 127 + Line: 24 - - - - Confirm logout Abmeldung bestätigen diff --git a/translations/de-DE/ModulesMboErrors.de-DE.xlf b/translations/de-DE/ModulesMboErrors.de-DE.xlf index 2360e036c..386ea0178 100644 --- a/translations/de-DE/ModulesMboErrors.de-DE.xlf +++ b/translations/de-DE/ModulesMboErrors.de-DE.xlf @@ -9,7 +9,7 @@ - + It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration. diff --git a/translations/de-DE/ModulesMboGlobal.de-DE.xlf b/translations/de-DE/ModulesMboGlobal.de-DE.xlf index 49f04bd7b..d08a3b1b8 100644 --- a/translations/de-DE/ModulesMboGlobal.de-DE.xlf +++ b/translations/de-DE/ModulesMboGlobal.de-DE.xlf @@ -5,12 +5,50 @@ PrestaShop Marketplace in your Back Office PrestaShop-Marktplatz in Ihrem Back Office - Line: 116 + Line: 119 Browse the Addons marketplace directly from your back office to better meet your needs. Durchsuchen Sie den PrestaShop-Marktplatz direkt von Ihrem Back-Office aus, um Ihren Bedürfnissen gerecht zu werden. - Line: 117 + Line: 120 + + + + + + + + + Line: 124 + + + PrestaShop Addons Marketplace + PrestaShop Addons Marktplatz + Line: 140 + + + Discover more modules to improve your shop on + Entdecken Sie weitere Module zur Verbesserung Ihres Shops auf + Line: 138 + + + + + + + Oh no.. something went wrong + Oh nein... etwas ist schief gelaufen + Line: 5 + + + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + Es gab ein Problem auf unserer Seite. Aktualisieren Sie Ihre Seite und wenn das Problem weiterhin besteht, versuchen Sie es später erneut. + Line: 8 + + + Refresh page + Seite aktualisieren + Line: 13 diff --git a/translations/de-DE/ModulesMboLinks.de-DE.xlf b/translations/de-DE/ModulesMboLinks.de-DE.xlf index 1ed82163c..3e4cfb990 100644 --- a/translations/de-DE/ModulesMboLinks.de-DE.xlf +++ b/translations/de-DE/ModulesMboLinks.de-DE.xlf @@ -14,4 +14,23 @@ + + + + + + Line: 125 + + + + + Line: 132 + + + + + Line: 139 + + + diff --git a/translations/de-DE/ModulesMboModulescatalog.de-DE.xlf b/translations/de-DE/ModulesMboModulescatalog.de-DE.xlf index 224ce31f6..17a2d5391 100644 --- a/translations/de-DE/ModulesMboModulescatalog.de-DE.xlf +++ b/translations/de-DE/ModulesMboModulescatalog.de-DE.xlf @@ -2,11 +2,6 @@ - - Upload a module - Modul hochladen - Line: 96 - Synchronized with Addons marketplace! Mit dem Addons Marktplatz verbunden! @@ -51,8 +46,27 @@ - + + + + Discover + Entdecken + Line: 31 + + + Toggle Dropdown + Dropdown ein-/ausklappen + Line: 47 + + + + + + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Verbinden Sie ihren Shop mit ihrem Addons-Account, um automatische Updates ihrer gekauften Module zu ermöglichen. Sie haben noch keinen Account? + Line: 42 + Sign up now Jetzt registrieren @@ -65,4 +79,71 @@ + + + + Upload a module + Modul hochladen + Line: 24 + + + Drop your module archive here or [1]select file[/1] + Ziehen Sie ihr Modularchiv hier hin oder [1]wählen Sie eine Datei[/1] + Line: 45 + + + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Vous pouvez charger un fichier à la fois, au format .zip ou tarball (.tar, .tar.gz or .tgz). + Line: 48 + + + Your module will be installed right after that. + Ihr Modul wird gleich danach installiert. + Line: 49 + + + Installing module... + Installiere Modul... + Line: 55 + + + It will close as soon as the module is installed. It won't be long! + Es schließt sich in Kürze automatisch, sobald das Modul installiert ist. + Line: 57 + + + Module installed! + Modul installiert! + Line: 62 + + + Oops... Upload failed. + Uups... Hochladen fehlgeschlagen. + Line: 68 + + + What happened? + Was ist passiert? + Line: 69 + + + + + + + Read More + Mehr ... + Line: 24 + + + + + + + Discover the best-selling modules of this category in the %link% page. + Die meistverkauften Module dieser Kategorie finden Sie hier: %link%. + Line: 19 + + + diff --git a/translations/de-DE/ModulesMboPsmbo.de-DE.xlf b/translations/de-DE/ModulesMboPsmbo.de-DE.xlf deleted file mode 100644 index 6cd3de61f..000000000 --- a/translations/de-DE/ModulesMboPsmbo.de-DE.xlf +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - Weitere Module zur Datensicherheit finden Sie bei PrestaShop Addons im Bereich "Sicherheit und Berechtigungen": - Line: 124 - - - - - Line: 125 - - - PrestaShop Addons Marketplace - PrestaShop Addons Marktplatz - Line: 140 - - - Discover more modules to improve your shop on - Entdecken Sie weitere Module zur Verbesserung Ihres Shops auf - Line: 138 - - - - - Line: 132 - - - - - Line: 139 - - - - diff --git a/translations/de-DE/ModulesMboSearch.de-DE.xlf b/translations/de-DE/ModulesMboSearch.de-DE.xlf index f12ad2084..0d9d95680 100644 --- a/translations/de-DE/ModulesMboSearch.de-DE.xlf +++ b/translations/de-DE/ModulesMboSearch.de-DE.xlf @@ -5,12 +5,12 @@ Search addons.prestashop.com Durchsuche addons.prestashop.com - Line: 51 + Line: 58 Go to Addons Zu Addons wechseln - Line: 52 + Line: 59 diff --git a/translations/de-DE/index.php b/translations/de-DE/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/translations/de-DE/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/en-US/ModulesMboAddons.en-US.xlf b/translations/en-US/ModulesMboAddons.en-US.xlf index 7ce2593ef..5b41d81f2 100644 --- a/translations/en-US/ModulesMboAddons.en-US.xlf +++ b/translations/en-US/ModulesMboAddons.en-US.xlf @@ -1,16 +1,12 @@ - + Connect to Addons marketplace Connect to Addons marketplace - Line: 127 + Line: 24 - - - - Confirm logout Confirm logout diff --git a/translations/en-US/ModulesMboErrors.en-US.xlf b/translations/en-US/ModulesMboErrors.en-US.xlf index 1da6733a9..3d9b1af8c 100644 --- a/translations/en-US/ModulesMboErrors.en-US.xlf +++ b/translations/en-US/ModulesMboErrors.en-US.xlf @@ -9,7 +9,7 @@ - + It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration. diff --git a/translations/en-US/ModulesMboGlobal.en-US.xlf b/translations/en-US/ModulesMboGlobal.en-US.xlf index ca7bc3707..f58db1da1 100644 --- a/translations/en-US/ModulesMboGlobal.en-US.xlf +++ b/translations/en-US/ModulesMboGlobal.en-US.xlf @@ -5,12 +5,50 @@ PrestaShop Marketplace in your Back Office PrestaShop Marketplace in your Back Office - Line: 116 + Line: 119 Browse the Addons marketplace directly from your back office to better meet your needs. Browse the Addons marketplace directly from your back office to better meet your needs. - Line: 117 + Line: 120 + + + + + + + + + Line: 124 + + + PrestaShop Addons Marketplace + PrestaShop Addons Marketplace + Line: 140 + + + Discover more modules to improve your shop on + Discover more modules to improve your shop on + Line: 138 + + + + + + + Oh no.. something went wrong + Oh no.. something went wrong + Line: 5 + + + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + Line: 8 + + + Refresh page + Refresh page + Line: 13 diff --git a/translations/en-US/ModulesMboLinks.en-US.xlf b/translations/en-US/ModulesMboLinks.en-US.xlf index 5e0e0e176..2ac9f91a0 100644 --- a/translations/en-US/ModulesMboLinks.en-US.xlf +++ b/translations/en-US/ModulesMboLinks.en-US.xlf @@ -5,12 +5,31 @@ https://accounts.distribution.prestashop.net/en/sign-up https://accounts.distribution.prestashop.net/en/sign-up - Line: 139 + Line: 123 https://auth.prestashop.com/en/password/request https://auth.prestashop.com/en/password/request - Line: 146 + Line: 130 + + + + + + + + + Line: 125 + + + + + Line: 132 + + + + + Line: 139 diff --git a/translations/en-US/ModulesMboModulescatalog.en-US.xlf b/translations/en-US/ModulesMboModulescatalog.en-US.xlf index 82ea7cde0..993217084 100644 --- a/translations/en-US/ModulesMboModulescatalog.en-US.xlf +++ b/translations/en-US/ModulesMboModulescatalog.en-US.xlf @@ -2,11 +2,6 @@ - - Upload a module - Upload a module - Line: 96 - Synchronized with Addons marketplace! Synchronized with Addons marketplace! @@ -51,8 +46,27 @@ - + + + + Discover + Discover + Line: 31 + + + Toggle Dropdown + Toggle Dropdown + Line: 47 + + + + + + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Line: 42 + Sign up now Sign up now @@ -65,4 +79,71 @@ + + + + Upload a module + Upload a module + Line: 24 + + + Drop your module archive here or [1]select file[/1] + Drop your module archive here or [1]select file[/1] + Line: 45 + + + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Line: 48 + + + Your module will be installed right after that. + Your module will be installed right after that. + Line: 49 + + + Installing module... + Installing module... + Line: 55 + + + It will close as soon as the module is installed. It won't be long! + It will close as soon as the module is installed. It won't be long! + Line: 57 + + + Module installed! + Module installed! + Line: 62 + + + Oops... Upload failed. + Oops... Upload failed. + Line: 68 + + + What happened? + What happened? + Line: 69 + + + + + + + Read More + Read More + Line: 24 + + + + + + + Discover the best-selling modules of this category in the %link% page. + Discover the best-selling modules of this category in the %link% page. + Line: 19 + + + diff --git a/translations/en-US/ModulesMboPsmbo.en-US.xlf b/translations/en-US/ModulesMboPsmbo.en-US.xlf deleted file mode 100644 index 5db9c2d35..000000000 --- a/translations/en-US/ModulesMboPsmbo.en-US.xlf +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - Line: 124 - - - - - Line: 125 - - - PrestaShop Addons Marketplace - PrestaShop Addons Marketplace - Line: 140 - - - Discover more modules to improve your shop on - Discover more modules to improve your shop on - Line: 138 - - - - - Line: 132 - - - - - Line: 139 - - - - diff --git a/translations/en-US/ModulesMboSearch.en-US.xlf b/translations/en-US/ModulesMboSearch.en-US.xlf index 5251ea79d..ecb022f49 100644 --- a/translations/en-US/ModulesMboSearch.en-US.xlf +++ b/translations/en-US/ModulesMboSearch.en-US.xlf @@ -5,12 +5,12 @@ Search addons.prestashop.com Search addons.prestashop.com - Line: 51 + Line: 58 Go to Addons Go to Addons - Line: 52 + Line: 59 diff --git a/translations/en-US/index.php b/translations/en-US/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/translations/en-US/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/es-ES/ModulesMboAddons.es-ES.xlf b/translations/es-ES/ModulesMboAddons.es-ES.xlf index 9a3469af3..81602d4aa 100644 --- a/translations/es-ES/ModulesMboAddons.es-ES.xlf +++ b/translations/es-ES/ModulesMboAddons.es-ES.xlf @@ -1,16 +1,12 @@ - + Connect to Addons marketplace Conectarse a Addons Marketplace - Line: 127 + Line: 24 - - - - Confirm logout Confirmar el cierre de sesión diff --git a/translations/es-ES/ModulesMboErrors.es-ES.xlf b/translations/es-ES/ModulesMboErrors.es-ES.xlf index 7d04ea094..41bb52139 100644 --- a/translations/es-ES/ModulesMboErrors.es-ES.xlf +++ b/translations/es-ES/ModulesMboErrors.es-ES.xlf @@ -9,7 +9,7 @@ - + It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration. diff --git a/translations/es-ES/ModulesMboGlobal.es-ES.xlf b/translations/es-ES/ModulesMboGlobal.es-ES.xlf index c037b9cd0..fd66b3f67 100644 --- a/translations/es-ES/ModulesMboGlobal.es-ES.xlf +++ b/translations/es-ES/ModulesMboGlobal.es-ES.xlf @@ -5,12 +5,50 @@ PrestaShop Marketplace in your Back Office PrestaShop Marketplace en tu Back Office - Line: 116 + Line: 119 Browse the Addons marketplace directly from your back office to better meet your needs. Consulta el mercado de PrestaShop directamente desde tu back-office para que se adapte mejor a tus necesidades. - Line: 117 + Line: 120 + + + + + + + + Para obtener mayor seguridad en los formularios de tu sitio web, consulta nuestra categoría de módulos de Seguridad y Acceso en + Line: 124 + + + PrestaShop Addons Marketplace + Marketplace PrestaShop Addons + Line: 140 + + + Discover more modules to improve your shop on + Descubra más módulos para mejorar su tienda en + Line: 138 + + + + + + + Oh no.. something went wrong + Oh no... algo salió mal + Line: 5 + + + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + Ha habido un problema por nuestro lado. Actualice su página y si el problema persiste, inténtelo de nuevo más tarde. + Line: 8 + + + Refresh page + Actualizar la página + Line: 13 diff --git a/translations/es-ES/ModulesMboLinks.es-ES.xlf b/translations/es-ES/ModulesMboLinks.es-ES.xlf index 932b76e9d..dfe8f36d9 100644 --- a/translations/es-ES/ModulesMboLinks.es-ES.xlf +++ b/translations/es-ES/ModulesMboLinks.es-ES.xlf @@ -14,4 +14,23 @@ + + + + + + Line: 125 + + + + + Line: 132 + + + + + Line: 139 + + + diff --git a/translations/es-ES/ModulesMboModulescatalog.es-ES.xlf b/translations/es-ES/ModulesMboModulescatalog.es-ES.xlf index 3101122a4..143f0cef3 100644 --- a/translations/es-ES/ModulesMboModulescatalog.es-ES.xlf +++ b/translations/es-ES/ModulesMboModulescatalog.es-ES.xlf @@ -2,11 +2,6 @@ - - Upload a module - Subir un módulo - Line: 96 - Synchronized with Addons marketplace! ¡Sincronizado con Addons marketplace! @@ -51,8 +46,27 @@ - + + + + Discover + Descubrir + Line: 31 + + + Toggle Dropdown + Interruptor desplegable + Line: 47 + + + + + + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Vincular tu tienda a su tuenta Addons para recibir automáticamente actualizaciones importantes de los módulos que compraste. ¿Aún no tienes una cuenta? + Line: 42 + Sign up now Registrarse ahora @@ -65,4 +79,71 @@ + + + + Upload a module + Subir un módulo + Line: 24 + + + Drop your module archive here or [1]select file[/1] + Arrastra el archivo del módulo aquí o [1]selecciona el archivo[/1] + Line: 45 + + + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Por favor, sube solamente un archivo al mismo tiempo, en formato .zip o tarball (.tar, .tar.gz or .tgz). + Line: 48 + + + Your module will be installed right after that. + El módulo será instalado a continuación. + Line: 49 + + + Installing module... + Instalando módulo... + Line: 55 + + + It will close as soon as the module is installed. It won't be long! + Se cerrará en cuanto se instale el módulo. ¡No falta mucho! + Line: 57 + + + Module installed! + ¡Módulo instalado! + Line: 62 + + + Oops... Upload failed. + Uy... La subida ha fallado. + Line: 68 + + + What happened? + ¿Que ocurrió? + Line: 69 + + + + + + + Read More + Leer más + Line: 24 + + + + + + + Discover the best-selling modules of this category in the %link% page. + Descubre los módulos más vendidos de esta categoría en la página %link%. + Line: 19 + + + diff --git a/translations/es-ES/ModulesMboPsmbo.es-ES.xlf b/translations/es-ES/ModulesMboPsmbo.es-ES.xlf deleted file mode 100644 index 4091e07c3..000000000 --- a/translations/es-ES/ModulesMboPsmbo.es-ES.xlf +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - Para obtener mayor seguridad en los formularios de tu sitio web, consulta nuestra categoría de módulos de Seguridad y Acceso en - Line: 124 - - - - - Line: 125 - - - PrestaShop Addons Marketplace - Marketplace PrestaShop Addons - Line: 140 - - - Discover more modules to improve your shop on - Descubra más módulos para mejorar su tienda en - Line: 138 - - - - - Line: 132 - - - - - Line: 139 - - - - diff --git a/translations/es-ES/ModulesMboSearch.es-ES.xlf b/translations/es-ES/ModulesMboSearch.es-ES.xlf index 6aed52e8d..37745bea6 100644 --- a/translations/es-ES/ModulesMboSearch.es-ES.xlf +++ b/translations/es-ES/ModulesMboSearch.es-ES.xlf @@ -5,12 +5,12 @@ Search addons.prestashop.com Buscar addons.prestashop.com - Line: 51 + Line: 58 Go to Addons Ir a Addons - Line: 52 + Line: 59 diff --git a/translations/es-ES/index.php b/translations/es-ES/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/translations/es-ES/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/fr-FR/ModulesMboAddons.fr-FR.xlf b/translations/fr-FR/ModulesMboAddons.fr-FR.xlf index 9f369e2c3..731170483 100644 --- a/translations/fr-FR/ModulesMboAddons.fr-FR.xlf +++ b/translations/fr-FR/ModulesMboAddons.fr-FR.xlf @@ -1,16 +1,12 @@ - + Connect to Addons marketplace Se connecter à la marketplace Addons - Line: 127 + Line: 24 - - - - Confirm logout Confirmer la déconnexion diff --git a/translations/fr-FR/ModulesMboErrors.fr-FR.xlf b/translations/fr-FR/ModulesMboErrors.fr-FR.xlf index 88c5f0711..0a595a1bb 100644 --- a/translations/fr-FR/ModulesMboErrors.fr-FR.xlf +++ b/translations/fr-FR/ModulesMboErrors.fr-FR.xlf @@ -9,7 +9,7 @@ - + It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration. diff --git a/translations/fr-FR/ModulesMboGlobal.fr-FR.xlf b/translations/fr-FR/ModulesMboGlobal.fr-FR.xlf index 47fcd486d..910d0a5d7 100644 --- a/translations/fr-FR/ModulesMboGlobal.fr-FR.xlf +++ b/translations/fr-FR/ModulesMboGlobal.fr-FR.xlf @@ -5,12 +5,50 @@ PrestaShop Marketplace in your Back Office La place de marché PrestaShop dans votre back-office - Line: 116 + Line: 119 Browse the Addons marketplace directly from your back office to better meet your needs. Consultez la place de marché PrestaShop directement depuis votre back-office pour mieux répondre à vos besoins. - Line: 117 + Line: 120 + + + + + + + + + Line: 124 + + + PrestaShop Addons Marketplace + La place de marché PrestaShop + Line: 140 + + + Discover more modules to improve your shop on + Découvrez d'autres modules pour améliorer votre boutique sur + Line: 138 + + + + + + + Oh no.. something went wrong + Oh non... Quelque chose s'est mal passé + Line: 5 + + + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + Il y a eu un problème de notre côté. Actualisez votre page et si le problème persiste, réessayez plus tard. + Line: 8 + + + Refresh page + Rafraîchir la page + Line: 13 diff --git a/translations/fr-FR/ModulesMboLinks.fr-FR.xlf b/translations/fr-FR/ModulesMboLinks.fr-FR.xlf index 9ffb98bed..c62e790f3 100644 --- a/translations/fr-FR/ModulesMboLinks.fr-FR.xlf +++ b/translations/fr-FR/ModulesMboLinks.fr-FR.xlf @@ -5,12 +5,31 @@ https://accounts.distribution.prestashop.net/en/sign-up https://accounts.distribution.prestashop.net/fr/sign-up - Line: 139 + Line: 123 https://auth.prestashop.com/en/password/request https://auth.prestashop.com/fr/mot-de-passe/demande-de-reinitialisation - Line: 146 + Line: 130 + + + + + + + + + Line: 125 + + + + + Line: 132 + + + + + Line: 139 diff --git a/translations/fr-FR/ModulesMboModulescatalog.fr-FR.xlf b/translations/fr-FR/ModulesMboModulescatalog.fr-FR.xlf index dd27115e0..d67800309 100644 --- a/translations/fr-FR/ModulesMboModulescatalog.fr-FR.xlf +++ b/translations/fr-FR/ModulesMboModulescatalog.fr-FR.xlf @@ -2,11 +2,6 @@ - - Upload a module - Installer un module - Line: 96 - Synchronized with Addons marketplace! Synchronisé avec PrestaShop Addons ! @@ -51,8 +46,27 @@ - + + + + Discover + Découvrir + Line: 31 + + + Toggle Dropdown + Ouvrir/fermer la liste déroulante + Line: 47 + + + + + + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Liez votre boutique à votre compte Addons : vos modules achetés seront automatiquement importés. Vous n'avez pas encore de compte ? + Line: 42 + Sign up now Inscrivez-vous @@ -65,4 +79,71 @@ + + + + Upload a module + Installer un module + Line: 24 + + + Drop your module archive here or [1]select file[/1] + Glissez l'archive de votre module ici ou [1]sélectionnez un fichier[/1] + Line: 45 + + + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Vous pouvez charger un fichier à la fois, au format .zip ou tarball (.tar, .tar.gz or .tgz). + Line: 48 + + + Your module will be installed right after that. + Votre module sera installé juste après. + Line: 49 + + + Installing module... + Installation du module... + Line: 55 + + + It will close as soon as the module is installed. It won't be long! + La fenêtre disparaitra dès que le module sera installé, dans un instant ! + Line: 57 + + + Module installed! + Module installé ! + Line: 62 + + + Oops... Upload failed. + Aïe... le chargement a échoué. + Line: 68 + + + What happened? + Que s'est-il passé ? + Line: 69 + + + + + + + Read More + En savoir plus + Line: 24 + + + + + + + Discover the best-selling modules of this category in the %link% page. + Découvrir les meilleurs ventes de modules de cette catégorie sur la page %link%. + Line: 19 + + + diff --git a/translations/fr-FR/ModulesMboPsmbo.fr-FR.xlf b/translations/fr-FR/ModulesMboPsmbo.fr-FR.xlf deleted file mode 100644 index c164bd0da..000000000 --- a/translations/fr-FR/ModulesMboPsmbo.fr-FR.xlf +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - Line: 124 - - - - - Line: 125 - - - PrestaShop Addons Marketplace - PrestaShop Addons Marketplace - Line: 140 - - - Discover more modules to improve your shop on - Découvrez d'autres modules pour améliorer votre boutique sur - Line: 138 - - - - - Line: 132 - - - - - Line: 139 - - - - diff --git a/translations/fr-FR/ModulesMboSearch.fr-FR.xlf b/translations/fr-FR/ModulesMboSearch.fr-FR.xlf index a4f973c63..689e685d6 100644 --- a/translations/fr-FR/ModulesMboSearch.fr-FR.xlf +++ b/translations/fr-FR/ModulesMboSearch.fr-FR.xlf @@ -5,12 +5,12 @@ Search addons.prestashop.com Rechercher sur addons.prestashop.com - Line: 51 + Line: 58 Go to Addons Rendez-vous sur Addons - Line: 52 + Line: 59 diff --git a/translations/fr-FR/index.php b/translations/fr-FR/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/translations/fr-FR/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/index.php b/translations/index.php new file mode 100644 index 000000000..3c82fdf67 --- /dev/null +++ b/translations/index.php @@ -0,0 +1,29 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/it-IT/ModulesMboAddons.it-IT.xlf b/translations/it-IT/ModulesMboAddons.it-IT.xlf index dc17ded3e..76c64b0ba 100644 --- a/translations/it-IT/ModulesMboAddons.it-IT.xlf +++ b/translations/it-IT/ModulesMboAddons.it-IT.xlf @@ -1,16 +1,12 @@ - + Connect to Addons marketplace Collegati al Marketplace degli Addon - Line: 127 + Line: 24 - - - - Confirm logout Conferma Logout diff --git a/translations/it-IT/ModulesMboErrors.it-IT.xlf b/translations/it-IT/ModulesMboErrors.it-IT.xlf index ac25604fa..70d2a85ee 100644 --- a/translations/it-IT/ModulesMboErrors.it-IT.xlf +++ b/translations/it-IT/ModulesMboErrors.it-IT.xlf @@ -9,7 +9,7 @@ - + It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration. diff --git a/translations/it-IT/ModulesMboGlobal.it-IT.xlf b/translations/it-IT/ModulesMboGlobal.it-IT.xlf index 0c89dd07f..fe3266860 100644 --- a/translations/it-IT/ModulesMboGlobal.it-IT.xlf +++ b/translations/it-IT/ModulesMboGlobal.it-IT.xlf @@ -5,12 +5,50 @@ PrestaShop Marketplace in your Back Office Il mercato PrestaShop nel tuo back office - Line: 116 + Line: 119 Browse the Addons marketplace directly from your back office to better meet your needs. Consulta il marketplace PrestaShop direttamente dal tuo back-office per soddisfare al meglio le tue esigenze. - Line: 117 + Line: 120 + + + + + + + + Per una sicurezza ancora maggiore sui moduli del tuo sito Web, consulta la nostra categoria Sicurezza e Accesso ai moduli su + Line: 124 + + + PrestaShop Addons Marketplace + Marketplace di PrestaShop Addons + Line: 140 + + + Discover more modules to improve your shop on + Scopri altri moduli per migliorare il tuo negozio su + Line: 138 + + + + + + + Oh no.. something went wrong + Oh no... qualcosa è andato storto + Line: 5 + + + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + C'è stato un problema da parte nostra. Aggiorna la tua pagina e se il problema persiste, riprova più tardi. + Line: 8 + + + Refresh page + Aggiorna la pagina + Line: 13 diff --git a/translations/it-IT/ModulesMboLinks.it-IT.xlf b/translations/it-IT/ModulesMboLinks.it-IT.xlf index 520c993d8..d8e9cacad 100644 --- a/translations/it-IT/ModulesMboLinks.it-IT.xlf +++ b/translations/it-IT/ModulesMboLinks.it-IT.xlf @@ -14,4 +14,23 @@ + + + + + + Line: 125 + + + + + Line: 132 + + + + + Line: 139 + + + diff --git a/translations/it-IT/ModulesMboModulescatalog.it-IT.xlf b/translations/it-IT/ModulesMboModulescatalog.it-IT.xlf index c7791ddd5..59bb7ed5e 100644 --- a/translations/it-IT/ModulesMboModulescatalog.it-IT.xlf +++ b/translations/it-IT/ModulesMboModulescatalog.it-IT.xlf @@ -2,11 +2,6 @@ - - Upload a module - Carica il modulo - Line: 96 - Synchronized with Addons marketplace! Sincronizzato con il marketplace degli addons! @@ -51,8 +46,27 @@ - + + + + Discover + Scopri + Line: 31 + + + Toggle Dropdown + Menù a discesa + Line: 47 + + + + + + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Collega il tuo negozio al tuo account Addons per ricevere automaticamente importanti aggiornamenti per i moduli da te acquistati. Non hai ancora un account? + Line: 42 + Sign up now Registrati ora @@ -65,4 +79,71 @@ + + + + Upload a module + Carica il modulo + Line: 24 + + + Drop your module archive here or [1]select file[/1] + Trascina qui il tuo archivio del modulo o [1]seleziona un file[/1] + Line: 45 + + + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Si prega di caricare un file alla volta, .zip o in formato tarball (.tar, .tar.gz o .tgz). + Line: 48 + + + Your module will be installed right after that. + Il tuo modulo verrà installato proprio dopo di questo. + Line: 49 + + + Installing module... + Installazione modulo... + Line: 55 + + + It will close as soon as the module is installed. It won't be long! + Si chiuderà appena il modulo sarà installato. Tra non molto! + Line: 57 + + + Module installed! + Modulo installato! + Line: 62 + + + Oops... Upload failed. + Ooops... Caricamento fallito. + Line: 68 + + + What happened? + Cos'è accaduto? + Line: 69 + + + + + + + Read More + Per saperne di più + Line: 24 + + + + + + + Discover the best-selling modules of this category in the %link% page. + Scopri i moduli più venduti per questa categoria nella pagina %link%. + Line: 19 + + + diff --git a/translations/it-IT/ModulesMboPsmbo.it-IT.xlf b/translations/it-IT/ModulesMboPsmbo.it-IT.xlf deleted file mode 100644 index 189001626..000000000 --- a/translations/it-IT/ModulesMboPsmbo.it-IT.xlf +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - Per una sicurezza ancora maggiore sui moduli del tuo sito Web, consulta la nostra categoria Sicurezza e Accesso ai moduli su - Line: 124 - - - - - Line: 125 - - - PrestaShop Addons Marketplace - Marketplace di PrestaShop Addons - Line: 140 - - - Discover more modules to improve your shop on - Scopri altri moduli per migliorare il tuo negozio su - Line: 138 - - - - - Line: 132 - - - - - Line: 139 - - - - diff --git a/translations/it-IT/ModulesMboSearch.it-IT.xlf b/translations/it-IT/ModulesMboSearch.it-IT.xlf index 22e807fe1..ae224a0b6 100644 --- a/translations/it-IT/ModulesMboSearch.it-IT.xlf +++ b/translations/it-IT/ModulesMboSearch.it-IT.xlf @@ -5,12 +5,12 @@ Search addons.prestashop.com Cerca addons.prestashop.com - Line: 51 + Line: 58 Go to Addons Vai agli Addon - Line: 52 + Line: 59 diff --git a/translations/it-IT/index.php b/translations/it-IT/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/translations/it-IT/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/nl-NL/ModulesMboAddons.nl-NL.xlf b/translations/nl-NL/ModulesMboAddons.nl-NL.xlf index 690232a63..c73bc7c53 100644 --- a/translations/nl-NL/ModulesMboAddons.nl-NL.xlf +++ b/translations/nl-NL/ModulesMboAddons.nl-NL.xlf @@ -1,16 +1,12 @@ - + Connect to Addons marketplace Maak verbinding met Addons - Line: 127 + Line: 24 - - - - Confirm logout Bevestig uitloggen diff --git a/translations/nl-NL/ModulesMboErrors.nl-NL.xlf b/translations/nl-NL/ModulesMboErrors.nl-NL.xlf index 0c01e5c05..274f89899 100644 --- a/translations/nl-NL/ModulesMboErrors.nl-NL.xlf +++ b/translations/nl-NL/ModulesMboErrors.nl-NL.xlf @@ -9,7 +9,7 @@ - + It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration. diff --git a/translations/nl-NL/ModulesMboGlobal.nl-NL.xlf b/translations/nl-NL/ModulesMboGlobal.nl-NL.xlf index 63718bd0d..30faeb0c9 100644 --- a/translations/nl-NL/ModulesMboGlobal.nl-NL.xlf +++ b/translations/nl-NL/ModulesMboGlobal.nl-NL.xlf @@ -5,12 +5,50 @@ PrestaShop Marketplace in your Back Office PrestaShop Marktplaats in uw Back Office - Line: 116 + Line: 119 Browse the Addons marketplace directly from your back office to better meet your needs. Raadpleeg de PrestaShop-marktplaats rechtstreeks vanuit uw back-office om zo goed mogelijk aan uw behoeften te voldoen. - Line: 117 + Line: 120 + + + + + + + + Voor een nog betere beveiliging op uw contact formulieren, bekijken onze beveiliging en toegangs modules categorie via de + Line: 124 + + + PrestaShop Addons Marketplace + PrestaShop Addons Marketplace + Line: 140 + + + Discover more modules to improve your shop on + Ontdek meer modules om uw winkel te verbeteren op + Line: 138 + + + + + + + Oh no.. something went wrong + Oh nee... er is iets misgegaan + Line: 5 + + + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + Er was een probleem aan onze kant. Vernieuw uw pagina en als het probleem zich blijft voordoen, probeer het later opnieuw. + Line: 8 + + + Refresh page + Vernieuw pagina + Line: 13 diff --git a/translations/nl-NL/ModulesMboLinks.nl-NL.xlf b/translations/nl-NL/ModulesMboLinks.nl-NL.xlf index e51830299..028577ed9 100644 --- a/translations/nl-NL/ModulesMboLinks.nl-NL.xlf +++ b/translations/nl-NL/ModulesMboLinks.nl-NL.xlf @@ -14,4 +14,23 @@ + + + + + + Line: 125 + + + + + Line: 132 + + + + + Line: 139 + + + diff --git a/translations/nl-NL/ModulesMboModulescatalog.nl-NL.xlf b/translations/nl-NL/ModulesMboModulescatalog.nl-NL.xlf index a15f9a6c2..fc88447eb 100644 --- a/translations/nl-NL/ModulesMboModulescatalog.nl-NL.xlf +++ b/translations/nl-NL/ModulesMboModulescatalog.nl-NL.xlf @@ -2,11 +2,6 @@ - - Upload a module - Upload een module - Line: 96 - Synchronized with Addons marketplace! Gesynchroniseerd met Addons! @@ -51,8 +46,27 @@ - + + + + Discover + Ontdek + Line: 31 + + + Toggle Dropdown + Menu in-/uitklappen + Line: 47 + + + + + + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Koppel uw winkel aan uw Addons-account om automatisch belangrijke updates te ontvangen voor de modules die u hebt gekocht. Hebt u nog geen account? + Line: 42 + Sign up now Nu aanmelden @@ -65,4 +79,71 @@ + + + + Upload a module + Upload een module + Line: 24 + + + Drop your module archive here or [1]select file[/1] + Sleep uw modulebestand hier naartoe of [1]selecteer bestand[/1] + Line: 45 + + + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Upload slechts 1 bestand per keer, .zip- of tarball-formaat (.tar, .tar.gz of .tgz). + Line: 48 + + + Your module will be installed right after that. + Uw module wordt daarna gelijk geïnstalleerd. + Line: 49 + + + Installing module... + Module installeren... + Line: 55 + + + It will close as soon as the module is installed. It won't be long! + Het wordt gesloten zodra de module is geïnstalleerd. Het zal niet lang duren! + Line: 57 + + + Module installed! + Module geïnstalleerd! + Line: 62 + + + Oops... Upload failed. + Oeps... uploaden niet gelukt. + Line: 68 + + + What happened? + Wat is er gebeurd? + Line: 69 + + + + + + + Read More + Lees meer + Line: 24 + + + + + + + Discover the best-selling modules of this category in the %link% page. + Ontdek de bestverkopende modules van deze categorie op de %link% pagina. + Line: 19 + + + diff --git a/translations/nl-NL/ModulesMboPsmbo.nl-NL.xlf b/translations/nl-NL/ModulesMboPsmbo.nl-NL.xlf deleted file mode 100644 index ffbfb65c1..000000000 --- a/translations/nl-NL/ModulesMboPsmbo.nl-NL.xlf +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - Voor een nog betere beveiliging op uw contact formulieren, bekijken onze beveiliging en toegangs modules categorie via de - Line: 124 - - - - - Line: 125 - - - PrestaShop Addons Marketplace - PrestaShop Addons Marketplace - Line: 140 - - - Discover more modules to improve your shop on - Ontdek meer modules om uw winkel te verbeteren op - Line: 138 - - - - - Line: 132 - - - - - Line: 139 - - - - diff --git a/translations/nl-NL/ModulesMboSearch.nl-NL.xlf b/translations/nl-NL/ModulesMboSearch.nl-NL.xlf index 3db04f41e..96b6a1141 100644 --- a/translations/nl-NL/ModulesMboSearch.nl-NL.xlf +++ b/translations/nl-NL/ModulesMboSearch.nl-NL.xlf @@ -5,12 +5,12 @@ Search addons.prestashop.com Doorzoek addons.prestashop.com - Line: 51 + Line: 58 Go to Addons Ga naar Addons - Line: 52 + Line: 59 diff --git a/translations/nl-NL/index.php b/translations/nl-NL/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/translations/nl-NL/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/pl-PL/ModulesMboAddons.pl-PL.xlf b/translations/pl-PL/ModulesMboAddons.pl-PL.xlf index 6d5354da4..6c80185e3 100644 --- a/translations/pl-PL/ModulesMboAddons.pl-PL.xlf +++ b/translations/pl-PL/ModulesMboAddons.pl-PL.xlf @@ -1,16 +1,12 @@ - + Connect to Addons marketplace Połącz z Addons marketplace - Line: 127 + Line: 24 - - - - Confirm logout Potwierdź wylogowanie diff --git a/translations/pl-PL/ModulesMboErrors.pl-PL.xlf b/translations/pl-PL/ModulesMboErrors.pl-PL.xlf index fefd53672..47812ca9b 100644 --- a/translations/pl-PL/ModulesMboErrors.pl-PL.xlf +++ b/translations/pl-PL/ModulesMboErrors.pl-PL.xlf @@ -9,7 +9,7 @@ - + It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration. diff --git a/translations/pl-PL/ModulesMboGlobal.pl-PL.xlf b/translations/pl-PL/ModulesMboGlobal.pl-PL.xlf index 3b76cc78e..9a0d151bb 100644 --- a/translations/pl-PL/ModulesMboGlobal.pl-PL.xlf +++ b/translations/pl-PL/ModulesMboGlobal.pl-PL.xlf @@ -5,12 +5,50 @@ PrestaShop Marketplace in your Back Office PrestaShop Marketplace w Twoim Back Office - Line: 116 + Line: 119 Browse the Addons marketplace directly from your back office to better meet your needs. Skonsultuj się z rynkiem PrestaShop bezpośrednio ze swojego back-office, aby jak najlepiej dostosować się do Twoich potrzeb. - Line: 117 + Line: 120 + + + + + + + + + Line: 124 + + + PrestaShop Addons Marketplace + PrestaShop Addons Marketplace + Line: 140 + + + Discover more modules to improve your shop on + Odkryj więcej modułów usprawniających Twój sklep na + Line: 138 + + + + + + + Oh no.. something went wrong + O nie... coś poszło nie tak + Line: 5 + + + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + Po naszej stronie wystąpił problem. Odśwież stronę, a jeśli problem będzie się powtarzał, spróbuj ponownie później. + Line: 8 + + + Refresh page + Odśwież stronę + Line: 13 diff --git a/translations/pl-PL/ModulesMboLinks.pl-PL.xlf b/translations/pl-PL/ModulesMboLinks.pl-PL.xlf index 2afe8a9c1..c00ef4982 100644 --- a/translations/pl-PL/ModulesMboLinks.pl-PL.xlf +++ b/translations/pl-PL/ModulesMboLinks.pl-PL.xlf @@ -14,4 +14,23 @@ + + + + + + Line: 125 + + + + + Line: 132 + + + + + Line: 139 + + + diff --git a/translations/pl-PL/ModulesMboModulescatalog.pl-PL.xlf b/translations/pl-PL/ModulesMboModulescatalog.pl-PL.xlf index c5584e4b4..05314002f 100644 --- a/translations/pl-PL/ModulesMboModulescatalog.pl-PL.xlf +++ b/translations/pl-PL/ModulesMboModulescatalog.pl-PL.xlf @@ -2,11 +2,6 @@ - - Upload a module - Załaduj moduł - Line: 96 - Synchronized with Addons marketplace! Zsynchronizowane z Addons marketplace! @@ -51,8 +46,27 @@ - + + + + Discover + Odkryj + Line: 31 + + + Toggle Dropdown + Rozwiń menu + Line: 47 + + + + + + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Połącz swój sklep z kontem Addons, aby automatycznie otrzymywać ważne aktualizacje do zakupionych modułów. Nie masz jeszcze konta? + Line: 42 + Sign up now Zarejestruj się teraz @@ -65,4 +79,71 @@ + + + + Upload a module + Załaduj moduł + Line: 24 + + + Drop your module archive here or [1]select file[/1] + Upuść archiwum modułu tutaj lub [1]wybierz plik[/1] + Line: 45 + + + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Proszę przesłać jeden plik na raz, .zip lub archiwum w formacie (.tar, .tar.gz lub .tgz). + Line: 48 + + + Your module will be installed right after that. + Twój moduł zostanie zainstalowany tuż po tym. + Line: 49 + + + Installing module... + Instalowanie modułu... + Line: 55 + + + It will close as soon as the module is installed. It won't be long! + Zostanie zamknięty natychmiast po zainstalowaniu modułu. To nie potrwa długo! + Line: 57 + + + Module installed! + Moduł zainstalowany! + Line: 62 + + + Oops... Upload failed. + Ups... Przesyłanie nie powiodło się. + Line: 68 + + + What happened? + Co się stało? + Line: 69 + + + + + + + Read More + Czytaj więcej + Line: 24 + + + + + + + Discover the best-selling modules of this category in the %link% page. + Zobacz najlepiej sprzedające się moduły tej kategorii na stronie %link%. + Line: 19 + + + diff --git a/translations/pl-PL/ModulesMboPsmbo.pl-PL.xlf b/translations/pl-PL/ModulesMboPsmbo.pl-PL.xlf deleted file mode 100644 index 4d56321d5..000000000 --- a/translations/pl-PL/ModulesMboPsmbo.pl-PL.xlf +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - Line: 124 - - - - - Line: 125 - - - PrestaShop Addons Marketplace - PrestaShop Addons Marketplace - Line: 140 - - - Discover more modules to improve your shop on - Odkryj więcej modułów usprawniających Twój sklep na - Line: 138 - - - - - Line: 132 - - - - - Line: 139 - - - - diff --git a/translations/pl-PL/ModulesMboSearch.pl-PL.xlf b/translations/pl-PL/ModulesMboSearch.pl-PL.xlf index fb5e410db..ccc336433 100644 --- a/translations/pl-PL/ModulesMboSearch.pl-PL.xlf +++ b/translations/pl-PL/ModulesMboSearch.pl-PL.xlf @@ -5,12 +5,12 @@ Search addons.prestashop.com Szukaj addons.prestashop.com - Line: 51 + Line: 58 Go to Addons Idź do Addons - Line: 52 + Line: 59 diff --git a/translations/pl-PL/index.php b/translations/pl-PL/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/translations/pl-PL/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/pt-PT/ModulesMboAddons.pt-PT.xlf b/translations/pt-PT/ModulesMboAddons.pt-PT.xlf index 5402edc41..75e7aa06f 100644 --- a/translations/pt-PT/ModulesMboAddons.pt-PT.xlf +++ b/translations/pt-PT/ModulesMboAddons.pt-PT.xlf @@ -1,16 +1,12 @@ - + Connect to Addons marketplace Ligar com o Addons Marketplace - Line: 127 + Line: 24 - - - - Confirm logout Confirmar encerramento de sessão diff --git a/translations/pt-PT/ModulesMboErrors.pt-PT.xlf b/translations/pt-PT/ModulesMboErrors.pt-PT.xlf index 6129e7b2a..1b28f0c87 100644 --- a/translations/pt-PT/ModulesMboErrors.pt-PT.xlf +++ b/translations/pt-PT/ModulesMboErrors.pt-PT.xlf @@ -9,7 +9,7 @@ - + It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration. diff --git a/translations/pt-PT/ModulesMboGlobal.pt-PT.xlf b/translations/pt-PT/ModulesMboGlobal.pt-PT.xlf index 59ae5316e..909661a73 100644 --- a/translations/pt-PT/ModulesMboGlobal.pt-PT.xlf +++ b/translations/pt-PT/ModulesMboGlobal.pt-PT.xlf @@ -5,12 +5,50 @@ PrestaShop Marketplace in your Back Office PrestaShop Marketplace no seu Back Office - Line: 116 + Line: 119 Browse the Addons marketplace directly from your back office to better meet your needs. Consulta o mercado PrestaShop directamente do seu back-office para melhor se adequar às suas necessidades. - Line: 117 + Line: 120 + + + + + + + + + Line: 124 + + + PrestaShop Addons Marketplace + Mercado de extensões do Prestashop + Line: 140 + + + Discover more modules to improve your shop on + Descubra mais módulos para melhorar a sua loja em + Line: 138 + + + + + + + Oh no.. something went wrong + Oh não... algo correu mal + Line: 5 + + + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + Houve um problema em nosso lado. Atualize sua página e, se o problema persistir, tente novamente mais tarde. + Line: 8 + + + Refresh page + Atualizar página + Line: 13 diff --git a/translations/pt-PT/ModulesMboLinks.pt-PT.xlf b/translations/pt-PT/ModulesMboLinks.pt-PT.xlf index 7e8c5b6ac..fcf48ecd5 100644 --- a/translations/pt-PT/ModulesMboLinks.pt-PT.xlf +++ b/translations/pt-PT/ModulesMboLinks.pt-PT.xlf @@ -14,4 +14,23 @@ + + + + + + Line: 125 + + + + + Line: 132 + + + + + Line: 139 + + + diff --git a/translations/pt-PT/ModulesMboModulescatalog.pt-PT.xlf b/translations/pt-PT/ModulesMboModulescatalog.pt-PT.xlf index 1a61c5816..d3b2feae6 100644 --- a/translations/pt-PT/ModulesMboModulescatalog.pt-PT.xlf +++ b/translations/pt-PT/ModulesMboModulescatalog.pt-PT.xlf @@ -2,11 +2,6 @@ - - Upload a module - Enviar um módulo - Line: 96 - Synchronized with Addons marketplace! Sincronizado com o Addons Marketplace! @@ -51,8 +46,27 @@ - + + + + Discover + Descobrir + Line: 31 + + + Toggle Dropdown + Alternar o menu pendente + Line: 47 + + + + + + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Ligue a sua loja à sua conta Addons para receber automaticamente atualizações importantes para os módulos que adquiriu. Ainda não tem uma conta? + Line: 42 + Sign up now Registar-se agora @@ -65,4 +79,71 @@ + + + + Upload a module + Enviar um módulo + Line: 24 + + + Drop your module archive here or [1]select file[/1] + Arraste o arquivo do seu módulo para aqui ou [1]selecione um ficheiro[/1] + Line: 45 + + + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Carregue um ficheiro de cada vez, formato .zip ou tarball (.tar, .tar.gz ou .tgz). + Line: 48 + + + Your module will be installed right after that. + O seu módulo será instalado logo depois. + Line: 49 + + + Installing module... + A instalar módulo... + Line: 55 + + + It will close as soon as the module is installed. It won't be long! + Fechar-se-á assim que o módulo seja instalado. Falta pouco! + Line: 57 + + + Module installed! + Módulo instalado! + Line: 62 + + + Oops... Upload failed. + Oops... a atualização falhou. + Line: 68 + + + What happened? + O que aconteceu? + Line: 69 + + + + + + + Read More + Obter mais informações + Line: 24 + + + + + + + Discover the best-selling modules of this category in the %link% page. + Descubra os módulos mais vendidos desta categoria na página %link%. + Line: 19 + + + diff --git a/translations/pt-PT/ModulesMboPsmbo.pt-PT.xlf b/translations/pt-PT/ModulesMboPsmbo.pt-PT.xlf deleted file mode 100644 index 1024a0e15..000000000 --- a/translations/pt-PT/ModulesMboPsmbo.pt-PT.xlf +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - Line: 124 - - - - - Line: 125 - - - PrestaShop Addons Marketplace - Mercado de extensões do Prestashop - Line: 140 - - - Discover more modules to improve your shop on - Descubra mais módulos para melhorar a sua loja em - Line: 138 - - - - - Line: 132 - - - - - Line: 139 - - - - diff --git a/translations/pt-PT/ModulesMboSearch.pt-PT.xlf b/translations/pt-PT/ModulesMboSearch.pt-PT.xlf index 7cbff4e27..ace59d8b2 100644 --- a/translations/pt-PT/ModulesMboSearch.pt-PT.xlf +++ b/translations/pt-PT/ModulesMboSearch.pt-PT.xlf @@ -5,12 +5,12 @@ Search addons.prestashop.com Pesquisar em addons.prestashop.com - Line: 51 + Line: 58 Go to Addons Ver os «Addons» - Line: 52 + Line: 59 diff --git a/translations/pt-PT/index.php b/translations/pt-PT/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/translations/pt-PT/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/translations/ru-RU/ModulesMboAddons.ru-RU.xlf b/translations/ru-RU/ModulesMboAddons.ru-RU.xlf index e9babb5db..2c88df8a8 100644 --- a/translations/ru-RU/ModulesMboAddons.ru-RU.xlf +++ b/translations/ru-RU/ModulesMboAddons.ru-RU.xlf @@ -1,16 +1,12 @@ - + Connect to Addons marketplace Подключиться к магазину расширений - Line: 127 + Line: 24 - - - - Confirm logout Подтвердить выход diff --git a/translations/ru-RU/ModulesMboErrors.ru-RU.xlf b/translations/ru-RU/ModulesMboErrors.ru-RU.xlf index 61feca730..80bb986d4 100644 --- a/translations/ru-RU/ModulesMboErrors.ru-RU.xlf +++ b/translations/ru-RU/ModulesMboErrors.ru-RU.xlf @@ -9,7 +9,7 @@ - + It looks like we have trouble connecting to Addons. Please refresh the page or check your firewall configuration. diff --git a/translations/ru-RU/ModulesMboGlobal.ru-RU.xlf b/translations/ru-RU/ModulesMboGlobal.ru-RU.xlf index 7150d3a88..ee4c11d3c 100644 --- a/translations/ru-RU/ModulesMboGlobal.ru-RU.xlf +++ b/translations/ru-RU/ModulesMboGlobal.ru-RU.xlf @@ -5,12 +5,50 @@ PrestaShop Marketplace in your Back Office Торговая площадка PrestaShop в вашем бэк-офисе - Line: 116 + Line: 119 Browse the Addons marketplace directly from your back office to better meet your needs. Просматривайте торговую площадку PrestaShop прямо из своего бэк-офиса, чтобы наилучшим образом удовлетворить свои потребности. - Line: 117 + Line: 120 + + + + + + + + + Line: 124 + + + PrestaShop Addons Marketplace + Магазин расширений PrestaShop Addons + Line: 140 + + + Discover more modules to improve your shop on + Узнайте больше модулей для улучшения работы вашего магазина на + Line: 138 + + + + + + + Oh no.. something went wrong + О нет! Что-то пошло не так + Line: 5 + + + There has been a problem on our side. Refresh your page and if the problem persists, try again later. + Возникла проблема с нашей стороной. Обновите страницу, и если проблема не устранена, попробуйте позже. + Line: 8 + + + Refresh page + Обновить страницу + Line: 13 diff --git a/translations/ru-RU/ModulesMboLinks.ru-RU.xlf b/translations/ru-RU/ModulesMboLinks.ru-RU.xlf index 65ef87a46..a84a1971d 100644 --- a/translations/ru-RU/ModulesMboLinks.ru-RU.xlf +++ b/translations/ru-RU/ModulesMboLinks.ru-RU.xlf @@ -14,4 +14,23 @@ + + + + + + Line: 125 + + + + + Line: 132 + + + + + Line: 139 + + + diff --git a/translations/ru-RU/ModulesMboModulescatalog.ru-RU.xlf b/translations/ru-RU/ModulesMboModulescatalog.ru-RU.xlf index 7cdb93bd0..ca014c6c5 100644 --- a/translations/ru-RU/ModulesMboModulescatalog.ru-RU.xlf +++ b/translations/ru-RU/ModulesMboModulescatalog.ru-RU.xlf @@ -2,11 +2,6 @@ - - Upload a module - Загрузить модуль - Line: 96 - Synchronized with Addons marketplace! Синхронизировано с магазином Расширений! @@ -51,8 +46,27 @@ - + + + + Discover + Обзор + Line: 31 + + + Toggle Dropdown + Вкл/Выкл выпадающий список + Line: 47 + + + + + + Link your shop to your Addons account to automatically receive important updates for the modules you purchased. Don't have an account yet? + Свяжите ваш магазин с вашей учётной записью магазина расширений, чтобы автоматически получать важные обновления для приобретенных вами модулей. У вас ещё нет учетной записи? + Line: 42 + Sign up now Зарегистрироваться @@ -65,4 +79,71 @@ + + + + Upload a module + Загрузить модуль + Line: 24 + + + Drop your module archive here or [1]select file[/1] + Бросьте архив с модулем здесь или [1]выберите файл[/1] + Line: 45 + + + Please upload one file at a time, .zip or tarball format (.tar, .tar.gz or .tgz). + Пожалуйста, загружайте один файл за раз, в формате .zip или .tar, .tar.gz, .tgz + Line: 48 + + + Your module will be installed right after that. + Сразу после этого ваш модуль будет установлен. + Line: 49 + + + Installing module... + Установка модуля... + Line: 55 + + + It will close as soon as the module is installed. It won't be long! + Будет закрыто как только модуль установится. Это не потребует много времени! + Line: 57 + + + Module installed! + Модуль установлен! + Line: 62 + + + Oops... Upload failed. + Ой... Загрузка прервалась. + Line: 68 + + + What happened? + Что случилось? + Line: 69 + + + + + + + Read More + Подробнее + Line: 24 + + + + + + + Discover the best-selling modules of this category in the %link% page. + Откройте самые продаваемые модули этой категории на странице %link%. + Line: 19 + + + diff --git a/translations/ru-RU/ModulesMboPsmbo.ru-RU.xlf b/translations/ru-RU/ModulesMboPsmbo.ru-RU.xlf deleted file mode 100644 index 83ae75fbb..000000000 --- a/translations/ru-RU/ModulesMboPsmbo.ru-RU.xlf +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - Line: 124 - - - - - Line: 125 - - - PrestaShop Addons Marketplace - Магазин расширений PrestaShop Addons - Line: 140 - - - Discover more modules to improve your shop on - Узнайте больше модулей для улучшения работы вашего магазина на - Line: 138 - - - - - Line: 132 - - - - - Line: 139 - - - - diff --git a/translations/ru-RU/ModulesMboSearch.ru-RU.xlf b/translations/ru-RU/ModulesMboSearch.ru-RU.xlf index 51cecc740..f9dacc6bd 100644 --- a/translations/ru-RU/ModulesMboSearch.ru-RU.xlf +++ b/translations/ru-RU/ModulesMboSearch.ru-RU.xlf @@ -5,12 +5,12 @@ Search addons.prestashop.com Поиск на addons.prestashop.com - Line: 51 + Line: 58 Go to Addons Перейти к дополнениям - Line: 52 + Line: 59 diff --git a/translations/ru-RU/index.php b/translations/ru-RU/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/translations/ru-RU/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/upgrade/upgrade-4.1.0.php b/upgrade/upgrade-4.1.0.php new file mode 100644 index 000000000..c857c9d07 --- /dev/null +++ b/upgrade/upgrade-4.1.0.php @@ -0,0 +1,37 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + +/** + * @param ps_mbo $module + * + * @return bool + */ +function upgrade_module_4_1_0(Module $module): bool +{ + // We migrate Module Selections Tab to MBO + if (false === $module->installTables('mbo_api_config')) { + return false; + } + + $module->updateHooks(); + $module->updateTabs(); + + return true; +} diff --git a/views/css/addons-connect.css b/views/css/addons-connect.css index 096d3a90a..05aa6f4df 100644 --- a/views/css/addons-connect.css +++ b/views/css/addons-connect.css @@ -1,3 +1,21 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ .modal-open { overflow: hidden; display: block; diff --git a/views/css/cdc-error-templating.css b/views/css/cdc-error-templating.css new file mode 100644 index 000000000..dabe87fa8 --- /dev/null +++ b/views/css/cdc-error-templating.css @@ -0,0 +1,87 @@ +.cdc-error-container { + padding-bottom: 1rem; + margin-bottom: 15px; + background: #FFFFFF; + border-radius: 0.5rem; + border-width: 1px; + flex-direction: column; + display: flex; + --tw-border-opacity: 1; + border-color: rgb(200 215 228 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); + --tw-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); + --tw-shadow-colored: 0px 4px 8px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.cdc-error-content { + display: flex; + height: 100%; + width: 100%; + flex-direction: column; + align-items: center; + justify-content: center; + padding-top: 20%; + padding-bottom: 20%; + padding-left: 1rem; + padding-right: 1rem; +} + +.cdc-error-content-wrapper { + justify-content: center; + align-items: center; + flex-direction: column; + max-width: 42rem; + display: flex; + margin-bottom: 2rem; +} + +.cdc-error-title { + font-family: Inter, Helvetica, Verdana, sans-serif; + font-size: 1.25rem; + line-height: 1.75rem; + text-align: center; + margin-bottom: 0.5rem; +} + +.cdc-error-message { + font-size: 1rem; + line-height: 1.5rem; + font-family: Roboto, Helvetica, Verdana, sans-serif; + text-align: center; +} + +.cdc-error-button-container { + gap: 1rem; + justify-content: center; + display: flex; +} + +.cdc-error-button { + border-style: none; + --tw-bg-opacity: 1; + background-color: rgb(68 44 199 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + padding-top: 0.75rem; + padding-bottom: 0.75rem; + padding-left: 1rem; + padding-right: 1rem; + font-size: 0.875rem; + line-height: 1rem; + display: inline-flex; + cursor: pointer; + align-items: center; + justify-content: center; + text-align: center; + font-family: Inter, Helvetica, Verdana, sans-serif; + font-weight: 600; + letter-spacing: 1px; + border-radius: 0.25rem; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; + height: 2.5rem; +} diff --git a/views/css/index.php b/views/css/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/views/css/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/views/img/badges/index.php b/views/img/badges/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/views/img/badges/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/views/js/cdc-error-templating.js b/views/js/cdc-error-templating.js new file mode 100644 index 000000000..faf903ada --- /dev/null +++ b/views/js/cdc-error-templating.js @@ -0,0 +1,30 @@ +'use strict'; +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + +const renderCdcError = ((container) => { + if (container.length) { + const url = container.data('error-path') + if (url) { + $.get(url, (data) => { + container.html(data); + }); + } + } +}); diff --git a/views/js/cdc-error.js b/views/js/cdc-error.js new file mode 100644 index 000000000..e6e2e0e81 --- /dev/null +++ b/views/js/cdc-error.js @@ -0,0 +1,29 @@ +'use strict'; +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + +(function() { + window.$(document).ready(function() { + if (typeof renderCdcError !== undefined) { + window.$(document).ready(function() { + renderCdcError($('.cdc-container')); + }); + } + }) +})(); diff --git a/views/templates/admin/controllers/module_catalog/catalog.html.twig b/views/templates/admin/controllers/module_catalog/catalog.html.twig index 3fcdf8f33..54f07a0c6 100644 --- a/views/templates/admin/controllers/module_catalog/catalog.html.twig +++ b/views/templates/admin/controllers/module_catalog/catalog.html.twig @@ -21,16 +21,24 @@ {% block javascripts %} {{ parent() }} {% endblock %} {% block content %} -
+
{% include '@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/includes/modal_import.html.twig' with { 'level' : level, 'errorMessage' : errorMessage } %} {% endblock %} diff --git a/views/templates/admin/controllers/module_catalog/cdc-error.html.twig b/views/templates/admin/controllers/module_catalog/cdc-error.html.twig new file mode 100644 index 000000000..da6cbdc42 --- /dev/null +++ b/views/templates/admin/controllers/module_catalog/cdc-error.html.twig @@ -0,0 +1,17 @@ +
+
+
+

+ {{ 'Oh no.. something went wrong'|trans({}, 'Modules.Mbo.Global') }} +

+

+ {{ 'There has been a problem on our side. Refresh your page and if the problem persists, try again later.'|trans({}, 'Modules.Mbo.Global') }} +

+
+
+ +
+
+
diff --git a/views/templates/admin/controllers/module_catalog/includes/action_menu.html.twig b/views/templates/admin/controllers/module_catalog/includes/action_menu.html.twig index 7769dbf27..870584bd0 100644 --- a/views/templates/admin/controllers/module_catalog/includes/action_menu.html.twig +++ b/views/templates/admin/controllers/module_catalog/includes/action_menu.html.twig @@ -1,21 +1,21 @@ {#** - * Copyright since 2007 PrestaShop SA and Contributors - * PrestaShop is an International Registered Trademark & Property of PrestaShop SA - * - * NOTICE OF LICENSE - * - * This source file is subject to the Academic Free License version 3.0 - * that is bundled with this package in the file LICENSE.md. - * It is also available through the world-wide-web at this URL: - * https://opensource.org/licenses/AFL-3.0 - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@prestashop.com so we can send you a copy immediately. - * - * @author PrestaShop SA and Contributors - * @copyright Since 2007 PrestaShop SA and Contributors - * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 - *#} + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + *#} {% set url, priceRaw, priceDisplay, url_active, urls, name, transDomains = module.attributes.url, module.attributes.price.raw, diff --git a/views/templates/admin/controllers/module_catalog/includes/index.php b/views/templates/admin/controllers/module_catalog/includes/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/views/templates/admin/controllers/module_catalog/includes/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/views/templates/admin/controllers/module_catalog/recommended-modules.html.twig b/views/templates/admin/controllers/module_catalog/recommended-modules.html.twig index 275e5153f..765708531 100644 --- a/views/templates/admin/controllers/module_catalog/recommended-modules.html.twig +++ b/views/templates/admin/controllers/module_catalog/recommended-modules.html.twig @@ -1,3 +1,21 @@ +{#** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + *#} {# ** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA @@ -21,11 +39,19 @@ {% block content %} -
+
{% endblock %} diff --git a/views/templates/admin/controllers/module_catalog/see-more.html.twig b/views/templates/admin/controllers/module_catalog/see-more.html.twig index fd0cc1121..9e9cea012 100644 --- a/views/templates/admin/controllers/module_catalog/see-more.html.twig +++ b/views/templates/admin/controllers/module_catalog/see-more.html.twig @@ -1,3 +1,21 @@ +{#** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + *#} {% if module.attributes.id != "0" %} -
+
diff --git a/views/templates/hook/dashboard-zone-three.tpl b/views/templates/hook/dashboard-zone-three.tpl index a5b74edbb..b121c1896 100644 --- a/views/templates/hook/dashboard-zone-three.tpl +++ b/views/templates/hook/dashboard-zone-three.tpl @@ -18,22 +18,32 @@ *} -
+
-
+
-
\ No newline at end of file +
diff --git a/views/templates/hook/dashboard-zone-two.tpl b/views/templates/hook/dashboard-zone-two.tpl index 0f47cdefb..e2b9102e7 100644 --- a/views/templates/hook/dashboard-zone-two.tpl +++ b/views/templates/hook/dashboard-zone-two.tpl @@ -18,11 +18,19 @@ *} -
+
diff --git a/views/templates/hook/push-configuration.tpl b/views/templates/hook/push-configuration.tpl index 8997ddd20..77b2532ce 100644 --- a/views/templates/hook/push-configuration.tpl +++ b/views/templates/hook/push-configuration.tpl @@ -1,3 +1,21 @@ +{** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + *}
{$catchPhrase} {$linkText}
diff --git a/views/templates/hook/recommended-themes.tpl b/views/templates/hook/recommended-themes.tpl index 6604214c3..dfbe1e681 100644 --- a/views/templates/hook/recommended-themes.tpl +++ b/views/templates/hook/recommended-themes.tpl @@ -1,29 +1,37 @@ {** - * 2007-2020 PrestaShop and Contributors + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * - * This source file is subject to the Academic Free License 3.0 (AFL-3.0) - * that is bundled with this package in the file LICENSE.txt. + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/AFL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * - * @author PrestaShop SA - * @copyright 2007-2020 PrestaShop SA and Contributors - * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) - * International Registered Trademark & Property of PrestaShop SA + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 *} -
+
diff --git a/views/templates/hook/twig/index.php b/views/templates/hook/twig/index.php new file mode 100644 index 000000000..58b8b4731 --- /dev/null +++ b/views/templates/hook/twig/index.php @@ -0,0 +1,30 @@ + + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + */ + + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/views/templates/hook/twig/module_manager_additional_description.html.twig b/views/templates/hook/twig/module_manager_additional_description.html.twig index 180dafbb4..21734d1f2 100644 --- a/views/templates/hook/twig/module_manager_additional_description.html.twig +++ b/views/templates/hook/twig/module_manager_additional_description.html.twig @@ -1,3 +1,21 @@ +{#** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License version 3.0 + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + *#} {% if module.attributes.id != "0" %} + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 + *#} {{ 'Discover the best-selling modules of this category in the %link% page.' | trans({'%link%': ''~categoryName~''}, 'Modules.Mbo.Modulescatalog') | raw }} \ No newline at end of file