diff --git a/.github/workflows/dxw-sec-api.yml b/.github/workflows/dxw-sec-api.yml index 78138d92..19cfad47 100644 --- a/.github/workflows/dxw-sec-api.yml +++ b/.github/workflows/dxw-sec-api.yml @@ -9,11 +9,11 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.7 + - uses: actions/checkout@v4.1.6 - - uses: shivammathur/setup-php@2.31.0 + - uses: shivammathur/setup-php@2.30.5 with: - php-version: "8.2" + php-version: "7.4" coverage: none tools: composer @@ -25,4 +25,4 @@ jobs: - name: Run tests run: | cd "wp-content/plugins/$PLUGIN_NAME" - vendor/bin/kahlan --spec=specs + vendor/bin/peridot specs diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 90d90250..1d1cc915 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,7 +6,7 @@ jobs: shellcheck: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v4.1.7 + - uses: actions/checkout@v4.1.6 - run: sudo apt-get update - run: sudo apt-get install -y shellcheck - run: ./.shellcheck.sh diff --git a/.github/workflows/theme.yml b/.github/workflows/theme.yml index 152dab4a..0761101d 100644 --- a/.github/workflows/theme.yml +++ b/.github/workflows/theme.yml @@ -11,11 +11,11 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - php-versions: ['8.2'] + php-versions: ['7.4'] steps: - - uses: actions/checkout@v4.1.7 + - uses: actions/checkout@v4.1.6 - name: Setup PHP - uses: shivammathur/setup-php@2.31.0 + uses: shivammathur/setup-php@2.30.5 with: php-version: ${{ matrix.php-versions }} - name: Get Composer Cache Directory @@ -32,5 +32,5 @@ jobs: run: composer install --no-interaction - name: PHP CS fix run: vendor/bin/php-cs-fixer fix --dry-run -v --diff - - name: Run Kahlan tests - run: vendor/bin/kahlan spec + - name: Run Peridot tests + run: vendor/bin/peridot spec diff --git a/.github/workflows/whippet.yml b/.github/workflows/whippet.yml index 804118d6..955e70a7 100644 --- a/.github/workflows/whippet.yml +++ b/.github/workflows/whippet.yml @@ -5,6 +5,6 @@ on: [push, pull_request] jobs: whippet-deps-validate: - uses: dxw/govpress-workflow-whippet-validate/.github/workflows/whippet-dependencies-validate.yml@v3 + uses: dxw/govpress-workflow-whippet-validate/.github/workflows/whippet-dependencies-validate.yml@v2 secrets: GH_ACCOUNT_TOKEN: ${{ secrets.GOVPRESS_TOOLS_PLUGIN_READER_TOKEN }} diff --git a/README.md b/README.md index 10a370f5..d0ba067d 100644 --- a/README.md +++ b/README.md @@ -21,10 +21,6 @@ Please use `develop/main` branches. - Analytics for dxw Advisories is handled via our Plausible account -## PHP version - -This site builds on PHP 8.2 and deploys on PHP 8.3. - ## Getting started Run the setup (first-time run only): @@ -95,7 +91,7 @@ curl -L https://security.dxw.com/wp-json/v1/inspections/twitter-widget-pro The API code is packaged as a plugin. -To run the tests, run `vendor/bin/kahlan specs` from the plugin directory. +To run the tests, run `vendor/bin/peridot specs` from the plugin directory. The first time you do this you'll need to `composer install` from the plugin directory. diff --git a/composer.json b/composer.json index 5b08964c..91ef1881 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "config": { "platform": { - "php": "8.3" + "php": "7.4.3" } }, "require-dev": { diff --git a/docker-compose.yml b/docker-compose.yml index 52763981..4d96aae6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,7 +33,7 @@ services: MYSQL_ROOT_PASSWORD: foobar wordpress: - image: thedxw/wpc-wordpress:php8.2 + image: thedxw/wpc-wordpress ports: - "80:80" links: diff --git a/script/test b/script/test index 879b8f65..00b3f2b3 100755 --- a/script/test +++ b/script/test @@ -15,4 +15,4 @@ echo "===> Validating Whippet files..." vendor/bin/whippet deps validate echo "===> Running theme unit tests..." -$THEME_DIRECTORY/vendor/bin/kahlan --spec="$THEME_DIRECTORY/spec" +$THEME_DIRECTORY/vendor/bin/peridot "$THEME_DIRECTORY/spec" diff --git a/whippet.lock b/whippet.lock index 0dae9418..35d517aa 100644 --- a/whippet.lock +++ b/whippet.lock @@ -24,7 +24,7 @@ { "name": "advanced-custom-fields-pro", "src": "git@github.com:dxw-wordpress-plugins/advanced-custom-fields-pro", - "revision": "7d42074d841d35d9e3f0cea550cd8647df14532b" + "revision": "f9df07ea23fe38372e6bcf14cf8d06f25bd32714" } ] } diff --git a/wp-content/plugins/dxw-sec-api/composer.json b/wp-content/plugins/dxw-sec-api/composer.json index 158d0e7d..8e46be8e 100644 --- a/wp-content/plugins/dxw-sec-api/composer.json +++ b/wp-content/plugins/dxw-sec-api/composer.json @@ -1,9 +1,11 @@ { "require-dev": { - "10up/wp_mock": "^1.0.1", - "squizlabs/php_codesniffer": "^3", - "dxw/phar-install": "^1.0", - "kahlan/kahlan": "^5.2" + "peridot-php/peridot": "~1.15", + "peridot-php/leo": "~1.0", + "peridot-php/peridot-dot-reporter": "~1.0", + "10up/wp_mock": "^0.1.1", + "squizlabs/php_codesniffer": "^2.7", + "dxw/phar-install": "^1.0" }, "require": { "aura/autoload": "^2.0" diff --git a/wp-content/plugins/dxw-sec-api/composer.lock b/wp-content/plugins/dxw-sec-api/composer.lock index 9403d076..80458940 100644 --- a/wp-content/plugins/dxw-sec-api/composer.lock +++ b/wp-content/plugins/dxw-sec-api/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": "dc69650e1ba5ca21efa50abcec0c101d", + "content-hash": "4836ebe50ee68cf3556b3eebb332ef64", "packages": [ { "name": "aura/autoload", @@ -53,88 +53,65 @@ "autoloader", "class loader" ], - "support": { - "issues": "https://github.com/auraphp/Aura.Autoload/issues", - "source": "https://github.com/auraphp/Aura.Autoload/tree/2.x" - }, "time": "2016-10-03T19:36:19+00:00" } ], "packages-dev": [ { "name": "10up/wp_mock", - "version": "1.0.1", + "version": "0.1.1", "source": { "type": "git", "url": "https://github.com/10up/wp_mock.git", - "reference": "48b7f22934a4351e45e336f09263ee27fc9ddcbe" + "reference": "04e1e14fdcc4240a07f9f6c2e45029de5714dd3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/10up/wp_mock/zipball/48b7f22934a4351e45e336f09263ee27fc9ddcbe", - "reference": "48b7f22934a4351e45e336f09263ee27fc9ddcbe", + "url": "https://api.github.com/repos/10up/wp_mock/zipball/04e1e14fdcc4240a07f9f6c2e45029de5714dd3e", + "reference": "04e1e14fdcc4240a07f9f6c2e45029de5714dd3e", "shasum": "" }, "require": { - "antecedent/patchwork": "^2.1", - "mockery/mockery": "^1.6", - "php": ">=7.4 < 9", - "phpunit/phpunit": "^9.6" + "antecedent/patchwork": "~1.2", + "mockery/mockery": "~0.8", + "php": ">=5.3.2" }, "require-dev": { - "behat/behat": "^v3.11.0", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", - "friendsofphp/php-cs-fixer": "^3.4", - "php-coveralls/php-coveralls": "^v2.7", - "php-stubs/wordpress-globals": "^0.2", - "php-stubs/wordpress-stubs": "^6.3", - "phpcompatibility/php-compatibility": "^9.3", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "sebastian/comparator": "^4.0.8", - "sempro/phpunit-pretty-print": "^1.4" + "phpunit/phpunit": "~3.7" }, "type": "library", "autoload": { - "psr-4": { - "WP_Mock\\": "./php/WP_Mock" + "psr-0": { + "WP_Mock\\": "./" }, "classmap": [ - "php/WP_Mock.php" + "WP_Mock.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "GPL-2.0+" ], "description": "A mocking library to take the pain out of unit testing for WordPress", - "support": { - "issues": "https://github.com/10up/wp_mock/issues", - "source": "https://github.com/10up/wp_mock/tree/1.0.1" - }, - "time": "2024-01-22T02:22:57+00:00" + "time": "2015-03-31T18:55:45+00:00" }, { "name": "antecedent/patchwork", - "version": "2.1.28", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/antecedent/patchwork.git", - "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d" + "reference": "6e1a0a0c1282c9690d38fb4831cbdfcd04d02171" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antecedent/patchwork/zipball/6b30aff81ebadf0f2feb9268d3e08385cebcc08d", - "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d", + "url": "https://api.github.com/repos/antecedent/patchwork/zipball/6e1a0a0c1282c9690d38fb4831cbdfcd04d02171", + "reference": "6e1a0a0c1282c9690d38fb4831cbdfcd04d02171", "shasum": "" }, "require": { "php": ">=5.4.0" }, - "require-dev": { - "phpunit/phpunit": ">=4" - }, "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ @@ -147,7 +124,6 @@ } ], "description": "Method redefinition (monkey-patching) functionality for PHP.", - "homepage": "https://antecedent.github.io/patchwork/", "keywords": [ "aop", "aspect", @@ -157,81 +133,7 @@ "runkit", "testing" ], - "support": { - "issues": "https://github.com/antecedent/patchwork/issues", - "source": "https://github.com/antecedent/patchwork/tree/2.1.28" - }, - "time": "2024-02-06T09:26:11+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" - }, - "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" - } - ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2016-07-02T04:25:33+00:00" }, { "name": "dxw/phar-install", @@ -263,156 +165,132 @@ } ], "homepage": "https://github.com/dxw/phar-install", - "support": { - "issues": "https://github.com/dxw/phar-install/issues", - "source": "https://github.com/dxw/phar-install/tree/master" - }, "time": "2020-04-06T09:47:56+00:00" }, { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "name": "evenement/evenement", + "version": "v2.1.0", "source": { "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "url": "https://github.com/igorw/evenement.git", + "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a", + "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" + "php": ">=5.4.0" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "phpunit/phpunit": "^6.0||^5.7||^4.8.35" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "classmap": [ - "hamcrest" - ] + "psr-0": { + "Evenement": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "This is the PHP port of Hamcrest Matchers", + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", "keywords": [ - "test" + "event-dispatcher", + "event-emitter" ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" + "time": "2017-07-17T17:39:19+00:00" }, { - "name": "kahlan/kahlan", - "version": "5.2.7", + "name": "hamcrest/hamcrest-php", + "version": "v1.2.2", "source": { "type": "git", - "url": "https://github.com/kahlan/kahlan.git", - "reference": "72e043f95ee253f54dfcbd5cd646dc3fe0738835" + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kahlan/kahlan/zipball/72e043f95ee253f54dfcbd5cd646dc3fe0738835", - "reference": "72e043f95ee253f54dfcbd5cd646dc3fe0738835", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", + "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=5.3.2" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" }, "require-dev": { - "rector/rector": "^1.0.5", - "squizlabs/php_codesniffer": "3.7.2" + "phpunit/php-file-iterator": "1.3.3", + "satooshi/php-coveralls": "dev-master" }, - "bin": [ - "bin/kahlan" - ], "type": "library", "autoload": { - "files": [ - "src/functions.php" + "classmap": [ + "hamcrest" ], - "psr-4": { - "Kahlan\\": "src/" - } + "files": [ + "hamcrest/Hamcrest.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "CrysaLEAD" - } + "BSD" ], - "description": "The PHP Test Framework for Freedom, Truth and Justice.", + "description": "This is the PHP port of Hamcrest Matchers", "keywords": [ - "BDD", - "Behavior-Driven Development", - "Monkey Patching", - "TDD", - "mock", - "stub", - "testing", - "unit test" + "test" ], - "support": { - "issues": "https://github.com/kahlan/kahlan/issues", - "source": "https://github.com/kahlan/kahlan/tree/5.2.7" - }, - "time": "2024-06-15T11:51:00+00:00" + "time": "2015-05-11T14:41:42+00:00" }, { "name": "mockery/mockery", - "version": "1.6.12", + "version": "0.9.11", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + "reference": "be9bf28d8e57d67883cba9fcadfcff8caab667f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "url": "https://api.github.com/repos/mockery/mockery/zipball/be9bf28d8e57d67883cba9fcadfcff8caab667f8", + "reference": "be9bf28d8e57d67883cba9fcadfcff8caab667f8", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "^2.0.1", + "hamcrest/hamcrest-php": "~1.1", "lib-pcre": ">=7.0", - "php": ">=7.3" - }, - "conflict": { - "phpunit/phpunit": "<8.0" + "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.6.17", - "symplify/easy-coding-standard": "^12.1.14" + "phpunit/phpunit": "~4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9.x-dev" + } + }, "autoload": { - "files": [ - "library/helpers.php", - "library/Mockery.php" - ], - "psr-4": { - "Mockery\\": "library/Mockery" + "psr-0": { + "Mockery": "library/" } }, "notification-url": "https://packagist.org/downloads/", @@ -423,24 +301,16 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "https://github.com/padraic", - "role": "Author" + "homepage": "http://blog.astrumfutura.com" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "https://davedevelopment.co.uk", - "role": "Developer" - }, - { - "name": "Nathanael Esayeas", - "email": "nathanael.esayeas@protonmail.com", - "homepage": "https://github.com/ghostwriter", - "role": "Lead Developer" + "homepage": "http://davedevelopment.co.uk" } ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", + "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", + "homepage": "http://github.com/padraic/mockery", "keywords": [ "BDD", "TDD", @@ -453,291 +323,219 @@ "test double", "testing" ], - "support": { - "docs": "https://docs.mockery.io/", - "issues": "https://github.com/mockery/mockery/issues", - "rss": "https://github.com/mockery/mockery/releases.atom", - "security": "https://github.com/mockery/mockery/security/advisories", - "source": "https://github.com/mockery/mockery" - }, - "time": "2024-05-16T03:13:13+00:00" + "time": "2019-02-12T16:07:13+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.12.0", + "name": "peridot-php/leo", + "version": "1.6.1", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "url": "https://github.com/peridot-php/leo.git", + "reference": "2a6f60f237498cd7c3e912d71dcb90424ab66e72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/peridot-php/leo/zipball/2a6f60f237498cd7c3e912d71dcb90424ab66e72", + "reference": "2a6f60f237498cd7c3e912d71dcb90424ab66e72", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" + "php": ">=5.4" }, "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + "apigen/apigen": "^4", + "friendsofphp/php-cs-fixer": "^1", + "peridot-php/peridot-jumpstart": "^1", + "peridot-php/peridot-prophecy-plugin": "^1" }, "type": "library", "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } + "Peridot\\Leo\\": "src" + }, + "files": [ + "src/Interfaces/_interface.bdd.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" - }, - "funding": [ + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com" } ], - "time": "2024-06-12T14:39:25+00:00" + "description": "Next level assertion and matcher library for PHP", + "keywords": [ + "assert", + "expect", + "expectation", + "matcher", + "testing" + ], + "time": "2017-08-16T21:40:18+00:00" }, { - "name": "nikic/php-parser", - "version": "v5.0.2", + "name": "peridot-php/peridot", + "version": "1.19.0", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + "url": "https://github.com/peridot-php/peridot.git", + "reference": "1c573868d856cee7fc9ba89f6a82730f79a3685e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "url": "https://api.github.com/repos/peridot-php/peridot/zipball/1c573868d856cee7fc9ba89f6a82730f79a3685e", + "reference": "1c573868d856cee7fc9ba89f6a82730f79a3685e", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" + "evenement/evenement": "^2", + "peridot-php/peridot-scope": "^1", + "php": ">=5.4", + "phpunit/php-timer": "^1", + "symfony/console": "^2|^3" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "consolidation/robo": "^0.4", + "phpunit/php-code-coverage": "^2" }, "bin": [ - "bin/php-parse" + "bin/peridot" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Peridot\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Austin Morris", + "email": "austin.morris@gmail.com" + }, + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com" } ], - "description": "A PHP parser written in PHP", + "description": "Event driven BDD test framework for PHP 5.4+", "keywords": [ - "parser", - "php" + "BDD", + "TDD", + "php", + "testing" ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" - }, - "time": "2024-03-05T20:51:40+00:00" + "time": "2017-01-19T01:11:09+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.4", + "name": "peridot-php/peridot-dot-reporter", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" + "url": "https://github.com/peridot-php/peridot-dot-reporter.git", + "reference": "ba303540ddd4118a1d300bf739912556902a66d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", + "url": "https://api.github.com/repos/peridot-php/peridot-dot-reporter/zipball/ba303540ddd4118a1d300bf739912556902a66d5", + "reference": "ba303540ddd4118a1d300bf739912556902a66d5", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "peridot-php/peridot": "~1.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "require-dev": { + "peridot-php/peridot-watcher-plugin": "~1.3" }, + "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Peridot\\Reporter\\Dot\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "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" - } - ], - "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.4" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com" } ], - "time": "2024-03-03T12:33:53+00:00" + "description": "A dot reporter for the Peridot testing framework", + "time": "2014-11-11T03:40:46+00:00" }, { - "name": "phar-io/version", - "version": "3.2.1", + "name": "peridot-php/peridot-scope", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + "url": "https://github.com/peridot-php/peridot-scope.git", + "reference": "b5cc7ac35b2116d0f495b326218e7e93a823ab8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "url": "https://api.github.com/repos/peridot-php/peridot-scope/zipball/b5cc7ac35b2116d0f495b326218e7e93a823ab8e", + "reference": "b5cc7ac35b2116d0f495b326218e7e93a823ab8e", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=5.4.0" + }, + "require-dev": { + "peridot-php/peridot-jumpstart": "~1.0" }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Peridot\\Scope\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "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": "Brian Scaturro", + "email": "scaturrob@gmail.com" } ], - "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" + "description": "Scopes for function binding and mixins", + "time": "2016-02-22T13:27:54+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "name": "phpunit/php-timer", + "version": "1.0.9", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "php": "^5.3.3 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -752,123 +550,122 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", + "email": "sb@sebastian-bergmann.de", "role": "lead" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } + "timer" ], - "time": "2024-03-02T06:37:42+00:00" + "time": "2017-02-26T11:10:40+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "name": "psr/log", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } + "log", + "psr", + "psr-3" ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2020-03-23T09:12:05+00:00" }, { - "name": "phpunit/php-invoker", - "version": "3.1.1", + "name": "squizlabs/php_codesniffer", + "version": "2.9.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "2acf168de78487db620ab4bc524135a13cfe6745" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745", + "reference": "2acf168de78487db620ab4bc524135a13cfe6745", "shasum": "" }, "require": { - "php": ">=7.3" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.1.2" }, "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" + "phpunit/phpunit": "~4.0" }, + "bin": [ + "scripts/phpcs", + "scripts/phpcbf" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "2.x-dev" } }, "autoload": { "classmap": [ - "src/" + "CodeSniffer.php", + "CodeSniffer/CLI.php", + "CodeSniffer/Exception.php", + "CodeSniffer/File.php", + "CodeSniffer/Fixer.php", + "CodeSniffer/Report.php", + "CodeSniffer/Reporting.php", + "CodeSniffer/Sniff.php", + "CodeSniffer/Tokens.php", + "CodeSniffer/Reports/", + "CodeSniffer/Tokenizers/", + "CodeSniffer/DocGenerators/", + "CodeSniffer/Standards/AbstractPatternSniff.php", + "CodeSniffer/Standards/AbstractScopeSniff.php", + "CodeSniffer/Standards/AbstractVariableSniff.php", + "CodeSniffer/Standards/IncorrectPatternException.php", + "CodeSniffer/Standards/Generic/Sniffs/", + "CodeSniffer/Standards/MySource/Sniffs/", + "CodeSniffer/Standards/PEAR/Sniffs/", + "CodeSniffer/Standards/PSR1/Sniffs/", + "CodeSniffer/Standards/PSR2/Sniffs/", + "CodeSniffer/Standards/Squiz/Sniffs/", + "CodeSniffer/Standards/Zend/Sniffs/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -877,1341 +674,331 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", + "name": "Greg Sherwood", "role": "lead" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } + "phpcs", + "standards" ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2018-11-07T22:31:41+00:00" }, { - "name": "phpunit/php-text-template", - "version": "2.0.4", + "name": "symfony/console", + "version": "v3.4.43", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "url": "https://github.com/symfony/console.git", + "reference": "afc7189694d2c59546cf24ea606a236fa46a966e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/symfony/console/zipball/afc7189694d2c59546cf24ea606a236fa46a966e", + "reference": "afc7189694d2c59546cf24ea606a236fa46a966e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "psr/log": "~1.0", + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.4-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", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, + "description": "Symfony Console Component", + "homepage": "https://symfony.com", "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2020-07-06T08:57:31+00:00" }, { - "name": "phpunit/phpunit", - "version": "9.6.19", + "name": "symfony/debug", + "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" + "url": "https://github.com/symfony/debug.git", + "reference": "47aa9064d75db36389692dd4d39895a0820f00f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", + "url": "https://api.github.com/repos/symfony/debug/zipball/47aa9064d75db36389692dd4d39895a0820f00f2", + "reference": "47aa9064d75db36389692dd4d39895a0820f00f2", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" + "php": ">=7.1.3", + "psr/log": "~1.0", + "symfony/polyfill-php80": "^1.15" }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "conflict": { + "symfony/http-kernel": "<3.4" + }, + "require-dev": { + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-master": "4.4-dev" } }, "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "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": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" - }, + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", "funding": [ { - "url": "https://phpunit.de/sponsors.html", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-05T04:35:58+00:00" + "time": "2020-07-23T08:31:43+00:00" }, { - "name": "sebastian/cli-parser", - "version": "1.0.2", + "name": "symfony/polyfill-mbstring", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=5.3.3" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" - }, - "funding": [ + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T06:27:43+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "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/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ + "url": "https://symfony.com/sponsor", + "type": "custom" + }, { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "sebastian/comparator", - "version": "4.0.8", + "name": "symfony/polyfill-php80", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": ">=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], "classmap": [ - "src/" + "Resources/stubs" ] }, "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": "Ion Bazan", + "email": "ion.bazan@gmail.com" }, { - "name": "Volker Dusch", - "email": "github@wallbash.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "comparator", - "compare", - "equality" + "compatibility", + "polyfill", + "portable", + "shim" ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" - }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-09-14T12:41:17+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" - }, - "funding": [ + "url": "https://symfony.com/sponsor", + "type": "custom" + }, { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/fabpot", "type": "github" - } - ], - "time": "2023-12-22T06:19:30+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-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" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T06:30:58+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "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" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:03:51+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "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": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T06:33:00+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.7", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T06:35:11+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-22T06:20:34+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "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/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "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/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-14T16:00:52+00:00" - }, - { - "name": "sebastian/type", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "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/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:13:03+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "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/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.10.1", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" - }, - "bin": [ - "bin/phpcbf", - "bin/phpcs" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "Former lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "Current lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", - "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", - "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" - }, - "funding": [ - { - "url": "https://github.com/PHPCSStandards", - "type": "github" - }, - { - "url": "https://github.com/jrfnl", - "type": "github" - }, - { - "url": "https://opencollective.com/php_codesniffer", - "type": "open_collective" - } - ], - "time": "2024-05-22T21:24:41+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2020-07-14T12:35:20+00:00" } ], "aliases": [], @@ -2221,5 +1008,8 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.6.0" + "platform-overrides": { + "php": "7.2" + }, + "plugin-api-version": "1.1.0" } diff --git a/wp-content/plugins/dxw-sec-api/lib/InspectionsController.php b/wp-content/plugins/dxw-sec-api/lib/InspectionsController.php index f70b4704..fe1f5ba9 100644 --- a/wp-content/plugins/dxw-sec-api/lib/InspectionsController.php +++ b/wp-content/plugins/dxw-sec-api/lib/InspectionsController.php @@ -4,8 +4,6 @@ class InspectionsController { - private $json_inspections_finder; - public function __construct($json_inspections_finder) { $this->json_inspections_finder = $json_inspections_finder; diff --git a/wp-content/plugins/dxw-sec-api/lib/JSONInspectionsFinder.php b/wp-content/plugins/dxw-sec-api/lib/JSONInspectionsFinder.php index 7f3613ef..62f40dfe 100644 --- a/wp-content/plugins/dxw-sec-api/lib/JSONInspectionsFinder.php +++ b/wp-content/plugins/dxw-sec-api/lib/JSONInspectionsFinder.php @@ -6,8 +6,6 @@ /* that can be converted to JSON and sent as the response to an API call */ class JSONInspectionsFinder { - private $inspections_finder; - public function __construct($inspections_finder) { $this->inspections_finder = $inspections_finder; diff --git a/wp-content/plugins/dxw-sec-api/specs/inspection.spec.php b/wp-content/plugins/dxw-sec-api/specs/inspection.spec.php index 668dd75e..15c171c2 100644 --- a/wp-content/plugins/dxw-sec-api/specs/inspection.spec.php +++ b/wp-content/plugins/dxw-sec-api/specs/inspection.spec.php @@ -43,11 +43,7 @@ $this->randomDate = function () { $timestamp = rand(0, time()); - - $dateObject = new DateTime(); - $dateObject->setTimestamp($timestamp); - $formattedDate = $dateObject->format('Y-m-d H:i:s'); - return $formattedDate; + return strftime("%Y-%m-%d %H:%M:%S", $timestamp); }; }); @@ -55,7 +51,7 @@ it('returns the post title of the inspection, stripped of whitespace', function () { $fake_post = $this->fakePost(['post_title' => ' My Awesome Plugin ']); $inspection = new DxwSec\API\Inspection($fake_post); - expect($inspection->name)->toBe('My Awesome Plugin'); + expect($inspection->name)->to->equal('My Awesome Plugin'); }); }); @@ -63,19 +59,19 @@ it('returns the slug of the inspection', function () { $fake_post = $this->fakePost(['post_name' => 'my-awesome-plugin']); $inspection = new DxwSec\API\Inspection($fake_post); - expect($inspection->slug)->toBe('my-awesome-plugin'); + expect($inspection->slug)->to->equal('my-awesome-plugin'); }); it('strips any trailing numbers', function () { $fake_post = $this->fakePost(['post_name' => 'my-awesome-plugin-2']); $inspection = new DxwSec\API\Inspection($fake_post); - expect($inspection->slug)->toBe('my-awesome-plugin'); + expect($inspection->slug)->to->equal('my-awesome-plugin'); }); it('strips multiple trailing numbers', function () { $fake_post = $this->fakePost(['post_name' => 'my-awesome-plugin-10']); $inspection = new DxwSec\API\Inspection($fake_post); - expect($inspection->slug)->toBe('my-awesome-plugin'); + expect($inspection->slug)->to->equal('my-awesome-plugin'); }); }); @@ -91,13 +87,13 @@ }); it("returns versions from the post's custom field", function () { - \WP_Mock::userFunction('get_field', [ + \WP_Mock::wpFunction('get_field', [ 'args' => ['version_of_plugin', 2418], 'return' => '1.2.3', ]); $fake_post = $this->fakePost(['ID' => '2418']); $inspection = new DxwSec\API\Inspection($fake_post); - expect($inspection->versions())->toBe('1.2.3'); + expect($inspection->versions())->to->equal('1.2.3'); }); }); @@ -105,7 +101,7 @@ it('returns a datetime object from the string in the post', function () { $fake_post = $this->fakePost(['post_date' => '2016-07-13 17:44:23']); $inspection = new DxwSec\API\Inspection($fake_post); - expect($inspection->date)->toEqual(new DateTime('2016-07-13T17:44:23.000000Z')); + expect($inspection->date)->to->loosely->equal(new DateTime('2016-07-13T17:44:23.000000Z')); }); }); @@ -123,11 +119,11 @@ it('fetches the permalink for the post', function () { $fake_post = $this->fakePost(['ID' => '2317']); $inspection = new DxwSec\API\Inspection($fake_post); - \WP_Mock::userFunction('get_permalink', [ + \WP_Mock::wpFunction('get_permalink', [ 'args' => [2317], 'return' => 'https://security.dxw.com/plugins/my-awesome-plugin', ]); - expect($inspection->url())->toBe('https://security.dxw.com/plugins/my-awesome-plugin'); + expect($inspection->url())->to->equal('https://security.dxw.com/plugins/my-awesome-plugin'); }); }); @@ -144,7 +140,7 @@ context("when the post has a 'green' recommendation", function () { beforeEach(function () { - \WP_Mock::userFunction('get_field', [ + \WP_Mock::wpFunction('get_field', [ 'args' => ['recommendation', 2317], 'return' => 'green', ]); @@ -152,13 +148,13 @@ it("reports no issues found", function () { $fake_post = $this->fakePost(['ID' => '2317']); $inspection = new DxwSec\API\Inspection($fake_post); - expect($inspection->result())->toBe('No issues found'); + expect($inspection->result())->to->equal('No issues found'); }); }); context("when the post has a 'yellow' recommendation", function () { beforeEach(function () { - \WP_Mock::userFunction('get_field', [ + \WP_Mock::wpFunction('get_field', [ 'args' => ['recommendation', 2317], 'return' => 'yellow', ]); @@ -166,13 +162,13 @@ it("reports use with caution", function () { $fake_post = $this->fakePost(['ID' => '2317']); $inspection = new DxwSec\API\Inspection($fake_post); - expect($inspection->result())->toBe('Use with caution'); + expect($inspection->result())->to->equal('Use with caution'); }); }); context("when the post has a 'red' recommendation", function () { beforeEach(function () { - \WP_Mock::userFunction('get_field', [ + \WP_Mock::wpFunction('get_field', [ 'args' => ['recommendation', 2317], 'return' => 'red', ]); @@ -180,7 +176,7 @@ it("reports potentially unsafe", function () { $fake_post = $this->fakePost(['ID' => '2317']); $inspection = new DxwSec\API\Inspection($fake_post); - expect($inspection->result())->toBe('Potentially unsafe'); + expect($inspection->result())->to->equal('Potentially unsafe'); }); }); }); diff --git a/wp-content/plugins/dxw-sec-api/specs/inspections_controller.spec.php b/wp-content/plugins/dxw-sec-api/specs/inspections_controller.spec.php index 94fe8cc8..1fdd805c 100644 --- a/wp-content/plugins/dxw-sec-api/specs/inspections_controller.spec.php +++ b/wp-content/plugins/dxw-sec-api/specs/inspections_controller.spec.php @@ -31,7 +31,7 @@ $controller = new \DxwSec\API\InspectionsController($this->fakeJsonInspectionsFinder([$inspection])); $params = $this->fakeParams(array('slug' => 'my-awesome-plugin')); $result = $controller->show($params); - expect($result)->toBe([$inspection]); + expect($result)->to->equal([$inspection]); }); it('calls a finder object with the slug', function () { @@ -50,7 +50,7 @@ $controller = new \DxwSec\API\InspectionsController($this->fakeJsonInspectionsFinder([])); $params = $this->fakeParams(array('slug' => 'foo')); $result = $controller->show($params); - expect($result)->toBe([]); + expect($result)->to->equal([]); }); }); }); diff --git a/wp-content/plugins/dxw-sec-api/specs/inspections_finder.spec.php b/wp-content/plugins/dxw-sec-api/specs/inspections_finder.spec.php index 104c7aa8..3e7cb3c8 100644 --- a/wp-content/plugins/dxw-sec-api/specs/inspections_finder.spec.php +++ b/wp-content/plugins/dxw-sec-api/specs/inspections_finder.spec.php @@ -42,37 +42,37 @@ 'filter' => 'raw', ]; - \WP_Mock::userFunction('get_posts', [ + \WP_Mock::wpFunction('get_posts', [ 'return' => [$inspection], ]); - \WP_Mock::userFunction('get_field', [ + \WP_Mock::wpFunction('get_field', [ 'args' => ['version_of_plugin', 2644], 'return' => '2.2.3', ]); - \WP_Mock::userFunction('get_permalink', [ + \WP_Mock::wpFunction('get_permalink', [ 'args' => [2644], 'return' => 'https://security.dxw.com/plugins/advanced-custom-fields-table-field', ]); - \WP_Mock::userFunction('get_field', [ + \WP_Mock::wpFunction('get_field', [ 'args' => ['recommendation', 2644], 'return' => 'green', ]); $finder = new \DxwSec\API\InspectionsFinder(); $result = $finder->find('advanced-custom-fields-table-field'); - expect($result)->toBeAn('array'); - expect(count($result))->toBe(1); + expect($result)->to->be->an('array'); + expect(count($result))->to->equal(1); $output = $result[0]; - expect($output->name)->toBe('Advanced Custom Fields: Table Field'); - expect($output->slug)->toBe('advanced-custom-fields-table-field'); - expect($output->versions())->toBe('2.2.3'); - expect($output->date)->toEqual(date_create('2016-07-13 17:44:23', timezone_open('UTC'))); - expect($output->url())->toBe('https://security.dxw.com/plugins/advanced-custom-fields-table-field'); - expect($output->result())->toBe('No issues found'); + expect($output->name)->to->equal('Advanced Custom Fields: Table Field'); + expect($output->slug)->to->equal('advanced-custom-fields-table-field'); + expect($output->versions())->to->equal('2.2.3'); + expect($output->date)->to->loosely->equal(date_create('2016-07-13 17:44:23', timezone_open('UTC'))); + expect($output->url())->to->equal('https://security.dxw.com/plugins/advanced-custom-fields-table-field'); + expect($output->result())->to->equal('No issues found'); }); it('searches the database for published inspections matching the slug', function () { @@ -89,7 +89,7 @@ ], ]; - \WP_Mock::userFunction('get_posts', [ + \WP_Mock::wpFunction('get_posts', [ 'times' => 1, 'args' => [$args], 'return' => [], @@ -100,12 +100,12 @@ context('when there are no matching inspections', function () { it('returns an empty array', function () { - \WP_Mock::userFunction('get_posts', [ + \WP_Mock::wpFunction('get_posts', [ 'return' => [] ]); $finder = new \DxwSec\API\InspectionsFinder(); $result = $finder->find('slug-with-no-matches'); - expect($result)->toBe([]); + expect($result)->to->equal([]); }); }); }); diff --git a/wp-content/plugins/dxw-sec-api/specs/json_inspections_finder.spec.php b/wp-content/plugins/dxw-sec-api/specs/json_inspections_finder.spec.php index b34b20c2..ce9bc0c8 100644 --- a/wp-content/plugins/dxw-sec-api/specs/json_inspections_finder.spec.php +++ b/wp-content/plugins/dxw-sec-api/specs/json_inspections_finder.spec.php @@ -80,7 +80,7 @@ $finder = $this->fakeInspectionsFinder($inspections); $json_finder = new \DxwSec\API\JSONInspectionsFinder($finder); $result = $json_finder->find('advanced-custom-fields-table-field'); - expect($result)->toBe($inspection_output); + expect($result)->to->equal($inspection_output); }); it('calls an inspections finder with the given slug', function () { @@ -99,7 +99,7 @@ $finder = $this->fakeInspectionsFinder([]); $json_finder = new \DxwSec\API\JSONInspectionsFinder($finder); $result = $json_finder->find('slug-with-no-matches'); - expect($result)->toBe([]); + expect($result)->to->equal([]); }); }); }); diff --git a/wp-content/plugins/dxw-sec-api/vendor.phar b/wp-content/plugins/dxw-sec-api/vendor.phar index 26b20dbd..325e99f6 100644 Binary files a/wp-content/plugins/dxw-sec-api/vendor.phar and b/wp-content/plugins/dxw-sec-api/vendor.phar differ diff --git a/wp-content/themes/dxw-security-2017/.travis.yml b/wp-content/themes/dxw-security-2017/.travis.yml index a0b211aa..e5a96380 100644 --- a/wp-content/themes/dxw-security-2017/.travis.yml +++ b/wp-content/themes/dxw-security-2017/.travis.yml @@ -11,5 +11,5 @@ php: install: - composer --no-interaction install script: - - vendor/bin/kahlan spec + - vendor/bin/peridot spec - vendor/bin/php-cs-fixer fix --dry-run -v --diff diff --git a/wp-content/themes/dxw-security-2017/app/Lib/AdvisoryEmails/AjaxHandler.php b/wp-content/themes/dxw-security-2017/app/Lib/AdvisoryEmails/AjaxHandler.php index f83a8128..8715758d 100644 --- a/wp-content/themes/dxw-security-2017/app/Lib/AdvisoryEmails/AjaxHandler.php +++ b/wp-content/themes/dxw-security-2017/app/Lib/AdvisoryEmails/AjaxHandler.php @@ -4,48 +4,48 @@ class AjaxHandler implements \Dxw\Iguana\Registerable { - public function register() - { - add_action('wp_ajax_send_email', [$this, 'wp_ajax_send_email']); - } - - public function wp_ajax_send_email() - { - check_ajax_referer('send_email'); - - $targets = [ - 'email_hackers' => 'wp-hackers@lists.automattic.com', - 'email_wp_plugins' => 'plugins@wordpress.org', - 'email_fd' => 'fulldisclosure@seclists.org', - 'email_cve' => 'cve-assign@mitre.org', - 'email_wpscan' => 'wpscanteam@gmail.com', - 'email_dxw_wp_sec' => 'dxw-wp-security@lists.dxw.com', - ]; - - $sanitised['subject'] = sanitize_text_field($_POST['subject']); - $sanitised['body'] = ($_POST['body']); - - if (array_key_exists($_POST['target'], $targets)) { - $sanitised['target'] = $_POST['target']; - } - - foreach ($sanitised as $var => $value) { - if (empty($value)) { - header("HTTP/1.1 400 Bad Request"); - echo "Failed: {$var} was empty."; - return 0; - } - } - - if (!wp_mail($targets[$sanitised['target']], $sanitised['subject'], $sanitised['body'], ['From: dxw Security '])) { - header("HTTP/1.1 500 Internal Server Error"); - echo "Failed: {$var} was empty."; - return 0; - } - - header("HTTP/1.1 200 OK"); - echo "Email sent to " . $targets[$sanitised['target']]; - - die(); - } + public function register() + { + add_action('wp_ajax_send_email', [$this, 'wp_ajax_send_email']); + } + + public function wp_ajax_send_email() + { + check_ajax_referer('send_email'); + + $targets = [ + 'email_hackers' => 'wp-hackers@lists.automattic.com', + 'email_wp_plugins' => 'plugins@wordpress.org', + 'email_fd' => 'fulldisclosure@seclists.org', + 'email_cve' => 'cve-assign@mitre.org', + 'email_wpscan' => 'wpscanteam@gmail.com', + 'email_dxw_wp_sec' => 'dxw-wp-security@lists.dxw.com', + ]; + + $sanitised['subject'] = sanitize_text_field($_POST['subject']); + $sanitised['body'] = ($_POST['body']); + + if (array_key_exists($_POST['target'], $targets)) { + $sanitised['target'] = $_POST['target']; + } + + foreach ($sanitised as $var => $value) { + if (empty($value)) { + header("HTTP/1.1 400 Bad Request"); + echo "Failed: {$var} was empty."; + return 0; + } + } + + if (!wp_mail($targets[$sanitised['target']], $sanitised['subject'], $sanitised['body'], ['From: dxw Security '])) { + header("HTTP/1.1 500 Internal Server Error"); + echo "Failed: {$var} was empty."; + return 0; + } + + header("HTTP/1.1 200 OK"); + echo "Email sent to " . $targets[$sanitised['target']]; + + die(); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Lib/AdvisoryEmails/Form.php b/wp-content/themes/dxw-security-2017/app/Lib/AdvisoryEmails/Form.php index 15adeb9d..58656935 100644 --- a/wp-content/themes/dxw-security-2017/app/Lib/AdvisoryEmails/Form.php +++ b/wp-content/themes/dxw-security-2017/app/Lib/AdvisoryEmails/Form.php @@ -4,13 +4,13 @@ class Form { - public function displayIfSuperAdmin() - { - if (!is_super_admin()) { - return; - } + public function displayIfSuperAdmin() + { + if (!is_super_admin()) { + return; + } - global $post; ?> + global $post; ?>

Admin tools

Publish emails

@@ -43,16 +43,16 @@ public function displayIfSuperAdmin() Homepage: Advisory report: post_status == 'publish' || $post->post_status == 'private') { - the_permalink(); -} else { - echo "Awaiting publication"; -} ?> + the_permalink(); + } else { + echo "Awaiting publication"; + } ?> CVE: + echo get_field('cve'); + } else { + echo "Awaiting assignment"; + } ?> CVSS: the_cvss_score(); ?> (the_cvss_severity(); ?>; AV:get_field_label('access_vector'), 0, 1); ?>/AC:get_field_label('access_complexity'), 0, 1); ?>/Au:get_field_label('authentication'), 0, 1); ?>/C:get_field_label('confidentiality'), 0, 1); ?>/I:get_field_label('integrity'), 0, 1); ?>/A:get_field_label('availability'), 0, 1); ?>) @@ -89,19 +89,19 @@ public function displayIfSuperAdmin() Discovered by dxw: ================ + coauthors(); + } else { + the_author(); + } ?> Please visit advisories.dxw.com for more information.

Text version for CVE requests

+ if (get_field('is_plugin') == 'yes') { + echo " (WordPress plugin)"; + } ?>">Click for a blank email with the right subject
getter = $getter; - } + public function __construct(WordPressApiGetter $getter) + { + $this->getter = $getter; + } - public function getDetails($slug) - { - $result = $this->getter->getPluginInfo($slug); + public function getDetails($slug) + { + $result = $this->getter->getPluginInfo($slug); - if ($result->isErr()) { - return(['ok' => false]); - } else { - $response = $result->unwrap(); - $data = []; - $bigDesc = $response->sections['description']; - preg_match('/

(.*?)<\/p>/', $bigDesc, $m); - if ($m) { - $data['description'] = strip_tags($m[0]); - } else { - $data['description'] = ''; - } - $data['ok'] = true; - $data['slug'] = $slug; - $data['name'] = $response->name; - $data['version'] = $response->version; - $data['author'] = strip_tags($response->author); - $data['link'] = 'https://wordpress.org/plugins/'.$slug.'/'; + if ($result->isErr()) { + return(['ok' => false]); + } else { + $response = $result->unwrap(); + $data = []; + $bigDesc = $response->sections['description']; + preg_match('/

(.*?)<\/p>/', $bigDesc, $m); + if ($m) { + $data['description'] = strip_tags($m[0]); + } else { + $data['description'] = ''; + } + $data['ok'] = true; + $data['slug'] = $slug; + $data['name'] = $response->name; + $data['version'] = $response->version; + $data['author'] = strip_tags($response->author); + $data['link'] = 'https://wordpress.org/plugins/'.$slug.'/'; - return $data; - } - } + return $data; + } + } } diff --git a/wp-content/themes/dxw-security-2017/app/Lib/FetchPluginDetails/Theme.php b/wp-content/themes/dxw-security-2017/app/Lib/FetchPluginDetails/Theme.php index e656b7a9..37f22533 100644 --- a/wp-content/themes/dxw-security-2017/app/Lib/FetchPluginDetails/Theme.php +++ b/wp-content/themes/dxw-security-2017/app/Lib/FetchPluginDetails/Theme.php @@ -4,43 +4,43 @@ class Theme implements \Dxw\Iguana\Registerable { - private $plugin; - - public function __construct(Plugin $plugin) - { - $this->plugin = $plugin; - } - - public function register() - { - add_action('wp_ajax_fetch_plugin_details', [$this, 'wp_ajax_fetch_plugin_details']); - - add_action('admin_enqueue_scripts', [$this, 'admin_enqueue_scripts']); - - add_filter('language_attributes', [$this, 'language_attributes'], 10, 1); - } - - public function wp_ajax_fetch_plugin_details() - { - check_ajax_referer('fetch_plugin_details'); - $data = $this->plugin->getDetails($_POST['plugin-slug']); - - echo(json_encode($data)."\n"); - wp_die(); - } - - public function admin_enqueue_scripts() - { - foreach ([ - 'fetch-plugin-details', - 'async', - ] as $script) { - wp_enqueue_script($script, get_theme_root_uri().'/dxw-security-2017/assets/js/admin/'.$script.'.js', [], false, true); - } - } - - public function language_attributes($output) - { - return $output . ' data-nonce-fetch-plugin-details="'.wp_create_nonce('fetch_plugin_details').'" '; - } + private $plugin; + + public function __construct(Plugin $plugin) + { + $this->plugin = $plugin; + } + + public function register() + { + add_action('wp_ajax_fetch_plugin_details', [$this, 'wp_ajax_fetch_plugin_details']); + + add_action('admin_enqueue_scripts', [$this, 'admin_enqueue_scripts']); + + add_filter('language_attributes', [$this, 'language_attributes'], 10, 1); + } + + public function wp_ajax_fetch_plugin_details() + { + check_ajax_referer('fetch_plugin_details'); + $data = $this->plugin->getDetails($_POST['plugin-slug']); + + echo(json_encode($data)."\n"); + wp_die(); + } + + public function admin_enqueue_scripts() + { + foreach ([ + 'fetch-plugin-details', + 'async', + ] as $script) { + wp_enqueue_script($script, get_theme_root_uri().'/dxw-security-2017/assets/js/admin/'.$script.'.js', [], false, true); + } + } + + public function language_attributes($output) + { + return $output . ' data-nonce-fetch-plugin-details="'.wp_create_nonce('fetch_plugin_details').'" '; + } } diff --git a/wp-content/themes/dxw-security-2017/app/Lib/FetchPluginDetails/WordPressApiGetter.php b/wp-content/themes/dxw-security-2017/app/Lib/FetchPluginDetails/WordPressApiGetter.php index 58544a43..29172f77 100644 --- a/wp-content/themes/dxw-security-2017/app/Lib/FetchPluginDetails/WordPressApiGetter.php +++ b/wp-content/themes/dxw-security-2017/app/Lib/FetchPluginDetails/WordPressApiGetter.php @@ -4,25 +4,25 @@ class WordPressApiGetter { - public function getPluginInfo($slug) - { - // Whoever thought PHP serialized objects were a good idea for an API needs a slap + public function getPluginInfo($slug) + { + // Whoever thought PHP serialized objects were a good idea for an API needs a slap - $response = wp_remote_post( - 'https://api.wordpress.org/plugins/info/1.0/', - [ - 'body' => [ - 'action' => 'plugin_information', - 'request' => serialize((object)[ - 'slug' => $slug, - ]), - ], - 'timeout' => 15 - ] - ); - if (is_wp_error($response)) { - return \Dxw\Result\Result::err($response->get_error_message()); - } - return \Dxw\Result\Result::ok(unserialize($response['body'])); - } + $response = wp_remote_post( + 'https://api.wordpress.org/plugins/info/1.0/', + [ + 'body' => [ + 'action' => 'plugin_information', + 'request' => serialize((object)[ + 'slug' => $slug, + ]), + ], + 'timeout' => 15 + ] + ); + if (is_wp_error($response)) { + return \Dxw\Result\Result::err($response->get_error_message()); + } + return \Dxw\Result\Result::ok(unserialize($response['body'])); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Lib/PluginVersionChecker.php b/wp-content/themes/dxw-security-2017/app/Lib/PluginVersionChecker.php index a84233d7..f63a3f10 100644 --- a/wp-content/themes/dxw-security-2017/app/Lib/PluginVersionChecker.php +++ b/wp-content/themes/dxw-security-2017/app/Lib/PluginVersionChecker.php @@ -4,158 +4,158 @@ class PluginVersionChecker { - public function __construct() - { - $this->id = (int)get_the_ID(); - $this->versions = explode(',', get_field('version_of_plugin')); - $this->version = end($this->versions); - $this->codex_link = get_field('codex_link'); - - preg_match('_https?://wordpress.org/plugins/(.*)/_', $this->codex_link, $m); - if ($m) { - $this->is_codex = true; - $this->slug = $m[1]; - } else { - $this->is_codex = false; - } - } - - //////////////////////////////////////////////////////////////////////////// - // Public API - - public function is_old() - { - if ($this->most_recent_version_on_dxwsec() !== $this->version) { - return true; - } - - if ($this->is_codex) { - $version = $this->most_recent_version_on_wporg(); - if ($version && $version != $this->version) { - return true; - } - } - - return false; - } - - public function have_latest() - { - $version = $this->most_recent_version_on_wporg(); - if ($version && $version !== $this->most_recent_version_on_dxwsec()) { - return false; - } - - return true; - } - - public function most_recent_version() - { - $version = $this->most_recent_version_on_wporg(); - if ($version) { - return $version; - } - - return $this->most_recent_version_on_dxwsec(); - } - - public function our_most_recent_version() - { - return $this->most_recent_version_on_dxwsec(); - } - - public function our_most_recent_link() - { - return $this->get_link($this->our_most_recent_version()); - } - - //////////////////////////////////////////////////////////////////////////// - // "Private" functions - - public function most_recent_version_on_dxwsec() - { - $posts = get_posts([ - 'post_type' => 'plugins', - 'meta_key' => 'codex_link', - 'meta_value' => $this->codex_link, - ]); - - $versions = []; - - foreach ($posts as $p) { - $versions[] = end(explode(',', get_field('version_of_plugin', $p->ID))); - } - - usort($versions, 'version_compare'); - return array_pop($versions); - } - - /** - * May return null, careful! - */ - public function most_recent_version_on_wporg() - { - $response = $this->get_plugin_information($this->slug); - if (isset($response->error) || empty($response)) { - return null; - } - - return $response->version; - } - - public function get_link($version) - { - $posts = get_posts( - [ - 'numberposts' => 1, - 'post_type' => 'plugins', - 'meta_query' => [ - [ - 'key' => 'codex_link', - 'value' => $this->codex_link, - ], - [ - 'key' => 'version_of_plugin', - 'value' => $version, - ], - ] - ] - ); - - if (count($posts)) { - return get_permalink($posts[0]->ID); - } - - return ''; - } - - public function get_plugin_information($slug) - { - $t_name = 'dxwsec_plugin_information_'.$slug; - $response = get_transient($t_name); - if ($response) { - return $response; - } - - $response = $this->_get_plugin_information($slug); - set_transient($t_name, $response, 60 * 60); - return $response; - } - - public function _get_plugin_information($slug) - { - $response = wp_remote_post( - 'http://api.wordpress.org/plugins/info/1.0/', - [ - 'body' => [ - 'action' => 'plugin_information', - 'request' => serialize((object)[ - 'slug' => $slug, - ]), - ], - ] - ); - - return unserialize($response['body']); - } + public function __construct() + { + $this->id = (int)get_the_ID(); + $this->versions = explode(',', get_field('version_of_plugin')); + $this->version = end($this->versions); + $this->codex_link = get_field('codex_link'); + + preg_match('_https?://wordpress.org/plugins/(.*)/_', $this->codex_link, $m); + if ($m) { + $this->is_codex = true; + $this->slug = $m[1]; + } else { + $this->is_codex = false; + } + } + + //////////////////////////////////////////////////////////////////////////// + // Public API + + public function is_old() + { + if ($this->most_recent_version_on_dxwsec() !== $this->version) { + return true; + } + + if ($this->is_codex) { + $version = $this->most_recent_version_on_wporg(); + if ($version && $version != $this->version) { + return true; + } + } + + return false; + } + + public function have_latest() + { + $version = $this->most_recent_version_on_wporg(); + if ($version && $version !== $this->most_recent_version_on_dxwsec()) { + return false; + } + + return true; + } + + public function most_recent_version() + { + $version = $this->most_recent_version_on_wporg(); + if ($version) { + return $version; + } + + return $this->most_recent_version_on_dxwsec(); + } + + public function our_most_recent_version() + { + return $this->most_recent_version_on_dxwsec(); + } + + public function our_most_recent_link() + { + return $this->get_link($this->our_most_recent_version()); + } + + //////////////////////////////////////////////////////////////////////////// + // "Private" functions + + public function most_recent_version_on_dxwsec() + { + $posts = get_posts([ + 'post_type' => 'plugins', + 'meta_key' => 'codex_link', + 'meta_value' => $this->codex_link, + ]); + + $versions = []; + + foreach ($posts as $p) { + $versions[] = end(explode(',', get_field('version_of_plugin', $p->ID))); + } + + usort($versions, 'version_compare'); + return array_pop($versions); + } + + /** + * May return null, careful! + */ + public function most_recent_version_on_wporg() + { + $response = $this->get_plugin_information($this->slug); + if (isset($response->error) || empty($response)) { + return null; + } + + return $response->version; + } + + public function get_link($version) + { + $posts = get_posts( + [ + 'numberposts' => 1, + 'post_type' => 'plugins', + 'meta_query' => [ + [ + 'key' => 'codex_link', + 'value' => $this->codex_link, + ], + [ + 'key' => 'version_of_plugin', + 'value' => $version, + ], + ] + ] + ); + + if (count($posts)) { + return get_permalink($posts[0]->ID); + } + + return ''; + } + + public function get_plugin_information($slug) + { + $t_name = 'dxwsec_plugin_information_'.$slug; + $response = get_transient($t_name); + if ($response) { + return $response; + } + + $response = $this->_get_plugin_information($slug); + set_transient($t_name, $response, 60 * 60); + return $response; + } + + public function _get_plugin_information($slug) + { + $response = wp_remote_post( + 'http://api.wordpress.org/plugins/info/1.0/', + [ + 'body' => [ + 'action' => 'plugin_information', + 'request' => serialize((object)[ + 'slug' => $slug, + ]), + ], + ] + ); + + return unserialize($response['body']); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Lib/Whippet/TemplateTags.php b/wp-content/themes/dxw-security-2017/app/Lib/Whippet/TemplateTags.php index ce75b19e..7073948b 100644 --- a/wp-content/themes/dxw-security-2017/app/Lib/Whippet/TemplateTags.php +++ b/wp-content/themes/dxw-security-2017/app/Lib/Whippet/TemplateTags.php @@ -4,66 +4,66 @@ class TemplateTags { - public function __construct(\Dxw\Iguana\Theme\Helpers $helpers) - { - $helpers->registerFunction('w_template_title', [$this, 'w_template_title']); - } - - public static function w_template_warning() - { - ?> + public function __construct(\Dxw\Iguana\Theme\Helpers $helpers) + { + $helpers->registerFunction('w_template_title', [$this, 'w_template_title']); + } + + public static function w_template_warning() + { + ?>

You're using a fallback template:

Did you really mean to? If you can, define a specific template and use it. Like single-post.php.

name); - } + if ($term) { + return apply_filters('single_term_title', $term->name); + } - if (is_post_type_archive()) { - return apply_filters('the_title', get_queried_object()->labels->name); - } + if (is_post_type_archive()) { + return apply_filters('the_title', get_queried_object()->labels->name); + } - if (is_day()) { - return sprintf(__('Daily Archives: %s', 'roots'), get_the_date()); - } + if (is_day()) { + return sprintf(__('Daily Archives: %s', 'roots'), get_the_date()); + } - if (is_month()) { - return sprintf(__('Monthly Archives: %s', 'roots'), get_the_date('F Y')); - } + if (is_month()) { + return sprintf(__('Monthly Archives: %s', 'roots'), get_the_date('F Y')); + } - if (is_year()) { - return sprintf(__('Yearly Archives: %s', 'roots'), get_the_date('Y')); - } + if (is_year()) { + return sprintf(__('Yearly Archives: %s', 'roots'), get_the_date('Y')); + } - if (is_author()) { - $author = get_queried_object(); + if (is_author()) { + $author = get_queried_object(); - return sprintf(__('Author Archives: %s', 'roots'), apply_filters('the_author', is_object($author) ? $author->display_name : null)); - } + return sprintf(__('Author Archives: %s', 'roots'), apply_filters('the_author', is_object($author) ? $author->display_name : null)); + } - return single_cat_title('', false); - } + return single_cat_title('', false); + } - if (is_search()) { - return sprintf(__('Search Results for %s', 'roots'), get_search_query()); - } + if (is_search()) { + return sprintf(__('Search Results for %s', 'roots'), get_search_query()); + } - if (is_404()) { - return __('Not Found', 'roots'); - } + if (is_404()) { + return __('Not Found', 'roots'); + } - return get_the_title(); - } + return get_the_title(); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Posts/CustomFields.php b/wp-content/themes/dxw-security-2017/app/Posts/CustomFields.php index 22dc55db..8456e810 100644 --- a/wp-content/themes/dxw-security-2017/app/Posts/CustomFields.php +++ b/wp-content/themes/dxw-security-2017/app/Posts/CustomFields.php @@ -4,1020 +4,1020 @@ class CustomFields implements \Dxw\Iguana\Registerable { - public function register() - { - $this->addPageTemplatesFields(); - $this->addHomePageFields(); - $this->addPostFields(); - } + public function register() + { + $this->addPageTemplatesFields(); + $this->addHomePageFields(); + $this->addPostFields(); + } - public function addPageTemplatesFields() - { - acf_add_local_field_group([ - 'key' => 'group_59427d8ae4e29', - 'title' => 'Page introduction', - 'fields' => [ - [ - 'key' => 'field_59427dab146fc', - 'label' => 'Introduction', - 'name' => 'introduction', - 'type' => 'textarea', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'maxlength' => '', - 'rows' => '', - 'new_lines' => 'wpautop', - ], - ], - 'location' => [ - [ - [ - 'param' => 'post_type', - 'operator' => '==', - 'value' => 'page', - ], - ], - ], - 'menu_order' => 0, - 'position' => 'acf_after_title', - 'style' => 'default', - 'label_placement' => 'top', - 'instruction_placement' => 'label', - 'hide_on_screen' => '', - 'active' => 1, - 'description' => '', - ]); + public function addPageTemplatesFields() + { + acf_add_local_field_group([ + 'key' => 'group_59427d8ae4e29', + 'title' => 'Page introduction', + 'fields' => [ + [ + 'key' => 'field_59427dab146fc', + 'label' => 'Introduction', + 'name' => 'introduction', + 'type' => 'textarea', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'maxlength' => '', + 'rows' => '', + 'new_lines' => 'wpautop', + ], + ], + 'location' => [ + [ + [ + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'page', + ], + ], + ], + 'menu_order' => 0, + 'position' => 'acf_after_title', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => 1, + 'description' => '', + ]); - acf_add_local_field_group([ - 'key' => 'group_598326606c784', - 'title' => 'Recommendations', - 'fields' => [ - [ - 'key' => 'field_59832752ae698', - 'label' => 'Recommendations heading', - 'name' => 'recommendations_heading', - 'type' => 'text', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'prepend' => '', - 'append' => '', - 'maxlength' => '', - ], - [ - 'key' => 'field_598327e2ae699', - 'label' => 'Recommendations', - 'name' => 'recommendations', - 'type' => 'repeater', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'collapsed' => '', - 'min' => 0, - 'max' => 3, - 'layout' => 'row', - 'button_label' => 'Add Recommendation', - 'sub_fields' => [ - [ - 'key' => 'field_59832881ae69a', - 'label' => 'Security warning', - 'name' => 'security_warning', - 'type' => 'radio', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'choices' => [ - 'red' => 'Potentially unsafe', - 'orange' => 'Use with caution', - 'green' => 'No issues found', - ], - 'allow_null' => 0, - 'other_choice' => 0, - 'save_other_choice' => 0, - 'default_value' => '', - 'layout' => 'vertical', - 'return_format' => 'value', - ], - [ - 'key' => 'field_598329cfae69b', - 'label' => 'Subtitle', - 'name' => 'subtitle', - 'type' => 'textarea', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'maxlength' => '', - 'rows' => '', - 'new_lines' => '', - ], - [ - 'key' => 'field_59832a89ae69c', - 'label' => 'Description', - 'name' => 'description', - 'type' => 'wysiwyg', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'tabs' => 'visual', - 'toolbar' => 'full', - 'media_upload' => 0, - 'delay' => 0, - ], - ], - ], - ], - 'location' => [ - [ - [ - 'param' => 'page_template', - 'operator' => '==', - 'value' => 'page-reviews.php', - ], - ], - [ - [ - 'param' => 'page_template', - 'operator' => '==', - 'value' => 'page-inspections.php', - ], - ], - ], - 'menu_order' => 0, - 'position' => 'normal', - 'style' => 'default', - 'label_placement' => 'top', - 'instruction_placement' => 'label', - 'hide_on_screen' => '', - 'active' => 1, - 'description' => '', - ]); + acf_add_local_field_group([ + 'key' => 'group_598326606c784', + 'title' => 'Recommendations', + 'fields' => [ + [ + 'key' => 'field_59832752ae698', + 'label' => 'Recommendations heading', + 'name' => 'recommendations_heading', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'maxlength' => '', + ], + [ + 'key' => 'field_598327e2ae699', + 'label' => 'Recommendations', + 'name' => 'recommendations', + 'type' => 'repeater', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'collapsed' => '', + 'min' => 0, + 'max' => 3, + 'layout' => 'row', + 'button_label' => 'Add Recommendation', + 'sub_fields' => [ + [ + 'key' => 'field_59832881ae69a', + 'label' => 'Security warning', + 'name' => 'security_warning', + 'type' => 'radio', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'choices' => [ + 'red' => 'Potentially unsafe', + 'orange' => 'Use with caution', + 'green' => 'No issues found', + ], + 'allow_null' => 0, + 'other_choice' => 0, + 'save_other_choice' => 0, + 'default_value' => '', + 'layout' => 'vertical', + 'return_format' => 'value', + ], + [ + 'key' => 'field_598329cfae69b', + 'label' => 'Subtitle', + 'name' => 'subtitle', + 'type' => 'textarea', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'maxlength' => '', + 'rows' => '', + 'new_lines' => '', + ], + [ + 'key' => 'field_59832a89ae69c', + 'label' => 'Description', + 'name' => 'description', + 'type' => 'wysiwyg', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'tabs' => 'visual', + 'toolbar' => 'full', + 'media_upload' => 0, + 'delay' => 0, + ], + ], + ], + ], + 'location' => [ + [ + [ + 'param' => 'page_template', + 'operator' => '==', + 'value' => 'page-reviews.php', + ], + ], + [ + [ + 'param' => 'page_template', + 'operator' => '==', + 'value' => 'page-inspections.php', + ], + ], + ], + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => 1, + 'description' => '', + ]); - acf_add_local_field_group([ - 'key' => 'group_59834207067c2', - 'title' => 'Failure criteria', - 'fields' => [ - [ - 'key' => 'field_5983428185451', - 'label' => 'Failure criteria description', - 'name' => 'failure_criteria_description', - 'type' => 'wysiwyg', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'tabs' => 'all', - 'toolbar' => 'full', - 'media_upload' => 0, - 'delay' => 0, - ], - [ - 'key' => 'field_5983454e62ac7', - 'label' => 'Table caption', - 'name' => 'table_caption', - 'type' => 'text', - 'instructions' => 'Caption tag helps make the table accessible. It is meant to contain a description of the table contents. + acf_add_local_field_group([ + 'key' => 'group_59834207067c2', + 'title' => 'Failure criteria', + 'fields' => [ + [ + 'key' => 'field_5983428185451', + 'label' => 'Failure criteria description', + 'name' => 'failure_criteria_description', + 'type' => 'wysiwyg', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'tabs' => 'all', + 'toolbar' => 'full', + 'media_upload' => 0, + 'delay' => 0, + ], + [ + 'key' => 'field_5983454e62ac7', + 'label' => 'Table caption', + 'name' => 'table_caption', + 'type' => 'text', + 'instructions' => 'Caption tag helps make the table accessible. It is meant to contain a description of the table contents. Only visible for screen readers.', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'prepend' => '', - 'append' => '', - 'maxlength' => '', - ], - [ - 'key' => 'field_5983429e85452', - 'label' => 'Failure criteria table', - 'name' => 'failure_criteria_table', - 'type' => 'repeater', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'collapsed' => '', - 'min' => 0, - 'max' => 0, - 'layout' => 'row', - 'button_label' => 'Add Row', - 'sub_fields' => [ - [ - 'key' => 'field_598342c585453', - 'label' => 'Criterion', - 'name' => 'criterion', - 'type' => 'text', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'prepend' => '', - 'append' => '', - 'maxlength' => '', - ], - [ - 'key' => 'field_598342ee85454', - 'label' => 'Explanation', - 'name' => 'explanation', - 'type' => 'wysiwyg', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'tabs' => 'all', - 'toolbar' => 'full', - 'media_upload' => 0, - 'delay' => 0, - ], - ], - ], - ], - 'location' => [ - [ - [ - 'param' => 'page_template', - 'operator' => '==', - 'value' => 'page-inspections.php', - ], - ], - ], - 'menu_order' => 0, - 'position' => 'normal', - 'style' => 'default', - 'label_placement' => 'top', - 'instruction_placement' => 'label', - 'hide_on_screen' => '', - 'active' => 1, - 'description' => '', - ]); - } + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'maxlength' => '', + ], + [ + 'key' => 'field_5983429e85452', + 'label' => 'Failure criteria table', + 'name' => 'failure_criteria_table', + 'type' => 'repeater', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'collapsed' => '', + 'min' => 0, + 'max' => 0, + 'layout' => 'row', + 'button_label' => 'Add Row', + 'sub_fields' => [ + [ + 'key' => 'field_598342c585453', + 'label' => 'Criterion', + 'name' => 'criterion', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'maxlength' => '', + ], + [ + 'key' => 'field_598342ee85454', + 'label' => 'Explanation', + 'name' => 'explanation', + 'type' => 'wysiwyg', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'tabs' => 'all', + 'toolbar' => 'full', + 'media_upload' => 0, + 'delay' => 0, + ], + ], + ], + ], + 'location' => [ + [ + [ + 'param' => 'page_template', + 'operator' => '==', + 'value' => 'page-inspections.php', + ], + ], + ], + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => 1, + 'description' => '', + ]); + } - public function addHomePageFields() - { - acf_add_local_field_group([ - 'key' => 'group_5971ca59db830', - 'title' => 'Homepage services', - 'fields' => [ - [ - 'key' => 'field_5971ccdec65d9', - 'label' => 'Heading', - 'name' => 'heading', - 'type' => 'text', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'prepend' => '', - 'append' => '', - 'maxlength' => '', - ], - [ - 'key' => 'field_5971ca9692ec2', - 'label' => 'Services', - 'name' => 'services', - 'type' => 'repeater', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'collapsed' => '', - 'min' => 2, - 'max' => 2, - 'layout' => 'row', - 'button_label' => 'Add Service', - 'sub_fields' => [ - [ - 'key' => 'field_5971cb7c92ec3', - 'label' => 'Title', - 'name' => 'title', - 'type' => 'text', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'prepend' => '', - 'append' => '', - 'maxlength' => '', - ], - [ - 'key' => 'field_5971f03903de9', - 'label' => 'Link', - 'name' => 'link', - 'type' => 'page_link', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'post_type' => [ - ], - 'taxonomy' => [ - ], - 'allow_null' => 0, - 'allow_archives' => 1, - 'multiple' => 0, - ], - [ - 'key' => 'field_5971cc3292ec5', - 'label' => 'Icon name', - 'name' => 'icon_name', - 'type' => 'text', - 'instructions' => '\'Plug\' or \'info\'', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'prepend' => '', - 'append' => '', - 'maxlength' => '', - ], - [ - 'key' => 'field_5971cc3e92ec6', - 'label' => 'Description', - 'name' => 'description', - 'type' => 'wysiwyg', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'tabs' => 'all', - 'toolbar' => 'full', - 'media_upload' => 0, - 'delay' => 0, - ], - ], - ], - ], - 'location' => [ - [ - [ - 'param' => 'page_type', - 'operator' => '==', - 'value' => 'front_page', - ], - ], - ], - 'menu_order' => 0, - 'position' => 'normal', - 'style' => 'default', - 'label_placement' => 'top', - 'instruction_placement' => 'label', - 'hide_on_screen' => [ - 0 => 'the_content', - 1 => 'excerpt', - 2 => 'discussion', - 3 => 'comments', - ], - 'active' => 1, - 'description' => '', - ]); - } + public function addHomePageFields() + { + acf_add_local_field_group([ + 'key' => 'group_5971ca59db830', + 'title' => 'Homepage services', + 'fields' => [ + [ + 'key' => 'field_5971ccdec65d9', + 'label' => 'Heading', + 'name' => 'heading', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'maxlength' => '', + ], + [ + 'key' => 'field_5971ca9692ec2', + 'label' => 'Services', + 'name' => 'services', + 'type' => 'repeater', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'collapsed' => '', + 'min' => 2, + 'max' => 2, + 'layout' => 'row', + 'button_label' => 'Add Service', + 'sub_fields' => [ + [ + 'key' => 'field_5971cb7c92ec3', + 'label' => 'Title', + 'name' => 'title', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'maxlength' => '', + ], + [ + 'key' => 'field_5971f03903de9', + 'label' => 'Link', + 'name' => 'link', + 'type' => 'page_link', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'post_type' => [ + ], + 'taxonomy' => [ + ], + 'allow_null' => 0, + 'allow_archives' => 1, + 'multiple' => 0, + ], + [ + 'key' => 'field_5971cc3292ec5', + 'label' => 'Icon name', + 'name' => 'icon_name', + 'type' => 'text', + 'instructions' => '\'Plug\' or \'info\'', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'maxlength' => '', + ], + [ + 'key' => 'field_5971cc3e92ec6', + 'label' => 'Description', + 'name' => 'description', + 'type' => 'wysiwyg', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'tabs' => 'all', + 'toolbar' => 'full', + 'media_upload' => 0, + 'delay' => 0, + ], + ], + ], + ], + 'location' => [ + [ + [ + 'param' => 'page_type', + 'operator' => '==', + 'value' => 'front_page', + ], + ], + ], + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => [ + 0 => 'the_content', + 1 => 'excerpt', + 2 => 'discussion', + 3 => 'comments', + ], + 'active' => 1, + 'description' => '', + ]); + } - public function addPostFields() - { - if (function_exists("register_field_group")) { + public function addPostFields() + { + if (function_exists("register_field_group")) { - // Advisories + // Advisories - register_field_group([ - 'id' => 'acf_advisories', - 'title' => 'Advisory Details', - 'fields' => [ - [ - 'layout' => 'vertical', - 'choices' => [ - 'yes' => 'Yes', - 'no' => 'No', - ], - 'default_value' => '', - 'key' => 'field_11bef6fc3019a', - 'label' => 'Is it a WordPress plugin?', - 'name' => 'is_plugin', - 'type' => 'radio', - ], + register_field_group([ + 'id' => 'acf_advisories', + 'title' => 'Advisory Details', + 'fields' => [ + [ + 'layout' => 'vertical', + 'choices' => [ + 'yes' => 'Yes', + 'no' => 'No', + ], + 'default_value' => '', + 'key' => 'field_11bef6fc3019a', + 'label' => 'Is it a WordPress plugin?', + 'name' => 'is_plugin', + 'type' => 'radio', + ], - [ - 'default_value' => '', - 'formatting' => 'text', - 'key' => 'field_51beddd730196', - 'label' => 'Link', - 'instructions' => 'Use the directory link if it\'s a plugin', - 'name' => 'codex_link', - 'required' => true, - 'type' => 'text', - ], + [ + 'default_value' => '', + 'formatting' => 'text', + 'key' => 'field_51beddd730196', + 'label' => 'Link', + 'instructions' => 'Use the directory link if it\'s a plugin', + 'name' => 'codex_link', + 'required' => true, + 'type' => 'text', + ], - [ - 'default_value' => '', - 'formatting' => 'html', - 'key' => 'field_e9f7a6e31b782', - 'label' => 'Version', - 'name' => 'version', - 'type' => 'text', - ], + [ + 'default_value' => '', + 'formatting' => 'html', + 'key' => 'field_e9f7a6e31b782', + 'label' => 'Version', + 'name' => 'version', + 'type' => 'text', + ], - [ - 'default_value' => '', - 'formatting' => 'html', - 'key' => 'field_51bef80d01ef3', - 'label' => 'Component name', - 'name' => 'component', - 'type' => 'text', - ], - [ - 'default_value' => '', - 'formatting' => 'text', - 'key' => 'field_51bef52901ef3', - 'label' => 'CVE', - 'name' => 'cve', - 'type' => 'text', - ], - [ - 'toolbar' => 'full', - 'media_upload' => 'yes', - 'default_value' => '', - 'key' => 'field_51bef81601ef4', - 'label' => 'Description of issue', - 'name' => 'issue', - 'type' => 'wysiwyg', - 'instructions' => 'What\'s the problems?', - ], - [ - 'toolbar' => 'full', - 'media_upload' => 'yes', - 'default_value' => '', - 'key' => 'field_51bef8aa01ef4', - 'label' => 'Proof of concept', - 'name' => 'proof', - 'type' => 'wysiwyg', - 'instructions' => 'What are the steps to reproduce this issue?' - ], - [ - 'toolbar' => 'full', - 'media_upload' => 'yes', - 'default_value' => '', - 'key' => 'field_51befaaa01ef4', - 'label' => 'Mitigations/Recommended action', - 'name' => 'mitigations', - 'type' => 'wysiwyg', - 'instructions' => 'What should people do to stay safe?' - ], - [ - 'toolbar' => 'full', - 'media_upload' => 'yes', - 'default_value' => '', - 'key' => 'field_51befaaa01ff4', - 'label' => 'Timeline', - 'name' => 'timeline', - 'type' => 'wysiwyg', - 'instructions' => 'What happened when (reported, fix released, disclosed, etc)?' - ], - [ - 'key' => 'field_59d78986e0d0c', - 'label' => 'Hide CVSS score', - 'name' => 'hide_cvss_score', - 'type' => 'true_false', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'message' => '', - 'default_value' => 0, - 'ui' => 0, - 'ui_on_text' => '', - 'ui_off_text' => '', - ], - [ - 'multiple' => 0, - 'allow_null' => 0, - 'choices' => [ - '0.395' => 'Local', - '0.646' => 'Adjacent network', - '1.0' => 'Network', - ], - 'default_value' => '', - 'key' => 'field_51c89590ecd69', - 'label' => 'Access Vector', - 'name' => 'access_vector', - 'type' => 'select', - 'instructions' => '

The access vector (AV) shows how a vulnerability may be exploited.

+ [ + 'default_value' => '', + 'formatting' => 'html', + 'key' => 'field_51bef80d01ef3', + 'label' => 'Component name', + 'name' => 'component', + 'type' => 'text', + ], + [ + 'default_value' => '', + 'formatting' => 'text', + 'key' => 'field_51bef52901ef3', + 'label' => 'CVE', + 'name' => 'cve', + 'type' => 'text', + ], + [ + 'toolbar' => 'full', + 'media_upload' => 'yes', + 'default_value' => '', + 'key' => 'field_51bef81601ef4', + 'label' => 'Description of issue', + 'name' => 'issue', + 'type' => 'wysiwyg', + 'instructions' => 'What\'s the problems?', + ], + [ + 'toolbar' => 'full', + 'media_upload' => 'yes', + 'default_value' => '', + 'key' => 'field_51bef8aa01ef4', + 'label' => 'Proof of concept', + 'name' => 'proof', + 'type' => 'wysiwyg', + 'instructions' => 'What are the steps to reproduce this issue?' + ], + [ + 'toolbar' => 'full', + 'media_upload' => 'yes', + 'default_value' => '', + 'key' => 'field_51befaaa01ef4', + 'label' => 'Mitigations/Recommended action', + 'name' => 'mitigations', + 'type' => 'wysiwyg', + 'instructions' => 'What should people do to stay safe?' + ], + [ + 'toolbar' => 'full', + 'media_upload' => 'yes', + 'default_value' => '', + 'key' => 'field_51befaaa01ff4', + 'label' => 'Timeline', + 'name' => 'timeline', + 'type' => 'wysiwyg', + 'instructions' => 'What happened when (reported, fix released, disclosed, etc)?' + ], + [ + 'key' => 'field_59d78986e0d0c', + 'label' => 'Hide CVSS score', + 'name' => 'hide_cvss_score', + 'type' => 'true_false', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'message' => '', + 'default_value' => 0, + 'ui' => 0, + 'ui_on_text' => '', + 'ui_off_text' => '', + ], + [ + 'multiple' => 0, + 'allow_null' => 0, + 'choices' => [ + '0.395' => 'Local', + '0.646' => 'Adjacent network', + '1.0' => 'Network', + ], + 'default_value' => '', + 'key' => 'field_51c89590ecd69', + 'label' => 'Access Vector', + 'name' => 'access_vector', + 'type' => 'select', + 'instructions' => '

The access vector (AV) shows how a vulnerability may be exploited.

Local: The attacker must either have physical access to the vulnerable system (e.g. firewire attacks) or a local account (e.g. a privilege escalation attack).
Adjacent Network: The attacker must have access to the broadcast or collision domain of the vulnerable system.
Network: The vulnerable interface is remotely exploitable.

', - 'conditional_logic' => [ - [ - [ - 'field' => 'field_59d78986e0d0c', - 'operator' => '!=', - 'value' => '1', - ], - ], - ], - ], - [ - 'multiple' => 0, - 'allow_null' => 0, - 'choices' => [ - '0.35' => 'High', - '0.61' => 'Medium', - '0.71' => 'Low', - ], - 'default_value' => '', - 'key' => 'field_51c896b023544', - 'label' => 'Access Complexity', - 'name' => 'access_complexity', - 'type' => 'select', - 'instructions' => '

The access complexity metric describes how easy or difficult it is to exploit the discovered vulnerability.

+ 'conditional_logic' => [ + [ + [ + 'field' => 'field_59d78986e0d0c', + 'operator' => '!=', + 'value' => '1', + ], + ], + ], + ], + [ + 'multiple' => 0, + 'allow_null' => 0, + 'choices' => [ + '0.35' => 'High', + '0.61' => 'Medium', + '0.71' => 'Low', + ], + 'default_value' => '', + 'key' => 'field_51c896b023544', + 'label' => 'Access Complexity', + 'name' => 'access_complexity', + 'type' => 'select', + 'instructions' => '

The access complexity metric describes how easy or difficult it is to exploit the discovered vulnerability.

High: Specialised conditions exist, such as a race condition with a narrow window, or a requirement for social engineering methods that would be readily noticed by knowledgeable people.
Medium: There are some additional requirements for access, such as a limit on the origin of the attacks, or a requirement for the vulnerable system to be running with an uncommon, non-default configuration.
Low: There are no special conditions for access to the vulnerability, such as when the system is available to large numbers of users, or the vulnerable configuration is ubiquitous.

', - 'conditional_logic' => [ - [ - [ - 'field' => 'field_59d78986e0d0c', - 'operator' => '!=', - 'value' => '1', - ], - ], - ], - ], - [ - 'multiple' => 0, - 'allow_null' => 0, - 'choices' => [ - '0.45' => 'Multiple', - '0.56' => 'Single', - '0.704' => 'None', - ], - 'default_value' => '', - 'key' => 'field_51c8972523545', - 'label' => 'Authentication', - 'name' => 'authentication', - 'type' => 'select', - 'instructions' => '

The authentication metric describes the number of times that an attacker must authenticate to a target in order to be able to exploit it.

+ 'conditional_logic' => [ + [ + [ + 'field' => 'field_59d78986e0d0c', + 'operator' => '!=', + 'value' => '1', + ], + ], + ], + ], + [ + 'multiple' => 0, + 'allow_null' => 0, + 'choices' => [ + '0.45' => 'Multiple', + '0.56' => 'Single', + '0.704' => 'None', + ], + 'default_value' => '', + 'key' => 'field_51c8972523545', + 'label' => 'Authentication', + 'name' => 'authentication', + 'type' => 'select', + 'instructions' => '

The authentication metric describes the number of times that an attacker must authenticate to a target in order to be able to exploit it.

Multiple: Exploitation of the vulnerability requires that the attacker authenticate two or more times, even if the same credentials are used each time.
Single: The attacker must authenticate once in order to exploit the vulnerability.
None: There is no requirement for the attacker to authenticate.

', - 'conditional_logic' => [ - [ - [ - 'field' => 'field_59d78986e0d0c', - 'operator' => '!=', - 'value' => '1', - ], - ], - ], - ], - [ - 'multiple' => 0, - 'allow_null' => 0, - 'choices' => [ - '0.0' => 'None', - '0.275' => 'Partial', - '0.66' => 'Complete', - ], - 'default_value' => '', - 'key' => 'field_51c8977823546', - 'label' => 'Confidentiality', - 'name' => 'confidentiality', - 'type' => 'select', - 'instructions' => '

The confidentiality metric describes the impact on the confidentiality of data on or processed by the system.

+ 'conditional_logic' => [ + [ + [ + 'field' => 'field_59d78986e0d0c', + 'operator' => '!=', + 'value' => '1', + ], + ], + ], + ], + [ + 'multiple' => 0, + 'allow_null' => 0, + 'choices' => [ + '0.0' => 'None', + '0.275' => 'Partial', + '0.66' => 'Complete', + ], + 'default_value' => '', + 'key' => 'field_51c8977823546', + 'label' => 'Confidentiality', + 'name' => 'confidentiality', + 'type' => 'select', + 'instructions' => '

The confidentiality metric describes the impact on the confidentiality of data on or processed by the system.

None: There is no impact on the confidentiality of the system.
Partial: There is considerable disclosure of information, but the scope of the loss is constrained such that not all of the data is available.
Complete: There is total information disclosure, providing access to any / all data on the system.

', - 'conditional_logic' => [ - [ - [ - 'field' => 'field_59d78986e0d0c', - 'operator' => '!=', - 'value' => '1', - ], - ], - ], - ], - [ - 'multiple' => 0, - 'allow_null' => 0, - 'choices' => [ - '0.0' => 'None', - '0.275' => 'Partial', - '0.66' => 'Complete', - ], - 'default_value' => '', - 'key' => 'field_51c897ef23547', - 'label' => 'Integrity', - 'name' => 'integrity', - 'type' => 'select', - 'instructions' => '

The Integrity metric describes the impact on the integrity of the exploited system.

+ 'conditional_logic' => [ + [ + [ + 'field' => 'field_59d78986e0d0c', + 'operator' => '!=', + 'value' => '1', + ], + ], + ], + ], + [ + 'multiple' => 0, + 'allow_null' => 0, + 'choices' => [ + '0.0' => 'None', + '0.275' => 'Partial', + '0.66' => 'Complete', + ], + 'default_value' => '', + 'key' => 'field_51c897ef23547', + 'label' => 'Integrity', + 'name' => 'integrity', + 'type' => 'select', + 'instructions' => '

The Integrity metric describes the impact on the integrity of the exploited system.

None: There is no impact on the integrity of the system.
Partial: Modification of some data or system files is possible, but the scope of the modification is limited.
Complete: There is total loss of integrity; the attacker can modify any files or information on the target system.

', - 'conditional_logic' => [ - [ - [ - 'field' => 'field_59d78986e0d0c', - 'operator' => '!=', - 'value' => '1', - ], - ], - ], - ], - [ - 'multiple' => 0, - 'allow_null' => 0, - 'choices' => [ - '0.0' => 'None', - '0.275' => 'Partial', - '0.66' => 'Complete', - ], - 'default_value' => '', - 'key' => 'field_51c898776db2e', - 'label' => 'Availability', - 'name' => 'availability', - 'type' => 'select', - 'instructions' => '

The availability metric describes the impact on the availability of the target system. Attacks that consume network bandwidth, processor cycles, memory or any other resources will affect the availability of a system.

+ 'conditional_logic' => [ + [ + [ + 'field' => 'field_59d78986e0d0c', + 'operator' => '!=', + 'value' => '1', + ], + ], + ], + ], + [ + 'multiple' => 0, + 'allow_null' => 0, + 'choices' => [ + '0.0' => 'None', + '0.275' => 'Partial', + '0.66' => 'Complete', + ], + 'default_value' => '', + 'key' => 'field_51c898776db2e', + 'label' => 'Availability', + 'name' => 'availability', + 'type' => 'select', + 'instructions' => '

The availability metric describes the impact on the availability of the target system. Attacks that consume network bandwidth, processor cycles, memory or any other resources will affect the availability of a system.

None: There is no impact on the availability of the system.
Partial: There is reduced performance or loss of some functionality.
Complete: There is total loss of availability of the attacked resource.

', - 'conditional_logic' => [ - [ - [ - 'field' => 'field_59d78986e0d0c', - 'operator' => '!=', - 'value' => '1', - ], - ], - ], - ], + 'conditional_logic' => [ + [ + [ + 'field' => 'field_59d78986e0d0c', + 'operator' => '!=', + 'value' => '1', + ], + ], + ], + ], - [ - 'layout' => 'horizontal', - 'choices' => [ - 'identified' => 'Identified', - 'reported' => 'Reported', - 'fixed' => 'Fixed', - ], - 'default_value' => '', - 'key' => 'field_51baaaa30199', - 'label' => 'Workflow state', - 'name' => 'workflow_state', - 'type' => 'radio', - ], - ], - 'location' => [ - [ - [ - 'param' => 'post_type', - 'operator' => '==', - 'value' => 'advisories', - 'order_no' => 0, - 'group_no' => 0, - ], - ], - ], - 'options' => [ - 'position' => 'normal', - 'layout' => 'default', - 'hide_on_screen' => [ - 0 => 'the_content', - ], - ], - 'menu_order' => 0, - ]); + [ + 'layout' => 'horizontal', + 'choices' => [ + 'identified' => 'Identified', + 'reported' => 'Reported', + 'fixed' => 'Fixed', + ], + 'default_value' => '', + 'key' => 'field_51baaaa30199', + 'label' => 'Workflow state', + 'name' => 'workflow_state', + 'type' => 'radio', + ], + ], + 'location' => [ + [ + [ + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'advisories', + 'order_no' => 0, + 'group_no' => 0, + ], + ], + ], + 'options' => [ + 'position' => 'normal', + 'layout' => 'default', + 'hide_on_screen' => [ + 0 => 'the_content', + ], + ], + 'menu_order' => 0, + ]); - // Plugins + // Plugins - register_field_group([ - 'id' => 'acf_plugins', - 'title' => 'Plugin Results', - 'fields' => [ - [ - 'default_value' => '', - 'formatting' => 'html', - 'key' => 'field_51bef6c730196', - 'type' => 'text', - 'label' => 'Plugin link', - 'instructions' => 'Use the directory link if possible', - 'name' => 'codex_link', - 'required' => true, - ], - [ - 'default_value' => '', - 'formatting' => 'html', - 'key' => 'field_51bef3cd30191', - 'label' => 'Name of plugin', - 'required' => true, - 'name' => 'name_of_plugin', - 'type' => 'text', - ], - [ - 'default_value' => '', - 'formatting' => 'html', - 'key' => 'field_585bbf7cc7f03', - 'label' => 'Plugin slug', - 'required' => true, - 'name' => 'slug', - 'type' => 'text', - 'instructions' => 'For plugins in dxw\'s repo this should match the repo name. + register_field_group([ + 'id' => 'acf_plugins', + 'title' => 'Plugin Results', + 'fields' => [ + [ + 'default_value' => '', + 'formatting' => 'html', + 'key' => 'field_51bef6c730196', + 'type' => 'text', + 'label' => 'Plugin link', + 'instructions' => 'Use the directory link if possible', + 'name' => 'codex_link', + 'required' => true, + ], + [ + 'default_value' => '', + 'formatting' => 'html', + 'key' => 'field_51bef3cd30191', + 'label' => 'Name of plugin', + 'required' => true, + 'name' => 'name_of_plugin', + 'type' => 'text', + ], + [ + 'default_value' => '', + 'formatting' => 'html', + 'key' => 'field_585bbf7cc7f03', + 'label' => 'Plugin slug', + 'required' => true, + 'name' => 'slug', + 'type' => 'text', + 'instructions' => 'For plugins in dxw\'s repo this should match the repo name. For directory plugins this usually matches the last part of the URL', - ], - [ - 'default_value' => '', - 'formatting' => 'html', - 'key' => 'field_51bef66430192', - 'required' => true, - 'label' => 'Versions of plugin checked', - 'name' => 'version_of_plugin', - 'instructions' => 'Comma separated list, no spaces, eg: 1.0,1.1,1.6', - 'type' => 'text', - ], - [ - 'default_value' => '', - 'formatting' => 'html', - 'key' => 'field_51bef6ae30195', - 'label' => 'Author', - 'name' => 'author', - 'type' => 'text', - ], - [ - 'media_upload' => 'no', - 'default_value' => '', - 'key' => 'field_51bef69830194', - 'label' => 'Plugin description', - 'name' => 'description', - 'type' => 'text', - ], - [ - 'layout' => 'horizontal', - 'choices' => [ - 'inspected' => 'Inspected', - 'codereviewed' => 'Code Reviewed', - ], - 'default_value' => '', - 'key' => 'field_51bef74030199', - 'label' => 'Assurance level', - 'name' => 'assurance_level', - 'type' => 'radio', - ], - [ - 'toolbar' => 'full', - 'media_upload' => 'no', - 'default_value' => '', - 'key' => 'field_51beccc830194', - 'label' => 'Pluginscan output', - 'name' => 'pluginscan_output', - 'type' => 'textarea', - ], - [ - 'default_value' => '', - 'key' => 'field_51bef7de30000', - 'label' => 'Private notes', - 'name' => 'private_notes', - 'type' => 'textarea', - 'instructions' => 'Notes for yourself, or other testers. Will not be published.', - ], - [ - 'layout' => 'vertical', - 'choices' => [ - 'a' => 'Lack of input sanitisation', - 'b' => 'Execution of unprepared SQL statements', - 'c' => 'Unsafe generation of PHP code', - 'd' => 'Poor coding style', - 'e' => 'Poor architecture', - 'f' => 'Failure to use available core functionality', - 'g' => 'Unsafe request processing', - 'h' => 'Unsafe file or network IO', - 'i' => 'Lack of proper output escaping', - 'j' => 'Unsafe execution of system commands', - 'k' => 'Potential compatibility issues', - 'k' => 'Very large codebase', - ], - 'default_value' => '', - 'key' => 'field_51bef6fc3019a', - 'label' => 'Matched criteria', - 'name' => 'matched_criteria', - 'type' => 'checkbox', - ], - [ - 'toolbar' => 'full', - 'media_upload' => 'yes', - 'default_value' => '', - 'key' => 'field_51bef6de30197', - 'label' => 'Findings', - 'name' => 'findings', - 'type' => 'wysiwyg', - ], - [ - 'key' => 'field_51bef6fc30198', - 'label' => 'Recommendation', - 'name' => 'recommendation', - 'type' => 'radio', - 'choices' => [ - 'green' => 'No issues found', - 'yellow' => 'Use with caution', - 'red' => 'Potentially unsafe', - ], - 'other_choice' => 0, - 'save_other_choice' => 0, - 'default_value' => '', - 'layout' => 'vertical', - ], - [ - 'key' => 'field_51bef6de30022', - 'label' => 'Recommendation criterion', - 'name' => 'recommendation_criterion_yellow', - 'type' => 'radio', - 'conditional_logic' => [ - 'status' => 1, - 'rules' => [ - [ - 'field' => 'field_51bef6fc30198', - 'operator' => '==', - 'value' => 'yellow', - ], - ], - 'allorany' => 'all', - ], - 'choices' => [ - 'e' => 'The plugin contains or is likely to contain a vulnerability which could be exploited by a privileged user to affect the site’s confidentiality, integrity or availability in a manner exceeding their privileges', - 'a' => 'The plugin appears not to be vulnerable, but could interact with another component in such a way as to become vulnerable', - 'b' => 'The plugin meets a large number of failure criteria and is of poor quality, leading the tester to fear that subsequent versions of the plugin are likely to introduce vulnerabilities', - 'c' => 'The plugin is written such that its expected, ordinary use is likely to harm the site’s performance', - 'd' => 'The plugin has been given this recommendation at the tester\'s discretion', - ], - 'other_choice' => 0, - 'save_other_choice' => 0, - 'default_value' => '', - 'layout' => 'vertical', - ], - [ - 'key' => 'field_51bef6de30011', - 'label' => 'Recommendation criterion', - 'name' => 'recommendation_criterion_red', - 'type' => 'radio', - 'conditional_logic' => [ - 'status' => 1, - 'rules' => [ - [ - 'field' => 'field_51bef6fc30198', - 'operator' => '==', - 'value' => 'red', - ], - ], - 'allorany' => 'all', - ], - 'choices' => [ - 'a' => 'The plugin contains or is likely to contain a vulnerability which could be exploited by an end user and which would compromise the site’s confidentiality, integrity or availability', - 'c' => 'The plugin is written such that its expected, ordinary use could affect the site’s confidentiality, integrity or availability', - 'd' => 'The plugin has been given this recommendation at the tester\'s discretion', - ], - 'other_choice' => 0, - 'save_other_choice' => 0, - 'default_value' => '', - 'layout' => 'vertical', - ], - [ - 'key' => 'field_51bef6de30000', - 'label' => 'Reason', - 'name' => 'reason', - 'type' => 'wysiwyg', - 'instructions' => 'What\'s the specific reason for the yellow or red recommendation?', - 'conditional_logic' => [ - 'status' => 1, - 'rules' => [ - [ - 'field' => 'field_51bef6fc30198', - 'operator' => '==', - 'value' => 'yellow', - ], - [ - 'field' => 'field_51bef6fc30198', - 'operator' => '==', - 'value' => 'red', - ], - ], - 'allorany' => 'any', - ], - 'default_value' => '', - 'toolbar' => 'full', - 'media_upload' => 'yes', - ], - ], - 'location' => [ - [ - [ - 'param' => 'post_type', - 'operator' => '==', - 'value' => 'plugins', - 'order_no' => 0, - 'group_no' => 0, - ], - ], - ], - 'options' => [ - 'position' => 'normal', - 'layout' => 'default', - 'hide_on_screen' => [ - 0 => 'the_content', - ], - ], - 'menu_order' => 0, - ]); - } - } + ], + [ + 'default_value' => '', + 'formatting' => 'html', + 'key' => 'field_51bef66430192', + 'required' => true, + 'label' => 'Versions of plugin checked', + 'name' => 'version_of_plugin', + 'instructions' => 'Comma separated list, no spaces, eg: 1.0,1.1,1.6', + 'type' => 'text', + ], + [ + 'default_value' => '', + 'formatting' => 'html', + 'key' => 'field_51bef6ae30195', + 'label' => 'Author', + 'name' => 'author', + 'type' => 'text', + ], + [ + 'media_upload' => 'no', + 'default_value' => '', + 'key' => 'field_51bef69830194', + 'label' => 'Plugin description', + 'name' => 'description', + 'type' => 'text', + ], + [ + 'layout' => 'horizontal', + 'choices' => [ + 'inspected' => 'Inspected', + 'codereviewed' => 'Code Reviewed', + ], + 'default_value' => '', + 'key' => 'field_51bef74030199', + 'label' => 'Assurance level', + 'name' => 'assurance_level', + 'type' => 'radio', + ], + [ + 'toolbar' => 'full', + 'media_upload' => 'no', + 'default_value' => '', + 'key' => 'field_51beccc830194', + 'label' => 'Pluginscan output', + 'name' => 'pluginscan_output', + 'type' => 'textarea', + ], + [ + 'default_value' => '', + 'key' => 'field_51bef7de30000', + 'label' => 'Private notes', + 'name' => 'private_notes', + 'type' => 'textarea', + 'instructions' => 'Notes for yourself, or other testers. Will not be published.', + ], + [ + 'layout' => 'vertical', + 'choices' => [ + 'a' => 'Lack of input sanitisation', + 'b' => 'Execution of unprepared SQL statements', + 'c' => 'Unsafe generation of PHP code', + 'd' => 'Poor coding style', + 'e' => 'Poor architecture', + 'f' => 'Failure to use available core functionality', + 'g' => 'Unsafe request processing', + 'h' => 'Unsafe file or network IO', + 'i' => 'Lack of proper output escaping', + 'j' => 'Unsafe execution of system commands', + 'k' => 'Potential compatibility issues', + 'k' => 'Very large codebase', + ], + 'default_value' => '', + 'key' => 'field_51bef6fc3019a', + 'label' => 'Matched criteria', + 'name' => 'matched_criteria', + 'type' => 'checkbox', + ], + [ + 'toolbar' => 'full', + 'media_upload' => 'yes', + 'default_value' => '', + 'key' => 'field_51bef6de30197', + 'label' => 'Findings', + 'name' => 'findings', + 'type' => 'wysiwyg', + ], + [ + 'key' => 'field_51bef6fc30198', + 'label' => 'Recommendation', + 'name' => 'recommendation', + 'type' => 'radio', + 'choices' => [ + 'green' => 'No issues found', + 'yellow' => 'Use with caution', + 'red' => 'Potentially unsafe', + ], + 'other_choice' => 0, + 'save_other_choice' => 0, + 'default_value' => '', + 'layout' => 'vertical', + ], + [ + 'key' => 'field_51bef6de30022', + 'label' => 'Recommendation criterion', + 'name' => 'recommendation_criterion_yellow', + 'type' => 'radio', + 'conditional_logic' => [ + 'status' => 1, + 'rules' => [ + [ + 'field' => 'field_51bef6fc30198', + 'operator' => '==', + 'value' => 'yellow', + ], + ], + 'allorany' => 'all', + ], + 'choices' => [ + 'e' => 'The plugin contains or is likely to contain a vulnerability which could be exploited by a privileged user to affect the site’s confidentiality, integrity or availability in a manner exceeding their privileges', + 'a' => 'The plugin appears not to be vulnerable, but could interact with another component in such a way as to become vulnerable', + 'b' => 'The plugin meets a large number of failure criteria and is of poor quality, leading the tester to fear that subsequent versions of the plugin are likely to introduce vulnerabilities', + 'c' => 'The plugin is written such that its expected, ordinary use is likely to harm the site’s performance', + 'd' => 'The plugin has been given this recommendation at the tester\'s discretion', + ], + 'other_choice' => 0, + 'save_other_choice' => 0, + 'default_value' => '', + 'layout' => 'vertical', + ], + [ + 'key' => 'field_51bef6de30011', + 'label' => 'Recommendation criterion', + 'name' => 'recommendation_criterion_red', + 'type' => 'radio', + 'conditional_logic' => [ + 'status' => 1, + 'rules' => [ + [ + 'field' => 'field_51bef6fc30198', + 'operator' => '==', + 'value' => 'red', + ], + ], + 'allorany' => 'all', + ], + 'choices' => [ + 'a' => 'The plugin contains or is likely to contain a vulnerability which could be exploited by an end user and which would compromise the site’s confidentiality, integrity or availability', + 'c' => 'The plugin is written such that its expected, ordinary use could affect the site’s confidentiality, integrity or availability', + 'd' => 'The plugin has been given this recommendation at the tester\'s discretion', + ], + 'other_choice' => 0, + 'save_other_choice' => 0, + 'default_value' => '', + 'layout' => 'vertical', + ], + [ + 'key' => 'field_51bef6de30000', + 'label' => 'Reason', + 'name' => 'reason', + 'type' => 'wysiwyg', + 'instructions' => 'What\'s the specific reason for the yellow or red recommendation?', + 'conditional_logic' => [ + 'status' => 1, + 'rules' => [ + [ + 'field' => 'field_51bef6fc30198', + 'operator' => '==', + 'value' => 'yellow', + ], + [ + 'field' => 'field_51bef6fc30198', + 'operator' => '==', + 'value' => 'red', + ], + ], + 'allorany' => 'any', + ], + 'default_value' => '', + 'toolbar' => 'full', + 'media_upload' => 'yes', + ], + ], + 'location' => [ + [ + [ + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'plugins', + 'order_no' => 0, + 'group_no' => 0, + ], + ], + ], + 'options' => [ + 'position' => 'normal', + 'layout' => 'default', + 'hide_on_screen' => [ + 0 => 'the_content', + ], + ], + 'menu_order' => 0, + ]); + } + } } diff --git a/wp-content/themes/dxw-security-2017/app/Posts/PostTypes.php b/wp-content/themes/dxw-security-2017/app/Posts/PostTypes.php index 6298e3c6..b3f836fc 100644 --- a/wp-content/themes/dxw-security-2017/app/Posts/PostTypes.php +++ b/wp-content/themes/dxw-security-2017/app/Posts/PostTypes.php @@ -4,147 +4,144 @@ class PostTypes implements \Dxw\Iguana\Registerable { - public function register() - { - add_action('init', [$this, 'addPluginsPostType']); - add_action('init', [$this, 'manageEditPluginsColumns']); - add_action('init', [$this, 'managePluginsColumn']); - add_action('init', [$this, 'addAdvisoriesPostType']); - add_action('init', [$this, 'advisoryFirstPublishDate']); - add_action('init', [$this, 'manageEditAdvisoriesColumns']); - add_action('init', [$this, 'manageAdvisoriesColumn']); - } - - public function addPluginsPostType() - { - register_post_type( - 'plugins', - [ - 'labels' => [ - 'name' => 'Inspections', - 'singular_name' => 'Inspection' - ], - 'supports' => ['author', 'revisions', 'title'], - 'public' => true, - 'has_archive' => true, - ] - ); - } - - public function manageEditPluginsColumns() - { - add_filter('manage_edit-plugins_columns', function ($columns) { - $new_columns = [ - 'cb' => $columns['cb'], - 'title' => $columns['title'], - 'version' => 'Versions', - 'author' => 'Author', - 'result' => 'Recommendation', - 'date' => $columns['date'], - ]; - - return $new_columns; - }); - } - - public function managePluginsColumn() - { - add_action('manage_plugins_posts_custom_column', function ($column, $post_id) { - switch ($column) { - case 'result': echo h()->the_short_recommendation($post_id); - break; - case 'version': echo str_replace(',', ', ', get_field('version_of_plugin', $post_id)); - break; - } - }, 10, 2); - } - - public function addAdvisoriesPostType() - { - register_post_type( - 'advisories', - [ - 'labels' => [ - 'name' => 'Advisories', - 'singular_name' => 'Advisory' - ], - 'public' => true, - 'has_archive' => true, - 'supports' => ['author', 'revisions', 'title'], - ] - ); - } - - public function advisoryFirstPublishDate() - { - add_filter('wp_insert_post', function ($post_id, $post, $update) { - // Save the date of first publication for the advisory ID - if ($post->post_type == 'advisories' && !$update) { - add_post_meta($post_id, '_first_published', $post->post_date); - } - }, 3, 10); - } - - public function manageEditAdvisoriesColumns() - { - add_filter('manage_edit-advisories_columns', function ($columns) { - $new_columns = [ - 'cb' => $columns['cb'], - 'title' => $columns['title'], - 'author' => 'Author', - 'workflow' => 'Workflow', - 'age' => 'Age', - 'action' => 'Next action', - 'date' => $columns['date'], - ]; - - return $new_columns; - }); - } - - public function manageAdvisoriesColumn() - { - add_action('manage_advisories_posts_custom_column', function ($column, $post_id) { - $advisory = get_post($post_id); - - switch ($column) { - case 'workflow': echo ucfirst(get_field('workflow_state', $post_id)); - break; - case 'age': - echo $this->advisoryAge($advisory) . ' days'; - break; - - case 'action': - $state = get_field('workflow_state', $post_id); - $age = $this->advisoryAge($advisory); - - if ($advisory->post_status == 'draft') { - echo "Finish the advisory and publish privately"; - } elseif ($advisory->post_status == 'publish') { - echo "No further action"; - } else { - if ($state == 'identified') { - echo "Report to vendor"; - } elseif ($state == 'reported') { - if ($age <= 14) { - echo "Work with vendor to fix the problem"; - } elseif ($age > 14 && $age <= 60) { - echo "Publish on agreed date, or on a reasonable date if no agreement"; - } else { - echo "Publish immediately"; - } - } elseif ($state == 'fixed') { - echo "Publish"; - } - } - - break; - } - }, 10, 2); - } - - public function advisoryAge($advisory) - { - return round((time() - strtotime($advisory->post_date)) / 86400); - } + public function register() + { + add_action('init', [$this, 'addPluginsPostType']); + add_action('init', [$this, 'manageEditPluginsColumns']); + add_action('init', [$this, 'managePluginsColumn']); + add_action('init', [$this, 'addAdvisoriesPostType']); + add_action('init', [$this, 'advisoryFirstPublishDate']); + add_action('init', [$this, 'manageEditAdvisoriesColumns']); + add_action('init', [$this, 'manageAdvisoriesColumn']); + } + + public function addPluginsPostType() + { + register_post_type( + 'plugins', + [ + 'labels' => [ + 'name' => 'Inspections', + 'singular_name' => 'Inspection' + ], + 'supports' => ['author', 'revisions', 'title'], + 'public' => true, + 'has_archive' => true, + ] + ); + } + + public function manageEditPluginsColumns() + { + add_filter('manage_edit-plugins_columns', function ($columns) { + $new_columns = [ + 'cb' => $columns['cb'], + 'title' => $columns['title'], + 'version' => 'Versions', + 'author' => 'Author', + 'result' => 'Recommendation', + 'date' => $columns['date'], + ]; + + return $new_columns; + }); + } + + public function managePluginsColumn() + { + add_action('manage_plugins_posts_custom_column', function ($column, $post_id) { + switch ($column) { + case 'result': echo h()->the_short_recommendation($post_id); break; + case 'version': echo str_replace(',', ', ', get_field('version_of_plugin', $post_id)); break; + } + }, 10, 2); + } + + public function addAdvisoriesPostType() + { + register_post_type( + 'advisories', + [ + 'labels' => [ + 'name' => 'Advisories', + 'singular_name' => 'Advisory' + ], + 'public' => true, + 'has_archive' => true, + 'supports' => ['author', 'revisions', 'title'], + ] + ); + } + + public function advisoryFirstPublishDate() + { + add_filter('wp_insert_post', function ($post_id, $post, $update) { + // Save the date of first publication for the advisory ID + if ($post->post_type == 'advisories' && !$update) { + add_post_meta($post_id, '_first_published', $post->post_date); + } + }, 3, 10); + } + + public function manageEditAdvisoriesColumns() + { + add_filter('manage_edit-advisories_columns', function ($columns) { + $new_columns = [ + 'cb' => $columns['cb'], + 'title' => $columns['title'], + 'author' => 'Author', + 'workflow' => 'Workflow', + 'age' => 'Age', + 'action' => 'Next action', + 'date' => $columns['date'], + ]; + + return $new_columns; + }); + } + + public function manageAdvisoriesColumn() + { + add_action('manage_advisories_posts_custom_column', function ($column, $post_id) { + $advisory = get_post($post_id); + + switch ($column) { + case 'workflow': echo ucfirst(get_field('workflow_state', $post_id)); break; + case 'age': + echo $this->advisoryAge($advisory) . ' days'; + break; + + case 'action': + $state = get_field('workflow_state', $post_id); + $age = $this->advisoryAge($advisory); + + if ($advisory->post_status == 'draft') { + echo "Finish the advisory and publish privately"; + } elseif ($advisory->post_status == 'publish') { + echo "No further action"; + } else { + if ($state == 'identified') { + echo "Report to vendor"; + } elseif ($state == 'reported') { + if ($age <= 14) { + echo "Work with vendor to fix the problem"; + } elseif ($age > 14 && $age <= 60) { + echo "Publish on agreed date, or on a reasonable date if no agreement"; + } else { + echo "Publish immediately"; + } + } elseif ($state == 'fixed') { + echo "Publish"; + } + } + + break; + } + }, 10, 2); + } + + public function advisoryAge($advisory) + { + return round((time() - strtotime($advisory->post_date)) / 86400); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/Feeds.php b/wp-content/themes/dxw-security-2017/app/Theme/Feeds.php index 23d8ee0f..bf1aafe2 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/Feeds.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/Feeds.php @@ -4,16 +4,16 @@ class Feeds implements \Dxw\Iguana\Registerable { - public function register() - { - add_action('wp_head', [$this, 'wp_head']); - } + public function register() + { + add_action('wp_head', [$this, 'wp_head']); + } - public function wp_head() - { - ?> + public function wp_head() + { + ?> + public function wpFooter() + { + ?> helpers = $helpers; - } - - public function register() - { - $this->helpers->registerFunction('the_title_for_email', [$this, 'the_title_for_email']); - $this->helpers->registerFunction('the_advisory_id', [$this, 'the_advisory_id']); - $this->helpers->registerFunction('the_short_recommendation', [$this, 'the_short_recommendation']); - $this->helpers->registerFunction('the_recommendation', [$this, 'the_recommendation']); - $this->helpers->registerFunction('recommendation_data', [$this, 'recommendation_data']); - $this->helpers->registerFunction('get_field_label', [$this, 'get_field_label']); - $this->helpers->registerFunction('the_field_label', [$this, 'the_field_label']); - $this->helpers->registerFunction('the_other_versions', [$this, 'the_other_versions']); - $this->helpers->registerFunction('get_plugin_vulnerabilities', [$this, 'get_plugin_vulnerabilities']); - $this->helpers->registerFunction('the_plugin_vulnerabilities', [$this, 'the_plugin_vulnerabilities']); - $this->helpers->registerFunction('get_cvss_score', [$this, 'get_cvss_score']); - $this->helpers->registerFunction('the_cvss_score', [$this, 'the_cvss_score']); - $this->helpers->registerFunction('get_cvss_severity', [$this, 'get_cvss_severity']); - $this->helpers->registerFunction('the_cvss_severity', [$this, 'the_cvss_severity']); - } - - public function the_title_for_email($post_id = 0) - { - echo preg_replace("/^Private: /", "", get_the_title($post_id)); - - if (get_field('is_plugin', $post_id) == 'yes') { - echo " (WordPress plugin)"; - } - } - - public function the_advisory_id($post_id = 0) - { - global $post; - - if (!$post_id) { - $post_id = $post->ID; - } - - $date = get_post_meta($post_id, '_first_published', true); - - echo "dxw-" . date('Y', strtotime($date)) . "-" . $post_id; - } - - public function the_short_recommendation($post_id = 0) - { - $recommendation = $this->recommendation_data(get_field('recommendation', $post_id)); ?> + private $helpers; + + public function __construct(\Dxw\Iguana\Theme\Helpers $helpers) + { + $this->helpers = $helpers; + } + + public function register() + { + $this->helpers->registerFunction('the_title_for_email', [$this, 'the_title_for_email']); + $this->helpers->registerFunction('the_advisory_id', [$this, 'the_advisory_id']); + $this->helpers->registerFunction('the_short_recommendation', [$this, 'the_short_recommendation']); + $this->helpers->registerFunction('the_recommendation', [$this, 'the_recommendation']); + $this->helpers->registerFunction('recommendation_data', [$this, 'recommendation_data']); + $this->helpers->registerFunction('get_field_label', [$this, 'get_field_label']); + $this->helpers->registerFunction('the_field_label', [$this, 'the_field_label']); + $this->helpers->registerFunction('the_other_versions', [$this, 'the_other_versions']); + $this->helpers->registerFunction('get_plugin_vulnerabilities', [$this, 'get_plugin_vulnerabilities']); + $this->helpers->registerFunction('the_plugin_vulnerabilities', [$this, 'the_plugin_vulnerabilities']); + $this->helpers->registerFunction('get_cvss_score', [$this, 'get_cvss_score']); + $this->helpers->registerFunction('the_cvss_score', [$this, 'the_cvss_score']); + $this->helpers->registerFunction('get_cvss_severity', [$this, 'get_cvss_severity']); + $this->helpers->registerFunction('the_cvss_severity', [$this, 'the_cvss_severity']); + } + + public function the_title_for_email($post_id = 0) + { + echo preg_replace("/^Private: /", "", get_the_title($post_id)); + + if (get_field('is_plugin', $post_id) == 'yes') { + echo " (WordPress plugin)"; + } + } + + public function the_advisory_id($post_id = 0) + { + global $post; + + if (!$post_id) { + $post_id = $post->ID; + } + + $date = get_post_meta($post_id, '_first_published', true); + + echo "dxw-" . date('Y', strtotime($date)) . "-" . $post_id; + } + + public function the_short_recommendation($post_id = 0) + { + $recommendation = $this->recommendation_data(get_field('recommendation', $post_id)); ?>

- name ?>

recommendation_data(get_field('recommendation')); - $assurance = get_field('assurance_level'); - - if ($assurance == 'codereviewed') { - $assurance_level = 'High'; - $assurance = 'This plugin has been given a thorough, line-by-line review.'; - } else { - $assurance_level = 'Medium'; - $assurance = 'This plugin has been given a short, targeted code review.'; - } ?> + } + + public function the_recommendation() + { + $recommendation = $this->recommendation_data(get_field('recommendation')); + $assurance = get_field('assurance_level'); + + if ($assurance == 'codereviewed') { + $assurance_level = 'High'; + $assurance = 'This plugin has been given a thorough, line-by-line review.'; + } else { + $assurance_level = 'Medium'; + $assurance = 'This plugin has been given a short, targeted code review.'; + } ?>

name ?>

Last revised:

@@ -81,137 +81,137 @@ public function the_recommendation()

text ?> Read more about this recommendation.

name = 'Potentially unsafe'; - $data->slug = 'unsafe'; - $data->text = 'Before using this plugin, you should very carefully consider its potential problems and should conduct a thorough assessment.'; - break; - case 'yellow': - $data->name = 'Use with caution'; - $data->slug = 'caution'; - $data->text = 'Before using this plugin, you should carefully consider these findings.'; - break; - case 'green': - $data->name = 'No issues found'; - $data->slug = 'good'; - $data->text = "We didn't find anything worrying in this plugin. It's probably safe."; - break; - } - - return $data; - } - - public function get_field_label($field_key, $post_id = null, $options = []) - { - global $post; - $field = get_field_object($field_key, $post_id, $options); - - if (is_array($field['value'])) { - $labels = []; - foreach ($field['value'] as $i => $value) { - $labels[$value] = $field['choices'][$value]; - } - - return $labels; - } - - return isset($field['choices'][$field['value']]) ? $field['choices'][$field['value']] : ''; - } - - public function the_field_label($field_key, $post_id = null, $options = []) - { - echo $this->get_field_label($field_key, $post_id, $options); - } - - public function the_other_versions() - { - $posts = get_posts([ - 'post_type' => 'plugins', - 'meta_key' => 'codex_link', - 'meta_value' => get_field('codex_link') - ]); - - if (count($posts) <= 1) { - ?>
None listed
ID == get_the_id()) { - continue; - } ?> + } + + public function recommendation_data($recommendation) + { + $data = new \stdClass(); + + switch ($recommendation) { + case 'red': + $data->name = 'Potentially unsafe'; + $data->slug = 'unsafe'; + $data->text = 'Before using this plugin, you should very carefully consider its potential problems and should conduct a thorough assessment.'; + break; + case 'yellow': + $data->name = 'Use with caution'; + $data->slug = 'caution'; + $data->text = 'Before using this plugin, you should carefully consider these findings.'; + break; + case 'green': + $data->name = 'No issues found'; + $data->slug = 'good'; + $data->text = "We didn't find anything worrying in this plugin. It's probably safe."; + break; + } + + return $data; + } + + public function get_field_label($field_key, $post_id = null, $options = []) + { + global $post; + $field = get_field_object($field_key, $post_id, $options); + + if (is_array($field['value'])) { + $labels = []; + foreach ($field['value'] as $i => $value) { + $labels[$value] = $field['choices'][$value]; + } + + return $labels; + } + + return isset($field['choices'][$field['value']]) ? $field['choices'][$field['value']] : ''; + } + + public function the_field_label($field_key, $post_id = null, $options = []) + { + echo $this->get_field_label($field_key, $post_id, $options); + } + + public function the_other_versions() + { + $posts = get_posts([ + 'post_type' => 'plugins', + 'meta_key' => 'codex_link', + 'meta_value' => get_field('codex_link') + ]); + + if (count($posts) <= 1) { + ?>
None listed
ID == get_the_id()) { + continue; + } ?>
post_title; ?>
'advisories', - 'meta_query' => [ - 'relation' => 'and', - [ - 'key' => 'codex_link', - 'value' => $codex_link, - 'compare' => '=' - ], - [ - 'key' => 'is_plugin', - 'value' => 'yes', - 'compare' => '=' - ], - [ - 'key' => 'version', - 'value' => explode(',', $version), - 'compare' => 'IN' - ] - ] - ]); - } - - public function the_plugin_vulnerabilities() - { - return $this->get_plugin_vulnerabilities(get_field('codex_link'), get_field('version_of_plugin')); - } - - public function get_cvss_score() - { - $exploitability = 20 * get_field('access_vector') * get_field('access_complexity') * get_field('authentication'); - $impact = 10.41 * (1 - (1 - get_field('confidentiality')) * (1 - get_field('availability')) * (1 - get_field('integrity'))); - $f_impact = $impact == 0 ? 0 : 1.176; - - return round(((0.6 * $impact) + (0.4 * $exploitability) - 1.5) * $f_impact, 1); - } - - public function the_cvss_score() - { - echo $this->get_cvss_score(); - } - - public function get_cvss_severity() - { - $s = $this->get_cvss_score(); - - if ($s < 3.9) { - return "Low"; - } elseif ($s < 6.9) { - return "Medium"; - } else { - return "High"; - } - } - - public function the_cvss_severity() - { - echo $this->get_cvss_severity(); - } + } + } + + public function get_plugin_vulnerabilities($codex_link, $version) + { + return get_posts([ + 'post_type' => 'advisories', + 'meta_query' => [ + 'relation' => 'and', + [ + 'key' => 'codex_link', + 'value' => $codex_link, + 'compare' => '=' + ], + [ + 'key' => 'is_plugin', + 'value' => 'yes', + 'compare' => '=' + ], + [ + 'key' => 'version', + 'value' => explode(',', $version), + 'compare' => 'IN' + ] + ] + ]); + } + + public function the_plugin_vulnerabilities() + { + return $this->get_plugin_vulnerabilities(get_field('codex_link'), get_field('version_of_plugin')); + } + + public function get_cvss_score() + { + $exploitability = 20 * get_field('access_vector') * get_field('access_complexity') * get_field('authentication'); + $impact = 10.41 * (1 - (1 - get_field('confidentiality')) * (1 - get_field('availability')) * (1 - get_field('integrity'))); + $f_impact = $impact == 0 ? 0 : 1.176; + + return round(((0.6 * $impact) + (0.4 * $exploitability) - 1.5) * $f_impact, 1); + } + + public function the_cvss_score() + { + echo $this->get_cvss_score(); + } + + public function get_cvss_severity() + { + $s = $this->get_cvss_score(); + + if ($s < 3.9) { + return "Low"; + } elseif ($s < 6.9) { + return "Medium"; + } else { + return "High"; + } + } + + public function the_cvss_severity() + { + echo $this->get_cvss_severity(); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/Media.php b/wp-content/themes/dxw-security-2017/app/Theme/Media.php index f9ad177b..7193123d 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/Media.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/Media.php @@ -4,10 +4,10 @@ class Media implements \Dxw\Iguana\Registerable { - public function register() - { - set_post_thumbnail_size(150, 150, true); - add_image_size('medium', 200, 200, true); - add_image_size('large', 800, 300, true); - } + public function register() + { + set_post_thumbnail_size(150, 150, true); + add_image_size('medium', 200, 200, true); + add_image_size('large', 800, 300, true); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/Menus.php b/wp-content/themes/dxw-security-2017/app/Theme/Menus.php index 64a234dc..4ed9f38e 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/Menus.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/Menus.php @@ -4,30 +4,30 @@ class Menus implements \Dxw\Iguana\Registerable { - public function __construct(\Dxw\Iguana\Theme\Helpers $helpers) - { - $helpers->registerFunction('footerMenu', [$this, 'footerMenu']); - } + public function __construct(\Dxw\Iguana\Theme\Helpers $helpers) + { + $helpers->registerFunction('footerMenu', [$this, 'footerMenu']); + } - public function register() - { - register_nav_menu('header', 'Header Menu'); - register_nav_menu('footer_first', 'Footer Menu - First column'); - register_nav_menu('footer_second', 'Footer Menu - Second column'); - register_nav_menu('footer_third', 'Footer Menu - Third column'); - } + public function register() + { + register_nav_menu('header', 'Header Menu'); + register_nav_menu('footer_first', 'Footer Menu - First column'); + register_nav_menu('footer_second', 'Footer Menu - Second column'); + register_nav_menu('footer_third', 'Footer Menu - Third column'); + } - public function footerMenu($location) - { - $locations = get_nav_menu_locations(); - if (empty($locations[$location])) { - return false; - } - $menuObj = get_term($locations[$location], 'nav_menu'); - wp_nav_menu([ - 'theme_location' => $location, - 'container' => false, - 'items_wrap' => '
'.esc_html($menuObj->name).'
    %3$s
' - ]); - } + public function footerMenu($location) + { + $locations = get_nav_menu_locations(); + if (empty($locations[$location])) { + return false; + } + $menuObj = get_term($locations[$location], 'nav_menu'); + wp_nav_menu([ + 'theme_location' => $location, + 'container' => false, + 'items_wrap'=> '
'.esc_html($menuObj->name).'
    %3$s
' + ]); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/OptionsPage.php b/wp-content/themes/dxw-security-2017/app/Theme/OptionsPage.php index 589e19d8..c3db9fb8 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/OptionsPage.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/OptionsPage.php @@ -4,105 +4,105 @@ class OptionsPage implements \Dxw\Iguana\Registerable { - public function register() - { - acf_add_options_sub_page('Banner'); + public function register() + { + acf_add_options_sub_page('Banner'); - // Hire us banner - acf_add_local_field_group([ - 'key' => 'group_5857b450d2170', - 'title' => 'Call to action banner', - 'fields' => [ - [ - 'key' => 'field_5857b463ac3e9', - 'label' => 'Header', - 'name' => 'header', - 'type' => 'text', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'prepend' => '', - 'append' => '', - 'maxlength' => '', - ], - [ - 'key' => 'field_5857b46dac3ea', - 'label' => 'Content', - 'name' => 'content', - 'type' => 'wysiwyg', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'tabs' => 'all', - 'toolbar' => 'basic', - 'media_upload' => 0, - ], - [ - 'key' => 'field_5857b47dac3eb', - 'label' => 'URL', - 'name' => 'url', - 'type' => 'url', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - ], - [ - 'key' => 'field_5857b491ac3ec', - 'label' => 'Call to action', - 'name' => 'cta', - 'type' => 'text', - 'instructions' => '', - 'required' => 0, - 'conditional_logic' => 0, - 'wrapper' => [ - 'width' => '', - 'class' => '', - 'id' => '', - ], - 'default_value' => '', - 'placeholder' => '', - 'prepend' => '', - 'append' => '', - 'maxlength' => '', - ], - ], - 'location' => [ - [ - [ - 'param' => 'options_page', - 'operator' => '==', - 'value' => 'acf-options-banner', - ], - ], - ], - 'menu_order' => 0, - 'position' => 'normal', - 'style' => 'default', - 'label_placement' => 'top', - 'instruction_placement' => 'label', - 'hide_on_screen' => '', - 'active' => 1, - 'description' => '', - ]); - } + // Hire us banner + acf_add_local_field_group([ + 'key' => 'group_5857b450d2170', + 'title' => 'Call to action banner', + 'fields' => [ + [ + 'key' => 'field_5857b463ac3e9', + 'label' => 'Header', + 'name' => 'header', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'maxlength' => '', + ], + [ + 'key' => 'field_5857b46dac3ea', + 'label' => 'Content', + 'name' => 'content', + 'type' => 'wysiwyg', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'tabs' => 'all', + 'toolbar' => 'basic', + 'media_upload' => 0, + ], + [ + 'key' => 'field_5857b47dac3eb', + 'label' => 'URL', + 'name' => 'url', + 'type' => 'url', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + ], + [ + 'key' => 'field_5857b491ac3ec', + 'label' => 'Call to action', + 'name' => 'cta', + 'type' => 'text', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => [ + 'width' => '', + 'class' => '', + 'id' => '', + ], + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + 'maxlength' => '', + ], + ], + 'location' => [ + [ + [ + 'param' => 'options_page', + 'operator' => '==', + 'value' => 'acf-options-banner', + ], + ], + ], + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => 1, + 'description' => '', + ]); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/Pagination.php b/wp-content/themes/dxw-security-2017/app/Theme/Pagination.php index faf760a5..06349503 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/Pagination.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/Pagination.php @@ -4,44 +4,44 @@ class Pagination { - public function __construct(\Dxw\Iguana\Theme\Helpers $helpers) - { - $helpers->registerFunction('pagination', [$this, 'pagination']); - } - - public function pagination($q = null, $return = false) - { - global $wp_query; - global $paged; - - if ($q === null) { - $q = $wp_query; - } - - if (count($q->posts) === 1) { - return; - } - - $args = $q->query; - - $max = intval($q->max_num_pages); - $paged = get_query_var('paged') ? absint(get_query_var('paged')) : 1; - - // Stop execution if there's only 1 page - if ($max <= 1) { - return; - } - - $pagination = new \Dxw\Pagination($paged, $max, 2, 1, function ($n) use ($args) { - $args['paged'] = $n; - - return add_query_arg($args, get_bloginfo('url')); - }); - - if ($return) { - return $pagination->render(); - } else { - echo $pagination->render(); - } - } + public function __construct(\Dxw\Iguana\Theme\Helpers $helpers) + { + $helpers->registerFunction('pagination', [$this, 'pagination']); + } + + public function pagination($q = null, $return = false) + { + global $wp_query; + global $paged; + + if ($q === null) { + $q = $wp_query; + } + + if (count($q->posts) === 1) { + return; + } + + $args = $q->query; + + $max = intval($q->max_num_pages); + $paged = get_query_var('paged') ? absint(get_query_var('paged')) : 1; + + // Stop execution if there's only 1 page + if ($max <= 1) { + return; + } + + $pagination = new \Dxw\Pagination($paged, $max, 2, 1, function ($n) use ($args) { + $args['paged'] = $n; + + return add_query_arg($args, get_bloginfo('url')); + }); + + if ($return) { + return $pagination->render(); + } else { + echo $pagination->render(); + } + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/Plugins.php b/wp-content/themes/dxw-security-2017/app/Theme/Plugins.php index deeb8354..abb47e8b 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/Plugins.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/Plugins.php @@ -6,36 +6,36 @@ class Plugins implements Registerable { - protected $required; - protected $path_to_wordpress; - - public function __construct(array $required = []) - { - $this->required = $required; - $this->path_to_wordpress = ABSPATH; - } - - public function register() - { - add_action('after_switch_theme', [$this, 'checkDependencies']); - } - - public function checkDependencies() - { - $pluginsToActivate = $this->findPluginsToActivate(); - if (empty($pluginsToActivate)) { - return; - } - if (!function_exists('get_plugin_data')) { - require_once($this->path_to_wordpress . 'wp-admin/includes/plugin.php'); - } - array_map([$this, 'addNotice'], $pluginsToActivate); - } - - public function addNotice($plugin) - { - $pluginData = get_plugin_data(WP_PLUGIN_DIR.'/'.$plugin); - $pluginName = !empty($pluginData['Name']) ? $pluginData['Name'] : $plugin; ?> + protected $required; + protected $path_to_wordpress; + + public function __construct(array $required = []) + { + $this->required = $required; + $this->path_to_wordpress = ABSPATH; + } + + public function register() + { + add_action('after_switch_theme', [$this, 'checkDependencies']); + } + + public function checkDependencies() + { + $pluginsToActivate = $this->findPluginsToActivate(); + if (empty($pluginsToActivate)) { + return; + } + if (!function_exists('get_plugin_data')) { + require_once($this->path_to_wordpress . 'wp-admin/includes/plugin.php'); + } + array_map([$this, 'addNotice'], $pluginsToActivate); + } + + public function addNotice($plugin) + { + $pluginData = get_plugin_data(WP_PLUGIN_DIR.'/'.$plugin); + $pluginName = !empty($pluginData['Name']) ? $pluginData['Name'] : $plugin; ?>

is a required plugin and is not active. You must activate it for this theme to work. @@ -43,17 +43,17 @@ public function addNotice($plugin)

required, - apply_filters('active_plugins', get_option('active_plugins')) - ); - return $pluginsToActivate; - } + } + + /** + * @return array + */ + private function findPluginsToActivate() + { + $pluginsToActivate = array_diff( + $this->required, + apply_filters('active_plugins', get_option('active_plugins')) + ); + return $pluginsToActivate; + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/PostClasses.php b/wp-content/themes/dxw-security-2017/app/Theme/PostClasses.php index 8b565cea..a7f40d1c 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/PostClasses.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/PostClasses.php @@ -4,18 +4,18 @@ class PostClasses implements \Dxw\Iguana\Registerable { - public function register() - { - add_filter('post_class', [$this, 'recommendationStatusClass']); - } + public function register() + { + add_filter('post_class', [$this, 'recommendationStatusClass']); + } - public function recommendationStatusClass($classes) - { - global $post; - $recommendationStatus = get_field('recommendation', $post->ID); - if ($recommendationStatus) { - $classes[] = $recommendationStatus; - } - return $classes; - } + public function recommendationStatusClass($classes) + { + global $post; + $recommendationStatus = get_field('recommendation', $post->ID); + if ($recommendationStatus) { + $classes[] = $recommendationStatus; + } + return $classes; + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/Scripts.php b/wp-content/themes/dxw-security-2017/app/Theme/Scripts.php index 5a9823b5..eec29d9e 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/Scripts.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/Scripts.php @@ -4,61 +4,61 @@ class Scripts implements \Dxw\Iguana\Registerable { - public function __construct(\Dxw\Iguana\Theme\Helpers $helpers) - { - $helpers->registerFunction('assetPath', [$this, 'assetPath']); - $helpers->registerFunction('getAssetPath', [$this, 'getAssetPath']); - } + public function __construct(\Dxw\Iguana\Theme\Helpers $helpers) + { + $helpers->registerFunction('assetPath', [$this, 'assetPath']); + $helpers->registerFunction('getAssetPath', [$this, 'getAssetPath']); + } - public function register() - { - add_action('wp_enqueue_scripts', [$this, 'wpEnqueueScripts']); - add_action('wp_print_scripts', [$this, 'wpPrintScripts']); - } + public function register() + { + add_action('wp_enqueue_scripts', [$this, 'wpEnqueueScripts']); + add_action('wp_print_scripts', [$this, 'wpPrintScripts']); + } - public function getAssetPath($path) - { - return dirname(get_stylesheet_directory_uri()).'/static/'.$path; - } + public function getAssetPath($path) + { + return dirname(get_stylesheet_directory_uri()).'/static/'.$path; + } - public function assetPath($path) - { - echo esc_url($this->getAssetPath($path)); - } + public function assetPath($path) + { + echo esc_url($this->getAssetPath($path)); + } - public function wpEnqueueScripts() - { - // - // Do not add javascript to your theme here, unless you're sure you should. - // - // Normally, you should add Javascript to assets/js/main.js or make a file in assets/js/plugins. - // - // You can/should enqueue a script here only if it is a widely used library that is required by a plugin (or is likely to be later) - // + public function wpEnqueueScripts() + { + // + // Do not add javascript to your theme here, unless you're sure you should. + // + // Normally, you should add Javascript to assets/js/main.js or make a file in assets/js/plugins. + // + // You can/should enqueue a script here only if it is a widely used library that is required by a plugin (or is likely to be later) + // - // We need to register our own jQuery, because WP is on jQuery 2.x which breaks support for IE 6-8. - // This will not affect admin pages - // This will break any plugin that requires a feature/behaviour in jQuery 2.x which is missing/different in jQuery 1.10.x - wp_deregister_script('jquery'); - wp_enqueue_script('jquery', $this->getAssetPath('lib/jquery.min.js')); + // We need to register our own jQuery, because WP is on jQuery 2.x which breaks support for IE 6-8. + // This will not affect admin pages + // This will break any plugin that requires a feature/behaviour in jQuery 2.x which is missing/different in jQuery 1.10.x + wp_deregister_script('jquery'); + wp_enqueue_script('jquery', $this->getAssetPath('lib/jquery.min.js')); - // Because it's awesome - wp_enqueue_script('modernizr', $this->getAssetPath('lib/modernizr.min.js')); + // Because it's awesome + wp_enqueue_script('modernizr', $this->getAssetPath('lib/modernizr.min.js')); - // Pretty much everything else should be compiled by Grunt. - wp_enqueue_script('main', $this->getAssetPath('main.min.js'), ['jquery', 'modernizr'], '', true); + // Pretty much everything else should be compiled by Grunt. + wp_enqueue_script('main', $this->getAssetPath('main.min.js'), ['jquery', 'modernizr'], '', true); - wp_enqueue_style('main', $this->getAssetPath('main.min.css')); - } + wp_enqueue_style('main', $this->getAssetPath('main.min.css')); + } - public function wpPrintScripts() - { - ?> + public function wpPrintScripts() + { + ?> add_setting( - 'digital_marketplace_text', - [ - 'sanitize_callback' => 'wp_kses', - ] - ); + public function footerText($wp_customize) + { + $wp_customize->add_setting( + 'digital_marketplace_text', + [ + 'sanitize_callback' => 'wp_kses', + ] + ); - $wp_customize->add_control( - new \WP_Customize_Control( - $wp_customize, - 'digital_marketplace', - [ - 'label' => ('Digital Marketplace text'), - 'section' => 'title_tagline', - 'type' => 'textarea', - 'settings' => 'digital_marketplace_text' - ] - ) - ); - } + $wp_customize->add_control( + new \WP_Customize_Control( + $wp_customize, + 'digital_marketplace', + [ + 'label' => ('Digital Marketplace text'), + 'section' => 'title_tagline', + 'type' => 'textarea', + 'settings' => 'digital_marketplace_text' + ] + ) + ); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/TitleTag.php b/wp-content/themes/dxw-security-2017/app/Theme/TitleTag.php index 5b856dcf..1c24880b 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/TitleTag.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/TitleTag.php @@ -4,8 +4,8 @@ class TitleTag implements \Dxw\Iguana\Registerable { - public function register() - { - add_theme_support('title-tag'); - } + public function register() + { + add_theme_support('title-tag'); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/Widgets.php b/wp-content/themes/dxw-security-2017/app/Theme/Widgets.php index 910b0c96..195bb5cf 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/Widgets.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/Widgets.php @@ -4,41 +4,41 @@ class Widgets implements \Dxw\Iguana\Registerable { - // - // Register sidebars. - // - public function widgetsInit() - { - register_sidebar([ - 'name' => __('Primary'), - 'id' => 'sidebar-primary', - 'before_widget' => '
', - 'after_widget' => '
', - 'before_title' => '

', - 'after_title' => '

', - ]); + // + // Register sidebars. + // + public function widgetsInit() + { + register_sidebar([ + 'name' => __('Primary'), + 'id' => 'sidebar-primary', + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + ]); - register_sidebar([ - 'name' => __('Advisories archive'), - 'id' => 'sidebar-advisories', - 'before_widget' => '
', - 'after_widget' => '
', - 'before_title' => '

', - 'after_title' => '

', - ]); + register_sidebar([ + 'name' => __('Advisories archive'), + 'id' => 'sidebar-advisories', + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + ]); - register_sidebar([ - 'name' => __('Plugins archive'), - 'id' => 'sidebar-plugins', - 'before_widget' => '
', - 'after_widget' => '
', - 'before_title' => '

', - 'after_title' => '

', - ]); - } + register_sidebar([ + 'name' => __('Plugins archive'), + 'id' => 'sidebar-plugins', + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + ]); + } - public function register() - { - add_action('widgets_init', [$this, 'widgetsInit']); - } + public function register() + { + add_action('widgets_init', [$this, 'widgetsInit']); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/WordPressToTwitter.php b/wp-content/themes/dxw-security-2017/app/Theme/WordPressToTwitter.php index b7e62215..1e1d3c66 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/WordPressToTwitter.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/WordPressToTwitter.php @@ -4,13 +4,13 @@ class WordPressToTwitter implements \Dxw\Iguana\Registerable { - public function register() - { - add_filter('wpt_custom_shortcode', [$this, 'wpt_custom_shortcode'], 10, 3); - } + public function register() + { + add_filter('wpt_custom_shortcode', [$this, 'wpt_custom_shortcode'], 10, 3); + } - public function wpt_custom_shortcode($meta, $post, $field) - { - return h()->get_field_label($field); - } + public function wpt_custom_shortcode($meta, $post, $field) + { + return h()->get_field_label($field); + } } diff --git a/wp-content/themes/dxw-security-2017/app/Theme/WpHead.php b/wp-content/themes/dxw-security-2017/app/Theme/WpHead.php index cebb5262..72660ef3 100644 --- a/wp-content/themes/dxw-security-2017/app/Theme/WpHead.php +++ b/wp-content/themes/dxw-security-2017/app/Theme/WpHead.php @@ -4,28 +4,28 @@ class WpHead implements \Dxw\Iguana\Registerable { - public function register() - { - add_action('init', [$this, 'init']); - } + public function register() + { + add_action('init', [$this, 'init']); + } - public function init() - { - // Remove Emoji script - remove_action('wp_head', 'print_emoji_detection_script', 7); - remove_action('wp_print_styles', 'print_emoji_styles'); - remove_action('admin_print_styles', 'print_emoji_styles'); - remove_action('admin_print_scripts', 'print_emoji_detection_script'); - // Remove extra crap from wp_head - remove_action('wp_head', 'rsd_link'); - remove_action('wp_head', 'wp_generator'); - remove_action('wp_head', 'wlwmanifest_link'); - remove_action('wp_head', 'wp_resource_hints', 2); - remove_action('wp_head', 'feed_links_extra', 3); - remove_action('wp_head', 'start_post_rel_link', 10, 0); - remove_action('wp_head', 'parent_post_rel_link', 10, 0); - remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0); - remove_action('wp_head', 'rest_output_link_wp_head', 10); - remove_action('wp_head', 'wp_oembed_add_discovery_links', 10); - } + public function init() + { + // Remove Emoji script + remove_action('wp_head', 'print_emoji_detection_script', 7); + remove_action('wp_print_styles', 'print_emoji_styles'); + remove_action('admin_print_styles', 'print_emoji_styles'); + remove_action('admin_print_scripts', 'print_emoji_detection_script'); + // Remove extra crap from wp_head + remove_action('wp_head', 'rsd_link'); + remove_action('wp_head', 'wp_generator'); + remove_action('wp_head', 'wlwmanifest_link'); + remove_action('wp_head', 'wp_resource_hints', 2); + remove_action('wp_head', 'feed_links_extra', 3); + remove_action('wp_head', 'start_post_rel_link', 10, 0); + remove_action('wp_head', 'parent_post_rel_link', 10, 0); + remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0); + remove_action('wp_head', 'rest_output_link_wp_head', 10); + remove_action('wp_head', 'wp_oembed_add_discovery_links', 10); + } } diff --git a/wp-content/themes/dxw-security-2017/app/di.php b/wp-content/themes/dxw-security-2017/app/di.php index 6118ad67..2de2a752 100644 --- a/wp-content/themes/dxw-security-2017/app/di.php +++ b/wp-content/themes/dxw-security-2017/app/di.php @@ -2,31 +2,31 @@ $registrar->addInstance(\Dxw\Iguana\Theme\Helpers::class, new \Dxw\Iguana\Theme\Helpers()); $registrar->addInstance(\Dxw\Iguana\Theme\LayoutRegister::class, new \Dxw\Iguana\Theme\LayoutRegister( - $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) + $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) )); $registrar->addInstance(\Dxw\Iguana\Extras\UseAtom::class, new \Dxw\Iguana\Extras\UseAtom()); // Libraries and support code $registrar->addInstance(\Dxw\DxwSecurity2017\Lib\Whippet\TemplateTags::class, new \Dxw\DxwSecurity2017\Lib\Whippet\TemplateTags( - $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) + $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) )); // Theme behaviour, media, assets and template tags $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\Scripts::class, new \Dxw\DxwSecurity2017\Theme\Scripts( - $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) + $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) )); $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\Helpers::class, new \Dxw\DxwSecurity2017\Theme\Helpers( - $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) + $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) )); $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\Media::class, new \Dxw\DxwSecurity2017\Theme\Media()); $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\Menus::class, new \Dxw\DxwSecurity2017\Theme\Menus( - $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) + $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) )); $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\Widgets::class, new \Dxw\DxwSecurity2017\Theme\Widgets()); $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\Footer::class, new \Dxw\DxwSecurity2017\Theme\Footer()); $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\TitleTag::class, new \Dxw\DxwSecurity2017\Theme\TitleTag()); $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\Pagination::class, new \Dxw\DxwSecurity2017\Theme\Pagination( - $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) + $registrar->getInstance(\Dxw\Iguana\Theme\Helpers::class) )); $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\ThemeSettings::class, new \Dxw\DxwSecurity2017\Theme\ThemeSettings()); $registrar->addInstance(\Dxw\DxwSecurity2017\Theme\Feeds::class, new \Dxw\DxwSecurity2017\Theme\Feeds()); diff --git a/wp-content/themes/dxw-security-2017/composer.json b/wp-content/themes/dxw-security-2017/composer.json index 4b7700d0..998d6f1b 100644 --- a/wp-content/themes/dxw-security-2017/composer.json +++ b/wp-content/themes/dxw-security-2017/composer.json @@ -11,16 +11,14 @@ "homepage": "https://www.dxw.com/" } ], - "config": { - "platform": { - "php": "8.3" - } - }, "require-dev": { "dxw/phar-install": "^1.0", + "10up/wp_mock": "^0.3.0", "mikey179/vfsstream": "^1.6", - "dxw/php-cs-fixer-config": "^2.1", - "kahlan/kahlan": "^5.2" + "peridot-php/peridot": "^1.19", + "peridot-php/leo": "^1.6", + "peridot-php/peridot-dot-reporter": "^1.0", + "dxw/php-cs-fixer-config": "^1.0" }, "autoload": { "psr-4": { @@ -36,7 +34,6 @@ "dxw/iguana-theme": "^1.0", "dxw/iguana-extras": "^1.0", "dxw/result": "^1.0", - "dxw/php-missing": "^1.0", - "10up/wp_mock": "^1.0.1" + "dxw/php-missing": "^1.0" } } diff --git a/wp-content/themes/dxw-security-2017/composer.lock b/wp-content/themes/dxw-security-2017/composer.lock index 58595d51..233b619c 100644 --- a/wp-content/themes/dxw-security-2017/composer.lock +++ b/wp-content/themes/dxw-security-2017/composer.lock @@ -4,110 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1b73a4b7c2394ca0c6cbc9f2e27a68c9", + "content-hash": "a538944e32ebc57dae894d351bff1f02", "packages": [ - { - "name": "10up/wp_mock", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/10up/wp_mock.git", - "reference": "48b7f22934a4351e45e336f09263ee27fc9ddcbe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/10up/wp_mock/zipball/48b7f22934a4351e45e336f09263ee27fc9ddcbe", - "reference": "48b7f22934a4351e45e336f09263ee27fc9ddcbe", - "shasum": "" - }, - "require": { - "antecedent/patchwork": "^2.1", - "mockery/mockery": "^1.6", - "php": ">=7.4 < 9", - "phpunit/phpunit": "^9.6" - }, - "require-dev": { - "behat/behat": "^v3.11.0", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", - "friendsofphp/php-cs-fixer": "^3.4", - "php-coveralls/php-coveralls": "^v2.7", - "php-stubs/wordpress-globals": "^0.2", - "php-stubs/wordpress-stubs": "^6.3", - "phpcompatibility/php-compatibility": "^9.3", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "sebastian/comparator": "^4.0.8", - "sempro/phpunit-pretty-print": "^1.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "WP_Mock\\": "./php/WP_Mock" - }, - "classmap": [ - "php/WP_Mock.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "A mocking library to take the pain out of unit testing for WordPress", - "support": { - "issues": "https://github.com/10up/wp_mock/issues", - "source": "https://github.com/10up/wp_mock/tree/1.0.1" - }, - "time": "2024-01-22T02:22:57+00:00" - }, - { - "name": "antecedent/patchwork", - "version": "2.1.28", - "source": { - "type": "git", - "url": "https://github.com/antecedent/patchwork.git", - "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/antecedent/patchwork/zipball/6b30aff81ebadf0f2feb9268d3e08385cebcc08d", - "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": ">=4" - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignas Rudaitis", - "email": "ignas.rudaitis@gmail.com" - } - ], - "description": "Method redefinition (monkey-patching) functionality for PHP.", - "homepage": "https://antecedent.github.io/patchwork/", - "keywords": [ - "aop", - "aspect", - "interception", - "monkeypatching", - "redefinition", - "runkit", - "testing" - ], - "support": { - "issues": "https://github.com/antecedent/patchwork/issues", - "source": "https://github.com/antecedent/patchwork/tree/2.1.28" - }, - "time": "2024-02-06T09:26:11+00:00" - }, { "name": "aura/autoload", "version": "2.0.4", @@ -155,105 +53,30 @@ "autoloader", "class loader" ], - "support": { - "issues": "https://github.com/auraphp/Aura.Autoload/issues", - "source": "https://github.com/auraphp/Aura.Autoload/tree/2.x" - }, "time": "2016-10-03T19:36:19+00:00" }, - { - "name": "doctrine/instantiator", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" - }, - "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" - } - ], - "time": "2022-12-30T00:23:10+00:00" - }, { "name": "dxw/iguana", - "version": "v1.3.2", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/dxw/iguana.git", - "reference": "5e2a7f409750d63c6d81c467cae40fc0fb163dbe" + "reference": "5a9fb4244a512315d75458cd42b19343f52623f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dxw/iguana/zipball/5e2a7f409750d63c6d81c467cae40fc0fb163dbe", - "reference": "5e2a7f409750d63c6d81c467cae40fc0fb163dbe", + "url": "https://api.github.com/repos/dxw/iguana/zipball/5a9fb4244a512315d75458cd42b19343f52623f9", + "reference": "5a9fb4244a512315d75458cd42b19343f52623f9", "shasum": "" }, "require": { - "aura/autoload": "^2.0", - "php": "^7.4|^8.1" + "aura/autoload": "^2.0" }, "require-dev": { "10up/wp_mock": "^0.3.0", - "dxw/php-cs-fixer-config": "^2.0", + "friendsofphp/php-cs-fixer": "^2.13", "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^9.6" + "phpunit/phpunit": "^6.5" }, "type": "library", "autoload": { @@ -265,36 +88,29 @@ "license": [ "MIT" ], - "description": "Dependency injection framework for WordPress", "homepage": "https://github.com/dxw/iguana", - "support": { - "issues": "https://github.com/dxw/iguana/issues", - "source": "https://github.com/dxw/iguana/tree/v1.3.2" - }, - "time": "2023-08-10T08:51:42+00:00" + "time": "2018-09-28T13:16:07+00:00" }, { "name": "dxw/iguana-extras", - "version": "v1.1.0", + "version": "v1.0.0", "source": { "type": "git", "url": "https://github.com/dxw/iguana-extras.git", - "reference": "0b04008635ab58cd4eb25f8692d6aa5e6d509b7f" + "reference": "3a6c6ae6657581a92957a9918ff8be43f7185d34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dxw/iguana-extras/zipball/0b04008635ab58cd4eb25f8692d6aa5e6d509b7f", - "reference": "0b04008635ab58cd4eb25f8692d6aa5e6d509b7f", + "url": "https://api.github.com/repos/dxw/iguana-extras/zipball/3a6c6ae6657581a92957a9918ff8be43f7185d34", + "reference": "3a6c6ae6657581a92957a9918ff8be43f7185d34", "shasum": "" }, "require": { - "dxw/iguana": "^1.0", - "php": "^7.4||^8.1" + "dxw/iguana": "^1.0" }, "require-dev": { "10up/wp_mock": "^0.1.1", - "dxw/php-cs-fixer-config": "^2.1", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "4.8.*" }, "type": "library", "autoload": { @@ -307,35 +123,29 @@ "MIT" ], "homepage": "https://github.com/dxw/iguana-extras", - "support": { - "issues": "https://github.com/dxw/iguana-extras/issues", - "source": "https://github.com/dxw/iguana-extras/tree/v1.1.0" - }, - "time": "2023-08-14T11:07:43+00:00" + "time": "2016-05-23T18:22:48+00:00" }, { "name": "dxw/iguana-theme", - "version": "v1.1.0", + "version": "v1.0.0", "source": { "type": "git", "url": "https://github.com/dxw/iguana-theme.git", - "reference": "7ac34ee8df2287e3e230a63c07a1d2d47d10562f" + "reference": "af4a52c28a90a47a280ac8cc0cf1d06db5d449a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dxw/iguana-theme/zipball/7ac34ee8df2287e3e230a63c07a1d2d47d10562f", - "reference": "7ac34ee8df2287e3e230a63c07a1d2d47d10562f", + "url": "https://api.github.com/repos/dxw/iguana-theme/zipball/af4a52c28a90a47a280ac8cc0cf1d06db5d449a5", + "reference": "af4a52c28a90a47a280ac8cc0cf1d06db5d449a5", "shasum": "" }, "require": { - "dxw/iguana": "^1.1", - "php": "^7.4||^8.1" + "dxw/iguana": "^1.0" }, "require-dev": { - "10up/wp_mock": "^0.4.2", - "dxw/php-cs-fixer-config": "^2.1", + "10up/wp_mock": "^0.1.1", "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "4.8.*" }, "type": "library", "autoload": { @@ -348,11 +158,7 @@ "MIT" ], "homepage": "https://github.com/dxw/iguana-theme", - "support": { - "issues": "https://github.com/dxw/iguana-theme/issues", - "source": "https://github.com/dxw/iguana-theme/tree/v1.1.0" - }, - "time": "2023-08-14T14:52:04+00:00" + "time": "2016-05-23T18:24:32+00:00" }, { "name": "dxw/pagination", @@ -390,10 +196,6 @@ ], "description": "Unit-tested framework-agnostic pagination that works with Bootstrap and Foundation", "homepage": "https://github.com/dxw/pagination", - "support": { - "issues": "https://github.com/dxw/pagination/issues", - "source": "https://github.com/dxw/pagination/tree/master" - }, "abandoned": true, "time": "2016-07-15T13:07:32+00:00" }, @@ -433,33 +235,31 @@ ], "description": "The stdlib you wish PHP had", "homepage": "https://github.com/dxw/php-missing", - "support": { - "issues": "https://github.com/dxw/php-missing/issues", - "source": "https://github.com/dxw/php-missing/tree/master" - }, "time": "2016-05-17T16:56:43+00:00" }, { "name": "dxw/result", - "version": "v1.0.6", + "version": "v1.0.4", "source": { "type": "git", "url": "https://github.com/dxw/result.git", - "reference": "d554bb10f0cf74056ccd26526688e194652eef79" + "reference": "5b9d3988c215dc95e17cd082a33bc2c02b6007ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dxw/result/zipball/d554bb10f0cf74056ccd26526688e194652eef79", - "reference": "d554bb10f0cf74056ccd26526688e194652eef79", + "url": "https://api.github.com/repos/dxw/result/zipball/5b9d3988c215dc95e17cd082a33bc2c02b6007ca", + "reference": "5b9d3988c215dc95e17cd082a33bc2c02b6007ca", "shasum": "" }, "require": { - "php": "^7.4||^8.1" + "php": "^7.2" }, "require-dev": { - "dxw/php-cs-fixer-config": "^2.1", - "kahlan/kahlan": "^5.2", - "vimeo/psalm": "^4" + "friendsofphp/php-cs-fixer": "^2.16", + "peridot-php/leo": "^1.6", + "peridot-php/peridot": "^1.19", + "peridot-php/peridot-dot-reporter": "^1.0", + "vimeo/psalm": "^3.2" }, "type": "library", "autoload": { @@ -480,1076 +280,713 @@ ], "description": "Result values", "homepage": "https://github.com/dxw/result", - "support": { - "issues": "https://github.com/dxw/result/issues", - "source": "https://github.com/dxw/result/tree/v1.0.6" - }, - "time": "2023-07-19T11:14:28+00:00" - }, + "time": "2020-06-12T16:01:47+00:00" + } + ], + "packages-dev": [ { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "name": "10up/wp_mock", + "version": "0.3.0", "source": { "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "url": "https://github.com/10up/wp_mock.git", + "reference": "64956557e98ee4c8c56cd1e396e822adb4673714" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/10up/wp_mock/zipball/64956557e98ee4c8c56cd1e396e822adb4673714", + "reference": "64956557e98ee4c8c56cd1e396e822adb4673714", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" + "antecedent/patchwork": "^2.1", + "mockery/mockery": "^1.0", + "php": ">=7.0", + "phpunit/phpunit": ">=6.0" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "behat/behat": "^3.0", + "satooshi/php-coveralls": "^1.0", + "sebastian/comparator": ">=1.2.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, "autoload": { + "psr-4": { + "WP_Mock\\": "./php/WP_Mock" + }, "classmap": [ - "hamcrest" + "php/WP_Mock.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" + "GPL-2.0+" ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" + "description": "A mocking library to take the pain out of unit testing for WordPress", + "time": "2017-12-03T19:28:28+00:00" }, { - "name": "mockery/mockery", - "version": "1.6.12", + "name": "antecedent/patchwork", + "version": "2.1.12", "source": { "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + "url": "https://github.com/antecedent/patchwork.git", + "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "url": "https://api.github.com/repos/antecedent/patchwork/zipball/b98e046dd4c0acc34a0846604f06f6111654d9ea", + "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": ">=7.3" - }, - "conflict": { - "phpunit/phpunit": "<8.0" + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.6.17", - "symplify/easy-coding-standard": "^12.1.14" + "phpunit/phpunit": ">=4" }, "type": "library", - "autoload": { - "files": [ - "library/helpers.php", - "library/Mockery.php" - ], - "psr-4": { - "Mockery\\": "library/Mockery" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "https://github.com/padraic", - "role": "Author" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "https://davedevelopment.co.uk", - "role": "Developer" - }, - { - "name": "Nathanael Esayeas", - "email": "nathanael.esayeas@protonmail.com", - "homepage": "https://github.com/ghostwriter", - "role": "Lead Developer" + "name": "Ignas Rudaitis", + "email": "ignas.rudaitis@gmail.com" } ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", + "description": "Method redefinition (monkey-patching) functionality for PHP.", + "homepage": "http://patchwork2.org/", "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", + "aop", + "aspect", + "interception", + "monkeypatching", + "redefinition", + "runkit", "testing" ], - "support": { - "docs": "https://docs.mockery.io/", - "issues": "https://github.com/mockery/mockery/issues", - "rss": "https://github.com/mockery/mockery/releases.atom", - "security": "https://github.com/mockery/mockery/security/advisories", - "source": "https://github.com/mockery/mockery" - }, - "time": "2024-05-16T03:13:13+00:00" + "time": "2019-12-22T17:52:09+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.12.0", + "name": "composer/semver", + "version": "1.5.1", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "url": "https://github.com/composer/semver.git", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" + "php": "^5.3.2 || ^7.0" }, "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + "phpunit/phpunit": "^4.5 || ^5.0.5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "Composer\\Semver\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" - }, - "funding": [ + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } + "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": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } ], - "time": "2024-06-12T14:39:25+00:00" + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2020-01-13T12:06:48+00:00" }, { - "name": "nikic/php-parser", - "version": "v5.0.2", + "name": "composer/xdebug-handler", + "version": "1.4.2", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", + "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" }, - "bin": [ - "bin/php-parse" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Composer\\XdebugHandler\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "A PHP parser written in PHP", + "description": "Restarts a process without Xdebug.", "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" - }, - "time": "2024-03-05T20:51:40+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "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" - } + "Xdebug", + "performance" ], - "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.4" - }, "funding": [ { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:33:53+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "url": "https://packagist.com", + "type": "custom" }, { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "url": "https://github.com/composer", + "type": "github" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "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" + "time": "2020-06-04T11:16:35+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "name": "doctrine/annotations", + "version": "1.10.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "url": "https://github.com/doctrine/annotations.git", + "reference": "bfe91e31984e2ba76df1c1339681770401ec262f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/bfe91e31984e2ba76df1c1339681770401ec262f", + "reference": "bfe91e31984e2ba76df1c1339681770401ec262f", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "doctrine/lexer": "1.*", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "doctrine/cache": "1.*", + "phpstan/phpstan": "^0.12.20", + "phpunit/phpunit": "^7.5 || ^9.1.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-master": "1.9.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "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": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" - }, - "funding": [ + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T06:37:42+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", "keywords": [ - "process" + "annotations", + "docblock", + "parser" ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2020-08-10T19:35:50+00:00" }, { - "name": "phpunit/php-text-template", - "version": "2.0.4", + "name": "doctrine/instantiator", + "version": "1.4.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "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" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ - "template" + "constructor", + "instantiate" ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "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" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2020-11-10T18:47:58+00:00" }, { - "name": "phpunit/php-timer", - "version": "5.0.3", + "name": "doctrine/lexer", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "url": "https://github.com/doctrine/lexer.git", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "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": [ - "timer" + "annotations", + "docblock", + "lexer", + "parser", + "php" ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "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%2Flexer", + "type": "tidelift" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2020-05-25T17:44:05+00:00" }, { - "name": "phpunit/phpunit", - "version": "9.6.19", + "name": "dxw/phar-install", + "version": "v1.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" + "url": "https://github.com/dxw/phar-install.git", + "reference": "36eb78be91d433546bc90194db6f4de754a542de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", + "url": "https://api.github.com/repos/dxw/phar-install/zipball/36eb78be91d433546bc90194db6f4de754a542de", + "reference": "36eb78be91d433546bc90194db6f4de754a542de", "shasum": "" }, - "require": { - "doctrine/instantiator": "^1.3.1 || ^2", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, "bin": [ - "phpunit" + "bin/phar-install" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.6-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" - }, - "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" + "name": "Mallory Adams", + "email": "mallory@dxw.com", + "homepage": "https://www.dxw.com" } ], - "time": "2024-04-05T04:35:58+00:00" + "homepage": "https://github.com/dxw/phar-install", + "time": "2020-04-06T09:47:56+00:00" }, { - "name": "sebastian/cli-parser", - "version": "1.0.2", + "name": "dxw/php-cs-fixer-config", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + "url": "https://github.com/dxw/php-cs-fixer-config.git", + "reference": "f273d0565e5b7a5ce9599885b2a324c5e2a38a6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "url": "https://api.github.com/repos/dxw/php-cs-fixer-config/zipball/f273d0565e5b7a5ce9599885b2a324c5e2a38a6a", + "reference": "f273d0565e5b7a5ce9599885b2a324c5e2a38a6a", "shasum": "" }, "require": { - "php": ">=7.3" + "friendsofphp/php-cs-fixer": "^2.16", + "php": "^7.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^8.5", + "vimeo/psalm": "^3.12" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Dxw\\PhpCsFixerConfig\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } + "MIT" ], - "time": "2024-03-02T06:27:43+00:00" + "time": "2020-07-01T18:06:19+00:00" }, { - "name": "sebastian/code-unit", - "version": "1.0.8", + "name": "evenement/evenement", + "version": "v2.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "url": "https://github.com/igorw/evenement.git", + "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a", + "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^6.0||^5.7||^4.8.35" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Evenement": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ + "MIT" + ], + "authors": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" } ], - "time": "2020-10-26T13:08:54+00:00" + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "time": "2017-07-17T17:39:19+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "name": "friendsofphp/php-cs-fixer", + "version": "v2.16.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/1023c3458137ab052f6ff1e09621a721bfdeca13", + "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13", "shasum": "" }, "require": { - "php": ">=7.3" + "composer/semver": "^1.4", + "composer/xdebug-handler": "^1.2", + "doctrine/annotations": "^1.2", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^5.6 || ^7.0", + "php-cs-fixer/diff": "^1.3", + "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0", + "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0", + "symfony/filesystem": "^3.0 || ^4.0 || ^5.0", + "symfony/finder": "^3.0 || ^4.0 || ^5.0", + "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0", + "symfony/polyfill-php70": "^1.0", + "symfony/polyfill-php72": "^1.4", + "symfony/process": "^3.0 || ^4.0 || ^5.0", + "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", + "justinrainbow/json-schema": "^5.0", + "keradus/cli-executor": "^1.2", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.1", + "php-cs-fixer/accessible-object": "^1.0", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1", + "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1", + "phpunitgoodpractices/traits": "^1.8", + "symfony/phpunit-bridge": "^5.1", + "symfony/yaml": "^3.0 || ^4.0 || ^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters.", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", + "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, "classmap": [ - "src/" + "tests/Test/AbstractFixerTestCase.php", + "tests/Test/AbstractIntegrationCaseFactory.php", + "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/Assert/AssertTokensTrait.php", + "tests/Test/IntegrationCase.php", + "tests/Test/IntegrationCaseFactory.php", + "tests/Test/IntegrationCaseFactoryInterface.php", + "tests/Test/InternalIntegrationCaseFactory.php", + "tests/Test/IsIdenticalConstraint.php", + "tests/TestCase.php" ] }, "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": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" } ], - "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/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, + "description": "A tool to automatically fix PHP code style", "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/keradus", "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2020-06-27T23:57:46+00:00" }, { - "name": "sebastian/comparator", - "version": "4.0.8", + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "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-master": "4.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { "classmap": [ - "src/" + "hamcrest" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "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" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", + "description": "This is the PHP port of Hamcrest Matchers", "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } + "test" ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2020-07-09T08:09:16+00:00" }, { - "name": "sebastian/complexity", - "version": "2.0.3", + "name": "mikey179/vfsstream", + "version": "v1.6.10", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + "url": "https://github.com/bovigo/vfsStream.git", + "reference": "250c0825537d501e327df879fb3d4cd751933b85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/250c0825537d501e327df879fb3d4cd751933b85", + "reference": "250c0825537d501e327df879fb3d4cd751933b85", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^4.5|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "org\\bovigo\\vfs\\": "src/main/php" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1557,56 +994,47 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Frank Kleine", + "homepage": "http://frankkleine.de/", + "role": "Developer" } ], - "time": "2023-12-22T06:19:30+00:00" + "description": "Virtual file system to mock the real file system in unit tests.", + "homepage": "http://vfs.bovigo.org/", + "time": "2021-09-25T08:05:01+00:00" }, { - "name": "sebastian/diff", - "version": "4.0.6", + "name": "mockery/mockery", + "version": "1.3.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + "url": "https://github.com/mockery/mockery.git", + "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "url": "https://api.github.com/repos/mockery/mockery/zipball/60fa2f67f6e4d3634bb4a45ff3171fa52215800d", + "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d", "shasum": "" }, "require": { - "php": ">=7.3" + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Mockery": "library/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1614,431 +1042,342 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" }, { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" ], - "time": "2024-03-02T06:30:58+00:00" + "time": "2020-08-11T18:10:21+00:00" }, { - "name": "sebastian/environment", - "version": "5.1.5", + "name": "myclabs/deep-copy", + "version": "1.10.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^7.1 || ^8.0" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "replace": { + "myclabs/deep-copy": "self.version" }, - "suggest": { - "ext-posix": "*" + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } + "MIT" ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "description": "Create deep copies (clones) of your objects", "keywords": [ - "Xdebug", - "environment", - "hhvm" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" - }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2020-11-13T09:40:50+00:00" }, { - "name": "sebastian/exporter", - "version": "4.0.6", + "name": "paragonie/random_compat", + "version": "v9.99.99", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "php": "^7" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" }, - "autoload": { - "classmap": [ - "src/" - ] + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, + "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "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": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" + "MIT" ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" - }, - "funding": [ + "authors": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" } ], - "time": "2024-03-02T06:33:00+00:00" + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2018-07-02T15:55:56+00:00" }, { - "name": "sebastian/global-state", - "version": "5.0.7", + "name": "peridot-php/leo", + "version": "1.6.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + "url": "https://github.com/peridot-php/leo.git", + "reference": "2a6f60f237498cd7c3e912d71dcb90424ab66e72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "url": "https://api.github.com/repos/peridot-php/leo/zipball/2a6f60f237498cd7c3e912d71dcb90424ab66e72", + "reference": "2a6f60f237498cd7c3e912d71dcb90424ab66e72", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=5.4" }, "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "apigen/apigen": "^4", + "friendsofphp/php-cs-fixer": "^1", + "peridot-php/peridot-jumpstart": "^1", + "peridot-php/peridot-prophecy-plugin": "^1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Peridot\\Leo\\": "src" + }, + "files": [ + "src/Interfaces/_interface.bdd.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "description": "Next level assertion and matcher library for PHP", "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } + "assert", + "expect", + "expectation", + "matcher", + "testing" ], - "time": "2024-03-02T06:35:11+00:00" + "time": "2017-08-16T21:40:18+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "1.0.4", + "name": "peridot-php/peridot", + "version": "1.19.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + "url": "https://github.com/peridot-php/peridot.git", + "reference": "1c573868d856cee7fc9ba89f6a82730f79a3685e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "url": "https://api.github.com/repos/peridot-php/peridot/zipball/1c573868d856cee7fc9ba89f6a82730f79a3685e", + "reference": "1c573868d856cee7fc9ba89f6a82730f79a3685e", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "evenement/evenement": "^2", + "peridot-php/peridot-scope": "^1", + "php": ">=5.4", + "phpunit/php-timer": "^1", + "symfony/console": "^2|^3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "consolidation/robo": "^0.4", + "phpunit/php-code-coverage": "^2" }, + "bin": [ + "bin/peridot" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Peridot\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" - }, - "funding": [ + "name": "Austin Morris", + "email": "austin.morris@gmail.com" + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com" } ], - "time": "2023-12-22T06:20:34+00:00" + "description": "Event driven BDD test framework for PHP 5.4+", + "keywords": [ + "BDD", + "TDD", + "php", + "testing" + ], + "time": "2017-01-19T01:11:09+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "4.0.4", + "name": "peridot-php/peridot-dot-reporter", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "url": "https://github.com/peridot-php/peridot-dot-reporter.git", + "reference": "ba303540ddd4118a1d300bf739912556902a66d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/peridot-php/peridot-dot-reporter/zipball/ba303540ddd4118a1d300bf739912556902a66d5", + "reference": "ba303540ddd4118a1d300bf739912556902a66d5", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "peridot-php/peridot": "~1.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "peridot-php/peridot-watcher-plugin": "~1.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Peridot\\Reporter\\Dot\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "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/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com" } ], - "time": "2020-10-26T13:12:34+00:00" + "description": "A dot reporter for the Peridot testing framework", + "time": "2014-11-11T03:40:46+00:00" }, { - "name": "sebastian/object-reflector", - "version": "2.0.4", + "name": "peridot-php/peridot-scope", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "url": "https://github.com/peridot-php/peridot-scope.git", + "reference": "b5cc7ac35b2116d0f495b326218e7e93a823ab8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/peridot-php/peridot-scope/zipball/b5cc7ac35b2116d0f495b326218e7e93a823ab8e", + "reference": "b5cc7ac35b2116d0f495b326218e7e93a823ab8e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "peridot-php/peridot-jumpstart": "~1.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Peridot\\Scope\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "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/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com" } ], - "time": "2020-10-26T13:14:26+00:00" + "description": "Scopes for function binding and mixins", + "time": "2016-02-22T13:27:54+00:00" }, { - "name": "sebastian/recursion-context", - "version": "4.0.5", + "name": "phar-io/manifest", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -2052,58 +1391,42 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" }, { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "time": "2023-02-03T06:07:39+00:00" + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.4", + "name": "phar-io/version", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" + "php": "^5.6 || ^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, "autoload": { "classmap": [ "src/" @@ -2115,49 +1438,46 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" - }, - "funding": [ + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "time": "2024-03-14T16:00:52+00:00" + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" }, { - "name": "sebastian/type", - "version": "3.2.1", + "name": "php-cs-fixer/diff", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756", + "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "symfony/process": "^3.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, "autoload": { "classmap": [ "src/" @@ -2168,157 +1488,156 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "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/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" - }, - "funding": [ + "email": "sebastian@phpunit.de" + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "SpacePossum" } ], - "time": "2023-02-03T06:13:03+00:00" + "description": "sebastian/diff v2 backport support for PHP5.6", + "homepage": "https://github.com/PHP-CS-Fixer", + "keywords": [ + "diff" + ], + "time": "2018-02-15T16:58:55+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "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/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "theseer/tokenizer", - "version": "1.2.3", + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", "source": { "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } + "MIT" ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" - }, - "funding": [ + "authors": [ { - "url": "https://github.com/theseer", - "type": "github" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], - "time": "2024-03-03T12:36:25+00:00" - } - ], - "packages-dev": [ + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2020-09-03T19:13:55+00:00" + }, { - "name": "clue/ndjson-react", - "version": "v1.3.0", + "name": "phpdocumentor/type-resolver", + "version": "1.4.0", "source": { "type": "git", - "url": "https://github.com/clue/reactphp-ndjson.git", - "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", - "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", "shasum": "" }, "require": { - "php": ">=5.3", - "react/stream": "^1.2" + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", - "react/event-loop": "^1.2" + "ext-tokenizer": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Clue\\React\\NDJson\\": "src/" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2327,67 +1646,47 @@ ], "authors": [ { - "name": "Christian Lück", - "email": "christian@clue.engineering" - } - ], - "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", - "homepage": "https://github.com/clue/reactphp-ndjson", - "keywords": [ - "NDJSON", - "json", - "jsonlines", - "newline", - "reactphp", - "streaming" - ], - "support": { - "issues": "https://github.com/clue/reactphp-ndjson/issues", - "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" - }, - "funding": [ - { - "url": "https://clue.engineering/support", - "type": "custom" - }, - { - "url": "https://github.com/clue", - "type": "github" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "time": "2022-12-23T10:58:28+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-09-17T18:55:26+00:00" }, { - "name": "composer/pcre", - "version": "3.1.4", + "name": "phpspec/prophecy", + "version": "v1.10.3", "source": { "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "04229f163664973f68f38f6f73d917799168ef24" + "url": "https://github.com/phpspec/prophecy.git", + "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", - "reference": "04229f163664973f68f38f6f73d917799168ef24", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpspec/phpspec": "^2.5 || ^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.x-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { "psr-4": { - "Composer\\Pcre\\": "src" + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -2396,436 +1695,448 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.4" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" }, { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" } ], - "time": "2024-05-27T13:40:54+00:00" + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2020-03-05T15:02:03+00:00" }, { - "name": "composer/semver", - "version": "3.4.0", + "name": "phpunit/php-code-coverage", + "version": "5.3.2", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-xdebug": "^2.5.5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.x-dev" + "dev-master": "5.3.x-dev" } }, "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } + "classmap": [ + "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": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" - }, - "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" - } + "coverage", + "testing", + "xunit" ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2018-04-06T15:36:58+00:00" }, { - "name": "composer/xdebug-handler", - "version": "3.0.5", + "name": "phpunit/php-file-iterator", + "version": "1.4.5", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", "shasum": "" }, "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + "php": ">=5.3.3" }, "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" } ], - "description": "Restarts a process without Xdebug.", + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ - "Xdebug", - "performance" + "filesystem", + "iterator" ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "time": "2024-05-06T16:37:16+00:00" + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" }, { - "name": "dxw/phar-install", - "version": "v1.1.2", + "name": "phpunit/php-timer", + "version": "1.0.9", "source": { "type": "git", - "url": "https://github.com/dxw/phar-install.git", - "reference": "36eb78be91d433546bc90194db6f4de754a542de" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dxw/phar-install/zipball/36eb78be91d433546bc90194db6f4de754a542de", - "reference": "36eb78be91d433546bc90194db6f4de754a542de", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", "shasum": "" }, - "bin": [ - "bin/phar-install" - ], + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mallory Adams", - "email": "mallory@dxw.com", - "homepage": "https://www.dxw.com" + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" } ], - "homepage": "https://github.com/dxw/phar-install", - "support": { - "issues": "https://github.com/dxw/phar-install/issues", - "source": "https://github.com/dxw/phar-install/tree/master" - }, - "time": "2020-04-06T09:47:56+00:00" + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" }, { - "name": "dxw/php-cs-fixer-config", - "version": "v2.1.1", + "name": "phpunit/php-token-stream", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/dxw/php-cs-fixer-config.git", - "reference": "690a251beb6a3080a2de5adc749675a99e22d9fd" + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dxw/php-cs-fixer-config/zipball/690a251beb6a3080a2de5adc749675a99e22d9fd", - "reference": "690a251beb6a3080a2de5adc749675a99e22d9fd", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^3.2", - "php": "^7.4||^8.1" + "ext-tokenizer": "*", + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "^5.15" + "phpunit/phpunit": "^6.2.4" }, "type": "library", - "autoload": { - "psr-4": { - "Dxw\\PhpCsFixerConfig\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "support": { - "issues": "https://github.com/dxw/php-cs-fixer-config/issues", - "source": "https://github.com/dxw/php-cs-fixer-config/tree/v2.1.1" - }, - "time": "2023-09-13T12:53:23+00:00" + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "abandoned": true, + "time": "2017-11-27T05:48:46+00:00" }, { - "name": "evenement/evenement", - "version": "v3.0.2", + "name": "phpunit/phpunit", + "version": "6.5.14", "source": { "type": "git", - "url": "https://github.com/igorw/evenement.git", - "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", - "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", "shasum": "" }, "require": { - "php": ">=7.0" + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.9", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" }, "require-dev": { - "phpunit/phpunit": "^9 || ^6" + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "^1.1" }, + "bin": [ + "phpunit" + ], "type": "library", - "autoload": { - "psr-4": { - "Evenement\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "6.5.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Événement is a very simple event dispatching library for PHP", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "event-dispatcher", - "event-emitter" + "phpunit", + "testing", + "xunit" ], - "support": { - "issues": "https://github.com/igorw/evenement/issues", - "source": "https://github.com/igorw/evenement/tree/v3.0.2" - }, - "time": "2023-08-08T05:53:35+00:00" + "time": "2019-02-01T05:22:47+00:00" }, { - "name": "fidry/cpu-core-counter", - "version": "1.1.0", + "name": "phpunit/phpunit-mock-objects", + "version": "5.0.10", "source": { "type": "git", - "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "conflict": { + "phpunit/phpunit": "<6.0" }, "require-dev": { - "fidry/makefile": "^0.2.0", - "fidry/php-cs-fixer-config": "^1.1.2", - "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", - "phpunit/phpunit": "^8.5.31 || ^9.5.26", - "webmozarts/strict-phpunit": "^7.5" + "phpunit/phpunit": "^6.5.11" + }, + "suggest": { + "ext-soap": "*" }, "type": "library", - "autoload": { - "psr-4": { - "Fidry\\CpuCoreCounter\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Théo FIDRY", - "email": "theo.fidry@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Tiny utility to get the number of CPU cores.", + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", "keywords": [ - "CPU", - "core" - ], - "support": { - "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" - }, - "funding": [ - { - "url": "https://github.com/theofidry", - "type": "github" - } + "mock", + "xunit" ], - "time": "2024-02-07T09:43:46+00:00" + "abandoned": true, + "time": "2018-08-09T05:50:03+00:00" }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.59.3", + "name": "psr/container", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29" + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/30ba9ecc2b0e5205e578fe29973c15653d9bfd29", - "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "shasum": "" }, "require": { - "clue/ndjson-react": "^1.0", - "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.3", - "ext-filter": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "fidry/cpu-core-counter": "^1.0", - "php": "^7.4 || ^8.0", - "react/child-process": "^0.6.5", - "react/event-loop": "^1.0", - "react/promise": "^2.0 || ^3.0", - "react/socket": "^1.0", - "react/stream": "^1.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", - "symfony/finder": "^5.4 || ^6.0 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-mbstring": "^1.28", - "symfony/polyfill-php80": "^1.28", - "symfony/polyfill-php81": "^1.28", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" - }, - "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.3", - "infection/infection": "^0.29.5", - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.1", - "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.7", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", - "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", - "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "php": ">=5.3.0" }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", "autoload": { "psr-4": { - "PhpCsFixer\\": "src/" - }, - "exclude-from-classmap": [ - "src/Fixer/Internal/*" - ] + "Psr\\Container\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2833,64 +2144,47 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "A tool to automatically fix PHP code style", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "Static code analysis", - "fixer", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.59.3" - }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" - } + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], - "time": "2024-06-16T14:17:03+00:00" + "time": "2017-02-14T16:28:37+00:00" }, { - "name": "kahlan/kahlan", - "version": "5.2.7", + "name": "psr/log", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/kahlan/kahlan.git", - "reference": "72e043f95ee253f54dfcbd5cd646dc3fe0738835" + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kahlan/kahlan/zipball/72e043f95ee253f54dfcbd5cd646dc3fe0738835", - "reference": "72e043f95ee253f54dfcbd5cd646dc3fe0738835", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { - "php": ">=7.2" - }, - "require-dev": { - "rector/rector": "^1.0.5", - "squizlabs/php_codesniffer": "3.7.2" + "php": ">=5.3.0" }, - "bin": [ - "bin/kahlan" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, "autoload": { - "files": [ - "src/functions.php" - ], "psr-4": { - "Kahlan\\": "src/" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2899,56 +2193,49 @@ ], "authors": [ { - "name": "CrysaLEAD" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "The PHP Test Framework for Freedom, Truth and Justice.", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "BDD", - "Behavior-Driven Development", - "Monkey Patching", - "TDD", - "mock", - "stub", - "testing", - "unit test" + "log", + "psr", + "psr-3" ], - "support": { - "issues": "https://github.com/kahlan/kahlan/issues", - "source": "https://github.com/kahlan/kahlan/tree/5.2.7" - }, - "time": "2024-06-15T11:51:00+00:00" + "time": "2020-03-23T09:12:05+00:00" }, { - "name": "mikey179/vfsstream", - "version": "v1.6.11", + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/bovigo/vfsStream.git", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "^4.5|^5.0" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "org\\bovigo\\vfs\\": "src/main/php" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2956,747 +2243,604 @@ ], "authors": [ { - "name": "Frank Kleine", - "homepage": "http://frankkleine.de/", - "role": "Developer" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Virtual file system to mock the real file system in unit tests.", - "homepage": "http://vfs.bovigo.org/", - "support": { - "issues": "https://github.com/bovigo/vfsStream/issues", - "source": "https://github.com/bovigo/vfsStream/tree/master", - "wiki": "https://github.com/bovigo/vfsStream/wiki" - }, - "time": "2022-02-23T02:02:42+00:00" + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:15:22+00:00" }, { - "name": "psr/container", - "version": "2.0.2", + "name": "sebastian/comparator", + "version": "2.1.3", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", "shasum": "" }, "require": { - "php": ">=7.4.0" + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "comparator", + "compare", + "equality" ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" + "time": "2018-02-01T13:46:46+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", + "name": "sebastian/diff", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Standard interfaces for event handling.", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "events", - "psr", - "psr-14" + "diff" ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" + "time": "2017-08-03T08:09:46+00:00" }, { - "name": "psr/log", - "version": "3.0.0", + "name": "sebastian/environment", + "version": "3.1.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "log", - "psr", - "psr-3" + "Xdebug", + "environment", + "hhvm" ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" + "time": "2017-07-01T08:51:00+00:00" }, { - "name": "react/cache", - "version": "v1.2.0", + "name": "sebastian/exporter", + "version": "3.1.3", "source": { "type": "git", - "url": "https://github.com/reactphp/cache.git", - "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", - "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", + "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", "shasum": "" }, "require": { - "php": ">=5.3.0", - "react/promise": "^3.0 || ^2.0 || ^1.1" + "php": ">=7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" }, "type": "library", - "autoload": { - "psr-4": { - "React\\Cache\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" + "name": "Volker Dusch", + "email": "github@wallbash.com" }, { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" + "name": "Adam Harvey", + "email": "aharvey@php.net" }, { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Async, Promise-based cache interface for ReactPHP", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ - "cache", - "caching", - "promise", - "reactphp" + "export", + "exporter" ], - "support": { - "issues": "https://github.com/reactphp/cache/issues", - "source": "https://github.com/reactphp/cache/tree/v1.2.0" - }, "funding": [ { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2022-11-30T15:59:55+00:00" + "time": "2020-11-30T07:47:53+00:00" }, { - "name": "react/child-process", - "version": "v0.6.5", + "name": "sebastian/global-state", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/reactphp/child-process.git", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/event-loop": "^1.2", - "react/stream": "^1.2" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/socket": "^1.8", - "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" }, "type": "library", - "autoload": { - "psr-4": { - "React\\ChildProcess\\": "src" + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Event-driven library for executing child processes with ReactPHP.", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "event-driven", - "process", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.5" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } + "global state" ], - "time": "2022-09-16T13:41:56+00:00" + "time": "2017-04-27T15:39:26+00:00" }, { - "name": "react/dns", - "version": "v1.13.0", + "name": "sebastian/object-enumerator", + "version": "3.0.4", "source": { "type": "git", - "url": "https://github.com/reactphp/dns.git", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", "shasum": "" }, "require": { - "php": ">=5.3.0", - "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.2", - "react/promise": "^3.2 || ^2.7 || ^1.2.1" + "php": ">=7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4.3 || ^3 || ^2", - "react/promise-timer": "^1.11" + "phpunit/phpunit": "^6.0" }, "type": "library", - "autoload": { - "psr-4": { - "React\\Dns\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Async DNS resolver for ReactPHP", - "keywords": [ - "async", - "dns", - "dns-resolver", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.13.0" - }, + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "funding": [ { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2024-06-13T14:18:03+00:00" + "time": "2020-11-30T07:40:27+00:00" }, { - "name": "react/event-loop", - "version": "v1.5.0", + "name": "sebastian/object-reflector", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" - }, - "suggest": { - "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + "phpunit/phpunit": "^6.0" }, "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "support": { - "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" - }, + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "funding": [ { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2023-11-13T13:48:05+00:00" + "time": "2020-11-30T07:37:18+00:00" }, { - "name": "react/promise", - "version": "v3.2.0", + "name": "sebastian/recursion-context", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", "shasum": "" }, "require": { - "php": ">=7.1.0" + "php": ">=7.0" }, "require-dev": { - "phpstan/phpstan": "1.10.39 || 1.4.10", - "phpunit/phpunit": "^9.6 || ^7.5" + "phpunit/phpunit": "^6.0" }, "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.2.0" - }, + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "funding": [ { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2024-05-24T10:39:05+00:00" + "time": "2020-11-30T07:34:24+00:00" }, { - "name": "react/socket", - "version": "v1.15.0", + "name": "sebastian/resource-operations", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", - "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", "shasum": "" }, "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/dns": "^1.11", - "react/event-loop": "^1.2", - "react/promise": "^3 || ^2.6 || ^1.2.1", - "react/stream": "^1.2" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4 || ^3 || ^2", - "react/promise-stream": "^1.4", - "react/promise-timer": "^1.10" + "php": ">=5.6.0" }, "type": "library", - "autoload": { - "psr-4": { - "React\\Socket\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", - "keywords": [ - "Connection", - "Socket", - "async", - "reactphp", - "stream" - ], - "support": { - "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.15.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "time": "2023-12-15T11:02:10+00:00" + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" }, { - "name": "react/stream", - "version": "v1.4.0", + "name": "sebastian/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/reactphp/stream.git", - "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", - "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.8", - "react/event-loop": "^1.2" - }, - "require-dev": { - "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + "php": ">=5.6" }, "type": "library", - "autoload": { - "psr-4": { - "React\\Stream\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", - "keywords": [ - "event-driven", - "io", - "non-blocking", - "pipe", - "reactphp", - "readable", - "stream", - "writable" - ], - "support": { - "issues": "https://github.com/reactphp/stream/issues", - "source": "https://github.com/reactphp/stream/tree/v1.4.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "time": "2024-06-11T12:45:25+00:00" + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" }, { "name": "symfony/console", - "version": "v7.1.1", + "version": "v3.4.43", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "9b008f2d7b21c74ef4d0c3de6077a642bc55ece3" + "reference": "afc7189694d2c59546cf24ea606a236fa46a966e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/9b008f2d7b21c74ef4d0c3de6077a642bc55ece3", - "reference": "9b008f2d7b21c74ef4d0c3de6077a642bc55ece3", + "url": "https://api.github.com/repos/symfony/console/zipball/afc7189694d2c59546cf24ea606a236fa46a966e", + "reference": "afc7189694d2c59546cf24ea606a236fa46a966e", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0" + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" }, "provide": { - "psr/log-implementation": "1.0|2.0|3.0" + "psr/log-implementation": "1.0" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "psr/log": "~1.0", + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" @@ -3719,17 +2863,8 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "Symfony Console Component", "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v7.1.1" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3744,38 +2879,45 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2020-07-06T08:57:31+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "name": "symfony/debug", + "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "url": "https://github.com/symfony/debug.git", + "reference": "47aa9064d75db36389692dd4d39895a0820f00f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/debug/zipball/47aa9064d75db36389692dd4d39895a0820f00f2", + "reference": "47aa9064d75db36389692dd4d39895a0820f00f2", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.1.3", + "psr/log": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/http-kernel": "<3.4" + }, + "require-dev": { + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "4.4-dev" } }, "autoload": { - "files": [ - "function.php" + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3784,19 +2926,16 @@ ], "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": "Symfony Debug Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3811,45 +2950,52 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2020-07-23T08:31:43+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.1.1", + "version": "v4.4.11", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" + "reference": "6140fc7047dafc5abbe84ba16a34a86c0b0229b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", - "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6140fc7047dafc5abbe84ba16a34a86c0b0229b8", + "reference": "6140fc7047dafc5abbe84ba16a34a86c0b0229b8", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/event-dispatcher-contracts": "^2.5|^3" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1" }, "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/service-contracts": "<2.5" + "symfony/dependency-injection": "<3.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" + "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "psr/log": "~1.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "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" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" @@ -3872,11 +3018,8 @@ "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": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3891,30 +3034,33 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2020-06-18T17:59:13+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v1.1.9", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" + "php": ">=7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-master": "1.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -3950,9 +3096,6 @@ "interoperability", "standards" ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3967,31 +3110,32 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2020-07-06T13:19:58+00:00" }, { "name": "symfony/filesystem", - "version": "v7.1.1", + "version": "v4.4.11", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "802e87002f919296c9f606457d9fa327a0b3d6b2" + "reference": "b27f491309db5757816db672b256ea2e03677d30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/802e87002f919296c9f606457d9fa327a0b3d6b2", - "reference": "802e87002f919296c9f606457d9fa327a0b3d6b2", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b27f491309db5757816db672b256ea2e03677d30", + "reference": "b27f491309db5757816db672b256ea2e03677d30", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "require-dev": { - "symfony/process": "^6.4|^7.0" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Filesystem\\": "" @@ -4014,11 +3158,8 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides basic utilities for the filesystem", + "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.1.1" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4033,29 +3174,31 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2020-05-30T18:50:54+00:00" }, { "name": "symfony/finder", - "version": "v7.1.1", + "version": "v4.4.11", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6" + "reference": "2727aa35fddfada1dd37599948528e9b152eb742" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/fbb0ba67688b780efbc886c1a0a0948dcf7205d6", - "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6", + "url": "https://api.github.com/repos/symfony/finder/zipball/2727aa35fddfada1dd37599948528e9b152eb742", + "reference": "2727aa35fddfada1dd37599948528e9b152eb742", "shasum": "" }, "require": { - "php": ">=8.2" - }, - "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "php": ">=7.1.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" @@ -4078,11 +3221,8 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Finds files and directories via an intuitive fluent interface", + "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v7.1.1" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4097,27 +3237,31 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2020-07-05T09:39:30+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.1.1", + "version": "v4.4.11", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55" + "reference": "376bd3a02e7946dbf90b01563361b47dde425025" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/47aa818121ed3950acd2b58d1d37d08a94f9bf55", - "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/376bd3a02e7946dbf90b01563361b47dde425025", + "reference": "376bd3a02e7946dbf90b01563361b47dde425025", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=7.1.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\OptionsResolver\\": "" @@ -4140,16 +3284,13 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an improved replacement for the array_replace PHP function", + "description": "Symfony OptionsResolver Component", "homepage": "https://symfony.com", "keywords": [ "config", "configuration", "options" ], - "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.1.1" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4164,45 +3305,45 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2020-07-10T09:12:14+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.30.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540" + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" + "php": ">=5.3.3" }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" - } + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4226,9 +3367,6 @@ "polyfill", "portable" ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4243,42 +3381,45 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.30.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=5.3.3" }, "suggest": { - "ext-intl": "For best performance" + "ext-mbstring": "For best performance" }, "type": "library", "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, "files": [ "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4294,19 +3435,15 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "grapheme", - "intl", + "mbstring", "polyfill", "portable", "shim" ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4321,42 +3458,43 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.30.0", + "name": "symfony/polyfill-php70", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" + "paragonie/random_compat": "~1.0|~2.0|~9.99", + "php": ">=5.3.3" }, "type": "library", "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, "files": [ "bootstrap.php" ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "classmap": [ "Resources/stubs" ] @@ -4375,19 +3513,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "intl", - "normalizer", "polyfill", "portable", "shim" ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4402,45 +3535,42 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.30.0", + "name": "symfony/polyfill-php72", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "639447d008615574653fb3bc60d1986d7172eaae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", + "reference": "639447d008615574653fb3bc60d1986d7172eaae", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" + "php": ">=5.3.3" }, "type": "library", "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, "files": [ "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4456,18 +3586,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", "polyfill", "portable", "shim" ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4482,39 +3608,42 @@ "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.30.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.0.8" }, "type": "library", "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { "Symfony\\Polyfill\\Php80\\": "" }, + "files": [ + "bootstrap.php" + ], "classmap": [ "Resources/stubs" ] @@ -4545,9 +3674,6 @@ "portable", "shim" ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4562,102 +3688,31 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.30.0", + "name": "symfony/process", + "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" + "url": "https://github.com/symfony/process.git", + "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", - "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", + "url": "https://api.github.com/repos/symfony/process/zipball/65e70bab62f3da7089a8d4591fb23fbacacb3479", + "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3" }, "type": "library", "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.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" + "branch-alias": { + "dev-master": "4.4-dev" } - ], - "time": "2024-06-19T12:30:46+00:00" - }, - { - "name": "symfony/process", - "version": "v7.1.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "febf90124323a093c7ee06fdb30e765ca3c20028" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/febf90124323a093c7ee06fdb30e765ca3c20028", - "reference": "febf90124323a093c7ee06fdb30e765ca3c20028", - "shasum": "" - }, - "require": { - "php": ">=8.2" }, - "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" @@ -4680,11 +3735,8 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Symfony Process Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v7.1.1" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4699,34 +3751,33 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2020-07-23T08:31:43+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v1.1.9", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26", + "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=7.1.3", + "psr/container": "^1.0" }, - "conflict": { - "ext-psr": "<1.1|>=2" + "suggest": { + "symfony/service-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.5-dev" + "dev-master": "1.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -4736,10 +3787,7 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4765,9 +3813,6 @@ "interoperability", "standards" ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4782,27 +3827,32 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2020-07-06T13:19:58+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.1.1", + "version": "v4.4.11", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" + "reference": "f51fb90df1154a7f75987198a9689e28f91e6a50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f51fb90df1154a7f75987198a9689e28f91e6a50", + "reference": "f51fb90df1154a7f75987198a9689e28f91e6a50", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/service-contracts": "^2.5|^3" + "php": ">=7.1.3", + "symfony/service-contracts": "^1.0|^2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Stopwatch\\": "" @@ -4825,11 +3875,8 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a way to profile code", + "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4844,51 +3891,84 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2020-05-20T08:37:50+00:00" }, { - "name": "symfony/string", - "version": "v7.1.1", + "name": "theseer/tokenizer", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "60bc311c74e0af215101235aa6f471bcbc032df2" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "75a63c33a8577608444246075ea0af0d052e452a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/60bc311c74e0af215101235aa6f471bcbc032df2", - "reference": "60bc311c74e0af215101235aa6f471bcbc032df2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2020-07-12T23:59:07+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/translation-contracts": "<2.5" + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Webmozart\\Assert\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4896,42 +3976,17 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "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": "Assertions to validate method input/output with nice error messages.", "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v7.1.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" - } + "assert", + "check", + "validate" ], - "time": "2024-06-04T06:40:14+00:00" + "time": "2020-07-08T17:02:28+00:00" } ], "aliases": [], @@ -4941,8 +3996,8 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], + "plugin-api-version": "1.1.0", "platform-overrides": { - "php": "8.3" - }, - "plugin-api-version": "2.6.0" + "php": "7.2" + } } diff --git a/wp-content/themes/dxw-security-2017/peridot.php b/wp-content/themes/dxw-security-2017/peridot.php index 540d23d0..9f666c2c 100644 --- a/wp-content/themes/dxw-security-2017/peridot.php +++ b/wp-content/themes/dxw-security-2017/peridot.php @@ -1,5 +1,4 @@ ajaxHandler = new \Dxw\DxwSecurity2017\Lib\AdvisoryEmails\AjaxHandler(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->ajaxHandler = new \Dxw\DxwSecurity2017\Lib\AdvisoryEmails\AjaxHandler(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->ajaxHandler)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->ajaxHandler)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('adds the action', function () { - WP_Mock::expectActionAdded('wp_ajax_send_email', [$this->ajaxHandler, 'wp_ajax_send_email']); - $this->ajaxHandler->register(); - }); - }); + describe('->register()', function () { + it('adds the action', function () { + WP_Mock::expectActionAdded('wp_ajax_send_email', [$this->ajaxHandler, 'wp_ajax_send_email']); + $this->ajaxHandler->register(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/lib/AdvisoryEmails/form.spec.php b/wp-content/themes/dxw-security-2017/spec/lib/AdvisoryEmails/form.spec.php index cac5c972..6de86bbe 100644 --- a/wp-content/themes/dxw-security-2017/spec/lib/AdvisoryEmails/form.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/lib/AdvisoryEmails/form.spec.php @@ -1,27 +1,27 @@ form = new \Dxw\DxwSecurity2017\Lib\AdvisoryEmails\Form(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->form = new \Dxw\DxwSecurity2017\Lib\AdvisoryEmails\Form(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - describe('->displayIfSuperAdmin()', function () { - context('user is not super admin', function () { - it('does nothing', function () { - WP_Mock::userFunction('is_super_admin', [ - 'times' => 1, - 'return' => false - ]); - ob_start(); - $this->form->displayIfSuperAdmin(); - $result = ob_get_clean(); - expect($result)->toBe(''); - }); - }); - }); + describe('->displayIfSuperAdmin()', function () { + context('user is not super admin', function () { + it('does nothing', function () { + WP_Mock::wpFunction('is_super_admin', [ + 'times' => 1, + 'return' => false + ]); + ob_start(); + $this->form->displayIfSuperAdmin(); + $result = ob_get_clean(); + expect($result)->to->equal(''); + }); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/plugin.spec.php b/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/plugin.spec.php index d25290ef..966a8f42 100644 --- a/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/plugin.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/plugin.spec.php @@ -1,106 +1,106 @@ getter = Mockery::mock(\Dxw\DxwSecurity2017\Lib\FetchPluginDetails\WordPressApiGetter::class); - $this->plugin = new \Dxw\DxwSecurity2017\Lib\FetchPluginDetails\Plugin($this->getter); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->getter = Mockery::mock(\Dxw\DxwSecurity2017\Lib\FetchPluginDetails\WordPressApiGetter::class); + $this->plugin = new \Dxw\DxwSecurity2017\Lib\FetchPluginDetails\Plugin($this->getter); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - describe('->getDetails()', function () { - context('result isErr()', function () { - it('returns ok=>false', function () { - $slug = 'foo'; - $result = Mockery::Mock(\Dxw\Result\Result::class); - $this->getter->shouldReceive('getPluginInfo') - ->once() - ->with($slug) - ->andReturn($result); - $result->shouldReceive('isErr') - ->once() - ->andReturn(true); - $result = $this->plugin->getDetails($slug); - expect($result)->toBe(["ok" => false]); - }); - }); + describe('->getDetails()', function () { + context('result isErr()', function () { + it('returns ok=>false', function () { + $slug = 'foo'; + $result = Mockery::Mock(\Dxw\Result\Result::class); + $this->getter->shouldReceive('getPluginInfo') + ->once() + ->with($slug) + ->andReturn($result); + $result->shouldReceive('isErr') + ->once() + ->andReturn(true); + $result = $this->plugin->getDetails($slug); + expect($result)->to->equal(["ok" => false]); + }); + }); - context('valid response', function () { - context('description has multiple paras', function () { - it('gets first para of description and returns data', function () { - $slug = 'foo'; - $response = Mockery::Mock(\Dxw\Result\Result::class); - $responseContent = new stdClass(); - $responseContent->name = 'Plugin name'; - $responseContent->version = '1.1.1'; - $responseContent->author = 'author1'; - $responseContent->sections = [ - 'description' => '

A heading

First para

Second para

' - ]; - $this->getter->shouldReceive('getPluginInfo') - ->once() - ->with($slug) - ->andReturn($response); - WP_Mock::userFunction('wp_die', [ - 'times' => 0, - ]); - $response->shouldReceive('isErr') - ->once() - ->andReturn(false); - $response->shouldReceive('unwrap') - ->once() - ->andReturn($responseContent); - $result = $this->plugin->getDetails($slug); - expect($result)->toBe([ - 'description' => 'First para', - 'ok' => true, - 'slug' => $slug, - 'name' => 'Plugin name', - 'version' => '1.1.1', - 'author' => 'author1', - 'link' => 'https://wordpress.org/plugins/foo/', - ]); - }); - }); - context('description has no paras', function () { - it('returns data with empty description', function () { - $slug = 'foo'; - $response = Mockery::Mock(\Dxw\Result\Result::class); - $responseContent = new stdClass(); - $responseContent->name = 'Plugin name'; - $responseContent->version = '1.1.1'; - $responseContent->author = 'author1'; - $responseContent->sections = [ - 'description' => '

A heading

' - ]; - $this->getter->shouldReceive('getPluginInfo') - ->once() - ->with($slug) - ->andReturn($response); - WP_Mock::userFunction('wp_die', [ - 'times' => 0, - ]); - $response->shouldReceive('isErr') - ->once() - ->andReturn(false); - $response->shouldReceive('unwrap') - ->once() - ->andReturn($responseContent); - $result = $this->plugin->getDetails($slug); - expect($result)->toBe([ - 'description' => '', - 'ok' => true, - 'slug' => $slug, - 'name' => 'Plugin name', - 'version' => '1.1.1', - 'author' => 'author1', - 'link' => 'https://wordpress.org/plugins/foo/', - ]); - }); - }); - }); - }); + context('valid response', function () { + context('description has multiple paras', function () { + it('gets first para of description and returns data', function () { + $slug = 'foo'; + $response = Mockery::Mock(\Dxw\Result\Result::class); + $responseContent = new stdClass(); + $responseContent->name = 'Plugin name'; + $responseContent->version = '1.1.1'; + $responseContent->author = 'author1'; + $responseContent->sections = [ + 'description' => '

A heading

First para

Second para

' + ]; + $this->getter->shouldReceive('getPluginInfo') + ->once() + ->with($slug) + ->andReturn($response); + WP_Mock::wpFunction('wp_die', [ + 'times' => 0, + ]); + $response->shouldReceive('isErr') + ->once() + ->andReturn(false); + $response->shouldReceive('unwrap') + ->once() + ->andReturn($responseContent); + $result = $this->plugin->getDetails($slug); + expect($result)->to->equal([ + 'description' => 'First para', + 'ok' => true, + 'slug' => $slug, + 'name' => 'Plugin name', + 'version' => '1.1.1', + 'author' => 'author1', + 'link' => 'https://wordpress.org/plugins/foo/', + ]); + }); + }); + context('description has no paras', function () { + it('returns data with empty description', function () { + $slug = 'foo'; + $response = Mockery::Mock(\Dxw\Result\Result::class); + $responseContent = new stdClass(); + $responseContent->name = 'Plugin name'; + $responseContent->version = '1.1.1'; + $responseContent->author = 'author1'; + $responseContent->sections = [ + 'description' => '

A heading

' + ]; + $this->getter->shouldReceive('getPluginInfo') + ->once() + ->with($slug) + ->andReturn($response); + WP_Mock::wpFunction('wp_die', [ + 'times' => 0, + ]); + $response->shouldReceive('isErr') + ->once() + ->andReturn(false); + $response->shouldReceive('unwrap') + ->once() + ->andReturn($responseContent); + $result = $this->plugin->getDetails($slug); + expect($result)->to->equal([ + 'description' => '', + 'ok' => true, + 'slug' => $slug, + 'name' => 'Plugin name', + 'version' => '1.1.1', + 'author' => 'author1', + 'link' => 'https://wordpress.org/plugins/foo/', + ]); + }); + }); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/theme.spec.php b/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/theme.spec.php index ceb25b6e..8f3c51bb 100644 --- a/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/theme.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/theme.spec.php @@ -1,93 +1,93 @@ plugin = Mockery::mock(\Dxw\DxwSecurity2017\Lib\FetchPluginDetails\Plugin::class); - $this->theme = new \Dxw\DxwSecurity2017\Lib\FetchPluginDetails\Theme($this->plugin); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->plugin = Mockery::mock(\Dxw\DxwSecurity2017\Lib\FetchPluginDetails\Plugin::class); + $this->theme = new \Dxw\DxwSecurity2017\Lib\FetchPluginDetails\Theme($this->plugin); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->theme)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->theme)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('adds the actions and filters', function () { - WP_Mock::expectActionAdded('wp_ajax_fetch_plugin_details', [$this->theme, 'wp_ajax_fetch_plugin_details']); - WP_Mock::expectActionAdded('admin_enqueue_scripts', [$this->theme, 'admin_enqueue_scripts']); - WP_Mock::expectFilterAdded('language_attributes', [$this->theme, 'language_attributes'], 10, 1); - $this->theme->register(); - }); - }); + describe('->register()', function () { + it('adds the actions and filters', function () { + WP_Mock::expectActionAdded('wp_ajax_fetch_plugin_details', [$this->theme, 'wp_ajax_fetch_plugin_details']); + WP_Mock::expectActionAdded('admin_enqueue_scripts', [$this->theme, 'admin_enqueue_scripts']); + WP_Mock::expectFilterAdded('language_attributes', [$this->theme, 'language_attributes'], 10, 1); + $this->theme->register(); + }); + }); - describe('wp_ajax_fetch_plugin_details', function () { - it('calls check_ajax_referer first then echoes plugin details', function () { - WP_Mock::userFunction('check_ajax_referer', [ - 'times' => 1, - 'args' => ['fetch_plugin_details'], - 'return' => function () { - echo "checking referer "; - } - ]); - $_POST['plugin-slug'] = 'foo'; + describe('wp_ajax_fetch_plugin_details', function () { + it('calls check_ajax_referer first then echoes plugin details', function () { + WP_Mock::wpFunction('check_ajax_referer', [ + 'times' => 1, + 'args' => ['fetch_plugin_details'], + 'return' => function () { + echo "checking referer "; + } + ]); + $_POST['plugin-slug'] = 'foo'; - $this->plugin->shouldReceive('getDetails') - ->once() - ->with('foo') - ->andReturn(["a" => 1]); - WP_Mock::userFunction('wp_die', [ - 'times' => 1, - ]); + $this->plugin->shouldReceive('getDetails') + ->once() + ->with('foo') + ->andReturn(["a" => 1]); + WP_Mock::wpFunction('wp_die', [ + 'times' => 1, + ]); - ob_start(); - $this->theme->wp_ajax_fetch_plugin_details(); - $result = ob_get_clean(); - expect($result)->toBe("checking referer {\"a\":1}\n"); - }); - }); + ob_start(); + $this->theme->wp_ajax_fetch_plugin_details(); + $result = ob_get_clean(); + expect($result)->to->equal("checking referer {\"a\":1}\n"); + }); + }); - describe('admin_enqueue_scripts', function () { - it('enqueues each script', function () { - WP_Mock::userFunction('get_theme_root_uri', [ - 'return' => 'http://foo/theme' - ]); - WP_Mock::userFunction('wp_enqueue_script', [ - 'times' => 1, - 'args' => [ - 'fetch-plugin-details', - 'http://foo/theme/dxw-security-2017/assets/js/admin/fetch-plugin-details.js', - [], - false, - true - ] - ]); - WP_Mock::userFunction('wp_enqueue_script', [ - 'times' => 1, - 'args' => [ - 'async', - 'http://foo/theme/dxw-security-2017/assets/js/admin/async.js', - [], - false, - true - ] - ]); - $this->theme->admin_enqueue_scripts(); - }); - }); + describe('admin_enqueue_scripts', function () { + it('enqueues each script', function () { + WP_Mock::wpFunction('get_theme_root_uri', [ + 'return' => 'http://foo/theme' + ]); + WP_Mock::wpFunction('wp_enqueue_script', [ + 'times' => 1, + 'args' => [ + 'fetch-plugin-details', + 'http://foo/theme/dxw-security-2017/assets/js/admin/fetch-plugin-details.js', + [], + false, + true + ] + ]); + WP_Mock::wpFunction('wp_enqueue_script', [ + 'times' => 1, + 'args' => [ + 'async', + 'http://foo/theme/dxw-security-2017/assets/js/admin/async.js', + [], + false, + true + ] + ]); + $this->theme->admin_enqueue_scripts(); + }); + }); - describe('language_attributes', function () { - it('appends a nonce', function () { - WP_Mock::userFunction('wp_create_nonce', [ - 'times' => 1, - 'args' => 'fetch_plugin_details', - 'return' => 'foo' - ]); - $result = $this->theme->language_attributes('english'); - expect($result)->toBe('english data-nonce-fetch-plugin-details="foo" '); - }); - }); + describe('language_attributes', function () { + it('appends a nonce', function () { + WP_Mock::wpFunction('wp_create_nonce', [ + 'times' => 1, + 'args' => 'fetch_plugin_details', + 'return' => 'foo' + ]); + $result = $this->theme->language_attributes('english'); + expect($result)->to->equal('english data-nonce-fetch-plugin-details="foo" '); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/wordpress_api_getter.spec.php b/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/wordpress_api_getter.spec.php index 498a8c3f..cf1f8cef 100644 --- a/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/wordpress_api_getter.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/lib/FetchPluginDetails/wordpress_api_getter.spec.php @@ -1,81 +1,81 @@ getter = new \Dxw\DxwSecurity2017\Lib\FetchPluginDetails\WordPressApiGetter(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->getter = new \Dxw\DxwSecurity2017\Lib\FetchPluginDetails\WordPressApiGetter(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - describe('->getPluginInfo()', function () { - context('response is wp_error', function () { - it('returns an error result', function () { - $this->error = Mockery::Mock(\WP_Error::class); - WP_Mock::userFunction('wp_remote_post', [ - 'times' => 1, - 'args' => [ - 'https://api.wordpress.org/plugins/info/1.0/', - [ - 'body' => [ - 'action' => 'plugin_information', - 'request' => serialize((object)[ - 'slug' => 'foo', - ]) - ], - 'timeout' => 15 - ] - ], - 'return' => $this->error - ]); - WP_Mock::userFunction('is_wp_error', [ - 'times' => 1, - 'args' => [$this->error], - 'return' => true - ]); - $this->error->shouldReceive('get_error_message') - ->once() - ->andReturn('errormessage'); - $result = $this->getter->getPluginInfo('foo'); - expect($result)->toBeAnInstanceOf(\Dxw\Result\Result::class); - expect($result->isErr())->toBe(true); - expect($result->getErr())->toBe('errormessage'); - }); - }); - it('returns the unserialized response', function () { - $this->response = [ - 'body' => 'a:2:{i:0;s:5:"first";i:1;s:6:"second";}' - ]; - WP_Mock::userFunction('wp_remote_post', [ - 'times' => 1, - 'args' => [ - 'https://api.wordpress.org/plugins/info/1.0/', - [ - 'body' => [ - 'action' => 'plugin_information', - 'request' => serialize((object)[ - 'slug' => 'foo', - ]) - ], - 'timeout' => 15 - ] - ], - 'return' => $this->response - ]); - WP_Mock::userFunction('is_wp_error', [ - 'times' => 1, - 'args' => [$this->response], - 'return' => false - ]); - $result = $this->getter->getPluginInfo('foo'); - expect($result)->toBeAnInstanceOf(\Dxw\Result\Result::class); - expect($result->isErr())->toBe(false); - expect($result->unwrap())->toBe([ - 'first', - 'second' - ]); - }); - }); + describe('->getPluginInfo()', function () { + context('response is wp_error', function () { + it('returns an error result', function () { + $this->error = Mockery::Mock(\WP_Error::class); + WP_Mock::wpFunction('wp_remote_post', [ + 'times' => 1, + 'args' => [ + 'https://api.wordpress.org/plugins/info/1.0/', + [ + 'body' => [ + 'action' => 'plugin_information', + 'request' => serialize((object)[ + 'slug' => 'foo', + ]) + ], + 'timeout' => 15 + ] + ], + 'return' => $this->error + ]); + WP_Mock::wpFunction('is_wp_error', [ + 'times' => 1, + 'args' => [$this->error], + 'return' => true + ]); + $this->error->shouldReceive('get_error_message') + ->once() + ->andReturn('errormessage'); + $result = $this->getter->getPluginInfo('foo'); + expect($result)->to->be->instanceof(\Dxw\Result\Result::class); + expect($result->isErr())->to->equal(true); + expect($result->getErr())->to->equal('errormessage'); + }); + }); + it('returns the unserialized response', function () { + $this->response = [ + 'body' => 'a:2:{i:0;s:5:"first";i:1;s:6:"second";}' + ]; + WP_Mock::wpFunction('wp_remote_post', [ + 'times' => 1, + 'args' => [ + 'https://api.wordpress.org/plugins/info/1.0/', + [ + 'body' => [ + 'action' => 'plugin_information', + 'request' => serialize((object)[ + 'slug' => 'foo', + ]) + ], + 'timeout' => 15 + ] + ], + 'return' => $this->response + ]); + WP_Mock::wpFunction('is_wp_error', [ + 'times' => 1, + 'args' => [$this->response], + 'return' => false + ]); + $result = $this->getter->getPluginInfo('foo'); + expect($result)->to->be->instanceof(\Dxw\Result\Result::class); + expect($result->isErr())->to->equal(false); + expect($result->unwrap())->to->equal([ + 'first', + 'second' + ]); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/lib/whippet/template_tags.spec.php b/wp-content/themes/dxw-security-2017/spec/lib/whippet/template_tags.spec.php index d735196e..e25a4d32 100644 --- a/wp-content/themes/dxw-security-2017/spec/lib/whippet/template_tags.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/lib/whippet/template_tags.spec.php @@ -1,21 +1,21 @@ helpersMock = Mockery::mock(\Dxw\Iguana\Theme\Helpers::class); - $this->templateTags = new \Dxw\DxwSecurity2017\Lib\Whippet\TemplateTags( - $this->helpersMock - ); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->helpersMock = Mockery::mock(\Dxw\Iguana\Theme\Helpers::class); + $this->templateTags = new \Dxw\DxwSecurity2017\Lib\Whippet\TemplateTags( + $this->helpersMock + ); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - describe('->w_template_title()', function () { - xit('displays the title of the page', function () { - $this->templateTags->w_template_title(); - }); - }); + describe('->w_template_title()', function () { + xit('displays the title of the page', function () { + $this->templateTags->w_template_title(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/posts/custom_fields.spec.php b/wp-content/themes/dxw-security-2017/spec/posts/custom_fields.spec.php index a60e2391..a7c40fd2 100644 --- a/wp-content/themes/dxw-security-2017/spec/posts/custom_fields.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/posts/custom_fields.spec.php @@ -1,22 +1,22 @@ customFields = new \Dxw\DxwSecurity2017\Posts\CustomFields(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->customFields = new \Dxw\DxwSecurity2017\Posts\CustomFields(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->customFields)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->customFields)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - xit('registers any custom fields', function () { - $this->customFields->register(); - }); - }); + describe('->register()', function () { + xit('registers any custom fields', function () { + $this->customFields->register(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/posts/post_types.spec.php b/wp-content/themes/dxw-security-2017/spec/posts/post_types.spec.php index f7d8eb77..1db00001 100644 --- a/wp-content/themes/dxw-security-2017/spec/posts/post_types.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/posts/post_types.spec.php @@ -1,22 +1,22 @@ postTypes = new \Dxw\DxwSecurity2017\Posts\PostTypes(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->postTypes = new \Dxw\DxwSecurity2017\Posts\PostTypes(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->postTypes)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->postTypes)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - xit('registers any custom post types', function () { - $this->postTypes->register(); - }); - }); + describe('->register()', function () { + xit('registers any custom post types', function () { + $this->postTypes->register(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/feeds.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/feeds.spec.php index 2836d6dc..b975415c 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/feeds.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/feeds.spec.php @@ -1,68 +1,68 @@ feeds = new \Dxw\DxwSecurity2017\Theme\Feeds(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->feeds = new \Dxw\DxwSecurity2017\Theme\Feeds(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->feeds)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->feeds)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('adds the action', function () { - WP_Mock::expectActionAdded('wp_head', [$this->feeds, 'wp_head']); - $this->feeds->register(); - }); - }); + describe('->register()', function () { + it('adds the action', function () { + WP_Mock::expectActionAdded('wp_head', [$this->feeds, 'wp_head']); + $this->feeds->register(); + }); + }); - describe('->wp_head()', function () { - it('outputs two feed links', function () { - WP_Mock::userFunction('get_bloginfo', [ - 'times' => 2, - 'args' => 'name', - 'return' => 'dxwsec' - ]); - WP_Mock::userFunction('get_post_type_archive_feed_link', [ - 'times' => 1, - 'args' => [ - 'advisories', - 'atom' - ], - 'return' => 'feed_link_1' - ]); - WP_Mock::userFunction('esc_attr', [ - 'times' => 1, - 'args' => 'feed_link_1', - 'return' => '_feed_link_1_' - ]); - WP_Mock::userFunction('get_post_type_archive_feed_link', [ - 'times' => 1, - 'args' => [ - 'plugins', - 'atom' - ], - 'return' => 'feed_link_2' - ]); - WP_Mock::userFunction('esc_attr', [ - 'times' => 1, - 'args' => 'feed_link_2', - 'return' => '_feed_link_2_' - ]); - ob_start(); - $this->feeds->wp_head(); - $result = ob_get_clean(); - expect($result)->toContain( - '' - ); - expect($result)->toContain( - '' - ); - }); - }); + describe('->wp_head()', function () { + it('outputs two feed links', function () { + WP_Mock::wpFunction('get_bloginfo', [ + 'times' => 2, + 'args' => 'name', + 'return' => 'dxwsec' + ]); + WP_Mock::wpFunction('get_post_type_archive_feed_link', [ + 'times' => 1, + 'args' => [ + 'advisories', + 'atom' + ], + 'return' => 'feed_link_1' + ]); + WP_Mock::wpFunction('esc_attr', [ + 'times' => 1, + 'args' => 'feed_link_1', + 'return' => '_feed_link_1_' + ]); + WP_Mock::wpFunction('get_post_type_archive_feed_link', [ + 'times' => 1, + 'args' => [ + 'plugins', + 'atom' + ], + 'return' => 'feed_link_2' + ]); + WP_Mock::wpFunction('esc_attr', [ + 'times' => 1, + 'args' => 'feed_link_2', + 'return' => '_feed_link_2_' + ]); + ob_start(); + $this->feeds->wp_head(); + $result = ob_get_clean(); + expect($result)->to->have->string( + '' + ); + expect($result)->to->have->string( + '' + ); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/footer.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/footer.spec.php index c14e03b0..346bbcc0 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/footer.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/footer.spec.php @@ -1,50 +1,50 @@ footer = new \Dxw\DxwSecurity2017\Theme\Footer(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->footer = new \Dxw\DxwSecurity2017\Theme\Footer(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->footer)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->footer)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('registers actions', function () { - WP_Mock::expectActionAdded('wp_footer', [$this->footer, 'wpFooter']); - $this->footer->register(); - }); - }); + describe('->register()', function () { + it('registers actions', function () { + WP_Mock::expectActionAdded('wp_footer', [$this->footer, 'wpFooter']); + $this->footer->register(); + }); + }); - describe('->wpFooter()', function () { - it('adds HTML to the footer', function () { - ob_start(); - $this->footer->wpFooter(); - $result = ob_get_contents(); - ob_end_clean(); - expect($result)->toBe(implode("\n", [ - ' ', - ' ', - ])); - }); - }); + describe('->wpFooter()', function () { + it('adds HTML to the footer', function () { + ob_start(); + $this->footer->wpFooter(); + $result = ob_get_contents(); + ob_end_clean(); + expect($result)->to->be->equal(implode("\n", [ + ' ', + ' ', + ])); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/helpers.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/helpers.spec.php index de06776c..aa26c5e8 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/helpers.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/helpers.spec.php @@ -1,152 +1,152 @@ iguanaHelpers = Mockery::mock(\Dxw\Iguana\Theme\Helpers::class); - $this->helpers = new \Dxw\DxwSecurity2017\Theme\Helpers($this->iguanaHelpers); - }); - - afterEach(function () { - \WP_Mock::tearDown(); - }); - - it('is registrable', function () { - expect($this->helpers)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); - - describe('->register()', function () { - it('registers the helper functions', function () { - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('the_title_for_email', [$this->helpers, 'the_title_for_email']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('the_advisory_id', [$this->helpers, 'the_advisory_id']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('the_short_recommendation', [$this->helpers, 'the_short_recommendation']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('the_recommendation', [$this->helpers, 'the_recommendation']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('recommendation_data', [$this->helpers, 'recommendation_data']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('get_field_label', [$this->helpers, 'get_field_label']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('the_field_label', [$this->helpers, 'the_field_label']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('the_other_versions', [$this->helpers, 'the_other_versions']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('get_plugin_vulnerabilities', [$this->helpers, 'get_plugin_vulnerabilities']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('the_plugin_vulnerabilities', [$this->helpers, 'the_plugin_vulnerabilities']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('get_cvss_score', [$this->helpers, 'get_cvss_score']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('the_cvss_score', [$this->helpers, 'the_cvss_score']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('get_cvss_severity', [$this->helpers, 'get_cvss_severity']); - $this->iguanaHelpers->shouldReceive('registerFunction') - ->once() - ->with('the_cvss_severity', [$this->helpers, 'the_cvss_severity']); - $this->helpers->register(); - }); - }); - - //These helpers methods were all taken directly from the old theme, where they had no tests - - describe('->the_title_for_email', function () { - xit('produces an email title', function () { - $this->helpers->the_title_for_email(1); - }); - }); - - describe('->the_advisory_id()', function () { - xit('echoes the id', function () { - $this->helpers->the_advisory_id(1); - }); - }); - - describe('->the_short_recommendation()', function () { - xit('outputs the short recommendation', function () { - $this->helpers->the_short_recommendation(); - }); - }); - - describe('->the_recommendation()', function () { - xit('outputs the recommendation', function () { - $this->helpers->the_recommendation(); - }); - }); - - describe('->recommendation_data()', function () { - xit('returns recommendation data', function () { - $this->helpers->recommendation_data(); - }); - }); - - describe('->get_field_label()', function () { - xit('returns field label', function () { - $this->helpers->get_field_label(); - }); - }); - - describe('->the_field_label()', function () { - xit('echoes the field label', function () { - $this->helpers->the_field_label(); - }); - }); - - describe('->the_other_versions()', function () { - xit('outputs a list of other versions reviewed', function () { - $this->helpers->the_other_versions(); - }); - }); - - describe('->get_plugin_vulnerabilities()', function () { - xit('returns advisories', function () { - $this->helpers->get_plugin_vulnerabilities(); - }); - }); - - describe('->the_plugin_vulnerabilities()', function () { - xit('returns advisories', function () { - $this->helpers->the_plugin_vulnerabilities(); - }); - }); - - describe('->get_cvss_score()', function () { - xit('returns cvss score', function () { - $this->helpers->get_cvss_score(); - }); - }); - - describe('->the_cvss_score()', function () { - xit('echoes cvss score', function () { - $this->helpers->the_cvss_score(); - }); - }); - - describe('->get_cvss_severity()', function () { - xit('returns cvss severity', function () { - $this->helpers->get_cvss_severity(); - }); - }); - - describe('->the_cvss_severity()', function () { - xit('echoes cvss severity', function () { - $this->helpers->the_cvss_severity(); - }); - }); + beforeEach(function () { + \WP_Mock::setUp(); + \WP_Mock::setUp(); + $this->iguanaHelpers = Mockery::mock(\Dxw\Iguana\Theme\Helpers::class); + $this->helpers = new \Dxw\DxwSecurity2017\Theme\Helpers($this->iguanaHelpers); + }); + + afterEach(function () { + \WP_Mock::tearDown(); + }); + + it('is registrable', function () { + expect($this->helpers)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); + + describe('->register()', function () { + it('registers the helper functions', function () { + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('the_title_for_email', [$this->helpers, 'the_title_for_email']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('the_advisory_id', [$this->helpers, 'the_advisory_id']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('the_short_recommendation', [$this->helpers, 'the_short_recommendation']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('the_recommendation', [$this->helpers, 'the_recommendation']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('recommendation_data', [$this->helpers, 'recommendation_data']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('get_field_label', [$this->helpers, 'get_field_label']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('the_field_label', [$this->helpers, 'the_field_label']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('the_other_versions', [$this->helpers, 'the_other_versions']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('get_plugin_vulnerabilities', [$this->helpers, 'get_plugin_vulnerabilities']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('the_plugin_vulnerabilities', [$this->helpers, 'the_plugin_vulnerabilities']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('get_cvss_score', [$this->helpers, 'get_cvss_score']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('the_cvss_score', [$this->helpers, 'the_cvss_score']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('get_cvss_severity', [$this->helpers, 'get_cvss_severity']); + $this->iguanaHelpers->shouldReceive('registerFunction') + ->once() + ->with('the_cvss_severity', [$this->helpers, 'the_cvss_severity']); + $this->helpers->register(); + }); + }); + + //These helpers methods were all taken directly from the old theme, where they had no tests + + describe('->the_title_for_email', function () { + xit('produces an email title', function () { + $this->helpers->the_title_for_email(1); + }); + }); + + describe('->the_advisory_id()', function () { + xit('echoes the id', function () { + $this->helpers->the_advisory_id(1); + }); + }); + + describe('->the_short_recommendation()', function () { + xit('outputs the short recommendation', function () { + $this->helpers->the_short_recommendation(); + }); + }); + + describe('->the_recommendation()', function () { + xit('outputs the recommendation', function () { + $this->helpers->the_recommendation(); + }); + }); + + describe('->recommendation_data()', function () { + xit('returns recommendation data', function () { + $this->helpers->recommendation_data(); + }); + }); + + describe('->get_field_label()', function () { + xit('returns field label', function () { + $this->helpers->get_field_label(); + }); + }); + + describe('->the_field_label()', function () { + xit('echoes the field label', function () { + $this->helpers->the_field_label(); + }); + }); + + describe('->the_other_versions()', function () { + xit('outputs a list of other versions reviewed', function () { + $this->helpers->the_other_versions(); + }); + }); + + describe('->get_plugin_vulnerabilities()', function () { + xit('returns advisories', function () { + $this->helpers->get_plugin_vulnerabilities(); + }); + }); + + describe('->the_plugin_vulnerabilities()', function () { + xit('returns advisories', function () { + $this->helpers->the_plugin_vulnerabilities(); + }); + }); + + describe('->get_cvss_score()', function () { + xit('returns cvss score', function () { + $this->helpers->get_cvss_score(); + }); + }); + + describe('->the_cvss_score()', function () { + xit('echoes cvss score', function () { + $this->helpers->the_cvss_score(); + }); + }); + + describe('->get_cvss_severity()', function () { + xit('returns cvss severity', function () { + $this->helpers->get_cvss_severity(); + }); + }); + + describe('->the_cvss_severity()', function () { + xit('echoes cvss severity', function () { + $this->helpers->the_cvss_severity(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/media.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/media.spec.php index 31a95249..f28ead5f 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/media.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/media.spec.php @@ -1,37 +1,37 @@ media = new \Dxw\DxwSecurity2017\Theme\Media(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->media = new \Dxw\DxwSecurity2017\Theme\Media(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->media)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->media)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('registers thumbnail sizes', function () { - \WP_Mock::userFunction('set_post_thumbnail_size', [ - 'args' => [150, 150, true], - 'times' => 1 - ]); + describe('->register()', function () { + it('registers thumbnail sizes', function () { + \WP_Mock::wpFunction('set_post_thumbnail_size', [ + 'args' => [150, 150, true], + 'times' => 1 + ]); - \WP_Mock::userFunction('add_image_size', [ - 'args' => ['medium', 200, 200, true], - 'times' => 1 - ]); + \WP_Mock::wpFunction('add_image_size', [ + 'args' => ['medium', 200, 200, true], + 'times' => 1 + ]); - \WP_Mock::userFunction('add_image_size', [ - 'args' => ['large', 800, 300, true], - 'times' => 1 - ]); + \WP_Mock::wpFunction('add_image_size', [ + 'args' => ['large', 800, 300, true], + 'times' => 1 + ]); - $this->media->register(); - }); - }); + $this->media->register(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/menus.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/menus.spec.php index bdae5907..27080320 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/menus.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/menus.spec.php @@ -1,102 +1,102 @@ helpers = Mockery::mock(\Dxw\Iguana\Theme\Helpers::class); - $this->helpers - ->shouldReceive('registerFunction') - ->once(); - $this->menus = new \Dxw\DxwSecurity2017\Theme\Menus($this->helpers); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->helpers = Mockery::mock(\Dxw\Iguana\Theme\Helpers::class); + $this->helpers + ->shouldReceive('registerFunction') + ->once(); + $this->menus = new \Dxw\DxwSecurity2017\Theme\Menus($this->helpers); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->menus)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->menus)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('registers nav menus', function () { - \WP_Mock::userFunction('register_nav_menu', [ - 'args' => ['header', 'Header Menu'], - 'times' => 1 - ]); + describe('->register()', function () { + it('registers nav menus', function () { + \WP_Mock::wpFunction('register_nav_menu', [ + 'args' => ['header', 'Header Menu'], + 'times' => 1 + ]); - \WP_Mock::userFunction('register_nav_menu', [ - 'args' => ['footer_first', 'Footer Menu - First column'], - 'times' => 1 - ]); + \WP_Mock::wpFunction('register_nav_menu', [ + 'args' => ['footer_first', 'Footer Menu - First column'], + 'times' => 1 + ]); - \WP_Mock::userFunction('register_nav_menu', [ - 'args' => ['footer_second', 'Footer Menu - Second column'], - 'times' => 1 - ]); + \WP_Mock::wpFunction('register_nav_menu', [ + 'args' => ['footer_second', 'Footer Menu - Second column'], + 'times' => 1 + ]); - \WP_Mock::userFunction('register_nav_menu', [ - 'args' => ['footer_third', 'Footer Menu - Third column'], - 'times' => 1 - ]); + \WP_Mock::wpFunction('register_nav_menu', [ + 'args' => ['footer_third', 'Footer Menu - Third column'], + 'times' => 1 + ]); - $this->menus->register(); - }); - }); + $this->menus->register(); + }); + }); - describe('->footerMenu()', function () { - context('location is not in nav_menu_locations', function () { - it('returns false', function () { - $location = 'foo'; - WP_Mock::userFunction('get_nav_menu_locations', [ - 'times' => 1, - 'return' => [ - 'bar' => 1 - ] - ]); - $result = $this->menus->footerMenu($location); - expect($result)->toBe(false); - }); - }); - context('location is in nav_menu_locations', function () { - it('calls wp_nav_menu', function () { - $location = 'foo'; - $menuObj = new stdClass(); - $menuObj->name = 'objectName'; - WP_Mock::userFunction('get_nav_menu_locations', [ - 'times' => 1, - 'return' => [ - 'foo' => 'atest' - ] - ]); - WP_Mock::userFunction('get_term', [ - 'times' => 1, - 'args' => [ - 'atest', - 'nav_menu' - ], - 'return' => $menuObj - ]); - WP_Mock::userFunction('esc_html', [ - 'times' => 1, - 'args' => [ - 'objectName' - ], - 'return' => '_objectName_' - ]); - WP_Mock::userFunction('wp_nav_menu', [ - 'times' => 1, - 'args' => [ - [ - 'theme_location' => $location, - 'container' => false, - 'items_wrap' => '
_objectName_
    %3$s
' - ] - ] - ]); - $result = $this->menus->footerMenu($location); - expect($result)->not->toBe(false); - }); - }); - }); + describe('->footerMenu()', function () { + context('location is not in nav_menu_locations', function () { + it('returns false', function () { + $location = 'foo'; + WP_Mock::wpFunction('get_nav_menu_locations', [ + 'times' => 1, + 'return' => [ + 'bar' => 1 + ] + ]); + $result = $this->menus->footerMenu($location); + expect($result)->to->equal(false); + }); + }); + context('location is in nav_menu_locations', function () { + it('calls wp_nav_menu', function () { + $location = 'foo'; + $menuObj = new stdClass(); + $menuObj->name = 'objectName'; + WP_Mock::wpFunction('get_nav_menu_locations', [ + 'times' => 1, + 'return' => [ + 'foo' => 'atest' + ] + ]); + WP_Mock::wpFunction('get_term', [ + 'times' => 1, + 'args' => [ + 'atest', + 'nav_menu' + ], + 'return' => $menuObj + ]); + WP_Mock::wpFunction('esc_html', [ + 'times' => 1, + 'args' => [ + 'objectName' + ], + 'return' => '_objectName_' + ]); + WP_Mock::wpFunction('wp_nav_menu', [ + 'times' => 1, + 'args' => [ + [ + 'theme_location' => $location, + 'container' => false, + 'items_wrap' => '
_objectName_
    %3$s
' + ] + ] + ]); + $result = $this->menus->footerMenu($location); + expect($result)->to->not->equal(false); + }); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/pagination.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/pagination.spec.php index 4db963bd..8e2e15d0 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/pagination.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/pagination.spec.php @@ -1,23 +1,23 @@ shouldReceive('registerFunction')->once(); - $pagination = new \Dxw\DxwSecurity2017\Theme\Pagination($helpersMock); - }); + it('registers the function in the constructor', function () { + $helpersMock = Mockery::mock(\Dxw\Iguana\Theme\Helpers::class); + $helpersMock->shouldReceive('registerFunction')->once(); + $pagination = new \Dxw\DxwSecurity2017\Theme\Pagination($helpersMock); + }); - describe('->pagination()', function () { - xit('adds custom pagination links', function () { - $this->pagination->pagination(); - }); - }); + describe('->pagination()', function () { + xit('adds custom pagination links', function () { + $this->pagination->pagination(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/plugins.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/plugins.spec.php index f45555af..e60a2e27 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/plugins.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/plugins.spec.php @@ -1,135 +1,135 @@ function ($a) { - return '_'.$a.'_'; - }, - ]); - if (!defined('WP_PLUGIN_DIR')) { - define('WP_PLUGIN_DIR', '/path/to/plugins'); - } - }); + beforeEach(function () { + \WP_Mock::setUp(); + \WP_Mock::wpFunction('esc_html', [ + 'return' => function ($a) { + return '_'.$a.'_'; + }, + ]); + if (!defined('WP_PLUGIN_DIR')) { + define('WP_PLUGIN_DIR', '/path/to/plugins'); + } + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([]); - expect($plugins)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([]); + expect($plugins)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('registers theme activation hook', function () { - $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([]); - \WP_Mock::expectActionAdded('after_switch_theme', [$plugins, 'checkDependencies']); - $plugins->register(); - }); - }); + describe('->register()', function () { + it('registers theme activation hook', function () { + $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([]); + \WP_Mock::expectActionAdded('after_switch_theme', [$plugins, 'checkDependencies']); + $plugins->register(); + }); + }); - describe('->checkDependencies()', function () { - it('flags any required plugins that aren\'t activated', function () { - WP_Mock::userFunction('get_option', [ - 'args' => ['active_plugins'], - 'times' => 1, - 'return' => [ - 'some-other/plugin.php' - ] - ]); - WP_Mock::userFunction('get_plugin_data', [ - 'args' => [WP_PLUGIN_DIR.'/path-to/a-required-plugin.php'], - 'times' => 1, - 'return' => [ - 'Name' => 'A plugin' - ] - ]); - WP_Mock::userFunction('get_plugin_data', [ - 'args' => [WP_PLUGIN_DIR.'/advanced-custom-fields-pro/acf.php'], - 'times' => 1, - 'return' => [ - 'Name' => 'Advanced Custom Fields Pro' - ] - ]); - WP_Mock::userFunction('admin_url', [ - 'args' => ['plugins.php'], - 'times' => 2, - 'return' => 'http://localhost/wp-admin/plugins.php' - ]); - $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([ - 'path-to/a-required-plugin.php', - 'advanced-custom-fields-pro/acf.php' - ]); - ob_start(); - $plugins->checkDependencies(); - $result = ob_get_contents(); - ob_end_clean(); - expect($result)->toContain('
'); - expect($result)->toContain('Visit plugins page'); - expect($result)->toContain('
'); + describe('->checkDependencies()', function () { + it('flags any required plugins that aren\'t activated', function () { + WP_Mock::wpFunction('get_option', [ + 'args' => ['active_plugins'], + 'times' => 1, + 'return' => [ + 'some-other/plugin.php' + ] + ]); + WP_Mock::wpFunction('get_plugin_data', [ + 'args' => [WP_PLUGIN_DIR.'/path-to/a-required-plugin.php'], + 'times' => 1, + 'return' => [ + 'Name' => 'A plugin' + ] + ]); + WP_Mock::wpFunction('get_plugin_data', [ + 'args' => [WP_PLUGIN_DIR.'/advanced-custom-fields-pro/acf.php'], + 'times' => 1, + 'return' => [ + 'Name' => 'Advanced Custom Fields Pro' + ] + ]); + WP_Mock::wpFunction('admin_url', [ + 'args' => ['plugins.php'], + 'times' => 2, + 'return' => 'http://localhost/wp-admin/plugins.php' + ]); + $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([ + 'path-to/a-required-plugin.php', + 'advanced-custom-fields-pro/acf.php' + ]); + ob_start(); + $plugins->checkDependencies(); + $result = ob_get_contents(); + ob_end_clean(); + expect($result)->to->contain('
'); + expect($result)->to->contain('Visit plugins page'); + expect($result)->to->contain('
'); - expect($result)->toContain('_A plugin_'); - expect($result)->toContain('_Advanced Custom Fields Pro_'); - }); + expect($result)->to->contain('_A plugin_'); + expect($result)->to->contain('_Advanced Custom Fields Pro_'); + }); - context('when the plugins are already active', function () { - it('doesn\'t print anything', function () { - WP_Mock::userFunction('get_option', [ - 'args' => ['active_plugins'], - 'times' => 1, - 'return' => [ - 'some-other/plugin.php', - 'path-to/a-required-plugin.php', - 'advanced-custom-fields-pro/acf.php' - ] - ]); - $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([ - 'path-to/a-required-plugin.php', - 'advanced-custom-fields-pro/acf.php' - ]); - ob_start(); - $plugins->checkDependencies(); - $result = ob_get_contents(); - ob_end_clean(); - expect($result)->toBeEmpty(); - }); - }); + context('when the plugins are already active', function () { + it('doesn\'t print anything', function () { + WP_Mock::wpFunction('get_option', [ + 'args' => ['active_plugins'], + 'times' => 1, + 'return' => [ + 'some-other/plugin.php', + 'path-to/a-required-plugin.php', + 'advanced-custom-fields-pro/acf.php' + ] + ]); + $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([ + 'path-to/a-required-plugin.php', + 'advanced-custom-fields-pro/acf.php' + ]); + ob_start(); + $plugins->checkDependencies(); + $result = ob_get_contents(); + ob_end_clean(); + expect($result)->to->be->empty; + }); + }); - context('when there\'s no plugin data available', function () { - it('displays the path of the plugin instead', function () { - WP_Mock::userFunction('get_option', [ - 'args' => ['active_plugins'], - 'times' => 1, - 'return' => [ - 'some-other/plugin.php', - 'advanced-custom-fields-pro/acf.php' - ] - ]); - WP_Mock::userFunction('get_plugin_data', [ - 'args' => [WP_PLUGIN_DIR.'/path-to/a-required-plugin.php'], - 'times' => 1, - 'return' => [ - 'Name' => '' - ] - ]); - WP_Mock::userFunction('admin_url', [ - 'args' => ['plugins.php'], - 'times' => 1, - 'return' => 'http://localhost/wp-admin/plugins.php' - ]); - $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([ - 'path-to/a-required-plugin.php', - 'advanced-custom-fields-pro/acf.php' - ]); - ob_start(); - $plugins->checkDependencies(); - $result = ob_get_contents(); - ob_end_clean(); + context('when there\'s no plugin data available', function () { + it('displays the path of the plugin instead', function () { + WP_Mock::wpFunction('get_option', [ + 'args' => ['active_plugins'], + 'times' => 1, + 'return' => [ + 'some-other/plugin.php', + 'advanced-custom-fields-pro/acf.php' + ] + ]); + WP_Mock::wpFunction('get_plugin_data', [ + 'args' => [WP_PLUGIN_DIR.'/path-to/a-required-plugin.php'], + 'times' => 1, + 'return' => [ + 'Name' => '' + ] + ]); + WP_Mock::wpFunction('admin_url', [ + 'args' => ['plugins.php'], + 'times' => 1, + 'return' => 'http://localhost/wp-admin/plugins.php' + ]); + $plugins = new \Dxw\DxwSecurity2017\Theme\Plugins([ + 'path-to/a-required-plugin.php', + 'advanced-custom-fields-pro/acf.php' + ]); + ob_start(); + $plugins->checkDependencies(); + $result = ob_get_contents(); + ob_end_clean(); - expect($result)->toContain('_path-to/a-required-plugin.php_'); - }); - }); - }); + expect($result)->to->contain('_path-to/a-required-plugin.php_'); + }); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/post_classes.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/post_classes.spec.php index 0e025242..e4c545e2 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/post_classes.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/post_classes.spec.php @@ -1,60 +1,60 @@ postClasses = new \Dxw\DxwSecurity2017\Theme\PostClasses(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->postClasses = new \Dxw\DxwSecurity2017\Theme\PostClasses(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->postClasses)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->postClasses)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('adds the filter', function () { - \WP_Mock::expectFilterAdded('post_class', [$this->postClasses, 'recommendationStatusClass']); - $this->postClasses->register(); - }); - }); + describe('->register()', function () { + it('adds the filter', function () { + \WP_Mock::expectFilterAdded('post_class', [$this->postClasses, 'recommendationStatusClass']); + $this->postClasses->register(); + }); + }); - describe('->recommendationStatusClass()', function () { - context('post does not have recommendation field', function () { - it('returns the classes array unaltered', function () { - global $post; - $post = new stdClass(); - $post->ID = 123; - WP_Mock::userFunction('get_field', [ - 'times' => 1, - 'args' => [ - 'recommendation', - 123 - ], - 'return' => false - ]); - $result = $this->postClasses->recommendationStatusClass(['foo', 'bar']); - expect($result)->toBe(['foo', 'bar']); - }); - }); - context('post does have recommendation field', function () { - it('returns the classes array with recommendation status', function () { - global $post; - $post = new stdClass(); - $post->ID = 123; - WP_Mock::userFunction('get_field', [ - 'times' => 1, - 'args' => [ - 'recommendation', - 123 - ], - 'return' => 'avoid' - ]); - $result = $this->postClasses->recommendationStatusClass(['foo', 'bar']); - expect($result)->toBe(['foo', 'bar', 'avoid']); - }); - }); - }); + describe('->recommendationStatusClass()', function () { + context('post does not have recommendation field', function () { + it('returns the classes array unaltered', function () { + global $post; + $post = new stdClass(); + $post->ID = 123; + WP_Mock::wpFunction('get_field', [ + 'times' => 1, + 'args' => [ + 'recommendation', + 123 + ], + 'return' => false + ]); + $result = $this->postClasses->recommendationStatusClass(['foo', 'bar']); + expect($result)->to->equal(['foo', 'bar']); + }); + }); + context('post does have recommendation field', function () { + it('returns the classes array with recommendation status', function () { + global $post; + $post = new stdClass(); + $post->ID = 123; + WP_Mock::wpFunction('get_field', [ + 'times' => 1, + 'args' => [ + 'recommendation', + 123 + ], + 'return' => 'avoid' + ]); + $result = $this->postClasses->recommendationStatusClass(['foo', 'bar']); + expect($result)->to->equal(['foo', 'bar', 'avoid']); + }); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/scripts.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/scripts.spec.php index 0b564a0f..aacca696 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/scripts.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/scripts.spec.php @@ -1,112 +1,112 @@ function ($a) { - return '_'.$a.'_'; - }, - ]); - $this->helpers = new \Dxw\Iguana\Theme\Helpers(); - $this->scripts = new \Dxw\DxwSecurity2017\Theme\Scripts($this->helpers); - }); + beforeEach(function () { + \WP_Mock::setUp(); + \WP_Mock::wpFunction('esc_url', [ + 'return' => function ($a) { + return '_'.$a.'_'; + }, + ]); + $this->helpers = new \Dxw\Iguana\Theme\Helpers(); + $this->scripts = new \Dxw\DxwSecurity2017\Theme\Scripts($this->helpers); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->scripts)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->scripts)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('registers nav scripts', function () { - \WP_Mock::expectActionAdded('wp_enqueue_scripts', [$this->scripts, 'wpEnqueueScripts']); - \WP_Mock::expectActionAdded('wp_print_scripts', [$this->scripts, 'wpPrintScripts']); + describe('->register()', function () { + it('registers nav scripts', function () { + \WP_Mock::expectActionAdded('wp_enqueue_scripts', [$this->scripts, 'wpEnqueueScripts']); + \WP_Mock::expectActionAdded('wp_print_scripts', [$this->scripts, 'wpPrintScripts']); - $this->scripts->register(); - }); - }); + $this->scripts->register(); + }); + }); - describe('->getAssetPath()', function () { - it('gets the path of the assets', function () { - \WP_Mock::userFunction('get_stylesheet_directory_uri', [ - 'args' => [], - 'return' => 'http://foo.bar.invalid/cat/dog' - ]); - expect($this->scripts->getAssetPath('meow'))->toBe('http://foo.bar.invalid/cat/static/meow'); - }); - }); + describe('->getAssetPath()', function () { + it('gets the path of the assets', function () { + \WP_Mock::wpFunction('get_stylesheet_directory_uri', [ + 'args' => [], + 'return' => 'http://foo.bar.invalid/cat/dog' + ]); + expect($this->scripts->getAssetPath('meow'))->to->be->equal('http://foo.bar.invalid/cat/static/meow'); + }); + }); - describe('->assetPath()', function () { - it('echos the path of the assets', function () { - \WP_Mock::userFunction('get_stylesheet_directory_uri', [ - 'args' => [], - 'return' => 'http://foo.bar.invalid/cat/dog', - ]); - ob_start(); - $this->scripts->assetPath('meow'); - $result = ob_get_contents(); - ob_end_clean(); - expect($result)->toBe('_http://foo.bar.invalid/cat/static/meow_'); - }); - }); + describe('->assetPath()', function () { + it('echos the path of the assets', function () { + \WP_Mock::wpFunction('get_stylesheet_directory_uri', [ + 'args' => [], + 'return' => 'http://foo.bar.invalid/cat/dog', + ]); + ob_start(); + $this->scripts->assetPath('meow'); + $result = ob_get_contents(); + ob_end_clean(); + expect($result)->to->be->equal('_http://foo.bar.invalid/cat/static/meow_'); + }); + }); - describe('->wpEnqueueScripts()', function () { - it('enqueues some of the JavaScript files', function () { - \WP_Mock::userFunction('get_stylesheet_directory_uri', [ - 'args' => [], - 'return' => 'http://a.invalid/zzz', - ]); + describe('->wpEnqueueScripts()', function () { + it('enqueues some of the JavaScript files', function () { + \WP_Mock::wpFunction('get_stylesheet_directory_uri', [ + 'args' => [], + 'return' => 'http://a.invalid/zzz', + ]); - \WP_Mock::userFunction('wp_deregister_script', [ - 'args' => ['jquery'], - 'times' => 1, - ]); + \WP_Mock::wpFunction('wp_deregister_script', [ + 'args' => ['jquery'], + 'times' => 1, + ]); - \WP_Mock::userFunction('wp_enqueue_script', [ - 'args' => ['jquery', 'http://a.invalid/static/lib/jquery.min.js'], - 'times' => 1, - ]); + \WP_Mock::wpFunction('wp_enqueue_script', [ + 'args' => ['jquery', 'http://a.invalid/static/lib/jquery.min.js'], + 'times' => 1, + ]); - \WP_Mock::userFunction('wp_enqueue_script', [ - 'args' => ['modernizr', 'http://a.invalid/static/lib/modernizr.min.js'], - 'times' => 1, - ]); + \WP_Mock::wpFunction('wp_enqueue_script', [ + 'args' => ['modernizr', 'http://a.invalid/static/lib/modernizr.min.js'], + 'times' => 1, + ]); - \WP_Mock::userFunction('wp_enqueue_script', [ - 'args' => ['main', 'http://a.invalid/static/main.min.js', ['jquery', 'modernizr'], '', true], - 'times' => 1, - ]); + \WP_Mock::wpFunction('wp_enqueue_script', [ + 'args' => ['main', 'http://a.invalid/static/main.min.js', ['jquery', 'modernizr'], '', true], + 'times' => 1, + ]); - \WP_Mock::userFunction('wp_enqueue_style', [ - 'args' => ['main', 'http://a.invalid/static/main.min.css'], - 'times' => 1, - ]); + \WP_Mock::wpFunction('wp_enqueue_style', [ + 'args' => ['main', 'http://a.invalid/static/main.min.css'], + 'times' => 1, + ]); - $this->scripts->wpEnqueueScripts(); - }); - }); + $this->scripts->wpEnqueueScripts(); + }); + }); - describe('->wpPrintScripts()', function () { - it('prints some elements tags directly', function () { - \WP_Mock::userFunction('get_stylesheet_directory_uri', [ - 'args' => [], - 'return' => 'http://a.invalid/zzz', - ]); - ob_start(); - $this->scripts->wpPrintScripts(); - $result = ob_get_contents(); - ob_end_clean(); - expect($result)->toBe(implode("\n", [ - ' ', - '', - ' ', - '', - ' ', - ' ', - ])); - }); - }); + describe('->wpPrintScripts()', function () { + it('prints some elements tags directly', function () { + \WP_Mock::wpFunction('get_stylesheet_directory_uri', [ + 'args' => [], + 'return' => 'http://a.invalid/zzz', + ]); + ob_start(); + $this->scripts->wpPrintScripts(); + $result = ob_get_contents(); + ob_end_clean(); + expect($result)->to->be->equal(implode("\n", [ + ' ', + '', + ' ', + '', + ' ', + ' ', + ])); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/title_tag.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/title_tag.spec.php index ab3afe6b..1c6978b9 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/title_tag.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/title_tag.spec.php @@ -1,26 +1,26 @@ titleTag = new \Dxw\DxwSecurity2017\Theme\TitleTag(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->titleTag = new \Dxw\DxwSecurity2017\Theme\TitleTag(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->titleTag)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->titleTag)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('adds support for title tag', function () { - \WP_Mock::userFunction('add_theme_support', [ - 'args' => ['title-tag'], - 'times' => 1, - ]); - $this->titleTag->register(); - }); - }); + describe('->register()', function () { + it('adds support for title tag', function () { + \WP_Mock::wpFunction('add_theme_support', [ + 'args' => ['title-tag'], + 'times' => 1, + ]); + $this->titleTag->register(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/widgets.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/widgets.spec.php index 1cc52147..7531ff7e 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/widgets.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/widgets.spec.php @@ -1,70 +1,70 @@ widgets = new \Dxw\DxwSecurity2017\Theme\Widgets(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->widgets = new \Dxw\DxwSecurity2017\Theme\Widgets(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->widgets)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->widgets)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('initialises the widgets', function () { - \WP_Mock::expectActionAdded('widgets_init', [$this->widgets, 'widgetsInit']); - $this->widgets->register(); - }); - }); + describe('->register()', function () { + it('initialises the widgets', function () { + \WP_Mock::expectActionAdded('widgets_init', [$this->widgets, 'widgetsInit']); + $this->widgets->register(); + }); + }); - describe('->widgetsInit()', function () { - it('registers any widgets in the theme ', function () { - \WP_Mock::userFunction('__', [ - 'return' => function ($a) { - return $a; - } - ]); + describe('->widgetsInit()', function () { + it('registers any widgets in the theme ', function () { + \WP_Mock::wpFunction('__', [ + 'return' => function ($a) { + return $a; + } + ]); - \WP_Mock::userFunction('register_sidebar', [ - 'args' => [[ - 'name' => __('Primary'), - 'id' => 'sidebar-primary', - 'before_widget' => '
', - 'after_widget' => '
', - 'before_title' => '

', - 'after_title' => '

', - ]], - 'times' => 1, - ]); + \WP_Mock::wpFunction('register_sidebar', [ + 'args' => [[ + 'name' => __('Primary'), + 'id' => 'sidebar-primary', + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + ]], + 'times' => 1, + ]); - \WP_Mock::userFunction('register_sidebar', [ - 'args' => [[ - 'name' => __('Advisories archive'), - 'id' => 'sidebar-advisories', - 'before_widget' => '
', - 'after_widget' => '
', - 'before_title' => '

', - 'after_title' => '

', - ]], - 'times' => 1, - ]); + \WP_Mock::wpFunction('register_sidebar', [ + 'args' => [[ + 'name' => __('Advisories archive'), + 'id' => 'sidebar-advisories', + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + ]], + 'times' => 1, + ]); - \WP_Mock::userFunction('register_sidebar', [ - 'args' => [[ - 'name' => __('Plugins archive'), - 'id' => 'sidebar-plugins', - 'before_widget' => '
', - 'after_widget' => '
', - 'before_title' => '

', - 'after_title' => '

', - ]], - 'times' => 1, - ]); - $this->widgets->widgetsInit(); - }); - }); + \WP_Mock::wpFunction('register_sidebar', [ + 'args' => [[ + 'name' => __('Plugins archive'), + 'id' => 'sidebar-plugins', + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + ]], + 'times' => 1, + ]); + $this->widgets->widgetsInit(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/wordpress_to_twitter.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/wordpress_to_twitter.spec.php index 26fbe202..9c7226ce 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/wordpress_to_twitter.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/wordpress_to_twitter.spec.php @@ -1,39 +1,39 @@ wordPressToTwitter = new \Dxw\DxwSecurity2017\Theme\WordPressToTwitter(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->wordPressToTwitter = new \Dxw\DxwSecurity2017\Theme\WordPressToTwitter(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->wordPressToTwitter)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->wordPressToTwitter)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('adds the filter', function () { - WP_Mock::expectFilterAdded('wpt_custom_shortcode', [$this->wordPressToTwitter, 'wpt_custom_shortcode'], 10, 3); - $this->wordPressToTwitter->register(); - }); - }); + describe('->register()', function () { + it('adds the filter', function () { + WP_Mock::expectFilterAdded('wpt_custom_shortcode', [$this->wordPressToTwitter, 'wpt_custom_shortcode'], 10, 3); + $this->wordPressToTwitter->register(); + }); + }); - describe('->wpt_custom_shortcode()', function () { - it('returns the field label', function () { - $this->h = Mockery::Mock(stdClass::class); - WP_Mock::userFunction('h', [ - 'times' => 1, - 'return' => $this->h - ]); - $this->h->shouldReceive('get_field_label') - ->once() - ->with('foo') - ->andReturn('bar'); - $result = $this->wordPressToTwitter->wpt_custom_shortcode('meta', 'post', 'foo'); - expect($result)->toBe('bar'); - }); - }); + describe('->wpt_custom_shortcode()', function () { + it('returns the field label', function () { + $this->h = Mockery::Mock(stdClass::class); + WP_Mock::wpFunction('h', [ + 'times' => 1, + 'return' => $this->h + ]); + $this->h->shouldReceive('get_field_label') + ->once() + ->with('foo') + ->andReturn('bar'); + $result = $this->wordPressToTwitter->wpt_custom_shortcode('meta', 'post', 'foo'); + expect($result)->to->equal('bar'); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/spec/theme/wp_head.spec.php b/wp-content/themes/dxw-security-2017/spec/theme/wp_head.spec.php index c93f4ef1..570e7101 100644 --- a/wp-content/themes/dxw-security-2017/spec/theme/wp_head.spec.php +++ b/wp-content/themes/dxw-security-2017/spec/theme/wp_head.spec.php @@ -1,52 +1,52 @@ wpHead = new \Dxw\DxwSecurity2017\Theme\WpHead(); - }); + beforeEach(function () { + \WP_Mock::setUp(); + $this->wpHead = new \Dxw\DxwSecurity2017\Theme\WpHead(); + }); - afterEach(function () { - \WP_Mock::tearDown(); - }); + afterEach(function () { + \WP_Mock::tearDown(); + }); - it('is registrable', function () { - expect($this->wpHead)->toBeAnInstanceOf(\Dxw\Iguana\Registerable::class); - }); + it('is registrable', function () { + expect($this->wpHead)->to->be->an->instanceof(\Dxw\Iguana\Registerable::class); + }); - describe('->register()', function () { - it('adds actions', function () { - \WP_Mock::expectActionAdded('init', [$this->wpHead, 'init']); - $this->wpHead->register(); - }); - }); + describe('->register()', function () { + it('adds actions', function () { + \WP_Mock::expectActionAdded('init', [$this->wpHead, 'init']); + $this->wpHead->register(); + }); + }); - describe('->init()', function () { - it('modifies the output of the WordPress head', function () { - $actions = [ - ['wp_head', 'print_emoji_detection_script', 7], - ['wp_print_styles', 'print_emoji_styles'], - ['admin_print_styles', 'print_emoji_styles'], - ['admin_print_scripts', 'print_emoji_detection_script'], - ['wp_head', 'rsd_link'], - ['wp_head', 'wp_generator'], - ['wp_head', 'wlwmanifest_link'], - ['wp_head', 'wp_resource_hints', 2], - ['wp_head', 'feed_links_extra', 3], - ['wp_head', 'start_post_rel_link', 10, 0], - ['wp_head', 'parent_post_rel_link', 10, 0], - ['wp_head', 'adjacent_posts_rel_link', 10, 0], - ['wp_head', 'rest_output_link_wp_head', 10], - ['wp_head', 'wp_oembed_add_discovery_links', 10], - ]; + describe('->init()', function () { + it('modifies the output of the WordPress head', function () { + $actions = [ + ['wp_head', 'print_emoji_detection_script', 7], + ['wp_print_styles', 'print_emoji_styles'], + ['admin_print_styles', 'print_emoji_styles'], + ['admin_print_scripts', 'print_emoji_detection_script'], + ['wp_head', 'rsd_link'], + ['wp_head', 'wp_generator'], + ['wp_head', 'wlwmanifest_link'], + ['wp_head', 'wp_resource_hints', 2], + ['wp_head', 'feed_links_extra', 3], + ['wp_head', 'start_post_rel_link', 10, 0], + ['wp_head', 'parent_post_rel_link', 10, 0], + ['wp_head', 'adjacent_posts_rel_link', 10, 0], + ['wp_head', 'rest_output_link_wp_head', 10], + ['wp_head', 'wp_oembed_add_discovery_links', 10], + ]; - foreach ($actions as $args) { - \WP_Mock::userFunction('remove_action', [ - 'args' => $args, - 'times' => 1 - ]); - } - $this->wpHead->init(); - }); - }); + foreach ($actions as $args) { + \WP_Mock::wpFunction('remove_action', [ + 'args' => $args, + 'times' => 1 + ]); + } + $this->wpHead->init(); + }); + }); }); diff --git a/wp-content/themes/dxw-security-2017/vendor.phar b/wp-content/themes/dxw-security-2017/vendor.phar index a664039f..c9a75f00 100644 Binary files a/wp-content/themes/dxw-security-2017/vendor.phar and b/wp-content/themes/dxw-security-2017/vendor.phar differ diff --git a/wp-content/themes/dxw-security-2017/yarn.lock b/wp-content/themes/dxw-security-2017/yarn.lock index 0d4b3c54..b2a220ef 100644 --- a/wp-content/themes/dxw-security-2017/yarn.lock +++ b/wp-content/themes/dxw-security-2017/yarn.lock @@ -420,10 +420,10 @@ brace-expansion@^2.0.1: balanced-match "^1.0.0" braces@^3.0.2, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" dependencies: - fill-range "^7.1.1" + fill-range "^7.0.1" brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" @@ -1861,9 +1861,9 @@ filenamify@^2.0.0: strip-outer "^1.0.0" trim-repeated "^1.0.0" -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" dependencies: to-regex-range "^5.0.1"