From fa98f39fd1ab990eecf47981088ed838c8bc5347 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Tue, 16 Mar 2021 21:29:32 +0200 Subject: [PATCH 01/21] Fix: when post is duplicated it is not synchronized with Castos --- php/classes/controllers/class-admin-controller.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/php/classes/controllers/class-admin-controller.php b/php/classes/controllers/class-admin-controller.php index df868c04..61e30a57 100644 --- a/php/classes/controllers/class-admin-controller.php +++ b/php/classes/controllers/class-admin-controller.php @@ -1878,6 +1878,8 @@ public function prevent_copy_meta() { $exclusions = [ 'podmotor_file_id', 'podmotor_episode_id', + 'audio_file', + 'enclosure' ]; foreach ( $exclusions as $exclusion ) { From fb42363865537086f5d2020e2363127291d41c13 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Thu, 25 Mar 2021 13:06:15 +0200 Subject: [PATCH 02/21] Delayed episode upload #557 --- composer.lock | 4674 ++++++++++------- .../controllers/class-admin-controller.php | 19 +- .../controllers/class-cron-controller.php | 74 + 3 files changed, 2897 insertions(+), 1870 deletions(-) create mode 100644 php/classes/controllers/class-cron-controller.php diff --git a/composer.lock b/composer.lock index ee413f52..30199912 100644 --- a/composer.lock +++ b/composer.lock @@ -9,21 +9,24 @@ "packages-dev": [ { "name": "antecedent/patchwork", - "version": "2.1.9", + "version": "2.1.12", "source": { "type": "git", "url": "https://github.com/antecedent/patchwork.git", - "reference": "1229bb22283177e196b572120de0772d9ee9baac" + "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antecedent/patchwork/zipball/1229bb22283177e196b572120de0772d9ee9baac", - "reference": "1229bb22283177e196b572120de0772d9ee9baac", + "url": "https://api.github.com/repos/antecedent/patchwork/zipball/b98e046dd4c0acc34a0846604f06f6111654d9ea", + "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea", "shasum": "" }, "require": { "php": ">=5.4.0" }, + "require-dev": { + "phpunit/phpunit": ">=4" + }, "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ @@ -46,29 +49,34 @@ "runkit", "testing" ], - "time": "2019-08-18T15:18:18+00:00" + "support": { + "issues": "https://github.com/antecedent/patchwork/issues", + "source": "https://github.com/antecedent/patchwork/tree/2.1.12" + }, + "time": "2019-12-22T17:52:09+00:00" }, { "name": "behat/gherkin", - "version": "v4.6.0", + "version": "v4.8.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07" + "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2391482cd003dfdc36b679b27e9f5326bd656acd", + "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd", "shasum": "" }, "require": { - "php": ">=5.3.1" + "php": "~7.2|~8.0" }, "require-dev": { - "phpunit/phpunit": "~4.5|~5", - "symfony/phpunit-bridge": "~2.7|~3|~4", - "symfony/yaml": "~2.3|~3|~4" + "cucumber/cucumber": "dev-gherkin-16.0.0", + "phpunit/phpunit": "~8|~9", + "symfony/phpunit-bridge": "~3|~4|~5", + "symfony/yaml": "~3|~4|~5" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -95,7 +103,7 @@ "homepage": "http://everzet.com" } ], - "description": "Gherkin DSL parser for PHP 5.3", + "description": "Gherkin DSL parser for PHP", "homepage": "http://behat.org/", "keywords": [ "BDD", @@ -105,66 +113,59 @@ "gherkin", "parser" ], - "time": "2019-01-16T14:22:17+00:00" + "support": { + "issues": "https://github.com/Behat/Gherkin/issues", + "source": "https://github.com/Behat/Gherkin/tree/v4.8.0" + }, + "time": "2021-02-04T12:44:21+00:00" }, { "name": "codeception/codeception", - "version": "3.1.2", + "version": "4.1.18", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "5ea172de7b1b2e61dcdd50d73f8368886c549fb4" + "reference": "f47547bac347dfb5ea5351ff91148cbcc08e6818" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/5ea172de7b1b2e61dcdd50d73f8368886c549fb4", - "reference": "5ea172de7b1b2e61dcdd50d73f8368886c549fb4", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/f47547bac347dfb5ea5351ff91148cbcc08e6818", + "reference": "f47547bac347dfb5ea5351ff91148cbcc08e6818", "shasum": "" }, "require": { "behat/gherkin": "^4.4.0", - "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3", + "codeception/lib-asserts": "^1.0", + "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0", "codeception/stub": "^2.0 | ^3.0", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "facebook/webdriver": "^1.6.0", - "guzzlehttp/guzzle": "^6.3.0", "guzzlehttp/psr7": "~1.4", - "hoa/console": "~3.0", - "php": ">=5.6.0 <8.0", - "symfony/browser-kit": ">=2.7 <5.0", - "symfony/console": ">=2.7 <5.0", - "symfony/css-selector": ">=2.7 <5.0", - "symfony/dom-crawler": ">=2.7 <5.0", - "symfony/event-dispatcher": ">=2.7 <5.0", - "symfony/finder": ">=2.7 <5.0", - "symfony/yaml": ">=2.7 <5.0" + "php": ">=5.6.0 <9.0", + "symfony/console": ">=2.7 <6.0", + "symfony/css-selector": ">=2.7 <6.0", + "symfony/event-dispatcher": ">=2.7 <6.0", + "symfony/finder": ">=2.7 <6.0", + "symfony/yaml": ">=2.7 <6.0" }, "require-dev": { + "codeception/module-asserts": "*@dev", + "codeception/module-cli": "*@dev", + "codeception/module-db": "*@dev", + "codeception/module-filesystem": "*@dev", + "codeception/module-phpbrowser": "*@dev", "codeception/specify": "~0.3", - "doctrine/annotations": "^1", - "doctrine/data-fixtures": "^1", - "doctrine/orm": "^2", - "flow/jsonpath": "~0.2", + "codeception/util-universalframework": "*@dev", "monolog/monolog": "~1.8", - "pda/pheanstalk": "~3.0", - "php-amqplib/php-amqplib": "~2.4", - "predis/predis": "^1.0", - "ramsey/uuid-doctrine": "^1.5", "squizlabs/php_codesniffer": "~2.0", - "symfony/process": ">=2.7 <5.0", - "vlucas/phpdotenv": "^3.0" + "symfony/process": ">=2.7 <6.0", + "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0" }, "suggest": { - "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module", - "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests", "codeception/specify": "BDD-style code blocks", "codeception/verify": "BDD-style assertions", - "flow/jsonpath": "For using JSONPath in REST module", - "league/factory-muffin": "For DataFactory module", - "league/factory-muffin-faker": "For Faker support in DataFactory module", - "phpseclib/phpseclib": "for SFTP option in FTP Module", + "hoa/console": "For interactive console functionality", "stecman/symfony-console-completion": "For BASH autocompletion", "symfony/phpunit-bridge": "For phpunit-bridge support" }, @@ -201,37 +202,99 @@ "functional testing", "unit testing" ], - "time": "2019-10-19T13:15:55+00:00" + "support": { + "issues": "https://github.com/Codeception/Codeception/issues", + "source": "https://github.com/Codeception/Codeception/tree/4.1.18" + }, + "funding": [ + { + "url": "https://opencollective.com/codeception", + "type": "open_collective" + } + ], + "time": "2021-02-23T17:11:42+00:00" + }, + { + "name": "codeception/lib-asserts", + "version": "1.13.2", + "source": { + "type": "git", + "url": "https://github.com/Codeception/lib-asserts.git", + "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6", + "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6", + "shasum": "" + }, + "require": { + "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0", + "ext-dom": "*", + "php": ">=5.6.0 <9.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + }, + { + "name": "Gintautas Miselis" + }, + { + "name": "Gustavo Nieves", + "homepage": "https://medium.com/@ganieves" + } + ], + "description": "Assertion methods used by Codeception core and Asserts module", + "homepage": "https://codeception.com/", + "keywords": [ + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/lib-asserts/issues", + "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2" + }, + "time": "2020-10-21T16:26:20+00:00" }, { "name": "codeception/phpunit-wrapper", - "version": "8.0.4", + "version": "9.0.6", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "7090736f36b4398cae6ef838b9a2bdfe8d8d104b" + "reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7090736f36b4398cae6ef838b9a2bdfe8d8d104b", - "reference": "7090736f36b4398cae6ef838b9a2bdfe8d8d104b", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/b0c06abb3181eedca690170f7ed0fd26a70bfacc", + "reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc", "shasum": "" }, "require": { "php": ">=7.2", - "phpunit/php-code-coverage": "^7.0", - "phpunit/phpunit": "^8.0", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0" + "phpunit/phpunit": "^9.0" }, "require-dev": { "codeception/specify": "*", + "consolidation/robo": "^3.0.0-alpha3", "vlucas/phpdotenv": "^3.0" }, "type": "library", "autoload": { "psr-4": { - "Codeception\\PHPUnit\\": "src\\" + "Codeception\\PHPUnit\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -242,28 +305,34 @@ { "name": "Davert", "email": "davert.php@resend.cc" + }, + { + "name": "Naktibalda" } ], "description": "PHPUnit classes used by Codeception", - "time": "2019-02-27T12:58:57+00:00" + "support": { + "issues": "https://github.com/Codeception/phpunit-wrapper/issues", + "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.6" + }, + "time": "2020-12-28T13:59:47+00:00" }, { "name": "codeception/stub", - "version": "3.5.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "016a035c287c898745504f7f2916f4dae14265e0" + "reference": "468dd5fe659f131fc997f5196aad87512f9b1304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/016a035c287c898745504f7f2916f4dae14265e0", - "reference": "016a035c287c898745504f7f2916f4dae14265e0", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304", + "reference": "468dd5fe659f131fc997f5196aad87512f9b1304", "shasum": "" }, "require": { - "codeception/phpunit-wrapper": "^8.0.4", - "phpunit/phpunit": "^8.4" + "phpunit/phpunit": "^8.4 | ^9.0" }, "type": "library", "autoload": { @@ -276,20 +345,24 @@ "MIT" ], "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", - "time": "2019-10-05T09:56:36+00:00" + "support": { + "issues": "https://github.com/Codeception/Stub/issues", + "source": "https://github.com/Codeception/Stub/tree/3.7.0" + }, + "time": "2020-07-03T15:54:43+00:00" }, { "name": "composer/ca-bundle", - "version": "1.2.4", + "version": "1.2.9", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527" + "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527", - "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/78a0e288fdcebf92aa2318a8d3656168da6ac1a5", + "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5", "shasum": "" }, "require": { @@ -298,14 +371,15 @@ "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "phpstan/phpstan": "^0.12.55", "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0" + "symfony/phpunit-bridge": "^4.2 || ^5", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -332,20 +406,39 @@ "ssl", "tls" ], - "time": "2019-08-30T08:44:50+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.2.9" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2021-01-12T12:10:35+00:00" }, { "name": "composer/composer", - "version": "1.9.0", + "version": "1.10.20", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5" + "reference": "e55d297525f0ecc805c813a0f63a40114fd670f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/314aa57fdcfc942065996f59fb73a8b3f74f3fa5", - "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5", + "url": "https://api.github.com/repos/composer/composer/zipball/e55d297525f0ecc805c813a0f63a40114fd670f6", + "reference": "e55d297525f0ecc805c813a0f63a40114fd670f6", "shasum": "" }, "require": { @@ -353,22 +446,22 @@ "composer/semver": "^1.0", "composer/spdx-licenses": "^1.2", "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", - "php": "^5.3.2 || ^7.0", + "justinrainbow/json-schema": "^5.2.10", + "php": "^5.3.2 || ^7.0 || ^8.0", "psr/log": "^1.0", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" + "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0" }, "conflict": { "symfony/console": "2.8.38" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^4.2" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -381,7 +474,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -412,28 +505,46 @@ "dependency", "package" ], - "time": "2019-08-02T18:55:33+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/composer/issues", + "source": "https://github.com/composer/composer/tree/1.10.20" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2021-01-27T14:41:06+00:00" }, { "name": "composer/semver", - "version": "1.5.0", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" + "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", - "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "url": "https://api.github.com/repos/composer/semver/zipball/647490bbcaf7fc4891c58f47b825eb99d19c377a", + "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpunit/phpunit": "^4.5 || ^5.0.5" }, "type": "library", "extra": { @@ -474,20 +585,39 @@ "validation", "versioning" ], - "time": "2019-03-19T17:25:45+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/1.7.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-12-03T15:47:16+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.2", + "version": "1.5.5", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5" + "reference": "de30328a7af8680efdc03e396aad24befd513200" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5", - "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/de30328a7af8680efdc03e396aad24befd513200", + "reference": "de30328a7af8680efdc03e396aad24befd513200", "shasum": "" }, "require": { @@ -499,7 +629,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -534,28 +664,47 @@ "spdx", "validator" ], - "time": "2019-07-29T10:31:59+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/spdx-licenses/issues", + "source": "https://github.com/composer/spdx-licenses/tree/1.5.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-12-03T16:04:16+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.3.3", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" + "reference": "f28d44c286812c714741478d968104c5e604a1d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", - "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f28d44c286812c714741478d968104c5e604a1d4", + "reference": "f28d44c286812c714741478d968104c5e604a1d4", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0", + "php": "^5.3.2 || ^7.0 || ^8.0", "psr/log": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" }, "type": "library", "autoload": { @@ -573,31 +722,98 @@ "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Restarts a process without xdebug.", + "description": "Restarts a process without Xdebug.", "keywords": [ "Xdebug", "performance" ], - "time": "2019-05-27T17:52:04+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/1.4.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-11-13T08:04:11+00:00" + }, + { + "name": "cweagans/composer-patches", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/cweagans/composer-patches.git", + "reference": "ae02121445ad75f4eaff800cc532b5e6233e2ddf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/ae02121445ad75f4eaff800cc532b5e6233e2ddf", + "reference": "ae02121445ad75f4eaff800cc532b5e6233e2ddf", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3.0" + }, + "require-dev": { + "composer/composer": "~1.0 || ~2.0", + "phpunit/phpunit": "~4.6" + }, + "type": "composer-plugin", + "extra": { + "class": "cweagans\\Composer\\Patches" + }, + "autoload": { + "psr-4": { + "cweagans\\Composer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Cameron Eagans", + "email": "me@cweagans.net" + } + ], + "description": "Provides a way to patch Composer packages.", + "support": { + "issues": "https://github.com/cweagans/composer-patches/issues", + "source": "https://github.com/cweagans/composer-patches/tree/1.7.0" + }, + "time": "2020-09-30T17:56:20+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.0", + "version": "v0.7.1", "source": { "type": "git", "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "e8d808670b8f882188368faaf1144448c169c0b7" + "reference": "fe390591e0241955f22eb9ba327d137e501c771c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/e8d808670b8f882188368faaf1144448c169c0b7", - "reference": "e8d808670b8f882188368faaf1144448c169c0b7", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c", + "reference": "fe390591e0241955f22eb9ba327d137e501c771c", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", "php": ">=5.3", - "squizlabs/php_codesniffer": "^2 || ^3 || 4.0.x-dev" + "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0" }, "require-dev": { "composer/composer": "*", @@ -644,7 +860,11 @@ "stylecheck", "tests" ], - "time": "2020-06-25T14:57:39+00:00" + "support": { + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + }, + "time": "2020-12-07T18:04:37+00:00" }, { "name": "dg/mysql-dump", @@ -684,37 +904,44 @@ "keywords": [ "mysql" ], + "support": { + "source": "https://github.com/dg/MySQL-dump/tree/master" + }, "time": "2019-09-10T21:36:25+00:00" }, { "name": "doctrine/inflector", - "version": "v1.3.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -722,6 +949,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -730,10 +961,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -743,48 +970,67 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", "keywords": [ "inflection", - "pluralize", - "singularize", - "string" + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.x" + }, + "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%2Finflector", + "type": "tidelift" + } ], - "time": "2018-01-09T20:05:19+00:00" + "time": "2020-05-29T15:13:26+00:00" }, { "name": "doctrine/instantiator", - "version": "1.2.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "a2c590166b2133a4633738648b6b064edae0814a" + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", - "reference": "a2c590166b2133a4633738648b6b064edae0814a", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.0", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" + "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": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" @@ -798,7 +1044,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "homepage": "https://ocramius.github.io/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", @@ -807,81 +1053,38 @@ "constructor", "instantiate" ], - "time": "2019-03-17T17:37:11+00:00" - }, - { - "name": "facebook/webdriver", - "version": "1.7.1", - "source": { - "type": "git", - "url": "https://github.com/php-webdriver/php-webdriver-archive.git", - "reference": "e43de70f3c7166169d0f14a374505392734160e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver-archive/zipball/e43de70f3c7166169d0f14a374505392734160e5", - "reference": "e43de70f3c7166169d0f14a374505392734160e5", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ext-zip": "*", - "php": "^5.6 || ~7.0", - "symfony/process": "^2.8 || ^3.1 || ^4.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "php-coveralls/php-coveralls": "^2.0", - "php-mock/php-mock-phpunit": "^1.1", - "phpunit/phpunit": "^5.7", - "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", - "squizlabs/php_codesniffer": "^2.6", - "symfony/var-dumper": "^3.3 || ^4.0" - }, - "suggest": { - "ext-SimpleXML": "For Firefox profile creation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-community": "1.5-dev" - } + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" }, - "autoload": { - "psr-4": { - "Facebook\\WebDriver\\": "lib/" + "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" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "description": "A PHP client for Selenium WebDriver", - "homepage": "https://github.com/facebook/php-webdriver", - "keywords": [ - "facebook", - "php", - "selenium", - "webdriver" ], - "abandoned": "php-webdriver/webdriver", - "time": "2019-06-13T08:02:18+00:00" + "time": "2020-11-10T18:47:58+00:00" }, { "name": "gettext/gettext", - "version": "v4.7.0", + "version": "v4.8.4", "source": { "type": "git", "url": "https://github.com/php-gettext/Gettext.git", - "reference": "739c935503853759b1607f375960c73a5b03909b" + "reference": "58bc0f7f37e78efb0f9758f93d4a0f669f0f84a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/739c935503853759b1607f375960c73a5b03909b", - "reference": "739c935503853759b1607f375960c73a5b03909b", + "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/58bc0f7f37e78efb0f9758f93d4a0f669f0f84a1", + "reference": "58bc0f7f37e78efb0f9758f93d4a0f669f0f84a1", "shasum": "" }, "require": { @@ -930,31 +1133,50 @@ "po", "translation" ], - "time": "2019-10-07T11:40:33+00:00" + "support": { + "email": "oom@oscarotero.com", + "issues": "https://github.com/oscarotero/Gettext/issues", + "source": "https://github.com/php-gettext/Gettext/tree/v4.8.4" + }, + "funding": [ + { + "url": "https://paypal.me/oscarotero", + "type": "custom" + }, + { + "url": "https://github.com/oscarotero", + "type": "github" + }, + { + "url": "https://www.patreon.com/misteroom", + "type": "patreon" + } + ], + "time": "2021-03-10T19:35:49+00:00" }, { "name": "gettext/languages", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/php-gettext/Languages.git", - "reference": "78db2d17933f0765a102f368a6663f057162ddbd" + "reference": "38ea0482f649e0802e475f0ed19fa993bcb7a618" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Languages/zipball/78db2d17933f0765a102f368a6663f057162ddbd", - "reference": "78db2d17933f0765a102f368a6663f057162ddbd", + "url": "https://api.github.com/repos/php-gettext/Languages/zipball/38ea0482f649e0802e475f0ed19fa993bcb7a618", + "reference": "38ea0482f649e0802e475f0ed19fa993bcb7a618", "shasum": "" }, "require": { "php": ">=5.3" }, "require-dev": { - "phpunit/phpunit": "^4" + "friendsofphp/php-cs-fixer": "^2.16.0", + "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5 || ^8.4" }, "bin": [ - "bin/export-plural-rules", - "bin/export-plural-rules.php" + "bin/export-plural-rules" ], "type": "library", "autoload": { @@ -974,7 +1196,7 @@ } ], "description": "gettext languages with plural rules", - "homepage": "https://github.com/mlocati/cldr-to-gettext-plural-rules", + "homepage": "https://github.com/php-gettext/Languages", "keywords": [ "cldr", "i18n", @@ -991,100 +1213,50 @@ "translations", "unicode" ], - "time": "2018-11-13T22:06:07+00:00" - }, - { - "name": "gumlet/php-image-resize", - "version": "1.9.2", - "source": { - "type": "git", - "url": "https://github.com/gumlet/php-image-resize.git", - "reference": "06339a9c1b167acd58173db226f57957a6617547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/gumlet/php-image-resize/zipball/06339a9c1b167acd58173db226f57957a6617547", - "reference": "06339a9c1b167acd58173db226f57957a6617547", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "ext-gd": "*", - "php": ">=5.5.0" - }, - "require-dev": { - "apigen/apigen": "^4.1", - "ext-exif": "*", - "ext-gd": "*", - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^4.8" - }, - "suggest": { - "ext-exif": "Auto-rotate jpeg files" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gumlet\\": "lib/" - } + "support": { + "issues": "https://github.com/php-gettext/Languages/issues", + "source": "https://github.com/php-gettext/Languages/tree/2.6.0" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aditya Patadia", - "homepage": "http://aditya.patadia.org/" - } - ], - "description": "PHP class to re-size and scale images", - "homepage": "https://github.com/gumlet/php-image-resize", - "keywords": [ - "image", - "php", - "resize", - "scale" - ], - "time": "2019-01-01T13:53:00+00:00" + "time": "2019-11-13T10:30:21+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "6.4.1", + "name": "guzzlehttp/psr7", + "version": "1.8.1", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "0895c932405407fd3a7368b6910c09a24d26db11" + "url": "https://github.com/guzzle/psr7.git", + "reference": "35ea11d335fd638b5882ff1725228b3d35496ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0895c932405407fd3a7368b6910c09a24d26db11", - "reference": "0895c932405407fd3a7368b6910c09a24d26db11", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/35ea11d335fd638b5882ff1725228b3d35496ab1", + "reference": "35ea11d335fd638b5882ff1725228b3d35496ab1", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5" + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" }, "suggest": { - "psr/log": "Required for using the Log middleware" + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.3-dev" + "dev-master": "1.7-dev" } }, "autoload": { "psr-4": { - "GuzzleHttp\\": "src/" + "GuzzleHttp\\Psr7\\": "src/" }, "files": [ "src/functions_include.php" @@ -1099,764 +1271,205 @@ "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" } ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", + "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ - "client", - "curl", - "framework", "http", - "http client", - "rest", - "web service" + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" ], - "time": "2019-10-23T15:58:00+00:00" + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.8.1" + }, + "time": "2021-03-21T16:25:00+00:00" }, { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" - }, - "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2019-07-01T23:21:34+00:00" - }, - { - "name": "hautelook/phpass", - "version": "0.3.5", - "source": { - "type": "git", - "url": "https://github.com/hautelook/phpass.git", - "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hautelook/phpass/zipball/b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", - "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "psr-0": { - "Hautelook": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Public Domain" - ], - "authors": [ - { - "name": "Solar Designer", - "email": "solar@openwall.com", - "homepage": "http://openwall.com/phpass/" - } - ], - "description": "Portable PHP password hashing framework", - "homepage": "http://github.com/hautelook/phpass/", - "keywords": [ - "blowfish", - "crypt", - "password", - "security" - ], - "time": "2012-08-31T00:00:00+00:00" - }, - { - "name": "hoa/consistency", - "version": "1.17.05.02", - "source": { - "type": "git", - "url": "https://github.com/hoaproject/Consistency.git", - "reference": "fd7d0adc82410507f332516faf655b6ed22e4c2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hoaproject/Consistency/zipball/fd7d0adc82410507f332516faf655b6ed22e4c2f", - "reference": "fd7d0adc82410507f332516faf655b6ed22e4c2f", - "shasum": "" - }, - "require": { - "hoa/exception": "~1.0", - "php": ">=5.5.0" - }, - "require-dev": { - "hoa/stream": "~1.0", - "hoa/test": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Hoa\\Consistency\\": "." - }, - "files": [ - "Prelude.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net" - }, - { - "name": "Hoa community", - "homepage": "https://hoa-project.net/" - } - ], - "description": "The Hoa\\Consistency library.", - "homepage": "https://hoa-project.net/", - "keywords": [ - "autoloader", - "callable", - "consistency", - "entity", - "flex", - "keyword", - "library" - ], - "time": "2017-05-02T12:18:12+00:00" - }, - { - "name": "hoa/console", - "version": "3.17.05.02", - "source": { - "type": "git", - "url": "https://github.com/hoaproject/Console.git", - "reference": "e231fd3ea70e6d773576ae78de0bdc1daf331a66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hoaproject/Console/zipball/e231fd3ea70e6d773576ae78de0bdc1daf331a66", - "reference": "e231fd3ea70e6d773576ae78de0bdc1daf331a66", - "shasum": "" - }, - "require": { - "hoa/consistency": "~1.0", - "hoa/event": "~1.0", - "hoa/exception": "~1.0", - "hoa/file": "~1.0", - "hoa/protocol": "~1.0", - "hoa/stream": "~1.0", - "hoa/ustring": "~4.0" - }, - "require-dev": { - "hoa/test": "~2.0" - }, - "suggest": { - "ext-pcntl": "To enable hoa://Event/Console/Window:resize.", - "hoa/dispatcher": "To use the console kit.", - "hoa/router": "To use the console kit." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Hoa\\Console\\": "." - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net" - }, - { - "name": "Hoa community", - "homepage": "https://hoa-project.net/" - } - ], - "description": "The Hoa\\Console library.", - "homepage": "https://hoa-project.net/", - "keywords": [ - "autocompletion", - "chrome", - "cli", - "console", - "cursor", - "getoption", - "library", - "option", - "parser", - "processus", - "readline", - "terminfo", - "tput", - "window" - ], - "time": "2017-05-02T12:26:19+00:00" - }, - { - "name": "hoa/event", - "version": "1.17.01.13", - "source": { - "type": "git", - "url": "https://github.com/hoaproject/Event.git", - "reference": "6c0060dced212ffa3af0e34bb46624f990b29c54" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hoaproject/Event/zipball/6c0060dced212ffa3af0e34bb46624f990b29c54", - "reference": "6c0060dced212ffa3af0e34bb46624f990b29c54", - "shasum": "" - }, - "require": { - "hoa/consistency": "~1.0", - "hoa/exception": "~1.0" - }, - "require-dev": { - "hoa/test": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Hoa\\Event\\": "." - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net" - }, - { - "name": "Hoa community", - "homepage": "https://hoa-project.net/" - } - ], - "description": "The Hoa\\Event library.", - "homepage": "https://hoa-project.net/", - "keywords": [ - "event", - "library", - "listener", - "observer" - ], - "time": "2017-01-13T15:30:50+00:00" - }, - { - "name": "hoa/exception", - "version": "1.17.01.16", - "source": { - "type": "git", - "url": "https://github.com/hoaproject/Exception.git", - "reference": "091727d46420a3d7468ef0595651488bfc3a458f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hoaproject/Exception/zipball/091727d46420a3d7468ef0595651488bfc3a458f", - "reference": "091727d46420a3d7468ef0595651488bfc3a458f", - "shasum": "" - }, - "require": { - "hoa/consistency": "~1.0", - "hoa/event": "~1.0" - }, - "require-dev": { - "hoa/test": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Hoa\\Exception\\": "." - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net" - }, - { - "name": "Hoa community", - "homepage": "https://hoa-project.net/" - } - ], - "description": "The Hoa\\Exception library.", - "homepage": "https://hoa-project.net/", - "keywords": [ - "exception", - "library" - ], - "time": "2017-01-16T07:53:27+00:00" - }, - { - "name": "hoa/file", - "version": "1.17.07.11", - "source": { - "type": "git", - "url": "https://github.com/hoaproject/File.git", - "reference": "35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hoaproject/File/zipball/35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca", - "reference": "35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca", - "shasum": "" - }, - "require": { - "hoa/consistency": "~1.0", - "hoa/event": "~1.0", - "hoa/exception": "~1.0", - "hoa/iterator": "~2.0", - "hoa/stream": "~1.0" - }, - "require-dev": { - "hoa/test": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Hoa\\File\\": "." - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net" - }, - { - "name": "Hoa community", - "homepage": "https://hoa-project.net/" - } - ], - "description": "The Hoa\\File library.", - "homepage": "https://hoa-project.net/", - "keywords": [ - "Socket", - "directory", - "file", - "finder", - "library", - "link", - "temporary" - ], - "time": "2017-07-11T07:42:15+00:00" - }, - { - "name": "hoa/iterator", - "version": "2.17.01.10", + "name": "hautelook/phpass", + "version": "0.3.5", "source": { "type": "git", - "url": "https://github.com/hoaproject/Iterator.git", - "reference": "d1120ba09cb4ccd049c86d10058ab94af245f0cc" + "url": "https://github.com/hautelook/phpass.git", + "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hoaproject/Iterator/zipball/d1120ba09cb4ccd049c86d10058ab94af245f0cc", - "reference": "d1120ba09cb4ccd049c86d10058ab94af245f0cc", + "url": "https://api.github.com/repos/hautelook/phpass/zipball/b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", + "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", "shasum": "" }, "require": { - "hoa/consistency": "~1.0", - "hoa/exception": "~1.0" - }, - "require-dev": { - "hoa/test": "~2.0" + "php": ">=5.3.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, "autoload": { - "psr-4": { - "Hoa\\Iterator\\": "." + "psr-0": { + "Hautelook": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "Public Domain" ], "authors": [ { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net" - }, - { - "name": "Hoa community", - "homepage": "https://hoa-project.net/" + "name": "Solar Designer", + "email": "solar@openwall.com", + "homepage": "http://openwall.com/phpass/" } ], - "description": "The Hoa\\Iterator library.", - "homepage": "https://hoa-project.net/", + "description": "Portable PHP password hashing framework", + "homepage": "http://github.com/hautelook/phpass/", "keywords": [ - "iterator", - "library" + "blowfish", + "crypt", + "password", + "security" ], - "time": "2017-01-10T10:34:47+00:00" + "support": { + "issues": "https://github.com/hautelook/phpass/issues", + "source": "https://github.com/hautelook/phpass/tree/0.3.x" + }, + "time": "2012-08-31T00:00:00+00:00" }, { - "name": "hoa/protocol", - "version": "1.17.01.14", + "name": "illuminate/collections", + "version": "v8.34.0", "source": { "type": "git", - "url": "https://github.com/hoaproject/Protocol.git", - "reference": "5c2cf972151c45f373230da170ea015deecf19e2" + "url": "https://github.com/illuminate/collections.git", + "reference": "e18d6e4cf03dd597bc3ecd86fefc2023d0c7a5e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hoaproject/Protocol/zipball/5c2cf972151c45f373230da170ea015deecf19e2", - "reference": "5c2cf972151c45f373230da170ea015deecf19e2", + "url": "https://api.github.com/repos/illuminate/collections/zipball/e18d6e4cf03dd597bc3ecd86fefc2023d0c7a5e8", + "reference": "e18d6e4cf03dd597bc3ecd86fefc2023d0c7a5e8", "shasum": "" }, "require": { - "hoa/consistency": "~1.0", - "hoa/exception": "~1.0" + "illuminate/contracts": "^8.0", + "illuminate/macroable": "^8.0", + "php": "^7.3|^8.0" }, - "require-dev": { - "hoa/test": "~2.0" + "suggest": { + "symfony/var-dumper": "Required to use the dump method (^5.1.4)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "8.x-dev" } }, "autoload": { "psr-4": { - "Hoa\\Protocol\\": "." + "Illuminate\\Support\\": "" }, "files": [ - "Wrapper.php" + "helpers.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net" - }, - { - "name": "Hoa community", - "homepage": "https://hoa-project.net/" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], - "description": "The Hoa\\Protocol library.", - "homepage": "https://hoa-project.net/", - "keywords": [ - "library", - "protocol", - "resource", - "stream", - "wrapper" - ], - "time": "2017-01-14T12:26:10+00:00" - }, - { - "name": "hoa/stream", - "version": "1.17.02.21", - "source": { - "type": "git", - "url": "https://github.com/hoaproject/Stream.git", - "reference": "3293cfffca2de10525df51436adf88a559151d82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hoaproject/Stream/zipball/3293cfffca2de10525df51436adf88a559151d82", - "reference": "3293cfffca2de10525df51436adf88a559151d82", - "shasum": "" - }, - "require": { - "hoa/consistency": "~1.0", - "hoa/event": "~1.0", - "hoa/exception": "~1.0", - "hoa/protocol": "~1.0" - }, - "require-dev": { - "hoa/test": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Hoa\\Stream\\": "." - } + "description": "The Illuminate Collections package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net" - }, - { - "name": "Hoa community", - "homepage": "https://hoa-project.net/" - } - ], - "description": "The Hoa\\Stream library.", - "homepage": "https://hoa-project.net/", - "keywords": [ - "Context", - "bucket", - "composite", - "filter", - "in", - "library", - "out", - "protocol", - "stream", - "wrapper" - ], - "time": "2017-02-21T16:01:06+00:00" + "time": "2021-03-19T00:05:33+00:00" }, { - "name": "hoa/ustring", - "version": "4.17.01.16", + "name": "illuminate/contracts", + "version": "v8.34.0", "source": { "type": "git", - "url": "https://github.com/hoaproject/Ustring.git", - "reference": "e6326e2739178799b1fe3fdd92029f9517fa17a0" + "url": "https://github.com/illuminate/contracts.git", + "reference": "121cea1d8b8772bc7fee99c71ecf0f57c1d77b3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hoaproject/Ustring/zipball/e6326e2739178799b1fe3fdd92029f9517fa17a0", - "reference": "e6326e2739178799b1fe3fdd92029f9517fa17a0", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/121cea1d8b8772bc7fee99c71ecf0f57c1d77b3b", + "reference": "121cea1d8b8772bc7fee99c71ecf0f57c1d77b3b", "shasum": "" }, "require": { - "hoa/consistency": "~1.0", - "hoa/exception": "~1.0" - }, - "require-dev": { - "hoa/test": "~2.0" - }, - "suggest": { - "ext-iconv": "ext/iconv must be present (or a third implementation) to use Hoa\\Ustring::transcode().", - "ext-intl": "To get a better Hoa\\Ustring::toAscii() and Hoa\\Ustring::compareTo()." + "php": "^7.3|^8.0", + "psr/container": "^1.0", + "psr/simple-cache": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "8.x-dev" } }, "autoload": { "psr-4": { - "Hoa\\Ustring\\": "." + "Illuminate\\Contracts\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Ivan Enderlin", - "email": "ivan.enderlin@hoa-project.net" - }, - { - "name": "Hoa community", - "homepage": "https://hoa-project.net/" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], - "description": "The Hoa\\Ustring library.", - "homepage": "https://hoa-project.net/", - "keywords": [ - "library", - "search", - "string", - "unicode" - ], - "time": "2017-01-16T07:08:25+00:00" + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-03-12T14:45:30+00:00" }, { - "name": "illuminate/contracts", - "version": "v6.3.0", + "name": "illuminate/macroable", + "version": "v8.34.0", "source": { "type": "git", - "url": "https://github.com/illuminate/contracts.git", - "reference": "403b24e356346c1cd13ad794d87ec7c57a5363bb" + "url": "https://github.com/illuminate/macroable.git", + "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/403b24e356346c1cd13ad794d87ec7c57a5363bb", - "reference": "403b24e356346c1cd13ad794d87ec7c57a5363bb", + "url": "https://api.github.com/repos/illuminate/macroable/zipball/300aa13c086f25116b5f3cde3ca54ff5c822fb05", + "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05", "shasum": "" }, "require": { - "php": "^7.2", - "psr/container": "^1.0", - "psr/simple-cache": "^1.0" + "php": "^7.3|^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.0-dev" + "dev-master": "8.x-dev" } }, "autoload": { "psr-4": { - "Illuminate\\Contracts\\": "" + "Illuminate\\Support\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -1869,47 +1482,54 @@ "email": "taylor@laravel.com" } ], - "description": "The Illuminate Contracts package.", + "description": "The Illuminate Macroable package.", "homepage": "https://laravel.com", - "time": "2019-09-18T12:32:21+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2020-10-27T15:20:30+00:00" }, { "name": "illuminate/support", - "version": "v6.3.0", + "version": "v8.34.0", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "db160b42dce40ca73f12e8a7ccd227b4e242df10" + "reference": "b7b27e758b68aad44558c62e7374328835895386" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/db160b42dce40ca73f12e8a7ccd227b4e242df10", - "reference": "db160b42dce40ca73f12e8a7ccd227b4e242df10", + "url": "https://api.github.com/repos/illuminate/support/zipball/b7b27e758b68aad44558c62e7374328835895386", + "reference": "b7b27e758b68aad44558c62e7374328835895386", "shasum": "" }, "require": { - "doctrine/inflector": "^1.1", + "doctrine/inflector": "^1.4|^2.0", "ext-json": "*", "ext-mbstring": "*", - "illuminate/contracts": "^6.0", - "nesbot/carbon": "^2.0", - "php": "^7.2" + "illuminate/collections": "^8.0", + "illuminate/contracts": "^8.0", + "illuminate/macroable": "^8.0", + "nesbot/carbon": "^2.31", + "php": "^7.3|^8.0", + "voku/portable-ascii": "^1.4.8" }, "conflict": { "tightenco/collect": "<5.5.33" }, "suggest": { - "illuminate/filesystem": "Required to use the composer class (^6.0).", - "moontoast/math": "Required to use ordered UUIDs (^1.1).", - "ramsey/uuid": "Required to use Str::uuid() (^3.7).", - "symfony/process": "Required to use the composer class (^4.3.4).", - "symfony/var-dumper": "Required to use the dd function (^4.3.4).", - "vlucas/phpdotenv": "Required to use the Env class and env helper (^3.3)." + "illuminate/filesystem": "Required to use the composer class (^8.0).", + "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3).", + "ramsey/uuid": "Required to use Str::uuid() (^4.0).", + "symfony/process": "Required to use the composer class (^5.1.4).", + "symfony/var-dumper": "Required to use the dd function (^5.1.4).", + "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.2)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.0-dev" + "dev-master": "8.x-dev" } }, "autoload": { @@ -1932,20 +1552,24 @@ ], "description": "The Illuminate Support package.", "homepage": "https://laravel.com", - "time": "2019-09-30T12:55:23+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-03-21T13:37:37+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.9", + "version": "5.2.10", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4" + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", "shasum": "" }, "require": { @@ -1998,20 +1622,24 @@ "json", "schema" ], - "time": "2019-09-25T14:49:45+00:00" + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10" + }, + "time": "2020-05-27T16:41:55+00:00" }, { "name": "lucatume/wp-browser", - "version": "2.6.7", + "version": "2.6.17", "source": { "type": "git", "url": "https://github.com/lucatume/wp-browser.git", - "reference": "0323640f8120900eac034ded2bd0cffb2ccbebfa" + "reference": "00debfb08763ff2f0b8f8c2dee0e1962504bb7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/0323640f8120900eac034ded2bd0cffb2ccbebfa", - "reference": "0323640f8120900eac034ded2bd0cffb2ccbebfa", + "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/00debfb08763ff2f0b8f8c2dee0e1962504bb7c7", + "reference": "00debfb08763ff2f0b8f8c2dee0e1962504bb7c7", "shasum": "" }, "require": { @@ -2024,7 +1652,7 @@ "ext-pdo": "*", "mikemclin/laravel-wp-password": "~2.0.0", "php": ">=5.6.0", - "symfony/filesystem": "^3.0", + "symfony/filesystem": ">=3.0", "symfony/process": ">=2.7 <5.0", "vria/nodiacritic": "^0.1.2", "wp-cli/wp-cli-bundle": ">=2.0 <3.0.0", @@ -2047,7 +1675,7 @@ "codeception/module-webdriver": "Codeception 4.0 compatibility; required by the WPWebDriver module.", "codeception/util-universalframework": "Codeception 4.0 compatibility; required by the WordPress framework module.", "gumlet/php-image-resize": "To handle runtime image modification in the WPDb::haveAttachmentInDatabase method.", - "vlucas/phpdotenv": "To manage env file based configuration of the suites." + "vlucas/phpdotenv:^4.0": "To manage more complex environment file based configuration of the suites." }, "type": "library", "extra": { @@ -2081,32 +1709,42 @@ "codeception", "wordpress" ], - "time": "2020-08-14T14:42:07+00:00" + "support": { + "issues": "https://github.com/lucatume/wp-browser/issues", + "source": "https://github.com/lucatume/wp-browser/tree/2.6.17" + }, + "funding": [ + { + "url": "https://github.com/lucatume", + "type": "github" + } + ], + "time": "2020-11-17T12:36:00+00:00" }, { "name": "mck89/peast", - "version": "v1.9.4", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/mck89/peast.git", - "reference": "713162de51f5fc26ce716143d1c23ed8c6e2e723" + "reference": "833be7a294627a8c5b1c482cbf489f73bf9b8086" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mck89/peast/zipball/713162de51f5fc26ce716143d1c23ed8c6e2e723", - "reference": "713162de51f5fc26ce716143d1c23ed8c6e2e723", + "url": "https://api.github.com/repos/mck89/peast/zipball/833be7a294627a8c5b1c482cbf489f73bf9b8086", + "reference": "833be7a294627a8c5b1c482cbf489f73bf9b8086", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9.4-dev" + "dev-master": "1.12.0-dev" } }, "autoload": { @@ -2126,7 +1764,11 @@ } ], "description": "Peast is PHP library that generates AST for JavaScript code", - "time": "2019-10-18T17:45:16+00:00" + "support": { + "issues": "https://github.com/mck89/peast/issues", + "source": "https://github.com/mck89/peast/tree/v1.12.0" + }, + "time": "2021-01-08T15:16:19+00:00" }, { "name": "mikemclin/laravel-wp-password", @@ -2190,20 +1832,24 @@ "password", "wordpress" ], + "support": { + "issues": "https://github.com/mikemclin/laravel-wp-password/issues", + "source": "https://github.com/mikemclin/laravel-wp-password/tree/2.0.1" + }, "time": "2018-01-11T14:12:02+00:00" }, { "name": "mustache/mustache", - "version": "v2.12.0", + "version": "v2.13.0", "source": { "type": "git", "url": "https://github.com/bobthecow/mustache.php.git", - "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e" + "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/fe8fe72e9d580591854de404cc59a1b83ca4d19e", - "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e", + "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/e95c5a008c23d3151d59ea72484d4f72049ab7f4", + "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4", "shasum": "" }, "require": { @@ -2236,24 +1882,28 @@ "mustache", "templating" ], - "time": "2017-07-11T12:54:05+00:00" + "support": { + "issues": "https://github.com/bobthecow/mustache.php/issues", + "source": "https://github.com/bobthecow/mustache.php/tree/master" + }, + "time": "2019-11-23T21:40:31+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.9.3", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "replace": { "myclabs/deep-copy": "self.version" @@ -2284,7 +1934,17 @@ "object", "object graph" ], - "time": "2019-08-09T12:45:53+00:00" + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" }, { "name": "nb/oxymel", @@ -2325,33 +1985,40 @@ "keywords": [ "xml" ], + "support": { + "issues": "https://github.com/nb/oxymel/issues", + "source": "https://github.com/nb/oxymel/tree/master" + }, "time": "2013-02-24T15:01:54+00:00" }, { "name": "nesbot/carbon", - "version": "2.25.3", + "version": "2.46.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "d07636581795383e2fea2d711212d30f941f2039" + "reference": "2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d07636581795383e2fea2d711212d30f941f2039", - "reference": "d07636581795383e2fea2d711212d30f941f2039", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4", + "reference": "2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4", "shasum": "" }, "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", - "symfony/translation": "^3.4 || ^4.0" + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { + "doctrine/orm": "^2.7", "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", - "kylekatarnls/multi-tester": "^1.1", - "phpmd/phpmd": "dev-php-7.1-compatibility", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.5 || ^8.0", + "kylekatarnls/multi-tester": "^2.0", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.54", + "phpunit/phpunit": "^7.5.20 || ^8.5.14", "squizlabs/php_codesniffer": "^3.4" }, "bin": [ @@ -2359,10 +2026,19 @@ ], "type": "library", "extra": { + "branch-alias": { + "dev-master": "2.x-dev", + "dev-3.x": "3.x-dev" + }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -2392,32 +2068,103 @@ "datetime", "time" ], - "time": "2019-10-20T11:05:44+00:00" + "support": { + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2021-02-24T17:30:44+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.10.4", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4" + }, + "time": "2020-12-20T10:01:03+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2447,24 +2194,28 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2018-07-08T19:23:20+00:00" + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/master" + }, + "time": "2020-06-27T14:33:11+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "bae7c545bef187884426f042434e561ab1ddb182" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -2494,32 +2245,33 @@ } ], "description": "Library for handling version information and constraints", - "time": "2018-07-08T19:19:57+00:00" + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.1.0" + }, + "time": "2021-02-23T14:00:09+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "2.0.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~6" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -2546,44 +2298,45 @@ "reflection", "static analysis" ], - "time": "2018-08-07T13:53:10+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.2", + "version": "5.2.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.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": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "~1.3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2594,38 +2347,44 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-09-12T14:27:41+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + }, + "time": "2020-09-03T19:13:55+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.0.1", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", "shasum": "" }, "require": { - "php": "^7.1", + "php": "^7.2 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" + "ext-tokenizer": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -2644,87 +2403,41 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2019-08-22T18:11:29+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", - "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "4.7.*" + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-0": { - "PhpOption\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache2" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "time": "2015-07-25T16:39:46+00:00" + "time": "2020-09-17T18:55:26+00:00" }, { "name": "phpspec/prophecy", - "version": "1.9.0", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203" + "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", + "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", "shasum": "" }, "require": { - "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.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.1", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.11.x-dev" } }, "autoload": { @@ -2757,44 +2470,52 @@ "spy", "stub" ], - "time": "2019-10-03T11:07:50+00:00" + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + }, + "time": "2021-03-17T13:42:18+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "7.0.8", + "version": "9.2.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f" + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa0d179a13284c7420fc281fc32750e6cc7c9e2f", - "reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" + "nikic/php-parser": "^4.10.2", + "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" }, "require-dev": { - "phpunit/phpunit": "^8.2.2" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.7.2" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -2820,32 +2541,42 @@ "testing", "xunit" ], - "time": "2019-09-17T06:24:36+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:44:49+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.2", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "050bedf145a257b1ff02746c31894800e5122946" + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", - "reference": "050bedf145a257b1ff02746c31894800e5122946", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2870,26 +2601,48 @@ "filesystem", "iterator" ], - "time": "2018-09-13T20:33:42+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "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/" @@ -2906,37 +2659,47 @@ "role": "lead" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", "keywords": [ - "template" + "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" + } ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { - "name": "phpunit/php-timer", - "version": "2.1.2", + "name": "phpunit/php-text-template", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2955,38 +2718,47 @@ "role": "lead" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "timer" + "template" + ], + "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" + } ], - "time": "2019-06-07T04:22:29+00:00" + "time": "2020-10-26T05:33:50+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "3.1.1", + "name": "phpunit/php-timer", + "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3001,65 +2773,78 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "tokenizer" + "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" + } ], - "abandoned": true, - "time": "2019-09-17T06:23:10+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "8.4.1", + "version": "9.5.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "366a4a0f2b971fd43b7c351d621e8dd7d7131869" + "reference": "c73c6737305e779771147af66c96ca6a7ed8a741" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/366a4a0f2b971fd43b7c351d621e8dd7d7131869", - "reference": "366a4a0f2b971fd43b7c351d621e8dd7d7131869", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c73c6737305e779771147af66c96ca6a7ed8a741", + "reference": "c73c6737305e779771147af66c96ca6a7ed8a741", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2.0", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.9.1", - "phar-io/manifest": "^1.0.3", - "phar-io/version": "^2.0.1", - "php": "^7.2", - "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^7.0.7", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.2", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.2", - "sebastian/exporter": "^3.1.1", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.1", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.3", + "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.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3", + "sebastian/version": "^3.0.2" }, "require-dev": { - "ext-pdo": "*" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -3067,12 +2852,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "8.4-dev" + "dev-master": "9.5-dev" } }, "autoload": { "classmap": [ "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3093,31 +2881,40 @@ "testing", "xunit" ], - "time": "2019-10-07T12:57:41+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.4" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-03-23T07:16:29+00:00" }, { "name": "psr/container", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -3130,7 +2927,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -3142,7 +2939,61 @@ "container-interop", "psr" ], - "time": "2017-02-14T16:28:37+00:00" + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" + }, + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "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" }, { "name": "psr/http-message", @@ -3192,20 +3043,23 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, "time": "2016-08-06T14:39:51+00:00" }, { "name": "psr/log", - "version": "1.1.1", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "bf73deb2b3b896a9d9c75f3f0d88185d2faa27e2" + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/bf73deb2b3b896a9d9c75f3f0d88185d2faa27e2", - "reference": "bf73deb2b3b896a9d9c75f3f0d88185d2faa27e2", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { @@ -3239,7 +3093,10 @@ "psr", "psr-3" ], - "time": "2019-10-25T08:06:51+00:00" + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.3" + }, + "time": "2020-03-23T09:12:05+00:00" }, { "name": "psr/simple-cache", @@ -3287,6 +3144,9 @@ "psr-16", "simple-cache" ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, "time": "2017-10-23T01:57:42+00:00" }, { @@ -3327,6 +3187,10 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, { @@ -3376,32 +3240,148 @@ "iri", "sockets" ], + "support": { + "issues": "https://github.com/rmccue/Requests/issues", + "source": "https://github.com/rmccue/Requests/tree/master" + }, "time": "2016-10-13T00:11:37+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", + "name": "sebastian/cli-parser", "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "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 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.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+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" + } + }, + "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 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": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3421,34 +3401,44 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "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://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.2", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": "^7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3461,6 +3451,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -3472,10 +3466,6 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", @@ -3485,33 +3475,100 @@ "compare", "equality" ], - "time": "2018-07-12T15:12:46+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "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.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" }, { "name": "sebastian/diff", - "version": "3.0.2", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3524,13 +3581,13 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", @@ -3541,27 +3598,37 @@ "unidiff", "unified diff" ], - "time": "2019-02-04T06:01:07+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", - "version": "4.2.2", + "version": "5.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -3569,7 +3636,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -3594,34 +3661,44 @@ "environment", "hhvm" ], - "time": "2019-05-05T09:05:15+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.2", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3661,30 +3738,40 @@ "export", "exporter" ], - "time": "2019-09-14T09:02:43+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.0", + "version": "5.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", "shasum": "" }, "require": { - "php": "^7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -3692,7 +3779,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3715,34 +3802,101 @@ "keywords": [ "global state" ], - "time": "2019-02-01T05:30:01+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:55:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "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.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3762,32 +3916,42 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" + "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": "1.1.1", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3807,32 +3971,42 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" + "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": "3.0.0", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3845,14 +4019,14 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, { "name": "Adam Harvey", "email": "aharvey@php.net" @@ -3860,29 +4034,42 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3902,32 +4089,42 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2018-10-04T04:07:39+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" }, { "name": "sebastian/type", - "version": "1.1.3", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", "shasum": "" }, "require": { - "php": "^7.2" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.2" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.3-dev" } }, "autoload": { @@ -3948,29 +4145,39 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", - "time": "2019-07-02T08:10:15+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:18:59+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3991,24 +4198,34 @@ ], "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" + "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": "seld/jsonlint", - "version": "1.7.2", + "version": "1.8.3", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19" + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e2e5d290e4d2a4f0eb449f510071392e00e10d19", - "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57", + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0" + "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" @@ -4040,20 +4257,34 @@ "parser", "validator" ], - "time": "2019-10-24T14:27:39+00:00" + "support": { + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.8.3" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2020-11-11T09:19:24+00:00" }, { "name": "seld/phar-utils", - "version": "1.0.1", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", "shasum": "" }, "require": { @@ -4082,22 +4313,26 @@ ], "description": "PHAR file format utilities, for when PHP phars you up", "keywords": [ - "phra" + "phar" ], - "time": "2015-10-13T18:44:15+00:00" + "support": { + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/master" + }, + "time": "2020-07-07T18:42:57+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.5.6", + "version": "3.5.8", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "e97627871a7eab2f70e59166072a6b767d5834e0" + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0", - "reference": "e97627871a7eab2f70e59166072a6b767d5834e0", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", "shasum": "" }, "require": { @@ -4135,44 +4370,131 @@ "phpcs", "standards" ], - "time": "2020-08-10T04:50:15+00:00" + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2020-10-23T02:01:07+00:00" }, { - "name": "symfony/browser-kit", - "version": "v4.3.5", + "name": "symfony/console", + "version": "v5.2.5", "source": { "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "78b7611c45039e8ce81698be319851529bf040b1" + "url": "https://github.com/symfony/console.git", + "reference": "938ebbadae1b0a9c9d1ec313f87f9708609f1b79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/78b7611c45039e8ce81698be319851529bf040b1", - "reference": "78b7611c45039e8ce81698be319851529bf040b1", + "url": "https://api.github.com/repos/symfony/console/zipball/938ebbadae1b0a9c9d1ec313f87f9708609f1b79", + "reference": "938ebbadae1b0a9c9d1ec313f87f9708609f1b79", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/dom-crawler": "~3.4|~4.0" + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" }, "require-dev": { - "symfony/css-selector": "~3.4|~4.0", - "symfony/http-client": "^4.3", - "symfony/mime": "^4.3", - "symfony/process": "~3.4|~4.0" + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", "symfony/process": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } + ], + "time": "2021-03-06T13:42:15+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "f65f217b3314504a1ec99c2d6ef69016bb13490f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/f65f217b3314504a1ec99c2d6ef69016bb13490f", + "reference": "f65f217b3314504a1ec99c2d6ef69016bb13490f", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" + "Symfony\\Component\\CssSelector\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4187,67 +4509,148 @@ "name": "Fabien Potencier", "email": "fabien@symfony.com" }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-27T10:01:46+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony BrowserKit Component", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "time": "2019-09-10T11:25:17+00:00" + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" }, { - "name": "symfony/console", - "version": "v4.3.5", + "name": "symfony/event-dispatcher", + "version": "v5.2.4", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "929ddf360d401b958f611d44e726094ab46a7369" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "d08d6ec121a425897951900ab692b612a61d6240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/929ddf360d401b958f611d44e726094ab46a7369", - "reference": "929ddf360d401b958f611d44e726094ab46a7369", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d08d6ec121a425897951900ab692b612a61d6240", + "reference": "d08d6ec121a425897951900ab692b612a61d6240", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3", - "symfony/process": "<3.3" + "symfony/dependency-injection": "<4.4" }, "provide": { - "psr/log-implementation": "1.0" + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/var-dumper": "^4.3" + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^4.4|^5.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4267,40 +4670,62 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", - "time": "2019-10-07T12:36:49+00:00" + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-18T17:12:37+00:00" }, { - "name": "symfony/css-selector", - "version": "v4.3.5", + "name": "symfony/event-dispatcher-contracts", + "version": "v2.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "f4b3ff6a549d9ed28b2b0ecd1781bf67cf220ee9" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/f4b3ff6a549d9ed28b2b0ecd1781bf67cf220ee9", - "reference": "f4b3ff6a549d9ed28b2b0ecd1781bf67cf220ee9", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4308,60 +4733,65 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", - "time": "2019-10-02T08:36:26+00:00" + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" }, { - "name": "symfony/dom-crawler", - "version": "v4.3.5", + "name": "symfony/filesystem", + "version": "v5.2.4", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "e9f7b4d19d69b133bd638eeddcdc757723b4211f" + "url": "https://github.com/symfony/filesystem.git", + "reference": "710d364200997a5afde34d9fe57bd52f3cc1e108" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/e9f7b4d19d69b133bd638eeddcdc757723b4211f", - "reference": "e9f7b4d19d69b133bd638eeddcdc757723b4211f", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/710d364200997a5afde34d9fe57bd52f3cc1e108", + "reference": "710d364200997a5afde34d9fe57bd52f3cc1e108", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "masterminds/html5": "<2.6" - }, - "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "~3.4|~4.0" - }, - "suggest": { - "symfony/css-selector": "" + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" + "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4381,57 +4811,48 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DomCrawler Component", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", - "time": "2019-09-28T21:25:05+00:00" + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-12T10:38:38+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.3.5", + "name": "symfony/finder", + "version": "v5.2.4", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6229f58993e5a157f6096fc7145c0717d0be8807" + "url": "https://github.com/symfony/finder.git", + "reference": "0d639a0943822626290d169965804f79400e6a04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6229f58993e5a157f6096fc7145c0717d0be8807", - "reference": "6229f58993e5a157f6096fc7145c0717d0be8807", + "url": "https://api.github.com/repos/symfony/finder/zipball/0d639a0943822626290d169965804f79400e6a04", + "reference": "0d639a0943822626290d169965804f79400e6a04", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "^3.4|^4.0", - "symfony/service-contracts": "^1.1", - "symfony/stopwatch": "~3.4|~4.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "php": ">=7.2.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Component\\Finder\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4451,41 +4872,64 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", - "time": "2019-10-01T16:40:32+00:00" + "support": { + "source": "https://github.com/symfony/finder/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-15T18:55:04+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.7", + "name": "symfony/polyfill-ctype", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1" }, "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4493,56 +4937,77 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } ], - "time": "2019-09-17T09:54:03+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { - "name": "symfony/filesystem", - "version": "v3.4.32", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "00e3a6ddd723b8bcfe4f2a1b6f82b98eeeb51516" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/00e3a6ddd723b8bcfe4f2a1b6f82b98eeeb51516", - "reference": "00e3a6ddd723b8bcfe4f2a1b6f82b98eeeb51516", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4551,47 +5016,82 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", - "time": "2019-08-20T13:31:17+00:00" + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "symfony/finder", - "version": "v4.3.5", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "5e575faa95548d0586f6bedaeabec259714e44d1" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5e575faa95548d0586f6bedaeabec259714e44d1", - "reference": "5e575faa95548d0586f6bedaeabec259714e44d1", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4600,47 +5100,76 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", - "time": "2019-09-16T11:29:48+00:00" + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.12.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { - "ext-ctype": "For best performance" + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Polyfill\\Mbstring\\": "" }, "files": [ "bootstrap.php" @@ -4652,56 +5181,78 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", + "mbstring", "polyfill", - "portable" + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.12.0", + "name": "symfony/polyfill-php73", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Polyfill\\Php73\\": "" }, "files": [ "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4718,43 +5269,63 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", "polyfill", "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.12.0", + "name": "symfony/polyfill-php80", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, "files": [ "bootstrap.php" @@ -4768,6 +5339,10 @@ "MIT" ], "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -4777,7 +5352,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -4785,31 +5360,43 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/process", - "version": "v4.3.5", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "50556892f3cc47d4200bfd1075314139c4c9ff4b" + "reference": "7e950b6366d4da90292c2e7fa820b3c1842b965a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/50556892f3cc47d4200bfd1075314139c4c9ff4b", - "reference": "50556892f3cc47d4200bfd1075314139c4c9ff4b", + "url": "https://api.github.com/repos/symfony/process/zipball/7e950b6366d4da90292c2e7fa820b3c1842b965a", + "reference": "7e950b6366d4da90292c2e7fa820b3c1842b965a", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" @@ -4832,26 +5419,43 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "time": "2019-09-26T21:17:10+00:00" + "support": { + "source": "https://github.com/symfony/process/tree/v4.4.20" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-27T09:09:26+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.7", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0" + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffcde9615dc5bb4825b9f6aed07716f1f57faae0", - "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.2.5", "psr/container": "^1.0" }, "suggest": { @@ -4860,7 +5464,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4892,46 +5500,148 @@ "interoperability", "standards" ], - "time": "2019-09-17T11:12:18+00:00" + "support": { + "source": "https://github.com/symfony/service-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/string", + "version": "v5.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "4e78d7d47061fa183639927ec40d607973699609" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/4e78d7d47061fa183639927ec40d607973699609", + "reference": "4e78d7d47061fa183639927ec40d607973699609", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-16T10:20:28+00:00" }, { "name": "symfony/translation", - "version": "v4.3.5", + "version": "v5.2.5", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "fe6193b066c457c144333c06aaa869a2d42a167f" + "reference": "0947ab1e3aabd22a6bef393874b2555d2bb976da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/fe6193b066c457c144333c06aaa869a2d42a167f", - "reference": "fe6193b066c457c144333c06aaa869a2d42a167f", + "url": "https://api.github.com/repos/symfony/translation/zipball/0947ab1e3aabd22a6bef393874b2555d2bb976da", + "reference": "0947ab1e3aabd22a6bef393874b2555d2bb976da", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.6" + "symfony/polyfill-php80": "^1.15", + "symfony/translation-contracts": "^2.3" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" }, "provide": { - "symfony/translation-implementation": "1.0" + "symfony/translation-implementation": "2.3" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/http-kernel": "~3.4|~4.0", - "symfony/intl": "~3.4|~4.0", - "symfony/service-contracts": "^1.1.2", - "symfony/var-dumper": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -4939,12 +5649,10 @@ "symfony/yaml": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -4966,26 +5674,43 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Translation Component", + "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", - "time": "2019-09-27T14:37:39+00:00" + "support": { + "source": "https://github.com/symfony/translation/tree/v5.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-06T07:59:01+00:00" }, { "name": "symfony/translation-contracts", - "version": "v1.1.7", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "364518c132c95642e530d9b2d217acbc2ccac3e6" + "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/364518c132c95642e530d9b2d217acbc2ccac3e6", - "reference": "364518c132c95642e530d9b2d217acbc2ccac3e6", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105", + "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.2.5" }, "suggest": { "symfony/translation-implementation": "" @@ -4993,7 +5718,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.3-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -5025,41 +5754,57 @@ "interoperability", "standards" ], - "time": "2019-09-17T11:12:18+00:00" + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-28T13:05:58+00:00" }, { "name": "symfony/yaml", - "version": "v4.3.5", + "version": "v5.2.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "41e16350a2a1c7383c4735aa2f9fce74cf3d1178" + "reference": "298a08ddda623485208506fcee08817807a251dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/41e16350a2a1c7383c4735aa2f9fce74cf3d1178", - "reference": "41e16350a2a1c7383c4735aa2f9fce74cf3d1178", + "url": "https://api.github.com/repos/symfony/yaml/zipball/298a08ddda623485208506fcee08817807a251dd", + "reference": "298a08ddda623485208506fcee08817807a251dd", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<4.4" }, "require-dev": { - "symfony/console": "~3.4|~4.0" + "symfony/console": "^4.4|^5.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -5082,29 +5827,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", - "time": "2019-09-11T15:41:19+00:00" + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-06T07:59:01+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.3", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + "reference": "75a63c33a8577608444246075ea0af0d052e452a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -5124,64 +5886,91 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2019-06-13T22:48:21+00:00" + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/master" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2020-07-12T23:59:07+00:00" }, { - "name": "vlucas/phpdotenv", - "version": "v3.6.0", + "name": "voku/portable-ascii", + "version": "1.5.6", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156" + "url": "https://github.com/voku/portable-ascii.git", + "reference": "80953678b19901e5165c56752d087fc11526017c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156", - "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/80953678b19901e5165c56752d087fc11526017c", + "reference": "80953678b19901e5165c56752d087fc11526017c", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0", - "phpoption/phpoption": "^1.5", - "symfony/polyfill-ctype": "^1.9" + "php": ">=7.0.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.6-dev" - } + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" }, + "type": "library", "autoload": { "psr-4": { - "Dotenv\\": "src/" + "voku\\": "src/voku/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "homepage": "https://gjcampbell.co.uk/" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://vancelucas.com/" + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" } ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", "keywords": [ - "dotenv", - "env", - "environment" + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.5.6" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } ], - "time": "2019-09-10T21:37:39+00:00" + "time": "2020-11-12T00:07:28+00:00" }, { "name": "vria/nodiacritic", @@ -5229,33 +6018,42 @@ "string", "text" ], + "support": { + "email": "contact@vria.eu", + "issues": "https://github.com/vria/nodiacritic/issues", + "source": "https://github.com/vria/nodiacritic/tree/0.1.2" + }, "time": "2016-09-17T22:03:11+00:00" }, { "name": "webmozart/assert", - "version": "1.5.0", + "version": "1.10.0", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", + "php": "^7.2 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "phpunit/phpunit": "^8.5.13" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -5279,20 +6077,24 @@ "check", "validate" ], - "time": "2019-08-24T08:43:50+00:00" + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" }, { "name": "wp-cli/cache-command", - "version": "v2.0.2", + "version": "v2.0.5", "source": { "type": "git", "url": "https://github.com/wp-cli/cache-command.git", - "reference": "56e2a8186c28bc1edbb8bc1c0f3d3b30fa116ea8" + "reference": "c1a91b35f274e8aa5142eb4d82842421ed89049a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/56e2a8186c28bc1edbb8bc1c0f3d3b30fa116ea8", - "reference": "56e2a8186c28bc1edbb8bc1c0f3d3b30fa116ea8", + "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/c1a91b35f274e8aa5142eb4d82842421ed89049a", + "reference": "c1a91b35f274e8aa5142eb4d82842421ed89049a", "shasum": "" }, "require": { @@ -5348,20 +6150,24 @@ ], "description": "Manages object and transient caches.", "homepage": "https://github.com/wp-cli/cache-command", - "time": "2019-04-19T15:13:51+00:00" + "support": { + "issues": "https://github.com/wp-cli/cache-command/issues", + "source": "https://github.com/wp-cli/cache-command/tree/v2.0.5" + }, + "time": "2020-12-07T19:32:47+00:00" }, { "name": "wp-cli/checksum-command", - "version": "v2.0.3", + "version": "v2.0.5", "source": { "type": "git", "url": "https://github.com/wp-cli/checksum-command.git", - "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a" + "reference": "a03cb058fcb295b8a1b060cc90618e777b86ad49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/7db66668ec116c5ccef7bc27b4354fa81b85018a", - "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a", + "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/a03cb058fcb295b8a1b060cc90618e777b86ad49", + "reference": "a03cb058fcb295b8a1b060cc90618e777b86ad49", "shasum": "" }, "require": { @@ -5403,20 +6209,24 @@ ], "description": "Verifies file integrity by comparing to published checksums.", "homepage": "https://github.com/wp-cli/checksum-command", - "time": "2019-04-25T00:28:02+00:00" + "support": { + "issues": "https://github.com/wp-cli/checksum-command/issues", + "source": "https://github.com/wp-cli/checksum-command/tree/v2.0.5" + }, + "time": "2020-12-07T22:47:40+00:00" }, { "name": "wp-cli/config-command", - "version": "v2.0.4", + "version": "v2.0.7", "source": { "type": "git", "url": "https://github.com/wp-cli/config-command.git", - "reference": "b7e69946e4ec711d4568d11d2b7e08f5e872567d" + "reference": "6468e97ab2ace5b0a448d9e19091d42f6461b466" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/config-command/zipball/b7e69946e4ec711d4568d11d2b7e08f5e872567d", - "reference": "b7e69946e4ec711d4568d11d2b7e08f5e872567d", + "url": "https://api.github.com/repos/wp-cli/config-command/zipball/6468e97ab2ace5b0a448d9e19091d42f6461b466", + "reference": "6468e97ab2ace5b0a448d9e19091d42f6461b466", "shasum": "" }, "require": { @@ -5472,25 +6282,29 @@ ], "description": "Generates and reads the wp-config.php file.", "homepage": "https://github.com/wp-cli/config-command", - "time": "2019-04-25T00:28:22+00:00" + "support": { + "issues": "https://github.com/wp-cli/config-command/issues", + "source": "https://github.com/wp-cli/config-command/tree/v2.0.7" + }, + "time": "2020-10-31T11:20:34+00:00" }, { "name": "wp-cli/core-command", - "version": "v2.0.6", + "version": "v2.0.12", "source": { "type": "git", "url": "https://github.com/wp-cli/core-command.git", - "reference": "14634828e559f69e2525fa9489635f301783aee8" + "reference": "a7001bd43b58fe67decd02c739615102cc0beb51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/core-command/zipball/14634828e559f69e2525fa9489635f301783aee8", - "reference": "14634828e559f69e2525fa9489635f301783aee8", + "url": "https://api.github.com/repos/wp-cli/core-command/zipball/a7001bd43b58fe67decd02c739615102cc0beb51", + "reference": "a7001bd43b58fe67decd02c739615102cc0beb51", "shasum": "" }, "require": { - "composer/semver": "^1.4", - "wp-cli/wp-cli": "^2.2" + "composer/semver": "^1.4 || ^2 || ^3", + "wp-cli/wp-cli": "^2.4" }, "require-dev": { "wp-cli/checksum-command": "^1 || ^2", @@ -5539,20 +6353,24 @@ ], "description": "Downloads, installs, updates, and manages a WordPress installation.", "homepage": "https://github.com/wp-cli/core-command", - "time": "2019-04-25T05:45:44+00:00" + "support": { + "issues": "https://github.com/wp-cli/core-command/issues", + "source": "https://github.com/wp-cli/core-command/tree/v2.0.12" + }, + "time": "2020-12-07T19:31:14+00:00" }, { "name": "wp-cli/cron-command", - "version": "v2.0.3", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/cron-command.git", - "reference": "b6d0c8ff69cc56d5316a35a7a2fcc314c4069585" + "reference": "668b8c7bc1c1a1930e8a956b1a8325d159cce78c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/b6d0c8ff69cc56d5316a35a7a2fcc314c4069585", - "reference": "b6d0c8ff69cc56d5316a35a7a2fcc314c4069585", + "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/668b8c7bc1c1a1930e8a956b1a8325d159cce78c", + "reference": "668b8c7bc1c1a1930e8a956b1a8325d159cce78c", "shasum": "" }, "require": { @@ -5577,7 +6395,8 @@ "cron event run", "cron event schedule", "cron schedule", - "cron schedule list" + "cron schedule list", + "cron event unschedule" ] }, "autoload": { @@ -5601,20 +6420,24 @@ ], "description": "Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules.", "homepage": "https://github.com/wp-cli/cron-command", - "time": "2019-04-24T07:31:46+00:00" + "support": { + "issues": "https://github.com/wp-cli/cron-command/issues", + "source": "https://github.com/wp-cli/cron-command/tree/v2.0.6" + }, + "time": "2020-12-07T19:30:59+00:00" }, { "name": "wp-cli/db-command", - "version": "v2.0.4", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/db-command.git", - "reference": "0cce781beb00c9dd4c4992464b324da7b96486a9" + "reference": "8e3cd46987241ed97ddb7f682b3505dff8d6dce4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/db-command/zipball/0cce781beb00c9dd4c4992464b324da7b96486a9", - "reference": "0cce781beb00c9dd4c4992464b324da7b96486a9", + "url": "https://api.github.com/repos/wp-cli/db-command/zipball/8e3cd46987241ed97ddb7f682b3505dff8d6dce4", + "reference": "8e3cd46987241ed97ddb7f682b3505dff8d6dce4", "shasum": "" }, "require": { @@ -5671,20 +6494,24 @@ ], "description": "Performs basic database operations using credentials stored in wp-config.php.", "homepage": "https://github.com/wp-cli/db-command", - "time": "2019-09-25T14:14:43+00:00" + "support": { + "issues": "https://github.com/wp-cli/db-command/issues", + "source": "https://github.com/wp-cli/db-command/tree/v2.0.6" + }, + "time": "2020-01-28T16:39:32+00:00" }, { "name": "wp-cli/embed-command", - "version": "v2.0.3", + "version": "v2.0.7", "source": { "type": "git", "url": "https://github.com/wp-cli/embed-command.git", - "reference": "ce0c86217d9c0500666bd986ab17cae0ae33a41b" + "reference": "93d5582a9b03e950d3a2fe0869ae2c12d55a6242" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/ce0c86217d9c0500666bd986ab17cae0ae33a41b", - "reference": "ce0c86217d9c0500666bd986ab17cae0ae33a41b", + "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/93d5582a9b03e950d3a2fe0869ae2c12d55a6242", + "reference": "93d5582a9b03e950d3a2fe0869ae2c12d55a6242", "shasum": "" }, "require": { @@ -5734,20 +6561,24 @@ ], "description": "Inspects oEmbed providers, clears embed cache, and more.", "homepage": "https://github.com/wp-cli/embed-command", - "time": "2019-04-25T00:28:56+00:00" + "support": { + "issues": "https://github.com/wp-cli/embed-command/issues", + "source": "https://github.com/wp-cli/embed-command/tree/v2.0.7" + }, + "time": "2020-12-07T19:30:42+00:00" }, { "name": "wp-cli/entity-command", - "version": "v2.0.6", + "version": "v2.0.7", "source": { "type": "git", "url": "https://github.com/wp-cli/entity-command.git", - "reference": "250ed0da61162819f601fa110251c7e4c5173f27" + "reference": "0df89e4fba48177acf768bff9c00cda95a3fe5b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/250ed0da61162819f601fa110251c7e4c5173f27", - "reference": "250ed0da61162819f601fa110251c7e4c5173f27", + "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/0df89e4fba48177acf768bff9c00cda95a3fe5b9", + "reference": "0df89e4fba48177acf768bff9c00cda95a3fe5b9", "shasum": "" }, "require": { @@ -5940,20 +6771,24 @@ ], "description": "Manage WordPress comments, menus, options, posts, sites, terms, and users.", "homepage": "https://github.com/wp-cli/entity-command", - "time": "2019-04-25T04:51:40+00:00" + "support": { + "issues": "https://github.com/wp-cli/entity-command/issues", + "source": "https://github.com/wp-cli/entity-command/tree/master" + }, + "time": "2019-11-12T11:32:14+00:00" }, { "name": "wp-cli/eval-command", - "version": "v2.0.4", + "version": "v2.0.8", "source": { "type": "git", "url": "https://github.com/wp-cli/eval-command.git", - "reference": "47a4f1a910b6d88f090d776a80d893cf19ca2047" + "reference": "8a5e0340e82e1fb2b48a5dedd88cef1fb8b410ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/47a4f1a910b6d88f090d776a80d893cf19ca2047", - "reference": "47a4f1a910b6d88f090d776a80d893cf19ca2047", + "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/8a5e0340e82e1fb2b48a5dedd88cef1fb8b410ce", + "reference": "8a5e0340e82e1fb2b48a5dedd88cef1fb8b410ce", "shasum": "" }, "require": { @@ -5994,20 +6829,24 @@ ], "description": "Executes arbitrary PHP code or files.", "homepage": "https://github.com/wp-cli/eval-command", - "time": "2019-04-20T18:22:05+00:00" + "support": { + "issues": "https://github.com/wp-cli/eval-command/issues", + "source": "https://github.com/wp-cli/eval-command/tree/v2.0.8" + }, + "time": "2020-12-07T19:30:26+00:00" }, { "name": "wp-cli/export-command", - "version": "v2.0.3", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/export-command.git", - "reference": "a31b1777a199a8437127ad3db1b6b92e9cb5cd9b" + "reference": "df2e1ff4fb7e969c54c57febccdc9d2de1e5f499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/export-command/zipball/a31b1777a199a8437127ad3db1b6b92e9cb5cd9b", - "reference": "a31b1777a199a8437127ad3db1b6b92e9cb5cd9b", + "url": "https://api.github.com/repos/wp-cli/export-command/zipball/df2e1ff4fb7e969c54c57febccdc9d2de1e5f499", + "reference": "df2e1ff4fb7e969c54c57febccdc9d2de1e5f499", "shasum": "" }, "require": { @@ -6052,30 +6891,34 @@ ], "description": "Exports WordPress content to a WXR file.", "homepage": "https://github.com/wp-cli/export-command", - "time": "2019-07-16T16:39:17+00:00" + "support": { + "issues": "https://github.com/wp-cli/export-command/issues", + "source": "https://github.com/wp-cli/export-command/tree/v2.0.6" + }, + "time": "2021-01-14T12:16:33+00:00" }, { "name": "wp-cli/extension-command", - "version": "v2.0.6", + "version": "v2.0.10", "source": { "type": "git", "url": "https://github.com/wp-cli/extension-command.git", - "reference": "7b4d4775a6a08493781b1ec67578f02a148ca23a" + "reference": "2bc83433707fa4d2127f2ff48357ccbbee39052f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/7b4d4775a6a08493781b1ec67578f02a148ca23a", - "reference": "7b4d4775a6a08493781b1ec67578f02a148ca23a", + "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/2bc83433707fa4d2127f2ff48357ccbbee39052f", + "reference": "2bc83433707fa4d2127f2ff48357ccbbee39052f", "shasum": "" }, "require": { - "composer/semver": "^1.4", + "composer/semver": "^1.4 || ^2.0", "wp-cli/wp-cli": "^2" }, "require-dev": { "wp-cli/entity-command": "^1.3 || ^2", "wp-cli/scaffold-command": "^1.2 || ^2", - "wp-cli/wp-cli-tests": "^2.1" + "wp-cli/wp-cli-tests": "^2.1.6" }, "type": "wp-cli-package", "extra": { @@ -6135,28 +6978,37 @@ "name": "Daniel Bachhuber", "email": "daniel@runcommand.io", "homepage": "https://runcommand.io" + }, + { + "name": "Alain Schlesser", + "email": "alain.schlesser@gmail.com", + "homepage": "https://www.alainschlesser.com" } ], "description": "Manages plugins and themes, including installs, activations, and updates.", "homepage": "https://github.com/wp-cli/extension-command", - "time": "2019-06-05T11:15:16+00:00" + "support": { + "issues": "https://github.com/wp-cli/extension-command/issues", + "source": "https://github.com/wp-cli/extension-command/tree/master" + }, + "time": "2020-07-05T08:07:53+00:00" }, { "name": "wp-cli/i18n-command", - "version": "v2.2.0", + "version": "v2.2.6", "source": { "type": "git", "url": "https://github.com/wp-cli/i18n-command.git", - "reference": "379d2b07e8555efb2a6ccd94ef3d75414aa03a88" + "reference": "a66da3f09f6a728832381012848c3074bf1635c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/379d2b07e8555efb2a6ccd94ef3d75414aa03a88", - "reference": "379d2b07e8555efb2a6ccd94ef3d75414aa03a88", + "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/a66da3f09f6a728832381012848c3074bf1635c8", + "reference": "a66da3f09f6a728832381012848c3074bf1635c8", "shasum": "" }, "require": { - "gettext/gettext": "^4.6.3", + "gettext/gettext": "^4.8", "mck89/peast": "^1.8", "wp-cli/wp-cli": "^2" }, @@ -6196,20 +7048,24 @@ ], "description": "Provides internationalization tools for WordPress projects.", "homepage": "https://github.com/wp-cli/i18n-command", - "time": "2019-08-13T16:32:54+00:00" + "support": { + "issues": "https://github.com/wp-cli/i18n-command/issues", + "source": "https://github.com/wp-cli/i18n-command/tree/v2.2.6" + }, + "time": "2020-12-07T19:28:27+00:00" }, { "name": "wp-cli/import-command", - "version": "v2.0.2", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/wp-cli/import-command.git", - "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8" + "reference": "c7438c1eeda5669531c52fc9223fcea5bda39cc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/import-command/zipball/e28a7f55138ceb53f2ff5926874d8e5582c87db8", - "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8", + "url": "https://api.github.com/repos/wp-cli/import-command/zipball/c7438c1eeda5669531c52fc9223fcea5bda39cc8", + "reference": "c7438c1eeda5669531c52fc9223fcea5bda39cc8", "shasum": "" }, "require": { @@ -6252,20 +7108,24 @@ ], "description": "Imports content from a given WXR file.", "homepage": "https://github.com/wp-cli/import-command", - "time": "2019-04-19T14:32:57+00:00" + "support": { + "issues": "https://github.com/wp-cli/import-command/issues", + "source": "https://github.com/wp-cli/import-command/tree/v2.0.4" + }, + "time": "2020-12-07T19:28:45+00:00" }, { "name": "wp-cli/language-command", - "version": "v2.0.4", + "version": "v2.0.8", "source": { "type": "git", "url": "https://github.com/wp-cli/language-command.git", - "reference": "12197674eab3e1263fcadc9670cb57e916615c6c" + "reference": "c4f3cddd816e26df2b0e7e7753d786b54a2c95c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/language-command/zipball/12197674eab3e1263fcadc9670cb57e916615c6c", - "reference": "12197674eab3e1263fcadc9670cb57e916615c6c", + "url": "https://api.github.com/repos/wp-cli/language-command/zipball/c4f3cddd816e26df2b0e7e7753d786b54a2c95c8", + "reference": "c4f3cddd816e26df2b0e7e7753d786b54a2c95c8", "shasum": "" }, "require": { @@ -6327,20 +7187,24 @@ ], "description": "Installs, activates, and manages language packs.", "homepage": "https://github.com/wp-cli/language-command", - "time": "2019-04-25T00:31:43+00:00" + "support": { + "issues": "https://github.com/wp-cli/language-command/issues", + "source": "https://github.com/wp-cli/language-command/tree/v2.0.8" + }, + "time": "2020-12-07T19:29:09+00:00" }, { "name": "wp-cli/maintenance-mode-command", - "version": "v2.0.1", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/wp-cli/maintenance-mode-command.git", - "reference": "db4671c14ea4c0c42f423a09cf8e9303778bb1a4" + "reference": "1f4f09ad15696f65e713c4c73008f6550318b3bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/maintenance-mode-command/zipball/db4671c14ea4c0c42f423a09cf8e9303778bb1a4", - "reference": "db4671c14ea4c0c42f423a09cf8e9303778bb1a4", + "url": "https://api.github.com/repos/wp-cli/maintenance-mode-command/zipball/1f4f09ad15696f65e713c4c73008f6550318b3bd", + "reference": "1f4f09ad15696f65e713c4c73008f6550318b3bd", "shasum": "" }, "require": { @@ -6384,20 +7248,24 @@ ], "description": "Activates, deactivates or checks the status of the maintenance mode of a site.", "homepage": "https://github.com/wp-cli/maintenance-mode-command", - "time": "2019-04-19T15:37:30+00:00" + "support": { + "issues": "https://github.com/wp-cli/maintenance-mode-command/issues", + "source": "https://github.com/wp-cli/maintenance-mode-command/tree/v2.0.4" + }, + "time": "2020-12-07T19:29:39+00:00" }, { "name": "wp-cli/media-command", - "version": "v2.0.5", + "version": "v2.0.9", "source": { "type": "git", "url": "https://github.com/wp-cli/media-command.git", - "reference": "98102a52d0102fbda6644f100cebbd96f0e9199a" + "reference": "830e72a2cbd3eeec95a97df2c1c17d925d86790d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/media-command/zipball/98102a52d0102fbda6644f100cebbd96f0e9199a", - "reference": "98102a52d0102fbda6644f100cebbd96f0e9199a", + "url": "https://api.github.com/repos/wp-cli/media-command/zipball/830e72a2cbd3eeec95a97df2c1c17d925d86790d", + "reference": "830e72a2cbd3eeec95a97df2c1c17d925d86790d", "shasum": "" }, "require": { @@ -6442,7 +7310,11 @@ ], "description": "Imports files as attachments, regenerates thumbnails, or lists registered image sizes.", "homepage": "https://github.com/wp-cli/media-command", - "time": "2019-09-25T14:13:32+00:00" + "support": { + "issues": "https://github.com/wp-cli/media-command/issues", + "source": "https://github.com/wp-cli/media-command/tree/master" + }, + "time": "2020-06-11T00:17:12+00:00" }, { "name": "wp-cli/mustangostang-spyc", @@ -6490,20 +7362,23 @@ ], "description": "A simple YAML loader/dumper class for PHP (WP-CLI fork)", "homepage": "https://github.com/mustangostang/spyc/", + "support": { + "source": "https://github.com/wp-cli/spyc/tree/autoload" + }, "time": "2017-04-25T11:26:20+00:00" }, { "name": "wp-cli/package-command", - "version": "v2.0.5", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/package-command.git", - "reference": "52fea16f3cec0577b9c417a19ebc0f328c38d853" + "reference": "92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/package-command/zipball/52fea16f3cec0577b9c417a19ebc0f328c38d853", - "reference": "52fea16f3cec0577b9c417a19ebc0f328c38d853", + "url": "https://api.github.com/repos/wp-cli/package-command/zipball/92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a", + "reference": "92a0d7f2f4b54ad2aeff2292baaa96ba8f93f37a", "shasum": "" }, "require": { @@ -6551,20 +7426,24 @@ ], "description": "Lists, installs, and removes WP-CLI packages.", "homepage": "https://github.com/wp-cli/package-command", - "time": "2019-04-24T09:34:35+00:00" + "support": { + "issues": "https://github.com/wp-cli/package-command/issues", + "source": "https://github.com/wp-cli/package-command/tree/master" + }, + "time": "2020-01-28T12:55:09+00:00" }, { "name": "wp-cli/php-cli-tools", - "version": "v0.11.11", + "version": "v0.11.12", "source": { "type": "git", "url": "https://github.com/wp-cli/php-cli-tools.git", - "reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f" + "reference": "e472e08489f7504d9e8c5c5a057e1419cd1b2b3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f", - "reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f", + "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/e472e08489f7504d9e8c5c5a057e1419cd1b2b3e", + "reference": "e472e08489f7504d9e8c5c5a057e1419cd1b2b3e", "shasum": "" }, "require": { @@ -6584,15 +7463,15 @@ "MIT" ], "authors": [ - { - "name": "James Logsdon", - "email": "jlogsdon@php.net", - "role": "Developer" - }, { "name": "Daniel Bachhuber", "email": "daniel@handbuilt.co", "role": "Maintainer" + }, + { + "name": "James Logsdon", + "email": "jlogsdon@php.net", + "role": "Developer" } ], "description": "Console utilities for PHP", @@ -6601,20 +7480,24 @@ "cli", "console" ], - "time": "2018-09-04T13:28:00+00:00" + "support": { + "issues": "https://github.com/wp-cli/php-cli-tools/issues", + "source": "https://github.com/wp-cli/php-cli-tools/tree/v0.11.12" + }, + "time": "2021-03-03T12:43:49+00:00" }, { "name": "wp-cli/rewrite-command", - "version": "v2.0.3", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/rewrite-command.git", - "reference": "eb8cbcf9c1c874a09b50257a0e588c31f29df597" + "reference": "6b2c7d186b375976869b8d74f1a3bac1f98aca57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/eb8cbcf9c1c874a09b50257a0e588c31f29df597", - "reference": "eb8cbcf9c1c874a09b50257a0e588c31f29df597", + "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/6b2c7d186b375976869b8d74f1a3bac1f98aca57", + "reference": "6b2c7d186b375976869b8d74f1a3bac1f98aca57", "shasum": "" }, "require": { @@ -6658,20 +7541,24 @@ ], "description": "Lists or flushes the site's rewrite rules, updates the permalink structure.", "homepage": "https://github.com/wp-cli/rewrite-command", - "time": "2019-04-25T00:32:04+00:00" + "support": { + "issues": "https://github.com/wp-cli/rewrite-command/issues", + "source": "https://github.com/wp-cli/rewrite-command/tree/v2.0.6" + }, + "time": "2020-12-07T19:27:22+00:00" }, { "name": "wp-cli/role-command", - "version": "v2.0.2", + "version": "v2.0.5", "source": { "type": "git", "url": "https://github.com/wp-cli/role-command.git", - "reference": "c6071d06d64c165588734b0d1c96f5c3dfa75736" + "reference": "50e563a81f7462c4c5374abf6a1c0e88dfb01c9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/role-command/zipball/c6071d06d64c165588734b0d1c96f5c3dfa75736", - "reference": "c6071d06d64c165588734b0d1c96f5c3dfa75736", + "url": "https://api.github.com/repos/wp-cli/role-command/zipball/50e563a81f7462c4c5374abf6a1c0e88dfb01c9c", + "reference": "50e563a81f7462c4c5374abf6a1c0e88dfb01c9c", "shasum": "" }, "require": { @@ -6720,23 +7607,28 @@ ], "description": "Adds, removes, lists, and resets roles and capabilities.", "homepage": "https://github.com/wp-cli/role-command", - "time": "2019-04-25T00:32:18+00:00" + "support": { + "issues": "https://github.com/wp-cli/role-command/issues", + "source": "https://github.com/wp-cli/role-command/tree/v2.0.5" + }, + "time": "2020-12-07T19:27:04+00:00" }, { "name": "wp-cli/scaffold-command", - "version": "v2.0.6", + "version": "v2.0.8", "source": { "type": "git", "url": "https://github.com/wp-cli/scaffold-command.git", - "reference": "9c6450e9ccf2d032913fced69f3188bc8ec4e3e6" + "reference": "4814acbdf3d7af499530cc1ae1e82f3ed9f12674" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/9c6450e9ccf2d032913fced69f3188bc8ec4e3e6", - "reference": "9c6450e9ccf2d032913fced69f3188bc8ec4e3e6", + "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/4814acbdf3d7af499530cc1ae1e82f3ed9f12674", + "reference": "4814acbdf3d7af499530cc1ae1e82f3ed9f12674", "shasum": "" }, "require": { + "php": "^5.4 || ^7.0", "wp-cli/wp-cli": "^2" }, "require-dev": { @@ -6782,20 +7674,24 @@ ], "description": "Generates code for post types, taxonomies, blocks, plugins, child themes, etc.", "homepage": "https://github.com/wp-cli/scaffold-command", - "time": "2019-04-25T00:44:34+00:00" + "support": { + "issues": "https://github.com/wp-cli/scaffold-command/issues", + "source": "https://github.com/wp-cli/scaffold-command/tree/master" + }, + "time": "2019-11-25T13:26:31+00:00" }, { "name": "wp-cli/search-replace-command", - "version": "v2.0.4", + "version": "v2.0.7", "source": { "type": "git", "url": "https://github.com/wp-cli/search-replace-command.git", - "reference": "2872f04c3600fbbaa5227f2ff54b32379044a35b" + "reference": "1104e4fb7dd83e85dedb8a98ed8f0ac30639694b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/2872f04c3600fbbaa5227f2ff54b32379044a35b", - "reference": "2872f04c3600fbbaa5227f2ff54b32379044a35b", + "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/1104e4fb7dd83e85dedb8a98ed8f0ac30639694b", + "reference": "1104e4fb7dd83e85dedb8a98ed8f0ac30639694b", "shasum": "" }, "require": { @@ -6838,20 +7734,24 @@ ], "description": "Searches/replaces strings in the database.", "homepage": "https://github.com/wp-cli/search-replace-command", - "time": "2019-07-24T21:42:27+00:00" + "support": { + "issues": "https://github.com/wp-cli/search-replace-command/issues", + "source": "https://github.com/wp-cli/search-replace-command/tree/v2.0.7" + }, + "time": "2020-06-10T13:24:39+00:00" }, { "name": "wp-cli/server-command", - "version": "v2.0.3", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/server-command.git", - "reference": "fa5487926906903d0a466c2c672057bdf79b4b10" + "reference": "be65465bda181209c95011f15d4575809d039ea9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/server-command/zipball/fa5487926906903d0a466c2c672057bdf79b4b10", - "reference": "fa5487926906903d0a466c2c672057bdf79b4b10", + "url": "https://api.github.com/repos/wp-cli/server-command/zipball/be65465bda181209c95011f15d4575809d039ea9", + "reference": "be65465bda181209c95011f15d4575809d039ea9", "shasum": "" }, "require": { @@ -6891,20 +7791,24 @@ ], "description": "Launches PHP's built-in web server for a specific WordPress installation.", "homepage": "https://github.com/wp-cli/server-command", - "time": "2019-07-16T15:10:07+00:00" + "support": { + "issues": "https://github.com/wp-cli/server-command/issues", + "source": "https://github.com/wp-cli/server-command/tree/v2.0.6" + }, + "time": "2020-12-07T19:26:47+00:00" }, { "name": "wp-cli/shell-command", - "version": "v2.0.3", + "version": "v2.0.7", "source": { "type": "git", "url": "https://github.com/wp-cli/shell-command.git", - "reference": "56f0ff1bc36f6da2fb73cb932214adcde58270d8" + "reference": "76088e1ff69855d89454aed886d27c3f62b12c2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/56f0ff1bc36f6da2fb73cb932214adcde58270d8", - "reference": "56f0ff1bc36f6da2fb73cb932214adcde58270d8", + "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/76088e1ff69855d89454aed886d27c3f62b12c2c", + "reference": "76088e1ff69855d89454aed886d27c3f62b12c2c", "shasum": "" }, "require": { @@ -6945,20 +7849,24 @@ ], "description": "Opens an interactive PHP console for running and testing PHP code.", "homepage": "https://github.com/wp-cli/shell-command", - "time": "2019-04-22T13:16:49+00:00" + "support": { + "issues": "https://github.com/wp-cli/shell-command/issues", + "source": "https://github.com/wp-cli/shell-command/tree/v2.0.7" + }, + "time": "2020-12-07T19:26:30+00:00" }, { "name": "wp-cli/super-admin-command", - "version": "v2.0.2", + "version": "v2.0.5", "source": { "type": "git", "url": "https://github.com/wp-cli/super-admin-command.git", - "reference": "bd1543c9a3360d0e21d7e00e1c597964bd805d7c" + "reference": "23b9a4e6f27d5effe5cfd67db2329e0d58dbb53f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/bd1543c9a3360d0e21d7e00e1c597964bd805d7c", - "reference": "bd1543c9a3360d0e21d7e00e1c597964bd805d7c", + "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/23b9a4e6f27d5effe5cfd67db2329e0d58dbb53f", + "reference": "23b9a4e6f27d5effe5cfd67db2329e0d58dbb53f", "shasum": "" }, "require": { @@ -7002,24 +7910,28 @@ ], "description": "Lists, adds, or removes super admin users on a multisite installation.", "homepage": "https://github.com/wp-cli/super-admin-command", - "time": "2019-04-20T20:47:36+00:00" + "support": { + "issues": "https://github.com/wp-cli/super-admin-command/issues", + "source": "https://github.com/wp-cli/super-admin-command/tree/v2.0.5" + }, + "time": "2020-12-07T19:26:13+00:00" }, { "name": "wp-cli/widget-command", - "version": "v2.0.2", + "version": "v2.1.2", "source": { "type": "git", "url": "https://github.com/wp-cli/widget-command.git", - "reference": "58a1b2d2221cee852eb8a589535aaadb1217bb74" + "reference": "0c73470adbc73b45f4d371e4869672eacca104b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/58a1b2d2221cee852eb8a589535aaadb1217bb74", - "reference": "58a1b2d2221cee852eb8a589535aaadb1217bb74", + "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/0c73470adbc73b45f4d371e4869672eacca104b3", + "reference": "0c73470adbc73b45f4d371e4869672eacca104b3", "shasum": "" }, "require": { - "wp-cli/wp-cli": "^2" + "wp-cli/wp-cli": "^2.4" }, "require-dev": { "wp-cli/extension-command": "^1.2 || ^2", @@ -7065,25 +7977,29 @@ ], "description": "Adds, moves, and removes widgets; lists sidebars.", "homepage": "https://github.com/wp-cli/widget-command", - "time": "2019-04-25T00:25:21+00:00" + "support": { + "issues": "https://github.com/wp-cli/widget-command/issues", + "source": "https://github.com/wp-cli/widget-command/tree/v2.1.2" + }, + "time": "2020-12-07T19:25:02+00:00" }, { "name": "wp-cli/wp-cli", - "version": "v2.3.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/wp-cli/wp-cli.git", - "reference": "538d9be5ad490bd07b946dcd3b52b4d1c34dc193" + "reference": "ceb18598e79befa9b2a37a51efbb34910628988b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/538d9be5ad490bd07b946dcd3b52b4d1c34dc193", - "reference": "538d9be5ad490bd07b946dcd3b52b4d1c34dc193", + "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/ceb18598e79befa9b2a37a51efbb34910628988b", + "reference": "ceb18598e79befa9b2a37a51efbb34910628988b", "shasum": "" }, "require": { "ext-curl": "*", - "mustache/mustache": "~2.4", + "mustache/mustache": "~2.13", "php": "^5.4 || ^7.0", "rmccue/requests": "~1.6", "symfony/finder": ">2.7", @@ -7109,7 +8025,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "2.4.x-dev" } }, "autoload": { @@ -7127,23 +8043,29 @@ "cli", "wordpress" ], - "time": "2019-08-13T23:12:27+00:00" + "support": { + "docs": "https://make.wordpress.org/cli/handbook/", + "issues": "https://github.com/wp-cli/wp-cli/issues", + "source": "https://github.com/wp-cli/wp-cli" + }, + "time": "2020-02-18T08:15:37+00:00" }, { "name": "wp-cli/wp-cli-bundle", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/wp-cli/wp-cli-bundle.git", - "reference": "808f58066ee7d1b750d7e2ddbad877e1c118cd8a" + "reference": "713bc75b2f88550920dedc4f2ad3e1daf9f76326" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/wp-cli-bundle/zipball/808f58066ee7d1b750d7e2ddbad877e1c118cd8a", - "reference": "808f58066ee7d1b750d7e2ddbad877e1c118cd8a", + "url": "https://api.github.com/repos/wp-cli/wp-cli-bundle/zipball/713bc75b2f88550920dedc4f2ad3e1daf9f76326", + "reference": "713bc75b2f88550920dedc4f2ad3e1daf9f76326", "shasum": "" }, "require": { + "cweagans/composer-patches": "^1.6", "php": ">=5.4", "wp-cli/cache-command": "^2", "wp-cli/checksum-command": "^2", @@ -7170,7 +8092,7 @@ "wp-cli/shell-command": "^2", "wp-cli/super-admin-command": "^2", "wp-cli/widget-command": "^2", - "wp-cli/wp-cli": "^2.3.0" + "wp-cli/wp-cli": "^2.4" }, "require-dev": { "roave/security-advisories": "dev-master", @@ -7183,7 +8105,8 @@ "extra": { "branch-alias": { "dev-master": "2.1.x-dev" - } + }, + "enable-patching": true }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7195,28 +8118,33 @@ "cli", "wordpress" ], - "time": "2019-08-14T00:12:46+00:00" + "support": { + "docs": "https://make.wordpress.org/cli/handbook/", + "issues": "https://github.com/wp-cli/wp-cli-bundle/issues", + "source": "https://github.com/wp-cli/wp-cli-bundle" + }, + "time": "2019-11-12T17:43:58+00:00" }, { "name": "wp-cli/wp-config-transformer", - "version": "v1.2.6", + "version": "v1.2.8", "source": { "type": "git", "url": "https://github.com/wp-cli/wp-config-transformer.git", - "reference": "1ca98343443a8e4585865db5f50e8e6121fee70b" + "reference": "0bb2b9162c38ca72370380aea11dc06e431e13a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/wp-config-transformer/zipball/1ca98343443a8e4585865db5f50e8e6121fee70b", - "reference": "1ca98343443a8e4585865db5f50e8e6121fee70b", + "url": "https://api.github.com/repos/wp-cli/wp-config-transformer/zipball/0bb2b9162c38ca72370380aea11dc06e431e13a5", + "reference": "0bb2b9162c38ca72370380aea11dc06e431e13a5", "shasum": "" }, "require": { "php": ">=5.3.29" }, "require-dev": { - "composer/composer": "^1.5.6", - "phpunit/phpunit": "^6.5.5", + "composer/composer": ">=1.5.6 <1.7.0 || ^1.7.1 || ^2.0.0", + "phpunit/phpunit": "^6.5.5 || ^7.0.0", "wp-coding-standards/wpcs": "^0.14.0 || ^1.0.0 || ^2.0.0" }, "type": "library", @@ -7236,7 +8164,11 @@ } ], "description": "Programmatically edit a wp-config.php file.", - "time": "2019-07-23T17:24:43+00:00" + "support": { + "issues": "https://github.com/wp-cli/wp-config-transformer/issues", + "source": "https://github.com/wp-cli/wp-config-transformer/tree/v1.2.8" + }, + "time": "2020-11-12T08:08:10+00:00" }, { "name": "wp-coding-standards/wpcs", @@ -7282,24 +8214,29 @@ "standards", "wordpress" ], + "support": { + "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues", + "source": "https://github.com/WordPress/WordPress-Coding-Standards", + "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki" + }, "time": "2020-05-13T23:57:56+00:00" }, { "name": "zordius/lightncandy", - "version": "v1.2.4", + "version": "v1.2.5", "source": { "type": "git", "url": "https://github.com/zordius/lightncandy.git", - "reference": "dfdb910ae7b59e274f1ff97d29b724871f01b4cc" + "reference": "37aa381e0f27d411a630062070c7a5a2174c62e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zordius/lightncandy/zipball/dfdb910ae7b59e274f1ff97d29b724871f01b4cc", - "reference": "dfdb910ae7b59e274f1ff97d29b724871f01b4cc", + "url": "https://api.github.com/repos/zordius/lightncandy/zipball/37aa381e0f27d411a630062070c7a5a2174c62e7", + "reference": "37aa381e0f27d411a630062070c7a5a2174c62e7", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=7.1.0" }, "require-dev": { "phpunit/phpunit": "^7" @@ -7334,7 +8271,11 @@ "php", "template" ], - "time": "2019-06-09T04:10:55+00:00" + "support": { + "issues": "https://github.com/zordius/lightncandy/issues", + "source": "https://github.com/zordius/lightncandy/tree/master" + }, + "time": "2020-03-08T06:00:24+00:00" } ], "aliases": [], @@ -7343,5 +8284,6 @@ "prefer-stable": false, "prefer-lowest": false, "platform": [], - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "2.0.0" } diff --git a/php/classes/controllers/class-admin-controller.php b/php/classes/controllers/class-admin-controller.php index 61e30a57..46c86ba1 100644 --- a/php/classes/controllers/class-admin-controller.php +++ b/php/classes/controllers/class-admin-controller.php @@ -24,27 +24,35 @@ class Admin_Controller extends Controller { /** - * @var object instance of Ajax_Handler + * @var Ajax_Handler */ protected $ajax_handler; /** - * @var object instance of Upgrade_Handler + * @var Upgrade_Handler */ protected $upgrade_handler; /** - * @var object instance of the Admin_Notices_Handler + * @var Admin_Notifications_Handler */ protected $admin_notices_handler; /** - * @var object instance of Feed_Controller + * @var Feed_Controller */ protected $feed_controller; + /** + * @var Log_Helper + * */ protected $logger; + /** + * @var Cron_Controller + */ + protected $cron_controller; + /** * Admin_Controller constructor. * @@ -69,6 +77,8 @@ public function bootstrap() { $this->logger = new Log_Helper(); + $this->cron_controller = new Cron_Controller(); + if ( is_admin() ) { $this->admin_notices_handler = new Admin_Notifications_Handler( $this->token ); } @@ -1632,6 +1642,7 @@ public function update_podcast_details( $id, $post ) { } add_action( 'admin_notices', array( $this->admin_notices_handler, 'castos_api_episode_success' ) ); } else { + update_post_meta( $id, 'podmotor_schedule_upload', true ); add_action( 'admin_notices', array( $this->admin_notices_handler, 'castos_api_error' ) ); } diff --git a/php/classes/controllers/class-cron-controller.php b/php/classes/controllers/class-cron-controller.php new file mode 100644 index 00000000..7cb76a32 --- /dev/null +++ b/php/classes/controllers/class-cron-controller.php @@ -0,0 +1,74 @@ +get_scheduled_episodes() as $episode ) { + $response = $castos_handler->upload_podcast_to_podmotor( $episode ); + + if ( 'success' === $response['status'] ) { + delete_post_meta( $episode->ID, 'podmotor_schedule_upload' ); + $uploaded++; + } + } + + if ( $uploaded ) { + $logger = new Log_Helper(); + $logger->log( 'Cron: uploaded scheduled episodes', $uploaded ); + } + + return $uploaded; + } + + + /** + * @return array + */ + protected function get_scheduled_episodes() { + $args = array( + 'post_type' => ssp_post_types(), + 'orderby' => 'ID', + 'order' => 'ASC', + 'meta_query' => array( + array( + 'key' => 'podmotor_schedule_upload', + 'value' => 1, + ), + ), + ); + + $query = new \WP_Query( $args ); + + return $query->get_posts(); + } +} From ee02928520c3fd6e8dc0be9f5556d1ee5b096c31 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Thu, 25 Mar 2021 13:07:47 +0200 Subject: [PATCH 03/21] Fixed wrong success return for upload function #557 --- php/classes/handlers/class-castos-handler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php/classes/handlers/class-castos-handler.php b/php/classes/handlers/class-castos-handler.php index f52af977..11cdd256 100644 --- a/php/classes/handlers/class-castos-handler.php +++ b/php/classes/handlers/class-castos-handler.php @@ -292,7 +292,7 @@ public function upload_podcast_to_podmotor( $post ) { $this->logger->log( 'Upload Podcast Response', $response_object ); - if ( ! isset( $response_object->status ) || ! $response_object->status ) { + if ( ! isset( $response_object->status ) || ! $response_object->status || empty( $response_object->success ) ) { $this->logger->log( 'An error occurred uploading the episode data to Castos', $response_object ); $this->update_response( 'message', 'An error occurred uploading the episode data to Castos' ); From 6f88785fc465acb191ed83b0f1c7606e9597805c Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Thu, 25 Mar 2021 14:45:16 +0200 Subject: [PATCH 04/21] Delayed episode upload improvements #557 --- php/classes/controllers/class-admin-controller.php | 4 ++++ php/classes/controllers/class-cron-controller.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/php/classes/controllers/class-admin-controller.php b/php/classes/controllers/class-admin-controller.php index 46c86ba1..22148020 100644 --- a/php/classes/controllers/class-admin-controller.php +++ b/php/classes/controllers/class-admin-controller.php @@ -1641,7 +1641,11 @@ public function update_podcast_details( $id, $post ) { update_post_meta( $id, 'podmotor_episode_id', $podmotor_episode_id ); } add_action( 'admin_notices', array( $this->admin_notices_handler, 'castos_api_episode_success' ) ); + + // if uploading was scheduled before, lets unschedule it + delete_post_meta( $id, 'podmotor_schedule_upload' ); } else { + // schedule uploading with a cronjob update_post_meta( $id, 'podmotor_schedule_upload', true ); add_action( 'admin_notices', array( $this->admin_notices_handler, 'castos_api_error' ) ); } diff --git a/php/classes/controllers/class-cron-controller.php b/php/classes/controllers/class-cron-controller.php index 7cb76a32..89767f08 100644 --- a/php/classes/controllers/class-cron-controller.php +++ b/php/classes/controllers/class-cron-controller.php @@ -18,7 +18,7 @@ class Cron_Controller { public function __construct() { add_action( 'ssp_cron_hook', array( $this, 'upload_scheduled_episodes' ) ); - add_action( 'admin_init', [ self::class, 'schedule_events' ] ); + add_action( 'admin_init', array( $this, 'schedule_events' ) ); } public function schedule_events() { From 176efd277b34a011f25012899e30366e0d2a1462 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Fri, 26 Mar 2021 14:17:46 +0200 Subject: [PATCH 05/21] Removed double post update trigger #557 --- .../controllers/class-admin-controller.php | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/php/classes/controllers/class-admin-controller.php b/php/classes/controllers/class-admin-controller.php index 22148020..17a10fa2 100644 --- a/php/classes/controllers/class-admin-controller.php +++ b/php/classes/controllers/class-admin-controller.php @@ -127,8 +127,7 @@ public function bootstrap() { add_action( 'save_post', array( $this, 'meta_box_save' ), 10, 1 ); // Update podcast details to Castos when a post is updated or saved - add_action( 'post_updated', array( $this, 'update_podcast_details' ), 10, 2 ); - add_action( 'save_post', array( $this, 'update_podcast_details' ), 10, 2 ); + add_action( 'save_post', array( $this, 'update_podcast_details' ), 20, 2 ); // Episode edit screen. add_filter( 'enter_title_here', array( $this, 'enter_title_here' ) ); @@ -1619,23 +1618,10 @@ public function update_podcast_details( $id, $post ) { return; } - /** - * Don't trigger this if we've just updated the post - * This is because both actions we're hooking into get triggered in a post update - * So this is to prevent this method from being called twice during a post update. - */ - $cache_key = 'ssp_podcast_updated'; - $podcast_saved = get_transient( $cache_key ); - if ( false !== $podcast_saved ) { - delete_transient( $cache_key ); - return; - } - $castos_handler = new Castos_Handler(); $response = $castos_handler->upload_podcast_to_podmotor( $post ); if ( 'success' === $response['status'] ) { - set_transient( $cache_key, true, 60 ); $podmotor_episode_id = $response['episode_id']; if ( $podmotor_episode_id ) { update_post_meta( $id, 'podmotor_episode_id', $podmotor_episode_id ); From 72adda63604bc8f8c1a9df92532219045767213b Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Mon, 29 Mar 2021 12:54:34 +0300 Subject: [PATCH 06/21] Add helper text to Series area #647 --- assets/css/admin.css | 6 +++++- .../handlers/class-admin-notifications-handler.php | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/assets/css/admin.css b/assets/css/admin.css index 31673c66..35168666 100644 --- a/assets/css/admin.css +++ b/assets/css/admin.css @@ -80,4 +80,8 @@ textarea#episode_embed_code { #series_upload_image_button .dashicons { vertical-align: middle; -} \ No newline at end of file +} + +#col-container .series-notice { + display: none; +} diff --git a/php/classes/handlers/class-admin-notifications-handler.php b/php/classes/handlers/class-admin-notifications-handler.php index e57951fd..c827331b 100644 --- a/php/classes/handlers/class-admin-notifications-handler.php +++ b/php/classes/handlers/class-admin-notifications-handler.php @@ -55,8 +55,22 @@ public function bootstrap() { // Trigger the Elementor Templates message add_action( 'admin_init', array( $this, 'show_elementor_templates_available' ) ); + // Trigger the Elementor Templates message + add_action( 'series_pre_add_form', array( $this, 'show_series_helper_text' ) ); + } + + /** + * Admin notice for the add series page + */ + public function show_series_helper_text(){ + $text = ' + A new Series will create an entirely new Podcast Feed.
+ Only do this if you want to have multiple shows within your WordPress site.
+ If you just want to organize episodes within the same feed we suggest using Tags.'; + echo sprintf('

%s

', $text); } + /** * Admin notice if an episode sync is successful */ From ea4ce038e68bbbf256eb10fe095e65c65d10e9c5 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Mon, 29 Mar 2021 13:38:58 +0300 Subject: [PATCH 07/21] Check cover image change #636 --- assets/js/admin.js | 2 +- php/classes/controllers/class-admin-controller.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/admin.js b/assets/js/admin.js index dd5b9843..64e88c7b 100644 --- a/assets/js/admin.js +++ b/assets/js/admin.js @@ -182,7 +182,7 @@ jQuery(document).ready(function($) { $( '#cover_image_button' ).click(function() { var validateImageSize = function( attachment ) { - return attachment.width === attachment.height && attachment.width >= 300; + return attachment.width === attachment.height && attachment.width >= 1400 && attachment.width <= 3000; } var description = $( this ).siblings( '.description' ); $.fn.ssp_upload_media_file( $(this), true, validateImageSize ); diff --git a/php/classes/controllers/class-admin-controller.php b/php/classes/controllers/class-admin-controller.php index 17a10fa2..928aa62a 100644 --- a/php/classes/controllers/class-admin-controller.php +++ b/php/classes/controllers/class-admin-controller.php @@ -1023,7 +1023,7 @@ public function custom_fields() { $fields['cover_image'] = array( 'name' => __( 'Episode Image:', 'seriously-simple-podcasting' ), - 'description' => __( 'Your podcast cover image - must be square (minimum size of 300x300 px).', 'seriously-simple-podcasting' ), + 'description' => __( 'The podcast cover image should be between 1400x1400px and 3000x3000px in size and either .jpg or .png file format', 'seriously-simple-podcasting' ), 'type' => 'image', 'default' => '', 'section' => 'info', From 0c877b95c6e737a280667bfe1d2f9df61d2ea754 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Mon, 29 Mar 2021 15:19:40 +0300 Subject: [PATCH 08/21] Feed refactoring #649 --- .../controllers/class-feed-controller.php | 294 +++++++++- templates/feed-podcast.php | 521 +----------------- templates/feed/feed-item.php | 232 ++++++++ 3 files changed, 527 insertions(+), 520 deletions(-) create mode 100644 templates/feed/feed-item.php diff --git a/php/classes/controllers/class-feed-controller.php b/php/classes/controllers/class-feed-controller.php index 245dffab..9b785f53 100644 --- a/php/classes/controllers/class-feed-controller.php +++ b/php/classes/controllers/class-feed-controller.php @@ -64,7 +64,6 @@ public function redirect_old_feed() { /** * Render the podcast feed - * // @todo move all logic from feed template file to this method, at the very least * @return void */ public function render_podcast_feed() { @@ -88,6 +87,7 @@ public function render_podcast_feed() { /** * Loads the feed template file + * @todo: Further refactoring - split to different functions, use renderer */ public function load_feed_template() { status_header( 200 ); @@ -97,6 +97,298 @@ public function load_feed_template() { // Any functions hooked in here must NOT output any data or else feed will break do_action( 'ssp_before_feed' ); + // @todo move all of this logic into the Feed_Controller render_podcast_feed method, at the very least + global $ss_podcasting, $wp_query; + + // @todo turn this off and fix any errors + // Hide all errors + error_reporting( 0 ); + + // Allow feed access by default + $give_access = true; + + // Check if feed is password protected + $protection = get_option( 'ss_podcasting_protect', '' ); + + // Handle feed protection if required + if ( $protection && 'on' === $protection ) { + + $give_access = false; + + // Request password and give access if correct + if ( ! isset( $_SERVER['PHP_AUTH_USER'] ) && ! isset( $_SERVER['PHP_AUTH_PW'] ) ) { + $give_access = false; + } else { + $username = get_option( 'ss_podcasting_protection_username' ); + $password = get_option( 'ss_podcasting_protection_password' ); + + if ( $_SERVER['PHP_AUTH_USER'] === $username ) { + if ( md5( $_SERVER['PHP_AUTH_PW'] ) === $password ) { + $give_access = true; + } + } + } + } + + // Get specified podcast series + $podcast_series = ''; + if ( isset( $_GET['podcast_series'] ) && $_GET['podcast_series'] ) { + $podcast_series = esc_attr( $_GET['podcast_series'] ); + } elseif ( isset( $wp_query->query_vars['podcast_series'] ) && $wp_query->query_vars['podcast_series'] ) { + $podcast_series = esc_attr( $wp_query->query_vars['podcast_series'] ); + } + + // Get series ID + $series_id = 0; + if ( $podcast_series ) { + $series = get_term_by( 'slug', $podcast_series, 'series' ); + $series_id = $series->term_id; + } + + // Allow dynamic access control + $give_access = apply_filters( 'ssp_feed_access', $give_access, $series_id ); + + // Send 401 status and display no access message if access has been denied + if ( ! $give_access ) { + + // Set default message + $message = __( 'You are not permitted to view this podcast feed.', 'seriously-simple-podcasting' ); + + // Check message option from plugin settings + $message_option = get_option( 'ss_podcasting_protection_no_access_message' ); + if ( $message_option ) { + $message = $message_option; + } + + // Allow message to be filtered dynamically + $message = apply_filters( 'ssp_feed_no_access_message', $message ); + + $no_access_message = '
' . $message . '
'; + + header( 'WWW-Authenticate: Basic realm="Podcast Feed"' ); + header( 'HTTP/1.0 401 Unauthorized' ); + + die( $no_access_message ); + } + + // If redirect is on, get new feed URL and redirect if setting was changed more than 48 hours ago + $redirect = get_option( 'ss_podcasting_redirect_feed' ); + $new_feed_url = false; + if ( $redirect && 'on' === $redirect ) { + + $new_feed_url = get_option( 'ss_podcasting_new_feed_url' ); + $update_date = get_option( 'ss_podcasting_redirect_feed_date' ); + + if ( $new_feed_url && $update_date ) { + $redirect_date = strtotime( '+2 days', $update_date ); + $current_date = time(); + + // Redirect with 301 if it is more than 2 days since redirect was saved + if ( $current_date > $redirect_date ) { + header( 'HTTP/1.1 301 Moved Permanently' ); + header( 'Location: ' . $new_feed_url ); + exit; + } + } + } + + // if this is the default feed, check for series for which posts should be excluded + $exclude_series = array(); + if ( empty( $series_id ) ) { + $series = get_terms( + array( + 'taxonomy' => 'series', + 'hide_empty' => false, + ) + ); + foreach ( $series as $feed ) { + $option_name = 'ss_podcasting_exclude_feed_' . $feed->term_id; + $exclude_feed_option = get_option( $option_name, 'off' ); + if ( 'on' === $exclude_feed_option ) { + $exclude_series[] = $feed->slug; + } + } + } + + // If this is a series specific feed, then check if we need to redirect + if ( $series_id ) { + $redirect = get_option( 'ss_podcasting_redirect_feed_' . $series_id ); + $new_feed_url = false; + if ( $redirect && 'on' === $redirect ) { + $new_feed_url = get_option( 'ss_podcasting_new_feed_url_' . $series_id ); + if ( $new_feed_url ) { + header( 'HTTP/1.1 301 Moved Permanently' ); + header( 'Location: ' . $new_feed_url ); + exit; + } + } + } + + // Podcast title + $title = get_option( 'ss_podcasting_data_title', get_bloginfo( 'name' ) ); + if ( $podcast_series ) { + $series_title = get_option( 'ss_podcasting_data_title_' . $series_id, '' ); + if ( $series_title ) { + $title = $series_title; + } + } + $title = apply_filters( 'ssp_feed_title', $title, $series_id ); + + // Podcast description + $description = get_option( 'ss_podcasting_data_description', get_bloginfo( 'description' ) ); + if ( $podcast_series ) { + $series_description = get_option( 'ss_podcasting_data_description_' . $series_id, '' ); + if ( $series_description ) { + $description = $series_description; + } + } + $podcast_description = mb_substr( strip_tags( $description ), 0, 3999 ); + $podcast_description = apply_filters( 'ssp_feed_description', $podcast_description, $series_id ); + + // Podcast language + $language = get_option( 'ss_podcasting_data_language', get_bloginfo( 'language' ) ); + if ( $podcast_series ) { + $series_language = get_option( 'ss_podcasting_data_language_' . $series_id, '' ); + if ( $series_language ) { + $language = $series_language; + } + } + $language = apply_filters( 'ssp_feed_language', $language, $series_id ); + + // Podcast copyright string + $copyright = get_option( 'ss_podcasting_data_copyright', '© ' . date( 'Y' ) . ' ' . get_bloginfo( 'name' ) ); + if ( $podcast_series ) { + $series_copyright = get_option( 'ss_podcasting_data_copyright_' . $series_id, '' ); + if ( $series_copyright ) { + $copyright = $series_copyright; + } + } + $copyright = apply_filters( 'ssp_feed_copyright', $copyright, $series_id ); + + // Podcast subtitle + $subtitle = get_option( 'ss_podcasting_data_subtitle', get_bloginfo( 'description' ) ); + if ( $podcast_series ) { + $series_subtitle = get_option( 'ss_podcasting_data_subtitle_' . $series_id, '' ); + if ( $series_subtitle ) { + $subtitle = $series_subtitle; + } + } + $subtitle = apply_filters( 'ssp_feed_subtitle', $subtitle, $series_id ); + + // Podcast author + $author = get_option( 'ss_podcasting_data_author', get_bloginfo( 'name' ) ); + if ( $podcast_series ) { + $series_author = get_option( 'ss_podcasting_data_author_' . $series_id, '' ); + if ( $series_author ) { + $author = $series_author; + } + } + $author = apply_filters( 'ssp_feed_author', $author, $series_id ); + + // Podcast owner name + $owner_name = get_option( 'ss_podcasting_data_owner_name', get_bloginfo( 'name' ) ); + if ( $podcast_series ) { + $series_owner_name = get_option( 'ss_podcasting_data_owner_name_' . $series_id, '' ); + if ( $series_owner_name ) { + $owner_name = $series_owner_name; + } + } + $owner_name = apply_filters( 'ssp_feed_owner_name', $owner_name, $series_id ); + + // Podcast owner email address + $owner_email = get_option( 'ss_podcasting_data_owner_email', get_bloginfo( 'admin_email' ) ); + if ( $podcast_series ) { + $series_owner_email = get_option( 'ss_podcasting_data_owner_email_' . $series_id, '' ); + if ( $series_owner_email ) { + $owner_email = $series_owner_email; + } + } + $owner_email = apply_filters( 'ssp_feed_owner_email', $owner_email, $series_id ); + + // Podcast explicit setting + $explicit_option = get_option( 'ss_podcasting_explicit', '' ); + if ( $podcast_series ) { + $series_explicit_option = get_option( 'ss_podcasting_explicit_' . $series_id, '' ); + $explicit_option = $series_explicit_option; + } + $explicit_option = apply_filters( 'ssp_feed_explicit', $explicit_option, $series_id ); + if ( $explicit_option && 'on' === $explicit_option ) { + $itunes_explicit = 'yes'; + $googleplay_explicit = 'Yes'; + } else { + $itunes_explicit = 'clean'; + $googleplay_explicit = 'No'; + } + + // Podcast complete setting + $complete_option = get_option( 'ss_podcasting_complete', '' ); + if ( $podcast_series ) { + $series_complete_option = get_option( 'ss_podcasting_complete_' . $series_id, '' ); + $complete_option = $series_complete_option; + } + $complete_option = apply_filters( 'ssp_feed_complete', $complete_option, $series_id ); + if ( $complete_option && 'on' === $complete_option ) { + $complete = 'yes'; + } else { + $complete = ''; + } + + // Podcast cover image + $image = get_option( 'ss_podcasting_data_image', '' ); + if ( $podcast_series ) { + $series_image = get_option( 'ss_podcasting_data_image_' . $series_id, 'no-image' ); + if ( 'no-image' !== $series_image ) { + $image = $series_image; + } + } + $image = apply_filters( 'ssp_feed_image', $image, $series_id ); + + // Podcast category and subcategory (all levels) - can be filtered with `ssp_feed_category_output` + $category1 = ssp_get_feed_category_output( 1, $series_id ); + $category2 = ssp_get_feed_category_output( 2, $series_id ); + $category3 = ssp_get_feed_category_output( 3, $series_id ); + + // Get iTunes Type + $itunes_type = get_option( 'ss_podcasting_consume_order' . ( $series_id > 0 ? '_' . $series_id : null ) ); + + // Get turbo setting + $turbo = get_option( 'ss_podcasting_turbocharge_feed', 'off' ); + if ( $series_id && $series_id > 0 ) { + $series_turbo = get_option( 'ss_podcasting_turbocharge_feed_' . $series_id ); + if ( false !== $series_turbo ) { + $turbo = $series_turbo; + } + } + + // Get media prefix setting + $media_prefix = get_option( 'ss_podcasting_media_prefix', '' ); + if ( $series_id && $series_id > 0 ) { + $series_media_prefix = get_option( 'ss_podcasting_media_prefix_' . $series_id ); + if ( false !== $series_media_prefix ) { + $media_prefix = $series_media_prefix; + } + } + + // Get episode description setting + $episode_description = get_option( 'ss_podcasting_episode_description', 'excerpt' ); + $episode_description_uses_excerpt = 'excerpt' === $episode_description; + if ( $series_id && $series_id > 0 ) { + $series_episode_description = get_option( 'episode_description_' . $series_id ); + if ( false !== $series_episode_description ) { + $episode_description = $series_episode_description; + } + } + + // Get stylehseet URL (filterable to allow disabling or custom RSS stylesheets) + $apply_stylesheet_url = apply_filters( 'ssp_enable_rss_stylesheet', true ); + if ( $apply_stylesheet_url ) { + $stylesheet_url = apply_filters( 'ssp_rss_stylesheet', $ss_podcasting->template_url . 'feed-stylesheet.xsl' ); + } + + // Set RSS content type and charset headers + header( 'Content-Type: ' . feed_content_type( 'podcast' ) . '; charset=' . get_option( 'blog_charset' ), true ); + + // Load user feed template if it exists, otherwise use plugin template if ( file_exists( $user_template_file ) ) { require $user_template_file; diff --git a/templates/feed-podcast.php b/templates/feed-podcast.php index e06bab02..75056571 100644 --- a/templates/feed-podcast.php +++ b/templates/feed-podcast.php @@ -11,297 +11,6 @@ exit; } -// @todo move all of this logic into the Feed_Controller render_podcast_feed method, at the very least -global $ss_podcasting, $wp_query; - -// @todo turn this off and fix any errors -// Hide all errors -error_reporting( 0 ); - -// Allow feed access by default -$give_access = true; - -// Check if feed is password protected -$protection = get_option( 'ss_podcasting_protect', '' ); - -// Handle feed protection if required -if ( $protection && 'on' === $protection ) { - - $give_access = false; - - // Request password and give access if correct - if ( ! isset( $_SERVER['PHP_AUTH_USER'] ) && ! isset( $_SERVER['PHP_AUTH_PW'] ) ) { - $give_access = false; - } else { - $username = get_option( 'ss_podcasting_protection_username' ); - $password = get_option( 'ss_podcasting_protection_password' ); - - if ( $_SERVER['PHP_AUTH_USER'] === $username ) { - if ( md5( $_SERVER['PHP_AUTH_PW'] ) === $password ) { - $give_access = true; - } - } - } -} - -// Get specified podcast series -$podcast_series = ''; -if ( isset( $_GET['podcast_series'] ) && $_GET['podcast_series'] ) { - $podcast_series = esc_attr( $_GET['podcast_series'] ); -} elseif ( isset( $wp_query->query_vars['podcast_series'] ) && $wp_query->query_vars['podcast_series'] ) { - $podcast_series = esc_attr( $wp_query->query_vars['podcast_series'] ); -} - -// Get series ID -$series_id = 0; -if ( $podcast_series ) { - $series = get_term_by( 'slug', $podcast_series, 'series' ); - $series_id = $series->term_id; -} - -// Allow dynamic access control -$give_access = apply_filters( 'ssp_feed_access', $give_access, $series_id ); - -// Send 401 status and display no access message if access has been denied -if ( ! $give_access ) { - - // Set default message - $message = __( 'You are not permitted to view this podcast feed.', 'seriously-simple-podcasting' ); - - // Check message option from plugin settings - $message_option = get_option( 'ss_podcasting_protection_no_access_message' ); - if ( $message_option ) { - $message = $message_option; - } - - // Allow message to be filtered dynamically - $message = apply_filters( 'ssp_feed_no_access_message', $message ); - - $no_access_message = '
' . $message . '
'; - - header( 'WWW-Authenticate: Basic realm="Podcast Feed"' ); - header( 'HTTP/1.0 401 Unauthorized' ); - - die( $no_access_message ); -} - -// If redirect is on, get new feed URL and redirect if setting was changed more than 48 hours ago -$redirect = get_option( 'ss_podcasting_redirect_feed' ); -$new_feed_url = false; -if ( $redirect && 'on' === $redirect ) { - - $new_feed_url = get_option( 'ss_podcasting_new_feed_url' ); - $update_date = get_option( 'ss_podcasting_redirect_feed_date' ); - - if ( $new_feed_url && $update_date ) { - $redirect_date = strtotime( '+2 days', $update_date ); - $current_date = time(); - - // Redirect with 301 if it is more than 2 days since redirect was saved - if ( $current_date > $redirect_date ) { - header( 'HTTP/1.1 301 Moved Permanently' ); - header( 'Location: ' . $new_feed_url ); - exit; - } - } -} - -// if this is the default feed, check for series for which posts should be excluded -$exclude_series = array(); -if ( empty( $series_id ) ) { - $series = get_terms( - array( - 'taxonomy' => 'series', - 'hide_empty' => false, - ) - ); - foreach ( $series as $feed ) { - $option_name = 'ss_podcasting_exclude_feed_' . $feed->term_id; - $exclude_feed_option = get_option( $option_name, 'off' ); - if ( 'on' === $exclude_feed_option ) { - $exclude_series[] = $feed->slug; - } - } -} - -// If this is a series specific feed, then check if we need to redirect -if ( $series_id ) { - $redirect = get_option( 'ss_podcasting_redirect_feed_' . $series_id ); - $new_feed_url = false; - if ( $redirect && 'on' === $redirect ) { - $new_feed_url = get_option( 'ss_podcasting_new_feed_url_' . $series_id ); - if ( $new_feed_url ) { - header( 'HTTP/1.1 301 Moved Permanently' ); - header( 'Location: ' . $new_feed_url ); - exit; - } - } -} - -// Podcast title -$title = get_option( 'ss_podcasting_data_title', get_bloginfo( 'name' ) ); -if ( $podcast_series ) { - $series_title = get_option( 'ss_podcasting_data_title_' . $series_id, '' ); - if ( $series_title ) { - $title = $series_title; - } -} -$title = apply_filters( 'ssp_feed_title', $title, $series_id ); - -// Podcast description -$description = get_option( 'ss_podcasting_data_description', get_bloginfo( 'description' ) ); -if ( $podcast_series ) { - $series_description = get_option( 'ss_podcasting_data_description_' . $series_id, '' ); - if ( $series_description ) { - $description = $series_description; - } -} -$podcast_description = mb_substr( strip_tags( $description ), 0, 3999 ); -$podcast_description = apply_filters( 'ssp_feed_description', $podcast_description, $series_id ); - -// Podcast language -$language = get_option( 'ss_podcasting_data_language', get_bloginfo( 'language' ) ); -if ( $podcast_series ) { - $series_language = get_option( 'ss_podcasting_data_language_' . $series_id, '' ); - if ( $series_language ) { - $language = $series_language; - } -} -$language = apply_filters( 'ssp_feed_language', $language, $series_id ); - -// Podcast copyright string -$copyright = get_option( 'ss_podcasting_data_copyright', '© ' . date( 'Y' ) . ' ' . get_bloginfo( 'name' ) ); -if ( $podcast_series ) { - $series_copyright = get_option( 'ss_podcasting_data_copyright_' . $series_id, '' ); - if ( $series_copyright ) { - $copyright = $series_copyright; - } -} -$copyright = apply_filters( 'ssp_feed_copyright', $copyright, $series_id ); - -// Podcast subtitle -$subtitle = get_option( 'ss_podcasting_data_subtitle', get_bloginfo( 'description' ) ); -if ( $podcast_series ) { - $series_subtitle = get_option( 'ss_podcasting_data_subtitle_' . $series_id, '' ); - if ( $series_subtitle ) { - $subtitle = $series_subtitle; - } -} -$subtitle = apply_filters( 'ssp_feed_subtitle', $subtitle, $series_id ); - -// Podcast author -$author = get_option( 'ss_podcasting_data_author', get_bloginfo( 'name' ) ); -if ( $podcast_series ) { - $series_author = get_option( 'ss_podcasting_data_author_' . $series_id, '' ); - if ( $series_author ) { - $author = $series_author; - } -} -$author = apply_filters( 'ssp_feed_author', $author, $series_id ); - -// Podcast owner name -$owner_name = get_option( 'ss_podcasting_data_owner_name', get_bloginfo( 'name' ) ); -if ( $podcast_series ) { - $series_owner_name = get_option( 'ss_podcasting_data_owner_name_' . $series_id, '' ); - if ( $series_owner_name ) { - $owner_name = $series_owner_name; - } -} -$owner_name = apply_filters( 'ssp_feed_owner_name', $owner_name, $series_id ); - -// Podcast owner email address -$owner_email = get_option( 'ss_podcasting_data_owner_email', get_bloginfo( 'admin_email' ) ); -if ( $podcast_series ) { - $series_owner_email = get_option( 'ss_podcasting_data_owner_email_' . $series_id, '' ); - if ( $series_owner_email ) { - $owner_email = $series_owner_email; - } -} -$owner_email = apply_filters( 'ssp_feed_owner_email', $owner_email, $series_id ); - -// Podcast explicit setting -$explicit_option = get_option( 'ss_podcasting_explicit', '' ); -if ( $podcast_series ) { - $series_explicit_option = get_option( 'ss_podcasting_explicit_' . $series_id, '' ); - $explicit_option = $series_explicit_option; -} -$explicit_option = apply_filters( 'ssp_feed_explicit', $explicit_option, $series_id ); -if ( $explicit_option && 'on' === $explicit_option ) { - $itunes_explicit = 'yes'; - $googleplay_explicit = 'Yes'; -} else { - $itunes_explicit = 'clean'; - $googleplay_explicit = 'No'; -} - -// Podcast complete setting -$complete_option = get_option( 'ss_podcasting_complete', '' ); -if ( $podcast_series ) { - $series_complete_option = get_option( 'ss_podcasting_complete_' . $series_id, '' ); - $complete_option = $series_complete_option; -} -$complete_option = apply_filters( 'ssp_feed_complete', $complete_option, $series_id ); -if ( $complete_option && 'on' === $complete_option ) { - $complete = 'yes'; -} else { - $complete = ''; -} - -// Podcast cover image -$image = get_option( 'ss_podcasting_data_image', '' ); -if ( $podcast_series ) { - $series_image = get_option( 'ss_podcasting_data_image_' . $series_id, 'no-image' ); - if ( 'no-image' !== $series_image ) { - $image = $series_image; - } -} -$image = apply_filters( 'ssp_feed_image', $image, $series_id ); - -// Podcast category and subcategory (all levels) - can be filtered with `ssp_feed_category_output` -$category1 = ssp_get_feed_category_output( 1, $series_id ); -$category2 = ssp_get_feed_category_output( 2, $series_id ); -$category3 = ssp_get_feed_category_output( 3, $series_id ); - -// Get iTunes Type -$itunes_type = get_option( 'ss_podcasting_consume_order' . ( $series_id > 0 ? '_' . $series_id : null ) ); - -// Get turbo setting -$turbo = get_option( 'ss_podcasting_turbocharge_feed', 'off' ); -if ( $series_id && $series_id > 0 ) { - $series_turbo = get_option( 'ss_podcasting_turbocharge_feed_' . $series_id ); - if ( false !== $series_turbo ) { - $turbo = $series_turbo; - } -} - -// Get media prefix setting -$media_prefix = get_option( 'ss_podcasting_media_prefix', '' ); -if ( $series_id && $series_id > 0 ) { - $series_media_prefix = get_option( 'ss_podcasting_media_prefix_' . $series_id ); - if ( false !== $series_media_prefix ) { - $media_prefix = $series_media_prefix; - } -} - -// Get episode description setting -$episode_description = get_option( 'ss_podcasting_episode_description', 'excerpt' ); -$episode_description_uses_excerpt = 'excerpt' === $episode_description; -if ( $series_id && $series_id > 0 ) { - $series_episode_description = get_option( 'episode_description_' . $series_id ); - if ( false !== $series_episode_description ) { - $episode_description = $series_episode_description; - } -} - -// Get stylehseet URL (filterable to allow disabling or custom RSS stylesheets) -$apply_stylesheet_url = apply_filters( 'ssp_enable_rss_stylesheet', true ); -if ( $apply_stylesheet_url ) { - $stylesheet_url = apply_filters( 'ssp_rss_stylesheet', $ss_podcasting->template_url . 'feed-stylesheet.xsl' ); -} - -// Set RSS content type and charset headers -header( 'Content-Type: ' . feed_content_type( 'podcast' ) . '; charset=' . get_option( 'blog_charset' ), true ); - // Use `echo` for first line to prevent any extra characters at start of document echo '' . "\n"; @@ -411,234 +120,8 @@ while ( $qry->have_posts() ) { $qry->the_post(); - // Audio file - $audio_file = $ss_podcasting->get_enclosure( get_the_ID() ); - if ( get_option( 'permalink_structure' ) ) { - $enclosure = $ss_podcasting->get_episode_download_link( get_the_ID() ); - } else { - $enclosure = $audio_file; - } - - $enclosure = apply_filters( 'ssp_feed_item_enclosure', $enclosure, get_the_ID() ); - - if ( ! empty( $media_prefix ) ) { - $enclosure = parse_episode_url_with_media_prefix( $enclosure, $media_prefix ); - } - - // If there is no enclosure then go no further - if ( ! isset( $enclosure ) || ! $enclosure ) { - continue; - } - - // Get episode image from post featured image - $episode_image = ''; - $image_id = get_post_thumbnail_id( get_the_ID() ); - if ( $image_id ) { - $image_att = wp_get_attachment_image_src( $image_id, 'full' ); - if ( $image_att ) { - $episode_image = $image_att[0]; - } - } - $episode_image = apply_filters( 'ssp_feed_item_image', $episode_image, get_the_ID() ); - - // Episode duration (default to 0:00 to ensure there is always a value for this) - $duration = get_post_meta( get_the_ID(), 'duration', true ); - if ( ! $duration ) { - $duration = '0:00'; - } - $duration = apply_filters( 'ssp_feed_item_duration', $duration, get_the_ID() ); - - // File size - $size = get_post_meta( get_the_ID(), 'filesize_raw', true ); - - if ( ! $size ) { - $formatted_size = get_post_meta( get_the_ID(), 'filesize', true ); - if ( ssp_is_connected_to_castos() || $formatted_size ) { - $size = convert_human_readable_to_bytes( $formatted_size ); - } else { - $size = 1; - } - } - $size = apply_filters( 'ssp_feed_item_size', $size, get_the_ID() ); - - // File MIME type (default to MP3/MP4 to ensure there is always a value for this) - $mime_type = $ss_podcasting->get_attachment_mimetype( $audio_file ); - if ( ! $mime_type ) { - - // Get the episode type (audio or video) to determine the appropriate default MIME type - $episode_type = $ss_podcasting->get_episode_type( get_the_ID() ); - switch ( $episode_type ) { - case 'audio': - $mime_type = 'audio/mpeg'; - break; - case 'video': - $mime_type = 'video/mp4'; - break; - } - } - $mime_type = apply_filters( 'ssp_feed_item_mime_type', $mime_type, get_the_ID() ); - - // Episode explicit flag - $ep_explicit = get_post_meta( get_the_ID(), 'explicit', true ); - $ep_explicit = apply_filters( 'ssp_feed_item_explicit', $ep_explicit, get_the_ID() ); - if ( $ep_explicit && $ep_explicit == 'on' ) { - $itunes_explicit_flag = 'yes'; - $googleplay_explicit_flag = 'Yes'; - } else { - $itunes_explicit_flag = 'clean'; - $googleplay_explicit_flag = 'No'; - } - - // Episode block flag - $ep_block = get_post_meta( get_the_ID(), 'block', true ); - $ep_block = apply_filters( 'ssp_feed_item_block', $ep_block, get_the_ID() ); - if ( $ep_block && $ep_block == 'on' ) { - $block_flag = 'yes'; - } else { - $block_flag = 'no'; - } - - // Episode author - $author = esc_html( get_the_author() ); - $author = apply_filters( 'ssp_feed_item_author', $author, get_the_ID() ); - - // Cache the post in case it changes - $post_id = get_the_ID(); - - // Episode content (with shortcodes and iframes removed) - $content = get_the_content_feed( 'rss2' ); - $content = strip_shortcodes( $content ); - $content = preg_replace( '/<\/?iframe(.|\s)*?>/', '', $content ); - $content = apply_filters( 'ssp_feed_item_content', $content, get_the_ID() ); - - // Description is set based on feed setting - if ( $episode_description_uses_excerpt) { - ob_start(); - the_excerpt_rss(); - $description = ob_get_clean(); - } else { - $description = $content; - if ( isset( $turbo_post_count ) && $turbo_post_count > 10 ) { - // If turbo is on, limit the full html description to 4000 chars - $description = mb_substr( $description, 0, 3999 ); - } - } - $description = apply_filters( 'ssp_feed_item_description', $description, get_the_ID() ); - - // Clean up after shortcodes in content and excerpts - if( $post_id !== get_the_ID() ) { - $qry->reset_postdata(); - } - - // iTunes summary excludes HTML and must be shorter than 4000 characters - $itunes_summary = wp_strip_all_tags( $description ); - $itunes_summary = mb_substr( $itunes_summary, 0, 3999 ); - $itunes_summary = apply_filters( 'ssp_feed_item_itunes_summary', $itunes_summary, get_the_ID() ); - - // Google Play description is the same as iTunes summary, but must be shorter than 1000 characters - $gp_description = mb_substr( $itunes_summary, 0, 999 ); - $gp_description = apply_filters( 'ssp_feed_item_gp_description', $gp_description, get_the_ID() ); - - // iTunes subtitle excludes HTML and must be shorter than 255 characters - $itunes_subtitle = wp_strip_all_tags( $description ); - $itunes_subtitle = str_replace( - array( - '>', - '<', - '\'', - '"', - '`', - '[andhellip;]', - '[…]', - '[…]', - ), - array( '', '', '', '', '', '', '', '' ), - $itunes_subtitle - ); - $itunes_subtitle = mb_substr( $itunes_subtitle, 0, 254 ); - $itunes_subtitle = apply_filters( 'ssp_feed_item_itunes_subtitle', $itunes_subtitle, get_the_ID() ); - - // Date recorded - $pub_date_type = get_option( 'ss_podcasting_publish_date', 'published' ); - if ( 'published' === $pub_date_type ) { - $pub_date = esc_html( mysql2date( 'D, d M Y H:i:s +0000', get_post_time( 'Y-m-d H:i:s', true ), false ) ); - } else // 'recorded'. - { - $pub_date = esc_html( mysql2date( 'D, d M Y H:i:s +0000', get_post_meta( get_the_ID(), 'date_recorded', true ), false ) ); - } - - // Tags/keywords - $post_tags = get_the_tags( get_the_ID() ); - if ( $post_tags ) { - $tags = array(); - foreach ( $post_tags as $tag ) { - $tags[] = $tag->name; - } - $tags = apply_filters( 'ssp_feed_item_itunes_keyword_tags', $tags, get_the_ID() ); - if ( ! empty( $tags ) ) { - $keywords = implode( $tags, ',' ); - } - } - - $is_itunes_fields_enabled = get_option( 'ss_podcasting_itunes_fields_enabled' ); - if ( $is_itunes_fields_enabled && $is_itunes_fields_enabled == 'on' ) { - // New iTunes WWDC 2017 Tags - $itunes_episode_type = get_post_meta( get_the_ID(), 'itunes_episode_type', true ); - $itunes_title = get_post_meta( get_the_ID(), 'itunes_title', true ); - $itunes_episode_number = get_post_meta( get_the_ID(), 'itunes_episode_number', true ); - $itunes_season_number = get_post_meta( get_the_ID(), 'itunes_season_number', true ); - } - if ( isset( $turbo_post_count ) ) { - $turbo_post_count ++; - } - ?> - - <?php echo esc_html( get_the_title_rss() ); ?> - - - - - ]]> - ]]> - - - - - - - - ]]> - - - - - - - - - ]]> - - - - ]]> - - - - - - - - - - ]]> - - - - - - - - diff --git a/templates/feed/feed-item.php b/templates/feed/feed-item.php new file mode 100644 index 00000000..8b898ac6 --- /dev/null +++ b/templates/feed/feed-item.php @@ -0,0 +1,232 @@ +get_enclosure( get_the_ID() ); +if ( get_option( 'permalink_structure' ) ) { + $enclosure = $ss_podcasting->get_episode_download_link( get_the_ID() ); +} else { + $enclosure = $audio_file; +} + +$enclosure = apply_filters( 'ssp_feed_item_enclosure', $enclosure, get_the_ID() ); + +if ( ! empty( $media_prefix ) ) { + $enclosure = parse_episode_url_with_media_prefix( $enclosure, $media_prefix ); +} + +// If there is no enclosure then go no further +if ( ! isset( $enclosure ) || ! $enclosure ) { + return; +} + +// Get episode image from post featured image +$episode_image = ''; +$image_id = get_post_thumbnail_id( get_the_ID() ); +if ( $image_id ) { + $image_att = wp_get_attachment_image_src( $image_id, 'full' ); + if ( $image_att ) { + $episode_image = $image_att[0]; + } +} +$episode_image = apply_filters( 'ssp_feed_item_image', $episode_image, get_the_ID() ); + +// Episode duration (default to 0:00 to ensure there is always a value for this) +$duration = get_post_meta( get_the_ID(), 'duration', true ); +if ( ! $duration ) { + $duration = '0:00'; +} +$duration = apply_filters( 'ssp_feed_item_duration', $duration, get_the_ID() ); + +// File size +$size = get_post_meta( get_the_ID(), 'filesize_raw', true ); + +if ( ! $size ) { + $formatted_size = get_post_meta( get_the_ID(), 'filesize', true ); + if ( ssp_is_connected_to_castos() || $formatted_size ) { + $size = convert_human_readable_to_bytes( $formatted_size ); + } else { + $size = 1; + } +} +$size = apply_filters( 'ssp_feed_item_size', $size, get_the_ID() ); + +// File MIME type (default to MP3/MP4 to ensure there is always a value for this) +$mime_type = $ss_podcasting->get_attachment_mimetype( $audio_file ); +if ( ! $mime_type ) { + + // Get the episode type (audio or video) to determine the appropriate default MIME type + $episode_type = $ss_podcasting->get_episode_type( get_the_ID() ); + switch ( $episode_type ) { + case 'audio': + $mime_type = 'audio/mpeg'; + break; + case 'video': + $mime_type = 'video/mp4'; + break; + } +} +$mime_type = apply_filters( 'ssp_feed_item_mime_type', $mime_type, get_the_ID() ); + +// Episode explicit flag +$ep_explicit = get_post_meta( get_the_ID(), 'explicit', true ); +$ep_explicit = apply_filters( 'ssp_feed_item_explicit', $ep_explicit, get_the_ID() ); +if ( $ep_explicit && $ep_explicit == 'on' ) { + $itunes_explicit_flag = 'yes'; + $googleplay_explicit_flag = 'Yes'; +} else { + $itunes_explicit_flag = 'clean'; + $googleplay_explicit_flag = 'No'; +} + +// Episode block flag +$ep_block = get_post_meta( get_the_ID(), 'block', true ); +$ep_block = apply_filters( 'ssp_feed_item_block', $ep_block, get_the_ID() ); +if ( $ep_block && $ep_block == 'on' ) { + $block_flag = 'yes'; +} else { + $block_flag = 'no'; +} + +// Episode author +$author = esc_html( get_the_author() ); +$author = apply_filters( 'ssp_feed_item_author', $author, get_the_ID() ); + +// Cache the post in case it changes +$post_id = get_the_ID(); + +// Episode content (with shortcodes and iframes removed) +$content = get_the_content_feed( 'rss2' ); +$content = strip_shortcodes( $content ); +$content = preg_replace( '/<\/?iframe(.|\s)*?>/', '', $content ); +$content = apply_filters( 'ssp_feed_item_content', $content, get_the_ID() ); + +// Description is set based on feed setting +if ( $episode_description_uses_excerpt) { + ob_start(); + the_excerpt_rss(); + $description = ob_get_clean(); +} else { + $description = $content; + if ( isset( $turbo_post_count ) && $turbo_post_count > 10 ) { + // If turbo is on, limit the full html description to 4000 chars + $description = mb_substr( $description, 0, 3999 ); + } +} +$description = apply_filters( 'ssp_feed_item_description', $description, get_the_ID() ); + +// Clean up after shortcodes in content and excerpts +if( $post_id !== get_the_ID() ) { + $qry->reset_postdata(); +} + +// iTunes summary excludes HTML and must be shorter than 4000 characters +$itunes_summary = wp_strip_all_tags( $description ); +$itunes_summary = mb_substr( $itunes_summary, 0, 3999 ); +$itunes_summary = apply_filters( 'ssp_feed_item_itunes_summary', $itunes_summary, get_the_ID() ); + +// Google Play description is the same as iTunes summary, but must be shorter than 1000 characters +$gp_description = mb_substr( $itunes_summary, 0, 999 ); +$gp_description = apply_filters( 'ssp_feed_item_gp_description', $gp_description, get_the_ID() ); + +// iTunes subtitle excludes HTML and must be shorter than 255 characters +$itunes_subtitle = wp_strip_all_tags( $description ); +$itunes_subtitle = str_replace( + array( + '>', + '<', + '\'', + '"', + '`', + '[andhellip;]', + '[…]', + '[…]', + ), + array( '', '', '', '', '', '', '', '' ), + $itunes_subtitle +); +$itunes_subtitle = mb_substr( $itunes_subtitle, 0, 254 ); +$itunes_subtitle = apply_filters( 'ssp_feed_item_itunes_subtitle', $itunes_subtitle, get_the_ID() ); + +// Date recorded +$pub_date_type = get_option( 'ss_podcasting_publish_date', 'published' ); +if ( 'published' === $pub_date_type ) { + $pub_date = esc_html( mysql2date( 'D, d M Y H:i:s +0000', get_post_time( 'Y-m-d H:i:s', true ), false ) ); +} else // 'recorded'. +{ + $pub_date = esc_html( mysql2date( 'D, d M Y H:i:s +0000', get_post_meta( get_the_ID(), 'date_recorded', true ), false ) ); +} + +// Tags/keywords +$post_tags = get_the_tags( get_the_ID() ); +if ( $post_tags ) { + $tags = array(); + foreach ( $post_tags as $tag ) { + $tags[] = $tag->name; + } + $tags = apply_filters( 'ssp_feed_item_itunes_keyword_tags', $tags, get_the_ID() ); + if ( ! empty( $tags ) ) { + $keywords = implode( $tags, ',' ); + } +} + +$is_itunes_fields_enabled = get_option( 'ss_podcasting_itunes_fields_enabled' ); +if ( $is_itunes_fields_enabled && $is_itunes_fields_enabled == 'on' ) { + // New iTunes WWDC 2017 Tags + $itunes_episode_type = get_post_meta( get_the_ID(), 'itunes_episode_type', true ); + $itunes_title = get_post_meta( get_the_ID(), 'itunes_title', true ); + $itunes_episode_number = get_post_meta( get_the_ID(), 'itunes_episode_number', true ); + $itunes_season_number = get_post_meta( get_the_ID(), 'itunes_season_number', true ); +} +if ( isset( $turbo_post_count ) ) { + $turbo_post_count ++; +} +?> + + <?php echo esc_html( get_the_title_rss() ); ?> + + + + + ]]> + ]]> + + + + + + + + ]]> + + + + + + + + + ]]> + + + + ]]> + + + + + + + + + + ]]> + + + + + + + From b56a68e762a3b9a7f6fdb692c4aa55affa31bd86 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Mon, 29 Mar 2021 21:28:20 +0300 Subject: [PATCH 09/21] Add episode specific image to RSS feed #636 --- .../controllers/class-frontend-controller.php | 55 +++++++++++++++++-- templates/feed-podcast.php | 4 +- templates/feed-stylesheet.xsl | 14 ++++- templates/feed/feed-item.php | 18 +++--- 4 files changed, 74 insertions(+), 17 deletions(-) diff --git a/php/classes/controllers/class-frontend-controller.php b/php/classes/controllers/class-frontend-controller.php index 9bc753f4..710d2957 100644 --- a/php/classes/controllers/class-frontend-controller.php +++ b/php/classes/controllers/class-frontend-controller.php @@ -902,24 +902,69 @@ public function audio_player( $src = '', $episode_id = 0 ) { /** * Get episode image - * @param integer $id ID of episode + * @param integer $post_id ID of episode * @param string $size Image size * @return string Image HTML markup */ - public function get_image( $id = 0, $size = 'full' ) { + public function get_image( $post_id = 0, $size = 'full' ) { $image = ''; - if ( has_post_thumbnail( $id ) ) { + if ( has_post_thumbnail( $post_id ) ) { // If not a string or an array, and not an integer, default to 200x9999. if ( is_int( $size ) || ( 0 < intval( $size ) ) ) { $size = array( intval( $size ), intval( $size ) ); } elseif ( ! is_string( $size ) && ! is_array( $size ) ) { $size = array( 200, 9999 ); } - $image = get_the_post_thumbnail( intval( $id ), $size ); + $image = get_the_post_thumbnail( intval( $post_id ), $size ); } - return apply_filters( 'ssp_episode_image', $image, $id ); + return apply_filters( 'ssp_episode_image', $image, $post_id ); + } + + /** + * Get episode image + * + * @param integer $post_id ID of episode + * @param string $size Image size + * + * @return string Image url + */ + public function get_episode_image_url( $post_id = 0, $size = 'full' ) { + $image_url = ''; + $image_id = get_post_meta( $post_id, 'cover_image_id', true ); + $is_valid = $this->is_image_valid( $image_id, $size ); + + if ( ! $is_valid ) { + $image_id = get_post_thumbnail_id( $post_id ); + $is_valid = $this->is_image_valid( $image_id, $size ); + } + + if ( $is_valid ) { + $image_att = wp_get_attachment_image_src( $image_id, $size ); + $image_url = isset( $image_att[0] ) ? $image_att[0] : ''; + } + + return apply_filters( 'ssp_episode_image_url', $image_url, $post_id ); + } + + /** + * @param int $image_id + * @param string $size + * + * @return bool + */ + public function is_image_valid( $image_id, $size = 'full' ) { + $image_att = $image_id ? wp_get_attachment_image_src( $image_id, $size ) : null; + $min_size = apply_filters( 'ssp_episode_min_image_size', 1400 ); + $max_size = apply_filters( 'ssp_episode_min_image_size', 3000 ); + if ( empty( $image_att ) ) { + return false; + } + $width = isset( $image_att[1] ) ? $image_att[1] : 0; + $height = isset( $image_att[2] ) ? $image_att[2] : 0; + + return $width === $height && $width >= $min_size && $width <= $max_size; } /** diff --git a/templates/feed-podcast.php b/templates/feed-podcast.php index 75056571..0bde0a50 100644 --- a/templates/feed-podcast.php +++ b/templates/feed-podcast.php @@ -120,7 +120,9 @@ while ( $qry->have_posts() ) { $qry->the_post(); - include __DIR__ . '/feed/feed-item.php'; + $feed_item_path = apply_filters('ssp_feed_item_path', __DIR__ . '/feed/feed-item.php'); + + include $feed_item_path; } } ?> diff --git a/templates/feed-stylesheet.xsl b/templates/feed-stylesheet.xsl index ce846442..eeab4566 100644 --- a/templates/feed-stylesheet.xsl +++ b/templates/feed-stylesheet.xsl @@ -61,7 +61,7 @@ border-top: 1px solid #E5E5E5; padding: 20px; } - .episode-image img { + .episode-image img, .channel-item img { width: 100px; height: auto; margin: 0 30px 15px 0; @@ -124,6 +124,16 @@ + + + + + + + + + +

@@ -151,4 +161,4 @@ - \ No newline at end of file + diff --git a/templates/feed/feed-item.php b/templates/feed/feed-item.php index 8b898ac6..486bb2af 100644 --- a/templates/feed/feed-item.php +++ b/templates/feed/feed-item.php @@ -23,14 +23,8 @@ } // Get episode image from post featured image -$episode_image = ''; -$image_id = get_post_thumbnail_id( get_the_ID() ); -if ( $image_id ) { - $image_att = wp_get_attachment_image_src( $image_id, 'full' ); - if ( $image_att ) { - $episode_image = $image_att[0]; - } -} +global $ss_podcasting; +$episode_image = $ss_podcasting->get_episode_image_url( get_the_ID() ); $episode_image = apply_filters( 'ssp_feed_item_image', $episode_image, get_the_ID() ); // Episode duration (default to 0:00 to ensure there is always a value for this) @@ -183,9 +177,11 @@ if ( isset( $turbo_post_count ) ) { $turbo_post_count ++; } + +$title = esc_html( get_the_title_rss() ); ?> - <?php echo esc_html( get_the_title_rss() ); ?> + <?php echo $title; ?> @@ -216,6 +212,10 @@ + + + <?php echo esc_attr( $title ); ?> + From 46c3cfd5a93bb7ba7b6496f0bb3a1d29e2cb7953 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Tue, 30 Mar 2021 17:12:40 +0300 Subject: [PATCH 10/21] Refactoring comments #636 --- .../controllers/class-frontend-controller.php | 2 +- templates/feed-podcast.php | 25 +++++++++++++ templates/feed/feed-item.php | 36 ++++++++++++++++--- 3 files changed, 57 insertions(+), 6 deletions(-) diff --git a/php/classes/controllers/class-frontend-controller.php b/php/classes/controllers/class-frontend-controller.php index 710d2957..12ed2b60 100644 --- a/php/classes/controllers/class-frontend-controller.php +++ b/php/classes/controllers/class-frontend-controller.php @@ -923,7 +923,7 @@ public function get_image( $post_id = 0, $size = 'full' ) { } /** - * Get episode image + * Get episode image url * * @param integer $post_id ID of episode * @param string $size Image size diff --git a/templates/feed-podcast.php b/templates/feed-podcast.php index 0bde0a50..77f6eedd 100644 --- a/templates/feed-podcast.php +++ b/templates/feed-podcast.php @@ -4,6 +4,31 @@ * * @package WordPress * @subpackage SeriouslySimplePodcasting + * + * Refactoring history: + * Moved the data preparation to the feed controller + * @see \SeriouslySimplePodcasting\Controllers\Feed_Controller::load_feed_template() + * + * @var $stylesheet_url + * @var $title + * @var $ss_podcasting + * @var $podcast_series + * @var $description + * @var $language + * @var $copyright + * @var $subtitle + * @var $author + * @var $itunes_type + * @var $podcast_description + * @var $owner_name + * @var $owner_email + * @var $itunes_explicit + * @var $complete + * @var $image + * @var $new_feed_url + * @var $turbo + * @var $googleplay_explicit + * @var $exclude_series */ // Exit if accessed directly. diff --git a/templates/feed/feed-item.php b/templates/feed/feed-item.php index 486bb2af..e24ae731 100644 --- a/templates/feed/feed-item.php +++ b/templates/feed/feed-item.php @@ -1,7 +1,32 @@ get_enclosure( get_the_ID() ); @@ -98,7 +123,7 @@ $content = apply_filters( 'ssp_feed_item_content', $content, get_the_ID() ); // Description is set based on feed setting -if ( $episode_description_uses_excerpt) { +if ( $episode_description_uses_excerpt ) { ob_start(); the_excerpt_rss(); $description = ob_get_clean(); @@ -112,7 +137,7 @@ $description = apply_filters( 'ssp_feed_item_description', $description, get_the_ID() ); // Clean up after shortcodes in content and excerpts -if( $post_id !== get_the_ID() ) { +if ( $post_id !== get_the_ID() ) { $qry->reset_postdata(); } @@ -206,7 +231,8 @@ ]]> - + ]]> From ee5deecec990876af41540adffa34212129e281a Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Tue, 30 Mar 2021 20:19:23 +0300 Subject: [PATCH 11/21] Flash notices #645 --- .../controllers/class-admin-controller.php | 11 +- .../class-admin-notifications-handler.php | 142 +++++++++++++++--- 2 files changed, 126 insertions(+), 27 deletions(-) diff --git a/php/classes/controllers/class-admin-controller.php b/php/classes/controllers/class-admin-controller.php index 17a10fa2..458fe00f 100644 --- a/php/classes/controllers/class-admin-controller.php +++ b/php/classes/controllers/class-admin-controller.php @@ -80,7 +80,7 @@ public function bootstrap() { $this->cron_controller = new Cron_Controller(); if ( is_admin() ) { - $this->admin_notices_handler = new Admin_Notifications_Handler( $this->token ); + $this->admin_notices_handler = ( new Admin_Notifications_Handler( $this->token ) )->bootstrap(); } // Handle localisation. @@ -1626,16 +1626,19 @@ public function update_podcast_details( $id, $post ) { if ( $podmotor_episode_id ) { update_post_meta( $id, 'podmotor_episode_id', $podmotor_episode_id ); } - add_action( 'admin_notices', array( $this->admin_notices_handler, 'castos_api_episode_success' ) ); + $this->admin_notices_handler->add_predefined_flash_notice( + Admin_Notifications_Handler::NOTICE_API_EPISODE_SUCCESS + ); // if uploading was scheduled before, lets unschedule it delete_post_meta( $id, 'podmotor_schedule_upload' ); } else { // schedule uploading with a cronjob update_post_meta( $id, 'podmotor_schedule_upload', true ); - add_action( 'admin_notices', array( $this->admin_notices_handler, 'castos_api_error' ) ); + $this->admin_notices_handler->add_predefined_flash_notice( + Admin_Notifications_Handler::NOTICE_API_EPISODE_ERROR + ); } - } /** diff --git a/php/classes/handlers/class-admin-notifications-handler.php b/php/classes/handlers/class-admin-notifications-handler.php index c827331b..eca86c92 100644 --- a/php/classes/handlers/class-admin-notifications-handler.php +++ b/php/classes/handlers/class-admin-notifications-handler.php @@ -19,6 +19,26 @@ class Admin_Notifications_Handler { public $token; + /** + * Transient key to store flash notices + * */ + const NOTICES_KEY = 'castos_notices'; + + /** + * Predefined notices + * */ + const NOTICE_API_EPISODE_ERROR = 'api_episode_error'; + const NOTICE_API_EPISODE_SUCCESS = 'api_episode_success'; + + /** + * Notice types + * "info", "warning", "error" or "success" + * */ + const INFO = 'info'; + const WARNING = 'warning'; + const ERROR = 'error'; + const SUCCESS = 'success'; + /** * Admin_Notifications_Handler constructor. * @@ -26,7 +46,8 @@ class Admin_Notifications_Handler { */ public function __construct( $token ) { $this->token = $token; - $this->bootstrap(); + + return $this; } /** @@ -55,46 +76,102 @@ public function bootstrap() { // Trigger the Elementor Templates message add_action( 'admin_init', array( $this, 'show_elementor_templates_available' ) ); - // Trigger the Elementor Templates message + // Trigger the series helper message add_action( 'series_pre_add_form', array( $this, 'show_series_helper_text' ) ); + + // Print flash notices + add_action( 'admin_notices', array( $this, 'display_flash_notices' ), 12 ); + + return $this; } /** - * Admin notice for the add series page + * Add a predefined flash notice + * @see NOTICE_API_EPISODE_ERROR + * @see NOTICE_API_EPISODE_SUCCESS + * + * @param string $notice Predefined notice + * + * @return bool If the notice is added or not */ - public function show_series_helper_text(){ - $text = ' - A new Series will create an entirely new Podcast Feed.
- Only do this if you want to have multiple shows within your WordPress site.
- If you just want to organize episodes within the same feed we suggest using Tags.'; - echo sprintf('

%s

', $text); + public function add_predefined_flash_notice( $notice ) { + $messages = $this->get_predefined_notices(); + + if ( isset( $messages[ $notice ] ) ) { + $this->add_flash_notice( + $messages[ $notice ]['msg'], + $messages[ $notice ]['type'] + ); + + return true; + } + + return false; } + /** + * Add a flash notice + * + * @param string $notice our notice message + * @param string $type This can be "info", "warning", "error" or "success", "warning" as default + * @param boolean $dismissible set this to TRUE to add is-dismissible functionality to your notice + * @return void + */ + public function add_flash_notice( $notice = "", $type = "warning", $dismissible = true ) { + $notices = get_transient( self::NOTICES_KEY ); + if ( ! $notices ) { + $notices = array(); + } + + $dismissible_text = ( $dismissible ) ? "is-dismissible" : ""; + + array_push( $notices, array( + "notice" => $notice, + "type" => $type, + "dismissible" => $dismissible_text + ) ); + + set_transient( self::NOTICES_KEY, $notices, 10 ); + } /** - * Admin notice if an episode sync is successful + * Prints flash notices */ - public function castos_api_episode_success() { - ?> -
-

-
-

%3$s

', + $notice['type'], + $notice['dismissible'], + $notice['notice'] + ); + } + + if ( ! empty( $notices ) ) { + delete_transient( self::NOTICES_KEY ); + } } /** - * Admin notice if anything goes wrong with an episode sync + * Admin notice for the add series page */ - public function castos_api_episode_error() { - ?> -
-

-
- + Only do this if you want to have multiple shows within your WordPress site.
+ If you just want to organize episodes within the same feed we suggest using Tags.'; + echo sprintf('

%s

', $text); } + /** * Show an error if the block assets have failed + * @todo: investigate if it works and maybe replace it with add_predefined_flash_notice(); */ public function blocks_error_notice() { ?> @@ -613,4 +690,23 @@ public function show_elementor_templates_notice() { array( + 'msg' => __( 'Your episode was successfully synced to your Castos account', 'seriously-simple-podcasting' ), + 'type' => self::SUCCESS, + ), + self::NOTICE_API_EPISODE_ERROR => array( + 'msg' => __( 'An error occurred syncing your episode to your Castos account. Please contact Castos support at hello@castos.com.', 'seriously-simple-podcasting' ), + 'type' => self::ERROR, + ), + ); + + return apply_filters( 'castos_predefined_notices', $notices ); + } + } From 17ed3e03e9bd8339b567acb9682df0fad847438e Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Wed, 31 Mar 2021 17:29:33 +0300 Subject: [PATCH 12/21] Changed the error message for failed upload episode event --- php/classes/handlers/class-admin-notifications-handler.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/php/classes/handlers/class-admin-notifications-handler.php b/php/classes/handlers/class-admin-notifications-handler.php index eca86c92..fc42daa3 100644 --- a/php/classes/handlers/class-admin-notifications-handler.php +++ b/php/classes/handlers/class-admin-notifications-handler.php @@ -701,7 +701,9 @@ public function get_predefined_notices() { 'type' => self::SUCCESS, ), self::NOTICE_API_EPISODE_ERROR => array( - 'msg' => __( 'An error occurred syncing your episode to your Castos account. Please contact Castos support at hello@castos.com.', 'seriously-simple-podcasting' ), + 'msg' => __( "An error occurred in syncing this episode to your Castos account.
+ We will keep attempting to sync your episode over the next 24 hours.
+ If you don't see this episode in your Castos account at that time please contact our support team at hello@castos.com", 'seriously-simple-podcasting' ), 'type' => self::ERROR, ), ); From 686c478533bd3e5eb1df95b923fb7462cd8b548b Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Wed, 31 Mar 2021 17:39:35 +0300 Subject: [PATCH 13/21] Pre release 2.6.2-beta --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index eafce60a..7a8a0b11 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Fri, 2 Apr 2021 15:05:16 +0300 Subject: [PATCH 14/21] Pre release 2.6.2-beta.2 --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index 7a8a0b11..46d6b719 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Mon, 5 Apr 2021 12:02:07 +0300 Subject: [PATCH 15/21] Check cover image for feed details page #636 --- assets/js/admin.js | 8 ++------ php/classes/handlers/class-settings-handler.php | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/assets/js/admin.js b/assets/js/admin.js index 64e88c7b..e9d70b32 100644 --- a/assets/js/admin.js +++ b/assets/js/admin.js @@ -170,21 +170,17 @@ jQuery(document).ready(function($) { }); - $('#ss_podcasting_data_image_button').click(function() { - $.fn.ssp_upload_media_file( $(this), true ); - }); - $('#ss_podcasting_data_image_delete').click(function() { $( '#ss_podcasting_data_image' ).val( '' ); $( '#ss_podcasting_data_image_preview' ).remove(); return false; }); - $( '#cover_image_button' ).click(function() { + $( '#cover_image_button, #ss_podcasting_data_image_button' ).click(function() { var validateImageSize = function( attachment ) { return attachment.width === attachment.height && attachment.width >= 1400 && attachment.width <= 3000; } - var description = $( this ).siblings( '.description' ); + var description = $( this ).parent().find( '.description' ); $.fn.ssp_upload_media_file( $(this), true, validateImageSize ); description.css( 'color', '' ); diff --git a/php/classes/handlers/class-settings-handler.php b/php/classes/handlers/class-settings-handler.php index 1d820e34..2b5bf189 100644 --- a/php/classes/handlers/class-settings-handler.php +++ b/php/classes/handlers/class-settings-handler.php @@ -652,7 +652,7 @@ public function settings_fields() { array( 'id' => 'data_image', 'label' => __( 'Cover Image', 'seriously-simple-podcasting' ), - 'description' => __( 'Your podcast cover image - must have a minimum size of 1400x1400 px.', 'seriously-simple-podcasting' ), + 'description' => __( 'The podcast cover image should be between 1400x1400px and 3000x3000px in size and either .jpg or .png file format', 'seriously-simple-podcasting' ), 'type' => 'image', 'default' => '', 'placeholder' => '', From bc28e74cff40476f8969a28cdc41caf51f53d523 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Mon, 5 Apr 2021 12:36:23 +0300 Subject: [PATCH 16/21] Reverted checking twice update for the future Gutenberg notifications feature #557 --- php/classes/controllers/class-admin-controller.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/php/classes/controllers/class-admin-controller.php b/php/classes/controllers/class-admin-controller.php index 17a10fa2..bde34678 100644 --- a/php/classes/controllers/class-admin-controller.php +++ b/php/classes/controllers/class-admin-controller.php @@ -1618,10 +1618,23 @@ public function update_podcast_details( $id, $post ) { return; } + /** + * Don't trigger this if we've just updated the post + * This is because both actions we're hooking into get triggered in a post update + * So this is to prevent this method from being called twice during a post update. + */ + $cache_key = 'ssp_podcast_updated'; + $podcast_saved = get_transient( $cache_key ); + if ( false !== $podcast_saved ) { + delete_transient( $cache_key ); + return; + } + $castos_handler = new Castos_Handler(); $response = $castos_handler->upload_podcast_to_podmotor( $post ); if ( 'success' === $response['status'] ) { + set_transient( $cache_key, true, 30 ); $podmotor_episode_id = $response['episode_id']; if ( $podmotor_episode_id ) { update_post_meta( $id, 'podmotor_episode_id', $podmotor_episode_id ); From e0e8a0eb3a70e37e3a977972881858254c983e79 Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Mon, 5 Apr 2021 12:52:18 +0300 Subject: [PATCH 17/21] Pre release 2.6.2-beta.3 --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index 46d6b719..5b9d4020 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Mon, 5 Apr 2021 15:06:37 +0300 Subject: [PATCH 18/21] Validate feed cover image #636 --- .../controllers/class-feed-controller.php | 28 +++++++++++++++++-- templates/feed/feed-item.php | 3 ++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/php/classes/controllers/class-feed-controller.php b/php/classes/controllers/class-feed-controller.php index 9b785f53..e45cf47b 100644 --- a/php/classes/controllers/class-feed-controller.php +++ b/php/classes/controllers/class-feed-controller.php @@ -22,8 +22,8 @@ class Feed_Controller extends Controller { /** * Admin_Controller constructor. * - * @param $file main plugin file - * @param $version plugin version + * @param string $file main plugin file + * @param string $version plugin version */ public function __construct( $file, $version ) { parent::__construct( $file, $version ); @@ -40,6 +40,9 @@ public function bootstrap() { // Handle v1.x feed URL as well as feed URLs for default permalinks. add_action( 'init', array( $this, 'redirect_old_feed' ), 11 ); + + // Sanitize the podcast image + add_filter( 'ssp_feed_image', array( $this, 'sanitize_image' ) ); } /** @@ -399,4 +402,25 @@ public function load_feed_template() { // Any functions hooked in here must NOT output any data or else feed will break do_action( 'ssp_after_feed' ); } + + /** + * Sanitizes the image, if it's not valid - change it to empty string + * + * @param string $image_url + * + * @return string + * + * @todo: Get rid of global, use dependency injection + * @var Frontend_Controller $ss_podcasting + */ + public function sanitize_image( $image_url ) { + global $ss_podcasting; + $image_id = attachment_url_to_postid( $image_url ); + + if ( $image_id && ! $ss_podcasting->is_image_valid( $image_id ) ) { + $image_url = ''; + } + + return $image_url; + } } diff --git a/templates/feed/feed-item.php b/templates/feed/feed-item.php index e24ae731..3778b687 100644 --- a/templates/feed/feed-item.php +++ b/templates/feed/feed-item.php @@ -28,6 +28,8 @@ * @var WP_Query $qry */ +use SeriouslySimplePodcasting\Controllers\Frontend_Controller; + // Audio file $audio_file = $ss_podcasting->get_enclosure( get_the_ID() ); if ( get_option( 'permalink_structure' ) ) { @@ -48,6 +50,7 @@ } // Get episode image from post featured image +/** @var Frontend_Controller $ss_podcasting */ global $ss_podcasting; $episode_image = $ss_podcasting->get_episode_image_url( get_the_ID() ); $episode_image = apply_filters( 'ssp_feed_item_image', $episode_image, get_the_ID() ); From a387c8380c173c447ed990bfcb2df91b76eb4ffd Mon Sep 17 00:00:00 2001 From: Sergey Zakharchenko Date: Mon, 5 Apr 2021 15:18:29 +0300 Subject: [PATCH 19/21] Pre release 2.6.2-beta.4 --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index 5b9d4020..94e71713 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Tue, 6 Apr 2021 13:34:59 +0300 Subject: [PATCH 20/21] Preparing release 2.6.2 --- package.json | 2 +- readme.txt | 13 ++++++++++++- seriously-simple-podcasting.php | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index b7dc683c..09d3a133 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "seriously-simple-podcasting", - "version": "2.6.1", + "version": "2.6.2", "main": "build/index.js", "author": "CastosHQ", "devDependencies": { diff --git a/readme.txt b/readme.txt index 384bd1b4..bda4b44f 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: podcast, audio, video, vodcast, rss, mp3, mp4, feed, itunes, podcasting, m Requires at least: 4.4 Tested up to: 5.6.2 Requires PHP: 5.6 -Stable tag: 2.6.1 +Stable tag: 2.6.2 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -159,6 +159,17 @@ You can find complete user and developer documentation (along with the FAQs) on == Changelog == += 2.6.2 = +* 2021-04-06 +* UPDATE SUMMARY: Podcasts synchronization improvements, RSS images +* [UPDATE] Delayed episode uploading to Castos +* [UPDATE] Added helper text to Series area +* [UPDATE] HTML player style improvements +* [UPDATE] Check the Cover Image size dimensions upon upload +* [UPDATE] Added episode specific image to RSS feed +* [FIX] Showing notifications when the episode is added or updated (classic editor) +* [FIX] When the post is duplicated it is not synchronized with Castos + = 2.6.1 = * 2021-03-05 * UPDATE SUMMARY: Improvements, bug fixes for the 2.6 release diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index 94e71713..1243fcd2 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Tue, 6 Apr 2021 13:50:12 +0300 Subject: [PATCH 21/21] Minor: updated tested up to tag --- readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index bda4b44f..5b523eca 100644 --- a/readme.txt +++ b/readme.txt @@ -2,7 +2,7 @@ Contributors: PodcastMotor, psykro, zahardoc, simondowdles, hlashbrooke, whyisjake Tags: podcast, audio, video, vodcast, rss, mp3, mp4, feed, itunes, podcasting, media, stitcher, google play, playlist Requires at least: 4.4 -Tested up to: 5.6.2 +Tested up to: 5.7 Requires PHP: 5.6 Stable tag: 2.6.2 License: GPLv2 or later