From e1d93caee8300e84a38fbb771a4081629c6ee7e2 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Fri, 29 Dec 2017 16:23:50 +0100 Subject: [PATCH 01/24] SUT is right, comma should be =2C --- test/Header/HeaderWrapTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Header/HeaderWrapTest.php b/test/Header/HeaderWrapTest.php index 7f728ec7..c0db33fc 100644 --- a/test/Header/HeaderWrapTest.php +++ b/test/Header/HeaderWrapTest.php @@ -86,7 +86,7 @@ public function testCanBeEncoded() // @codingStandardsIgnoreStart $name = 'Subject'; $value = "[#77675] New Issue:xxxxxxxxx xxxxxxx xxxxxxxx xxxxxxxxxxxxx xxxxxxxxxx xxxxxxxx, tähtaeg xx.xx, xxxx"; - $encoded = "Subject: =?UTF-8?Q?[#77675]=20New=20Issue:xxxxxxxxx=20xxxxxxx=20xxxxxxxx=20?=\r\n =?UTF-8?Q?xxxxxxxxxxxxx=20xxxxxxxxxx=20xxxxxxxx,=20t=C3=A4htaeg=20xx.xx,=20xxxx?="; + $encoded = "Subject: =?UTF-8?Q?[#77675]=20New=20Issue:xxxxxxxxx=20xxxxxxx=20xxxxxxxx=20?=\r\n =?UTF-8?Q?xxxxxxxxxxxxx=20xxxxxxxxxx=20xxxxxxxx=2C=20t=C3=A4htaeg=20?=\r\n =?UTF-8?Q?xx.xx=2C=20xxxx?="; // @codingStandardsIgnoreEnd // $res = HeaderWrap::canBeEncoded($value); From 4d3dba1421b5c9bbee539f60698d3fcec8c2a48c Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Fri, 29 Dec 2017 16:27:35 +0100 Subject: [PATCH 02/24] Adapt .travis.yml to recent ZF standards; add PHP 7.2 --- .travis.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 09844417..837cd06c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ language: php branches: except: - - /^release-\d+\.\d+\.\d+.*$/ + - /^release-.*$/ - /^ghgfk-.*$/ cache: @@ -59,10 +59,19 @@ matrix: - php: 7.1 env: - DEPS=latest + - php: 7.2 + env: + - DEPS=lowest + - php: 7.2 + env: + - DEPS=locked + - php: 7.2 + env: + - DEPS=latest before_install: + - if [[ $TEST_COVERAGE != 'true' ]]; then phpenv config-rm xdebug.ini || return 0 ; fi - travis_retry composer self-update - - if [[ $TRAVIS_PHP_VERSION != "hhvm" && $TEST_COVERAGE != 'true' ]]; then phpenv config-rm xdebug.ini ; fi install: - travis_retry composer install $COMPOSER_ARGS @@ -81,7 +90,7 @@ after_success: - if [[ $DEPLOY_DOCS == "true" ]]; then echo "Preparing to build and deploy documentation" ; ./zf-mkdoc-theme/deploy.sh ; echo "Completed deploying documentation" ; fi after_script: - - if [[ $TEST_COVERAGE == 'true' ]]; then composer upload-coverage ; fi + - if [[ $TEST_COVERAGE == 'true' ]]; then travis_retry composer upload-coverage ; fi notifications: email: false From 408a34064c625ae4210e9f44260a6b969161af30 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Fri, 29 Dec 2017 16:30:07 +0100 Subject: [PATCH 03/24] Fix PHP 7.2 --- src/Header/AbstractAddressList.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Header/AbstractAddressList.php b/src/Header/AbstractAddressList.php index 7c8ce2c7..9447b0ab 100644 --- a/src/Header/AbstractAddressList.php +++ b/src/Header/AbstractAddressList.php @@ -102,6 +102,9 @@ public function getFieldName() protected function idnToAscii($domainName) { if (extension_loaded('intl')) { + if (defined('INTL_IDNA_VARIANT_UTS46')) { + return (idn_to_ascii($domainName, 0, INTL_IDNA_VARIANT_UTS46) ?: $domainName); + } return (idn_to_ascii($domainName) ?: $domainName); } return $domainName; From 240ad96f67ab41d81ee18571201fe1627d5f368a Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Fri, 29 Dec 2017 16:49:31 +0100 Subject: [PATCH 04/24] Remove proxy test --- test/Header/HeaderWrapTest.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/test/Header/HeaderWrapTest.php b/test/Header/HeaderWrapTest.php index c0db33fc..1d2737ae 100644 --- a/test/Header/HeaderWrapTest.php +++ b/test/Header/HeaderWrapTest.php @@ -84,16 +84,10 @@ public function testMimeDecoding() public function testCanBeEncoded() { // @codingStandardsIgnoreStart - $name = 'Subject'; $value = "[#77675] New Issue:xxxxxxxxx xxxxxxx xxxxxxxx xxxxxxxxxxxxx xxxxxxxxxx xxxxxxxx, tähtaeg xx.xx, xxxx"; - $encoded = "Subject: =?UTF-8?Q?[#77675]=20New=20Issue:xxxxxxxxx=20xxxxxxx=20xxxxxxxx=20?=\r\n =?UTF-8?Q?xxxxxxxxxxxxx=20xxxxxxxxxx=20xxxxxxxx=2C=20t=C3=A4htaeg=20?=\r\n =?UTF-8?Q?xx.xx=2C=20xxxx?="; // @codingStandardsIgnoreEnd // $res = HeaderWrap::canBeEncoded($value); $this->assertTrue($res); - - $header = new GenericHeader($name, $value); - $res = $header->toString(); - $this->assertEquals($encoded, $res); } } From fa8b552dd80afe4eb2f68839ec919e186a37d0f4 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Thu, 1 Mar 2018 18:36:27 +0100 Subject: [PATCH 05/24] #189 removed testing for ancient PHP versions --- .travis.yml | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/.travis.yml b/.travis.yml index 837cd06c..6f0f2b96 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,6 @@ env: global: - COMPOSER_ARGS="--no-interaction" - COVERAGE_DEPS="satooshi/php-coveralls" - - LEGACY_DEPS="phpunit/phpunit" - SITE_URL: https://zendframework.github.io/zend-mail - GH_USER_NAME: "Matthew Weier O'Phinney" - GH_USER_EMAIL: matthew@weierophinney.net @@ -28,34 +27,15 @@ env: matrix: fast_finish: true include: - - php: 5.6 + - php: 7.1 env: - DEPS=lowest - - php: 5.6 + - php: 7.1 env: - DEPS=locked - TEST_COVERAGE=true - DEPLOY_DOCS="$(if [[ $TRAVIS_BRANCH == 'master' && $TRAVIS_PULL_REQUEST == 'false' ]]; then echo -n 'true' ; else echo -n 'false' ; fi)" - PATH="$HOME/.local/bin:$PATH" - - php: 5.6 - env: - - DEPS=latest - - php: 7 - env: - - DEPS=lowest - - php: 7 - env: - - DEPS=locked - - CS_CHECK=true - - php: 7 - env: - - DEPS=latest - - php: 7.1 - env: - - DEPS=lowest - - php: 7.1 - env: - - DEPS=locked - php: 7.1 env: - DEPS=latest @@ -75,7 +55,6 @@ before_install: install: - travis_retry composer install $COMPOSER_ARGS - - if [[ $TRAVIS_PHP_VERSION =~ ^5.6 ]]; then travis_retry composer update $COMPOSER_ARGS --with-dependencies $LEGACY_DEPS ; fi - if [[ $DEPS == 'latest' ]]; then travis_retry composer update $COMPOSER_ARGS ; fi - if [[ $DEPS == 'lowest' ]]; then travis_retry composer update --prefer-lowest --prefer-stable $COMPOSER_ARGS ; fi - if [[ $TEST_COVERAGE == 'true' ]]; then travis_retry composer require --dev $COMPOSER_ARGS $COVERAGE_DEPS ; fi From c6eaea2ee89af7a35b79137483a0cd3b3afbe275 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Thu, 1 Mar 2018 18:37:19 +0100 Subject: [PATCH 06/24] #189 bumped minimum PHP version and minimum zend-validator dependency version --- composer.json | 4 +- composer.lock | 643 +++++++++++++++++++++++++++++++------------------- 2 files changed, 399 insertions(+), 248 deletions(-) diff --git a/composer.json b/composer.json index dbfca538..e446d1dd 100644 --- a/composer.json +++ b/composer.json @@ -13,12 +13,12 @@ } }, "require": { - "php": "^7.0 || ^5.6", + "php": "^7.1", "ext-iconv": "*", "zendframework/zend-loader": "^2.5", "zendframework/zend-mime": "^2.5", "zendframework/zend-stdlib": "^2.7 || ^3.0", - "zendframework/zend-validator": "^2.6" + "zendframework/zend-validator": "^2.8" }, "require-dev": { "zendframework/zend-config": "^2.6", diff --git a/composer.lock b/composer.lock index c6bde4c0..5a8c4d38 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "99fb0a39466ee5de4118b1ae973dda77", + "content-hash": "4aefee88e7c6a4e959292415197529e5", "packages": [ { "name": "container-interop/container-interop", @@ -132,24 +132,24 @@ }, { "name": "zendframework/zend-mime", - "version": "2.6.1", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-mime.git", - "reference": "9e53a97a3c190d45cc5d584daaaf487d509a9285" + "reference": "5db38e92f8a6c7c5e25c8afce6e2d0bd49340c5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-mime/zipball/9e53a97a3c190d45cc5d584daaaf487d509a9285", - "reference": "9e53a97a3c190d45cc5d584daaaf487d509a9285", + "url": "https://api.github.com/repos/zendframework/zend-mime/zipball/5db38e92f8a6c7c5e25c8afce6e2d0bd49340c5f", + "reference": "5db38e92f8a6c7c5e25c8afce6e2d0bd49340c5f", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", + "php": "^5.6 || ^7.0", "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "require-dev": { - "phpunit/phpunit": "^4.7 || ^5.7", + "phpunit/phpunit": "^5.7.21 || ^6.3", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-mail": "^2.6" }, @@ -159,8 +159,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev", - "dev-develop": "2.7-dev" + "dev-master": "2.7-dev", + "dev-develop": "2.8-dev" } }, "autoload": { @@ -172,12 +172,14 @@ "license": [ "BSD-3-Clause" ], + "description": "Create and parse MIME messages and parts", "homepage": "https://github.com/zendframework/zend-mime", "keywords": [ + "ZendFramework", "mime", - "zf2" + "zf" ], - "time": "2017-01-16T16:43:38+00:00" + "time": "2017-11-28T15:02:22+00:00" }, { "name": "zendframework/zend-stdlib", @@ -226,16 +228,16 @@ }, { "name": "zendframework/zend-validator", - "version": "2.9.1", + "version": "2.10.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-validator.git", - "reference": "c9a8160a0191e34bb98ac1ecd4e453391c424bb3" + "reference": "38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/c9a8160a0191e34bb98ac1ecd4e453391c424bb3", - "reference": "c9a8160a0191e34bb98ac1ecd4e453391c424bb3", + "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9", + "reference": "38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9", "shasum": "" }, "require": { @@ -254,7 +256,7 @@ "zendframework/zend-i18n": "^2.6", "zendframework/zend-math": "^2.6", "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-session": "^2.6.2", + "zendframework/zend-session": "^2.8", "zendframework/zend-uri": "^2.5" }, "suggest": { @@ -264,14 +266,14 @@ "zendframework/zend-i18n-resources": "Translations of validator messages", "zendframework/zend-math": "Zend\\Math component, required by the Csrf validator", "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", - "zendframework/zend-session": "Zend\\Session component, required by the Csrf validator", + "zendframework/zend-session": "Zend\\Session component, ^2.8; required by the Csrf validator", "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.9-dev", - "dev-develop": "2.10-dev" + "dev-master": "2.10.x-dev", + "dev-develop": "2.11.x-dev" }, "zf": { "component": "Zend\\Validator", @@ -293,38 +295,38 @@ "validator", "zf2" ], - "time": "2017-05-17T22:06:13+00:00" + "time": "2018-02-01T17:05:33+00:00" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -349,41 +351,44 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2017-07-22T11:58:36+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.6.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102" + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" }, "type": "library", "autoload": { "psr-4": { "DeepCopy\\": "src/DeepCopy/" - } + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Create deep copies (clones) of your objects", - "homepage": "https://github.com/myclabs/DeepCopy", "keywords": [ "clone", "copy", @@ -391,20 +396,122 @@ "object", "object graph" ], - "time": "2017-04-12T18:52:22+00:00" + "time": "2017-10-19T19:58:43+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "1.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", "shasum": "" }, "require": { @@ -445,33 +552,39 @@ "reflection", "static analysis" ], - "time": "2015-12-27T11:43:31+00:00" + "time": "2017-09-11T18:02:19+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.1.1", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.0", + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -490,24 +603,24 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30T07:12:33+00:00" + "time": "2017-11-30T07:14:17+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.2.1", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", "shasum": "" }, "require": { - "php": ">=5.5", + "php": "^5.5 || ^7.0", "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { @@ -537,37 +650,37 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-11-25T06:54:22+00:00" + "time": "2017-07-14T14:27:02+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.7.0", + "version": "1.7.5", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401", + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", "sebastian/comparator": "^1.1|^2.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.7.x-dev" } }, "autoload": { @@ -600,44 +713,44 @@ "spy", "stub" ], - "time": "2017-03-02T20:05:34+00:00" + "time": "2018-02-19T10:16:54+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "4.0.8", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1", + "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^6.0" }, "suggest": { - "ext-xdebug": "^2.5.1" + "ext-xdebug": "^2.5.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "5.3.x-dev" } }, "autoload": { @@ -652,7 +765,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -663,20 +776,20 @@ "testing", "xunit" ], - "time": "2017-04-02T07:44:40+00:00" + "time": "2017-12-06T09:29:45+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", "shasum": "" }, "require": { @@ -710,7 +823,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2017-11-27T13:52:08+00:00" }, { "name": "phpunit/php-text-template", @@ -804,29 +917,29 @@ }, { "name": "phpunit/php-token-stream", - "version": "1.4.11", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -849,20 +962,20 @@ "keywords": [ "tokenizer" ], - "time": "2017-02-27T10:12:30+00:00" + "time": "2017-11-27T05:48:46+00:00" }, { "name": "phpunit/phpunit", - "version": "5.7.20", + "version": "6.5.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3cb94a5f8c07a03c8b7527ed7468a2926203f58b" + "reference": "6bd77b57707c236833d2b57b968e403df060c9d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3cb94a5f8c07a03c8b7527ed7468a2926203f58b", - "reference": "3cb94a5f8c07a03c8b7527ed7468a2926203f58b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6bd77b57707c236833d2b57b968e403df060c9d9", + "reference": "6bd77b57707c236833d2b57b968e403df060c9d9", "shasum": "" }, "require": { @@ -871,33 +984,35 @@ "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "~1.0.3|~2.0", - "symfony/yaml": "~2.1|~3.0" + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.5", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" }, "require-dev": { "ext-pdo": "*" }, "suggest": { "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" + "phpunit/php-invoker": "^1.1" }, "bin": [ "phpunit" @@ -905,7 +1020,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7.x-dev" + "dev-master": "6.5.x-dev" } }, "autoload": { @@ -931,33 +1046,33 @@ "testing", "xunit" ], - "time": "2017-05-22T07:42:55+00:00" + "time": "2018-02-26T07:01:09+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "3.4.3", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", - "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" }, "conflict": { - "phpunit/phpunit": "<5.4.0" + "phpunit/phpunit": "<6.0" }, "require-dev": { - "phpunit/phpunit": "^5.4" + "phpunit/phpunit": "^6.5" }, "suggest": { "ext-soap": "*" @@ -965,7 +1080,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2.x-dev" + "dev-master": "5.0.x-dev" } }, "autoload": { @@ -980,7 +1095,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -990,7 +1105,7 @@ "mock", "xunit" ], - "time": "2016-12-08T20:27:08+00:00" + "time": "2018-01-06T05:45:45+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -1039,30 +1154,30 @@ }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { @@ -1093,38 +1208,38 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2018-02-01T13:46:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1151,32 +1266,32 @@ "keywords": [ "diff" ], - "time": "2017-05-22T07:24:03+00:00" + "time": "2017-08-03T08:09:46+00:00" }, { "name": "sebastian/environment", - "version": "2.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -1201,34 +1316,34 @@ "environment", "hhvm" ], - "time": "2016-11-26T07:53:53+00:00" + "time": "2017-07-01T08:51:00+00:00" }, { "name": "sebastian/exporter", - "version": "2.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -1268,27 +1383,27 @@ "export", "exporter" ], - "time": "2016-11-19T08:54:04+00:00" + "time": "2017-04-03T13:19:02+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.0" }, "suggest": { "ext-uopz": "*" @@ -1296,7 +1411,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1319,33 +1434,34 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", - "version": "2.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1365,32 +1481,77 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1418,7 +1579,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" + "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", @@ -1584,72 +1745,57 @@ "time": "2017-05-22T02:43:20+00:00" }, { - "name": "symfony/yaml", - "version": "v3.3.2", + "name": "theseer/tokenizer", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "9752a30000a8ca9f4b34b5227d15d0101b96b063" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/9752a30000a8ca9f4b34b5227d15d0101b96b063", - "reference": "9752a30000a8ca9f4b34b5227d15d0101b96b063", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", "shasum": "" }, "require": { - "php": ">=5.5.9" - }, - "require-dev": { - "symfony/console": "~2.8|~3.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2017-06-02T22:05:06+00:00" + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" }, { "name": "webmozart/assert", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", "shasum": "" }, "require": { @@ -1686,7 +1832,7 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2018-01-29T19:49:41+00:00" }, { "name": "zendframework/zend-coding-standard", @@ -1875,16 +2021,16 @@ }, { "name": "zendframework/zend-servicemanager", - "version": "3.3.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-servicemanager.git", - "reference": "c3036efb81f71bfa36cc9962ee5d4474f36581d0" + "reference": "9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/c3036efb81f71bfa36cc9962ee5d4474f36581d0", - "reference": "c3036efb81f71bfa36cc9962ee5d4474f36581d0", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42", + "reference": "9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42", "shasum": "" }, "require": { @@ -1898,10 +2044,10 @@ "psr/container-implementation": "^1.0" }, "require-dev": { - "mikey179/vfsstream": "^1.6", + "mikey179/vfsstream": "^1.6.5", "ocramius/proxy-manager": "^1.0 || ^2.0", - "phpbench/phpbench": "^0.10.0", - "phpunit/phpunit": "^5.7 || ^6.0.6", + "phpbench/phpbench": "^0.13.0", + "phpunit/phpunit": "^5.7.25 || ^6.4.4", "zendframework/zend-coding-standard": "~1.0.0" }, "suggest": { @@ -1916,7 +2062,7 @@ "extra": { "branch-alias": { "dev-master": "3.3-dev", - "dev-develop": "3.4-dev" + "dev-develop": "4.0-dev" } }, "autoload": { @@ -1928,13 +2074,18 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-servicemanager", + "description": "Factory-Driven Dependency Injection Container", "keywords": [ + "PSR-11", + "ZendFramework", + "dependency-injection", + "di", + "dic", "service-manager", "servicemanager", "zf" ], - "time": "2017-03-01T22:08:02+00:00" + "time": "2018-01-29T16:48:37+00:00" } ], "aliases": [], @@ -1943,7 +2094,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.0 || ^5.6", + "php": "^7.1", "ext-iconv": "*" }, "platform-dev": [] From c26ebcc0823bf8ef1be0a9480a867221e3fd8d51 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Wed, 2 Aug 2017 15:10:42 +0200 Subject: [PATCH 07/24] Protocol\Smtp cleanup --- src/Protocol/Smtp.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Protocol/Smtp.php b/src/Protocol/Smtp.php index dfa5e329..f2c1e5ef 100644 --- a/src/Protocol/Smtp.php +++ b/src/Protocol/Smtp.php @@ -248,8 +248,6 @@ protected function ehlo($host) } catch (Exception\ExceptionInterface $e) { $this->_send('HELO ' . $host); $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 - } catch (\Exception $e) { - throw $e; } } From e71660f9359bf70f396c8a929d113b77b3eff626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Wed, 28 Jun 2017 00:33:48 +0300 Subject: [PATCH 08/24] Update CONTRIBUTING.md fix incomplete example --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aeadd2d3..143117e4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -50,7 +50,7 @@ To run tests: ```console $ git clone git@github.com:zendframework/zend-mail.git - $ cd + $ cd zend-mail ``` - Install dependencies via composer: From d203736d8b408d93aabf0c73ce896025e2999199 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Fri, 5 Jan 2018 10:04:11 +0100 Subject: [PATCH 09/24] PHPDoc: Message type mismatch fix --- src/Message.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Message.php b/src/Message.php index 55e14bb1..53342cc2 100644 --- a/src/Message.php +++ b/src/Message.php @@ -415,7 +415,7 @@ public function setBody($body) /** * Return the currently set message body * - * @return object + * @return string|object */ public function getBody() { From afbd424cfe76e1c23e56fc6b59bae56fe033d518 Mon Sep 17 00:00:00 2001 From: Marc Laporte Date: Tue, 24 Oct 2017 04:50:54 -0400 Subject: [PATCH 10/24] Fix a typo --- doc/book/read.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/book/read.md b/doc/book/read.md index a25c591e..4f50cb2f 100644 --- a/doc/book/read.md +++ b/doc/book/read.md @@ -366,7 +366,7 @@ if (! $message->hasFlag('$SpamTested')) { ## Using folders All storage adapters except POP3 support folders (also called *mailboxes*). The -interface implemented by all aadapters supporting folders is called +interface implemented by all adapters supporting folders is called `Zend\Mail\Storage\Folder\FolderInterface`. Each also supports an optional configuration parameter called `folder`, which is the folder selected after login. From 4f6153626013754358574a0bd85ab4b5f05ece51 Mon Sep 17 00:00:00 2001 From: Daniel Abyan Date: Fri, 15 Sep 2017 18:13:48 +0400 Subject: [PATCH 11/24] Add PHPDoc comments In some cases, the IDE can not recognize the types of variables. To solve this problem, I've added comments in some places. And I added comments for the following methods - Add missing comment for method GenericHeader::fromString - Add PHPDoc @return comment for Smtp::setUseCompleteQuit() method - PHPDoc @return comment does not apply to the constructor because remove this comment for Address::__construct - Add Mime\Message type for Mail\Message::$body property. --- src/Address.php | 1 - src/Header/GenericHeader.php | 4 ++++ src/Headers.php | 6 ++++++ src/Message.php | 13 +++++++++++-- src/Protocol/Smtp.php | 1 + src/Transport/Sendmail.php | 3 ++- 6 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/Address.php b/src/Address.php index 21409933..97039bbc 100644 --- a/src/Address.php +++ b/src/Address.php @@ -23,7 +23,6 @@ class Address implements Address\AddressInterface * @param string $email * @param null|string $name * @throws Exception\InvalidArgumentException - * @return Address */ public function __construct($email, $name = null) { diff --git a/src/Header/GenericHeader.php b/src/Header/GenericHeader.php index b2bb83d5..bff50bf5 100644 --- a/src/Header/GenericHeader.php +++ b/src/Header/GenericHeader.php @@ -30,6 +30,10 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface */ protected $encoding; + /** + * @param string $headerLine + * @return GenericHeader + */ public static function fromString($headerLine) { list($name, $value) = self::splitHeaderLine($headerLine); diff --git a/src/Headers.php b/src/Headers.php index 593d1358..66a03637 100644 --- a/src/Headers.php +++ b/src/Headers.php @@ -14,6 +14,8 @@ use Iterator; use Traversable; use Zend\Loader\PluginClassLocator; +use Zend\Mail\Header\GenericHeader; +use Zend\Mail\Header\HeaderInterface; /** * Basic mail headers collection functionality @@ -478,6 +480,8 @@ public function forceLoading() public function loadHeader($headerLine) { list($name, ) = Header\GenericHeader::splitHeaderLine($headerLine); + + /** @var HeaderInterface $class */ $class = $this->getPluginClassLoader()->load($name) ?: Header\GenericHeader::class; return $class::fromString($headerLine); } @@ -491,6 +495,8 @@ protected function lazyLoadHeader($index) $current = $this->headers[$index]; $key = $this->headersKeys[$index]; + + /** @var GenericHeader $class */ $class = ($this->getPluginClassLoader()->load($key)) ?: 'Zend\Mail\Header\GenericHeader'; $encoding = $current->getEncoding(); diff --git a/src/Message.php b/src/Message.php index 53342cc2..62e61d52 100644 --- a/src/Message.php +++ b/src/Message.php @@ -10,6 +10,8 @@ namespace Zend\Mail; use Traversable; +use Zend\Mail\Header\ContentType; +use Zend\Mail\Header\Sender; use Zend\Mime; class Message @@ -17,7 +19,7 @@ class Message /** * Content of the message * - * @var string|object + * @var string|object|Mime\Message */ protected $body; @@ -302,6 +304,7 @@ public function getReplyTo() */ public function setSender($emailOrAddress, $name = null) { + /** @var Sender $header */ $header = $this->getHeaderByName('sender', __NAMESPACE__ . '\Header\Sender'); $header->setAddress($emailOrAddress, $name); return $this; @@ -318,6 +321,8 @@ public function getSender() if (! $headers->has('sender')) { return null; } + + /** @var Sender $header */ $header = $this->getHeaderByName('sender', __NAMESPACE__ . '\Header\Sender'); return $header->getAddress(); } @@ -397,6 +402,8 @@ public function setBody($body) // Multipart content headers if ($this->body->isMultiPart()) { $mime = $this->body->getMime(); + + /** @var ContentType $header */ $header = $this->getHeaderByName('content-type', __NAMESPACE__ . '\Header\ContentType'); $header->setType('multipart/mixed'); $header->addParameter('boundary', $mime->boundary()); @@ -415,7 +422,7 @@ public function setBody($body) /** * Return the currently set message body * - * @return string|object + * @return object|string|Mime\Message */ public function getBody() { @@ -553,6 +560,8 @@ public function toString() public static function fromString($rawMessage) { $message = new static(); + + /** @var Headers $headers */ $headers = null; $content = null; Mime\Decode::splitMessage($rawMessage, $headers, $content, Headers::EOL); diff --git a/src/Protocol/Smtp.php b/src/Protocol/Smtp.php index f2c1e5ef..3137e55d 100644 --- a/src/Protocol/Smtp.php +++ b/src/Protocol/Smtp.php @@ -160,6 +160,7 @@ public function __construct($host = '127.0.0.1', $port = null, array $config = n * Set whether or not send QUIT command * * @param int $useCompleteQuit use complete quit + * @return bool */ public function setUseCompleteQuit($useCompleteQuit) { diff --git a/src/Transport/Sendmail.php b/src/Transport/Sendmail.php index ed86ac6a..265fcf7c 100644 --- a/src/Transport/Sendmail.php +++ b/src/Transport/Sendmail.php @@ -152,6 +152,7 @@ protected function prepareRecipients(Mail\Message $message) throw new Exception\RuntimeException('Invalid email; contains no "To" header'); } + /** @var Mail\Header\To $to */ $to = $headers->get('to'); $list = $to->getAddressList(); if (0 == count($list)) { @@ -225,7 +226,7 @@ protected function prepareHeaders(Mail\Message $message) $headers->removeHeader('To'); $headers->removeHeader('Subject'); - // Sanitize the From header + /** @var Mail\Header\From $from Sanitize the From header*/ $from = $headers->get('From'); if ($from) { foreach ($from->getAddressList() as $address) { From fb82558d367b6eebaaec261718881bf85460f14a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Mon, 3 Apr 2017 18:01:28 +0300 Subject: [PATCH 12/24] use strpos for fixed string matching refs 8d18478 --- src/Transport/Sendmail.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Transport/Sendmail.php b/src/Transport/Sendmail.php index 265fcf7c..421ecd66 100644 --- a/src/Transport/Sendmail.php +++ b/src/Transport/Sendmail.php @@ -230,7 +230,7 @@ protected function prepareHeaders(Mail\Message $message) $from = $headers->get('From'); if ($from) { foreach ($from->getAddressList() as $address) { - if (preg_match('/\\\"/', $address->getEmail())) { + if (strpos($address->getEmail(), '\\"') !== false) { throw new Exception\RuntimeException('Potential code injection in From header'); } } From 0888aee965cc1d182790f5a343788883386b5063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Sun, 14 May 2017 16:11:58 +0300 Subject: [PATCH 13/24] fix and test ">" being part of email "comment". #127 Example Email-header: "Foo Description: The example email-header should be valid according to https://tools.ietf.org/html/rfc2822#section-3.4 but the function AdressList.php/addFromString matches it incorrect. The result has the following form: "bar .*?)<(?P[^>]+)>|(?P.+))$/', $address, $matches)) { + if (! preg_match('/^((?P.*)<(?P[^>]+)>|(?P.+))$/', $address, $matches)) { throw new Exception\InvalidArgumentException('Invalid address format'); } diff --git a/test/AddressListTest.php b/test/AddressListTest.php index 8ba08879..0386d31a 100644 --- a/test/AddressListTest.php +++ b/test/AddressListTest.php @@ -15,10 +15,13 @@ /** * @group Zend_Mail - * @covers Zend\Mail\AddressList + * @covers \Zend\Mail\AddressList */ class AddressListTest extends TestCase { + /** @var AddressList $list */ + private $list; + public function setUp() { $this->list = new AddressList(); diff --git a/test/HeadersTest.php b/test/HeadersTest.php index 367ec6c2..be5a55ce 100644 --- a/test/HeadersTest.php +++ b/test/HeadersTest.php @@ -15,7 +15,7 @@ /** * @group Zend_Mail - * @covers Zend\Mail\Headers + * @covers \Zend\Mail\Headers */ class HeadersTest extends TestCase { @@ -483,4 +483,36 @@ public function testAddressListGetEncodedFieldValueWithUtf8Domain() $encodedValue = $to->getFieldValue(Header\HeaderInterface::FORMAT_ENCODED); $this->assertEquals('local-part@xn---umlaut-4wa.de', $encodedValue); } + + /** + * Test ">" being part of email "comment". + * + * Example Email-header: + * "Foo '); + + $address = $to->getAddressList()->get('foo.bar@test.com'); + $this->assertEquals('õlu getName()); + $this->assertEquals('foo.bar@test.com', $address->getEmail()); + + $encodedValue = $to->getFieldValue(Header\HeaderInterface::FORMAT_ENCODED); + $this->assertEquals('=?UTF-8?Q?=C3=B5lu=20', $encodedValue); + + $encodedValue = $to->getFieldValue(Header\HeaderInterface::FORMAT_RAW); + // FIXME: shouldn't the "name" part be in quotes? + $this->assertEquals('õlu ', $encodedValue); + } } From 4c785563fe455c625b543ac5ea6eea29fb2589c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Tue, 13 Jun 2017 00:54:18 +0300 Subject: [PATCH 14/24] fix MessageId having double brackets this got broken from pull/86 when header lazyloading was omitted --- src/Header/MessageId.php | 2 ++ test/Storage/MessageTest.php | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/Header/MessageId.php b/src/Header/MessageId.php index ae8e12e9..e32491a4 100644 --- a/src/Header/MessageId.php +++ b/src/Header/MessageId.php @@ -68,6 +68,8 @@ public function setId($id = null) { if ($id === null) { $id = $this->createMessageId(); + } else { + $id = trim($id, '<>'); } if (! HeaderValue::isValid($id) diff --git a/test/Storage/MessageTest.php b/test/Storage/MessageTest.php index f1f1357c..26c2e49b 100644 --- a/test/Storage/MessageTest.php +++ b/test/Storage/MessageTest.php @@ -111,6 +111,19 @@ public function testNoHeaderMessage() $this->assertEquals(substr($message->getContent(), 0, 6), "\t $this->file]); + $messageId = $message->messageId; + $this->assertEquals('', $messageId); + } + public function testMultipleHeader() { $raw = file_get_contents($this->file); From 1b3697c368b150a049f36cea6a8d06548881262e Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 21 Jul 2017 01:21:57 +0700 Subject: [PATCH 15/24] Fixes #73 : allow Message to not has "To" header --- src/Transport/Sendmail.php | 10 ++++++++-- test/Transport/SendmailTest.php | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/Transport/Sendmail.php b/src/Transport/Sendmail.php index 421ecd66..61ff1a04 100644 --- a/src/Transport/Sendmail.php +++ b/src/Transport/Sendmail.php @@ -148,8 +148,14 @@ protected function prepareRecipients(Mail\Message $message) { $headers = $message->getHeaders(); - if (! $headers->has('to')) { - throw new Exception\RuntimeException('Invalid email; contains no "To" header'); + if (! ($hasTo = $headers->has('to')) && ! $headers->has('cc') && ! $headers->has('bcc')) { + throw new Exception\RuntimeException( + 'Invalid email; contains no at least one of "To", "Cc", and "Bcc" header' + ); + } + + if (! $hasTo) { + return ''; } /** @var Mail\Header\To $to */ diff --git a/test/Transport/SendmailTest.php b/test/Transport/SendmailTest.php index 6a12e9c2..db34706f 100644 --- a/test/Transport/SendmailTest.php +++ b/test/Transport/SendmailTest.php @@ -223,4 +223,38 @@ public function testTrimmedParameters() $this->assertSame('-R hdrs', $r->getValue($this->transport)); } + + public function testAllowMessageWithEmptyToHeaderButHasCcHeader() + { + $message = new Message(); + $message->addCc('matthew@zend.com') + ->setSender('ralph.schindler@zend.com', 'Ralph Schindler') + ->setSubject('Testing Zend\Mail\Transport\Sendmail') + ->setBody('This is only a test.'); + + $this->transport->send($message); + } + + public function testAllowMessageWithEmptyToHeaderButHasBccHeader() + { + $message = new Message(); + $message->addBcc('zf-crteam@lists.zend.com', 'CR-Team, ZF Project') + ->setSender('ralph.schindler@zend.com', 'Ralph Schindler') + ->setSubject('Testing Zend\Mail\Transport\Sendmail') + ->setBody('This is only a test.'); + + $this->transport->send($message); + } + + public function testDonotAllowMessageDoesnotHasToAndCcAndBccHeader() + { + $this->expectException('Zend\Mail\Exception\RuntimeException'); + + $message = new Message(); + $message->setSender('ralph.schindler@zend.com', 'Ralph Schindler') + ->setSubject('Testing Zend\Mail\Transport\Sendmail') + ->setBody('This is only a test.'); + + $this->transport->send($message); + } } From 12115e571d57bf0015e93478d48dfefd3eb5c6f9 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 28 Feb 2018 19:44:30 +0700 Subject: [PATCH 16/24] rename tests to "testDoNotAllowMessageWithoutToAndCcAndBccHeaders" and move expectException() before transport->send() call --- test/Transport/SendmailTest.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/Transport/SendmailTest.php b/test/Transport/SendmailTest.php index db34706f..0e365e33 100644 --- a/test/Transport/SendmailTest.php +++ b/test/Transport/SendmailTest.php @@ -246,15 +246,14 @@ public function testAllowMessageWithEmptyToHeaderButHasBccHeader() $this->transport->send($message); } - public function testDonotAllowMessageDoesnotHasToAndCcAndBccHeader() + public function testDoNotAllowMessageWithoutToAndCcAndBccHeaders() { - $this->expectException('Zend\Mail\Exception\RuntimeException'); - $message = new Message(); $message->setSender('ralph.schindler@zend.com', 'Ralph Schindler') ->setSubject('Testing Zend\Mail\Transport\Sendmail') ->setBody('This is only a test.'); + $this->expectException(RuntimeException::class); $this->transport->send($message); } } From f403b563192b54ebe7e2fa6ff31d22d9fb41f523 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 28 Feb 2018 19:46:02 +0700 Subject: [PATCH 17/24] move $hasTo variable assignment before if statement --- src/Transport/Sendmail.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Transport/Sendmail.php b/src/Transport/Sendmail.php index 61ff1a04..08511a27 100644 --- a/src/Transport/Sendmail.php +++ b/src/Transport/Sendmail.php @@ -148,7 +148,8 @@ protected function prepareRecipients(Mail\Message $message) { $headers = $message->getHeaders(); - if (! ($hasTo = $headers->has('to')) && ! $headers->has('cc') && ! $headers->has('bcc')) { + $hasTo = $headers->has('to'); + if (! $hasTo && ! $headers->has('cc') && ! $headers->has('bcc')) { throw new Exception\RuntimeException( 'Invalid email; contains no at least one of "To", "Cc", and "Bcc" header' ); From a7a0d90d7bebabfe75b21b4c63f84a84adab4b96 Mon Sep 17 00:00:00 2001 From: Arvydas K Date: Fri, 10 Nov 2017 12:36:44 +0200 Subject: [PATCH 18/24] added missing new keyword --- doc/book/read.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/book/read.md b/doc/book/read.md index 4f50cb2f..26d3c670 100644 --- a/doc/book/read.md +++ b/doc/book/read.md @@ -24,7 +24,7 @@ described in the ["Working with messages"](#working-with-messages) section. ```php use Zend\Mail\Storage\Pop3; -$mail = Pop3([ +$mail = new Pop3([ 'host' => 'localhost', 'user' => 'test', 'password' => 'test', @@ -70,7 +70,7 @@ use Zend\Mail\Storage\Imap; use Zend\Mail\Storage\Pop3; // Connecting with Pop3: -$mail = Pop3([ +$mail = new Pop3([ 'host' => 'example.com', 'user' => 'test', 'password' => 'test', @@ -389,7 +389,7 @@ use Zend\Mail\Storage\Folder; use Zend\Mail\Storage\Imap; // mbox with folders: -$mail = Folder\Mbox(['dirname' => '/home/test/mail/']); +$mail = new Folder\Mbox(['dirname' => '/home/test/mail/']); // mbox with a default folder not called INBOX; also works // with the maildir and IMAP implementations. From e7c1a253967b38f503fbfa55969e0243254056da Mon Sep 17 00:00:00 2001 From: webimpress Date: Fri, 15 Dec 2017 07:40:27 +0000 Subject: [PATCH 19/24] Updated to php-coveralls/php-coveralls With version 2 package has been renamed from "satooshi/php-coveralls" to "php-coveralls/php-coveralls", and the script has been renamed from "coveralls" to "php-coveralls" --- .travis.yml | 4 ++-- composer.json | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6f0f2b96..334c2b4c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ cache: env: global: - COMPOSER_ARGS="--no-interaction" - - COVERAGE_DEPS="satooshi/php-coveralls" + - COVERAGE_DEPS="php-coveralls/php-coveralls" - SITE_URL: https://zendframework.github.io/zend-mail - GH_USER_NAME: "Matthew Weier O'Phinney" - GH_USER_EMAIL: matthew@weierophinney.net @@ -69,7 +69,7 @@ after_success: - if [[ $DEPLOY_DOCS == "true" ]]; then echo "Preparing to build and deploy documentation" ; ./zf-mkdoc-theme/deploy.sh ; echo "Completed deploying documentation" ; fi after_script: - - if [[ $TEST_COVERAGE == 'true' ]]; then travis_retry composer upload-coverage ; fi + - if [[ $TEST_COVERAGE == 'true' ]]; then travis_retry php vendor/bin/php-coveralls -v ; fi notifications: email: false diff --git a/composer.json b/composer.json index e446d1dd..e13b1acd 100644 --- a/composer.json +++ b/composer.json @@ -57,7 +57,6 @@ "cs-check": "phpcs", "cs-fix": "phpcbf", "test": "phpunit --colors=always", - "test-coverage": "phpunit --colors=always --coverage-clover clover.xml", - "upload-coverage": "coveralls -v" + "test-coverage": "phpunit --colors=always --coverage-clover clover.xml" } } From 88fb9e15114b0c0a5b21fe5e373e8c31bb18aa63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Thu, 28 Dec 2017 23:00:28 +0200 Subject: [PATCH 20/24] unfold before calling iconv_mime_decode --- src/Header/HeaderWrap.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Header/HeaderWrap.php b/src/Header/HeaderWrap.php index 2a0b838f..a7361b0f 100644 --- a/src/Header/HeaderWrap.php +++ b/src/Header/HeaderWrap.php @@ -103,6 +103,13 @@ public static function mimeEncodeValue($value, $encoding, $lineLength = 998) */ public static function mimeDecodeValue($value) { + // unfold first, because iconv_mime_decode is discarding "\n" with no apparent reason + // making the resulting value no longer valid. + + // see https://tools.ietf.org/html/rfc2822#section-2.2.3 about unfolding + $parts = explode(Headers::FOLDING, $value); + $value = implode(' ', $parts); + $decodedValue = iconv_mime_decode($value, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8'); return $decodedValue; From 93ee00c048965adc728a673d89dfe0e1d60acdaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Thu, 28 Dec 2017 23:04:52 +0200 Subject: [PATCH 21/24] add unit test covering the scenario --- test/Header/HeaderWrapTest.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/Header/HeaderWrapTest.php b/test/Header/HeaderWrapTest.php index 1d2737ae..c25fd186 100644 --- a/test/Header/HeaderWrapTest.php +++ b/test/Header/HeaderWrapTest.php @@ -12,6 +12,7 @@ use PHPUnit\Framework\TestCase; use Zend\Mail\Header\GenericHeader; use Zend\Mail\Header\HeaderWrap; +use Zend\Mail\Storage; /** * @group Zend_Mail @@ -74,6 +75,26 @@ public function testMimeDecoding() $this->assertEquals($expected, $decoded); } + /** + * Test that header lazy-loading doesn't break later header access + * because undocumented behavior in iconv_mime_decode() + * @see https://github.com/zendframework/zend-mail/pull/187 + */ + public function testMimeDecodeBreakageBug() + { + $headerValue = "v=1; a=rsa-sha25; c=relaxed/simple; d=example.org; h=\r\n\tcontent-language:content-type:content-type:in-reply-to"; + $headers = "DKIM-Signature: {$headerValue}"; + + $message = new Storage\Message(['headers' => $headers, 'content' => 'irrelevant']); + $headers = $message->getHeaders(); + // calling toString will lazy load all headers + // and would break DKIM-Signature header access + $headers->toString(); + + $header = $headers->get('DKIM-Signature'); + $this->assertEquals('v=1; a=rsa-sha25; c=relaxed/simple; d=example.org; h= content-language:content-type:content-type:in-reply-to', $header->getFieldValue()); + } + /** * Test that fails with HeaderWrap::canBeEncoded at lowest level: * iconv_mime_encode(): Unknown error (7) From 73cb39e1f7d84dd89e992ad05affc2d553fc51df Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Thu, 1 Mar 2018 19:37:58 +0100 Subject: [PATCH 22/24] #189 bumped zend-validator dependency, as otherwise `idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated` deprecation notices occur --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e13b1acd..d9bb97f4 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "zendframework/zend-loader": "^2.5", "zendframework/zend-mime": "^2.5", "zendframework/zend-stdlib": "^2.7 || ^3.0", - "zendframework/zend-validator": "^2.8" + "zendframework/zend-validator": "^2.10.2" }, "require-dev": { "zendframework/zend-config": "^2.6", From 1a7d5322e47234001bf8185963c90e270fb6b064 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Thu, 1 Mar 2018 19:53:07 +0100 Subject: [PATCH 23/24] Committing updated lock hash (yes, I screwed up the `composer.json` change) --- composer.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.lock b/composer.lock index 5a8c4d38..decc288b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "4aefee88e7c6a4e959292415197529e5", + "content-hash": "13baa8855e605e51fdf2c2e22c73b4b1", "packages": [ { "name": "container-interop/container-interop", From 956cd6388ac49cd5068144c1b5cfb51254aebe3c Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Thu, 1 Mar 2018 19:54:04 +0100 Subject: [PATCH 24/24] Committing changelog for release 2.9.0 --- CHANGELOG.md | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f583f1b3..07e60eb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file, in reverse chronological order by release. -## 2.9.0 - TBD +## 3.0.0 - TBD ### Added @@ -20,7 +20,7 @@ All notable changes to this project will be documented in this file, in reverse - Nothing. -## 2.8.1 - TBD +## 2.9.1 - TBD ### Added @@ -38,6 +38,42 @@ All notable changes to this project will be documented in this file, in reverse - Nothing. +## 2.9.0 - TBD + +### Added + +- [#177](https://github.com/zendframework/zend-mail/issues/177) + [#181](https://github.com/zendframework/zend-mail/pull/181) + [#192](https://github.com/zendframework/zend-mail/pull/192) + [#189](https://github.com/zendframework/zend-mail/pull/189) PHP 7.2 support +- [#73](https://github.com/zendframework/zend-mail/issues/73) + [#160](https://github.com/zendframework/zend-mail/pull/160) Support for + mails that don't have a `To`, as long as `Cc` or `Bcc` are set. +- [#161](https://github.com/zendframework/zend-mail/issues/161) removed + useless try-catch that just re-throws. +- [#134](https://github.com/zendframework/zend-mail/issues/134) simplified + checks for the existence of some string sub-sequences, which were + needlessly performed via regular expressions + +### Deprecated + +- Nothing. + +### Removed + +- Nothing. + +### Fixed + +- [#188](https://github.com/zendframework/zend-mail/pull/188) split strings + before calling `iconv_mime_decode()`, which destroys newlines, rendering + DKIM parsing useless. +- [#156](https://github.com/zendframework/zend-mail/pull/156) fixed a + regression in which `<` and `>` would appear doubled in message + identifiers. +- [#143](https://github.com/zendframework/zend-mail/pull/143) fixed parsing + of `<` and `>` being part of the email address comment. + ## 2.8.0 - TBD ### Added