From a01edeaf01b4a95e6032e1dd0702ad144b53fd4c Mon Sep 17 00:00:00 2001 From: Edgard Lorraine Messias Date: Thu, 14 Jan 2021 16:29:37 -0300 Subject: [PATCH 01/12] Fixed mailcollector with multibyte filename (#8495) --- inc/mailcollector.class.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/inc/mailcollector.class.php b/inc/mailcollector.class.php index 647d3b986c8..ac0f88410ca 100644 --- a/inc/mailcollector.class.php +++ b/inc/mailcollector.class.php @@ -1527,6 +1527,13 @@ private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $ && $part->getHeaders()->has('content-disposition') && ($content_disp_header = $part->getHeader('content-disposition')) instanceof ContentDisposition) { $filename = $content_disp_header->getParameter('filename') ?? ''; + // Check bug in ContentDisposition + if (strpos($filename, '=?UTF-8?') !== false) { + // Format =?UTF-8?Q??= + // Join multiple sequences (=?UTF-8?Q?=AA?==?UTF-8?Q?=BB?= to =?UTF-8?Q?=AA=BB?=) + $filename = str_replace('?==?UTF-8?Q?=', '=', $filename); + $filename = \Laminas\Mail\Header\HeaderWrap::mimeDecodeValue($filename); + } } // Try to get filename from Content-Type header From d2133754c888320e028f86912d362efc9045a1de Mon Sep 17 00:00:00 2001 From: Edgard Date: Fri, 15 Jan 2021 20:24:47 -0300 Subject: [PATCH 02/12] Added filename normalizer --- composer.json | 1 + composer.lock | 137 ++++++++++++++++++++++++++++++++++++ inc/mailcollector.class.php | 3 + 3 files changed, 141 insertions(+) diff --git a/composer.json b/composer.json index a03ac33d3c8..a46a9ce11ee 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "ext-zlib": "*", "blueimp/jquery-file-upload": "^10.2", "elvanto/litemoji": "^1.4 || ^2.0", + "glen/filename-normalizer": "^2.0", "guzzlehttp/guzzle": "^6.5", "guzzlehttp/psr7": "^1.6", "htmlawed/htmlawed": "^1.2", diff --git a/composer.lock b/composer.lock index 0754621aeca..e2a9084e436 100644 --- a/composer.lock +++ b/composer.lock @@ -198,6 +198,59 @@ }, "time": "2019-07-24T19:58:51+00:00" }, + { + "name": "glen/filename-normalizer", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/glensc/php-filename-normalizer.git", + "reference": "2404f55b2cb3e91809d4eaae1d10cbc3c4aa3803" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/glensc/php-filename-normalizer/zipball/2404f55b2cb3e91809d4eaae1d10cbc3c4aa3803", + "reference": "2404f55b2cb3e91809d4eaae1d10cbc3c4aa3803", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-intl-normalizer": "^1.7" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "glen\\FilenameNormalizer\\": "src/", + "glen\\FilenameNormalizer\\Test\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Elan Ruusamäe", + "homepage": "https://github.com/glensc" + }, + { + "name": "Yosuke Kumakura", + "homepage": "https://github.com/kumatch" + } + ], + "description": "A string normalizer for filesystem name.", + "homepage": "https://github.com/glensc/php-filename-normalizer", + "keywords": [ + "filename", + "filesystem" + ], + "support": { + "source": "https://github.com/glensc/php-filename-normalizer/tree/master" + }, + "time": "2019-09-02T11:29:32+00:00" + }, { "name": "guzzlehttp/guzzle", "version": "6.5.5", @@ -2917,6 +2970,90 @@ ], "time": "2020-05-30T20:06:45+00:00" }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "6e971c891537eb617a00bb07a43d182a6915faba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/6e971c891537eb617a00bb07a43d182a6915faba", + "reference": "6e971c891537eb617a00bb07a43d182a6915faba", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T17:09:11+00:00" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.20.0", diff --git a/inc/mailcollector.class.php b/inc/mailcollector.class.php index ac0f88410ca..bfecacbee06 100644 --- a/inc/mailcollector.class.php +++ b/inc/mailcollector.class.php @@ -34,6 +34,7 @@ die("Sorry. You can't access this file directly"); } +use glen\FilenameNormalizer\Normalizer; use LitEmoji\LitEmoji; use Laminas\Mail\Address; use Laminas\Mail\Header\AbstractAddressList; @@ -1576,6 +1577,8 @@ private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $ return false; } + $filename = Normalizer::normalize($filename); + //try to avoid conflict between inline image and attachment $i = 2; while (in_array($filename, $this->files)) { From a5045cc031f9ffc65f2700e3d0df589e67542bda Mon Sep 17 00:00:00 2001 From: Edgard Date: Fri, 15 Jan 2021 20:35:33 -0300 Subject: [PATCH 03/12] Added email attachment test --- .../22-multibyte_attachment_name.eml | 191 ++++++++++++++++++ .../23-bad_attachment_name_for_OS.eml | 34 ++++ tests/imap/MailCollector.php | 2 + 3 files changed, 227 insertions(+) create mode 100644 tests/emails-tests/22-multibyte_attachment_name.eml create mode 100644 tests/emails-tests/23-bad_attachment_name_for_OS.eml diff --git a/tests/emails-tests/22-multibyte_attachment_name.eml b/tests/emails-tests/22-multibyte_attachment_name.eml new file mode 100644 index 00000000000..bdd03d9bf56 --- /dev/null +++ b/tests/emails-tests/22-multibyte_attachment_name.eml @@ -0,0 +1,191 @@ +MIME-Version: 1.0 +Received: from mail.glpi-project.org (192.168.1.4) by 192.168.1.3 + (192.168.1.5) with Microsoft SMTP Server (version=TLS1_2, + cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2106.2 via Mailbox + Transport; Fri, 8 Jan 2021 15:35:17 +0100 +Received: from mail.glpi-project.org (192.168.1.5) by mail.glpi-project.org + (192.168.1.5) with Microsoft SMTP Server (version=TLS1_2, + cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2106.2; Fri, 8 Jan + 2021 15:35:17 +0100 +Received: from localhost (127.0.0.1) by mail.glpi-project.org (192.168.1.5) + with Microsoft SMTP Server id 15.1.2106.2 via Frontend Transport; Fri, 8 Jan + 2021 15:35:16 +0100 +From: "Normal User" +To: unittests@glpi-project.org +Subject: Test subject +Thread-Topic: Test subject +Thread-Index: AQHW5ct8hXph1rETQ0y+Otmu2ZohZg== +X-MS-Exchange-MessageSentRepresentingType: 1 +Date: Fri, 8 Jan 2021 15:35:17 +0100 +Message-ID: +Content-Language: en-US +X-MS-Exchange-Organization-AuthAs: Anonymous +X-MS-Exchange-Organization-AuthSource: mail.glpi-project.org +X-MS-Has-Attach: yes +X-MS-Exchange-Organization-Network-Message-Id: + 06f79f7d-c732-40ad-af16-08d8b3e29e37 +X-MS-TNEF-Correlator: +X-MS-Exchange-Organization-RecordReviewCfmType: 0 +x-esetresult: clean, is OK +x-esetid: 37303A29D3597266657364 +Content-Type: multipart/mixed; + boundary="_002_aa097017ea094dc28d718cb3cd64f397mailglpiprojectorg_" + +--_002_aa097017ea094dc28d718cb3cd64f397mailglpiprojectorg_ +Content-Type: text/plain; charset="gb2312" +Content-ID: <00C90C8538325A4BABC81744259DFFD7glpi-project.org> +Content-Transfer-Encoding: base64 + +VGVzdCBib2R5 + +--_002_aa097017ea094dc28d718cb3cd64f397mailglpiprojectorg_ +Content-Type: application/octet-stream; + name="=?gb2312?B?MjItsOy5q9PDxrfUpNS8QXBwbHkgZm9yIG9mZmljZSBzdXBwbGllcyBvbmxpbmU=?= + =?gb2312?Q?xlsx?=" +Content-Description: + =?gb2312?B?MjItsOy5q9PDxrfUpNS8QXBwbHkgZm9yIG9mZmljZSBzdXBwbGllcyBvbmxpbmU=?= + =?gb2312?Q?xlsx?= +Content-Disposition: attachment; + filename="=?gb2312?B?MjItsOy5q9PDxrfUpNS8QXBwbHkgZm9yIG9mZmljZSBzdXBwbGllcyBvbmxpbmU=?= + =?gb2312?Q?xlsx?="; size=8094; creation-date="Fri, 08 Jan 2021 14:35:17 GMT"; + modification-date="Fri, 08 Jan 2021 14:36:14 GMT" +Content-ID: <0A1D59B3522EF84295BE3A82AD1E1896glpi-project.org> +Content-Transfer-Encoding: base64 + +UEsDBBQABgAIAAAAIQCkU8XPTgEAAAgEAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACs +k8tOwzAQRfdI/EPkLYrdskAINe2CxxK6KB9g4kli1S953NL+PRP3sUChFWo3sWLP3HM9M57MNtYU +a4iovavYmI9YAa72Sru2Yp+Lt/KRFZikU9J4BxXbArLZ9PZmstgGwIKyHVasSyk8CYF1B1Yi9wEc +nTQ+WpnoN7YiyHopWxD3o9GDqL1L4FKZeg02nbxAI1cmFa8b2t45iWCQFc+7wJ5VMRmC0bVM5FSs +nfpFKfcETpk5Bjsd8I5sMDFI6E/+BuzzPqg0USso5jKmd2nJhtgY8e3j8sv7JT8tMuDSN42uQfl6 +ZakCHEMEqbADSNbwvHIrtTv4PsHPwSjyMr6ykf5+WfiMj0T9BpG/l1vIMmeAmLYG8Nplz6KnyNSv +efQBaXIj/J9+GM0+uwwkBDFpOA7nUJOPRJr6i68L/btSoAbYIr/j6Q8AAAD//wMAUEsDBBQABgAI +AAAAIQC1VTAj9AAAAEwCAAALAAgCX3JlbHMvLnJlbHMgogQCKKAAAgAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArJJNT8MwDIbvSPyHyPfV3ZAQ +Qkt3QUi7IVR+gEncD7WNoyQb3b8nHBBUGoMDR3+9fvzK2908jerIIfbiNKyLEhQ7I7Z3rYaX+nF1 +ByomcpZGcazhxBF21fXV9plHSnkodr2PKqu4qKFLyd8jRtPxRLEQzy5XGgkTpRyGFj2ZgVrGTVne +YviuAdVCU+2thrC3N6Dqk8+bf9eWpukNP4g5TOzSmRXIc2Jn2a58yGwh9fkaVVNoOWmwYp5yOiJ5 +X2RswPNEm78T/XwtTpzIUiI0Evgyz0fHJaD1f1q0NPHLnXnENwnDq8jwyYKLH6jeAQAA//8DAFBL +AwQUAAYACAAAACEAjYfacOAAAAAtAgAAGgAIAXhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzIKIE +ASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 +LnhtbFBLBQYAAAAACQAJAD4CAACcGwAAAAA= + +--_002_aa097017ea094dc28d718cb3cd64f397mailglpiprojectorg_-- diff --git a/tests/emails-tests/23-bad_attachment_name_for_OS.eml b/tests/emails-tests/23-bad_attachment_name_for_OS.eml new file mode 100644 index 00000000000..fb37a9e4b8b --- /dev/null +++ b/tests/emails-tests/23-bad_attachment_name_for_OS.eml @@ -0,0 +1,34 @@ +MIME-Version: 1.0 +Received: from FRY09565 (localhost [127.0.0.1]) + by FRY09565 with ESMTP + ; Fri, 15 Jan 2021 11:10:48 +0100 +From: "normal@glpi-project" +To: "unittests@glpi-project.org" +Subject: Test attachment with invalid chars for OS +Thread-Topic: Test attachment with invalid chars for OS +Thread-Index: AQKCD+6x8lXoNsHxacNzy6V4F3lQrQ== +X-MS-Exchange-MessageSentRepresentingType: 1 +Date: Fri, 15 Jan 2021 11:10:48 +0100 +Message-ID: <50BFB6E5-3040-4535-9A10-3164C726A37B@FRY09565> +Content-Language: en-US +X-MS-Has-Attach: yes +X-MS-TNEF-Correlator: +X-MS-Exchange-Organization-RecordReviewCfmType: 0 +Content-Type: multipart/mixed; + boundary="_002_50BFB6E5304045359A103164C726A37BFRY09565_" + +--_002_50BFB6E5304045359A103164C726A37BFRY09565_ +Content-Type: text/plain; charset="us-ascii" + +Test body +--_002_50BFB6E5304045359A103164C726A37BFRY09565_ +Content-Type: application/octet-stream; name="23-New Text ? Document.txt" +Content-Description: New Text ? Document.txt +Content-Disposition: attachment; filename="23-New Text ? Document.txt"; size=265; + creation-date="Fri, 15 Jan 2021 12:52:27 GMT"; + modification-date="Fri, 15 Jan 2021 12:52:27 GMT" +Content-Transfer-Encoding: base64 + +dGVzdA== + +--_002_50BFB6E5304045359A103164C726A37BFRY09565_-- \ No newline at end of file diff --git a/tests/imap/MailCollector.php b/tests/imap/MailCollector.php index 3020f8b93b3..79a74c77012 100644 --- a/tests/imap/MailCollector.php +++ b/tests/imap/MailCollector.php @@ -599,6 +599,8 @@ public function testCollect() { '18-blank.gif', '19-ʂǷèɕɩɐɫ ȼɦâʁȿ.gif', '20-specïal chars.gif', + '22-办公用品预约Apply for office supplies online.xlsx', + '23-New Text - Document.txt', ]; $iterator = $DB->request( From 88a6b49705bff2f46928e86dbe60fbbed8e58993 Mon Sep 17 00:00:00 2001 From: Edgard Date: Fri, 15 Jan 2021 20:40:52 -0300 Subject: [PATCH 04/12] Fixed testGetLibraries --- inc/config.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/inc/config.class.php b/inc/config.class.php index 16319648170..b99c92619a3 100644 --- a/inc/config.class.php +++ b/inc/config.class.php @@ -2077,6 +2077,8 @@ static function getLibraries($all = false) { 'check' => 'wapmorgan\\UnifiedArchive\\UnifiedArchive' ], [ 'name' => 'paragonie/sodium_compat', 'check' => 'ParagonIE_Sodium_Compat' ], + [ 'name' => 'glen/filename-normalizer', + 'check' => 'glen\\FilenameNormalizer\\Normalizer' ], ]; if (Toolbox::canUseCAS()) { $deps[] = [ From 47acbefd67ecde4be8a17e0d02dcc225ff6c5f3c Mon Sep 17 00:00:00 2001 From: Edgard Date: Sat, 16 Jan 2021 13:53:53 -0300 Subject: [PATCH 05/12] Fixed tests --- inc/mailcollector.class.php | 6 +++++- tests/emails-tests/22-multibyte_attachment_name.eml | 10 +++++----- tests/emails-tests/23-bad_attachment_name_for_OS.eml | 4 ++-- tests/imap/MailCollector.php | 2 ++ 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/inc/mailcollector.class.php b/inc/mailcollector.class.php index bfecacbee06..bafd7bd53f0 100644 --- a/inc/mailcollector.class.php +++ b/inc/mailcollector.class.php @@ -1493,7 +1493,10 @@ function getTotalMails() { private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $maxsize, $subject, $subpart = "") { if ($part->isMultipart()) { $index = 0; - foreach (new RecursiveIteratorIterator($part) as $mypart) { + // while instead of foreach to supress header error in laminas-mail + $iterator = new RecursiveIteratorIterator($part); + while (@$iterator->valid()) { + $mypart = $iterator->current(); $this->getRecursiveAttached( $mypart, $path, @@ -1501,6 +1504,7 @@ private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $ $subject, ($subpart ? $subpart.".".($index+1) : ($index+1)) ); + $iterator->next(); } } else { if (!$part->getHeaders()->has('content-type') diff --git a/tests/emails-tests/22-multibyte_attachment_name.eml b/tests/emails-tests/22-multibyte_attachment_name.eml index bdd03d9bf56..e3f9d158e32 100644 --- a/tests/emails-tests/22-multibyte_attachment_name.eml +++ b/tests/emails-tests/22-multibyte_attachment_name.eml @@ -12,8 +12,8 @@ Received: from localhost (127.0.0.1) by mail.glpi-project.org (192.168.1.5) 2021 15:35:16 +0100 From: "Normal User" To: unittests@glpi-project.org -Subject: Test subject -Thread-Topic: Test subject +Subject: Test attachment with multibyte filename +Thread-Topic: Test attachment with multibyte filename Thread-Index: AQHW5ct8hXph1rETQ0y+Otmu2ZohZg== X-MS-Exchange-MessageSentRepresentingType: 1 Date: Fri, 8 Jan 2021 15:35:17 +0100 @@ -41,13 +41,13 @@ VGVzdCBib2R5 --_002_aa097017ea094dc28d718cb3cd64f397mailglpiprojectorg_ Content-Type: application/octet-stream; name="=?gb2312?B?MjItsOy5q9PDxrfUpNS8QXBwbHkgZm9yIG9mZmljZSBzdXBwbGllcyBvbmxpbmU=?= - =?gb2312?Q?xlsx?=" + =?gb2312?Q?.xlsx?=" Content-Description: =?gb2312?B?MjItsOy5q9PDxrfUpNS8QXBwbHkgZm9yIG9mZmljZSBzdXBwbGllcyBvbmxpbmU=?= - =?gb2312?Q?xlsx?= + =?gb2312?Q?.xlsx?= Content-Disposition: attachment; filename="=?gb2312?B?MjItsOy5q9PDxrfUpNS8QXBwbHkgZm9yIG9mZmljZSBzdXBwbGllcyBvbmxpbmU=?= - =?gb2312?Q?xlsx?="; size=8094; creation-date="Fri, 08 Jan 2021 14:35:17 GMT"; + =?gb2312?Q?.xlsx?="; size=8094; creation-date="Fri, 08 Jan 2021 14:35:17 GMT"; modification-date="Fri, 08 Jan 2021 14:36:14 GMT" Content-ID: <0A1D59B3522EF84295BE3A82AD1E1896glpi-project.org> Content-Transfer-Encoding: base64 diff --git a/tests/emails-tests/23-bad_attachment_name_for_OS.eml b/tests/emails-tests/23-bad_attachment_name_for_OS.eml index fb37a9e4b8b..c3c0bec0cbc 100644 --- a/tests/emails-tests/23-bad_attachment_name_for_OS.eml +++ b/tests/emails-tests/23-bad_attachment_name_for_OS.eml @@ -2,7 +2,7 @@ MIME-Version: 1.0 Received: from FRY09565 (localhost [127.0.0.1]) by FRY09565 with ESMTP ; Fri, 15 Jan 2021 11:10:48 +0100 -From: "normal@glpi-project" +From: "Normal User" To: "unittests@glpi-project.org" Subject: Test attachment with invalid chars for OS Thread-Topic: Test attachment with invalid chars for OS @@ -23,7 +23,7 @@ Content-Type: text/plain; charset="us-ascii" Test body --_002_50BFB6E5304045359A103164C726A37BFRY09565_ Content-Type: application/octet-stream; name="23-New Text ? Document.txt" -Content-Description: New Text ? Document.txt +Content-Description: 23-New Text ? Document.txt Content-Disposition: attachment; filename="23-New Text ? Document.txt"; size=265; creation-date="Fri, 15 Jan 2021 12:52:27 GMT"; modification-date="Fri, 15 Jan 2021 12:52:27 GMT" diff --git a/tests/imap/MailCollector.php b/tests/imap/MailCollector.php index 79a74c77012..9189c8f59b2 100644 --- a/tests/imap/MailCollector.php +++ b/tests/imap/MailCollector.php @@ -533,6 +533,8 @@ public function testCollect() { 'Attachement having filename using RFC5987 (multiple lines)', 'Attachement having filename using RFC5987 (single line)', 'Mono-part HTML message', + 'Test attachment with multibyte filename', + 'Test attachment with invalid chars for OS', ] ], // Mails having "normal" user as observer (add_cc_to_observer = true) From eecdd6e66fc2c2553504e11e1e755f6592310a78 Mon Sep 17 00:00:00 2001 From: Stanislas KITA Date: Thu, 21 Jan 2021 13:58:18 +0100 Subject: [PATCH 06/12] fix(collector): better magment for filename with multibyte / base64 encode --- composer.lock | 1955 +++++++++++------ inc/mailcollector.class.php | 12 +- .../23-multibyte_base64_attachment_name.eml | 54 + 3 files changed, 1346 insertions(+), 675 deletions(-) create mode 100644 tests/emails-tests/23-multibyte_base64_attachment_name.eml diff --git a/composer.lock b/composer.lock index e2a9084e436..afb38316b71 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "99b1388ccf74a926e5842e5dc4626674", + "content-hash": "dc196492777b03d60b505f33444ce6a7", "packages": [ { "name": "blueimp/jquery-file-upload", - "version": "v10.29.0", + "version": "v10.31.0", "source": { "type": "git", "url": "https://github.com/vkhramtsov/jQuery-File-Upload.git", - "reference": "f41132833276acbf72c8e839e900215b0149945d" + "reference": "0740f81829698b84efe17e72501e0f420ea0d611" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/f41132833276acbf72c8e839e900215b0149945d", - "reference": "f41132833276acbf72c8e839e900215b0149945d", + "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/0740f81829698b84efe17e72501e0f420ea0d611", + "reference": "0740f81829698b84efe17e72501e0f420ea0d611", "shasum": "" }, "type": "library", @@ -59,39 +59,36 @@ "upload", "widget" ], - "support": { - "forum": "https://stackoverflow.com/questions/tagged/blueimp+jquery+file-upload", - "source": "https://github.com/vkhramtsov/jQuery-File-Upload/tree/v10.29.0" - }, "funding": [ { "url": "https://github.com/blueimp", "type": "github" } ], - "time": "2020-05-22T17:10:45+00:00" + "time": "2020-07-13T05:42:06+00:00" }, { "name": "brick/math", - "version": "0.8.14", + "version": "0.9.2", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "6f7a46b5c3d487b277f38fbd17df57d348cace8a" + "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/6f7a46b5c3d487b277f38fbd17df57d348cace8a", - "reference": "6f7a46b5c3d487b277f38fbd17df57d348cace8a", + "url": "https://api.github.com/repos/brick/math/zipball/dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", + "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-json": "*", + "php": "^7.1 || ^8.0" }, "require-dev": { - "php-coveralls/php-coveralls": "2.*", - "phpunit/phpunit": "7.*", - "vimeo/psalm": "3.*" + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.3.2" }, "type": "library", "autoload": { @@ -114,11 +111,13 @@ "brick", "math" ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.8.14" - }, - "time": "2020-02-17T13:57:43+00:00" + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-01-20T22:51:39+00:00" }, { "name": "container-interop/container-interop", @@ -158,23 +157,23 @@ }, { "name": "elvanto/litemoji", - "version": "2.0.1", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/elvanto/litemoji.git", - "reference": "2cba2c87c505fe1d3a6e06ff4cc48d98af757521" + "reference": "7b64216805bc746f46be648b18cffbd813f6086a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elvanto/litemoji/zipball/2cba2c87c505fe1d3a6e06ff4cc48d98af757521", - "reference": "2cba2c87c505fe1d3a6e06ff4cc48d98af757521", + "url": "https://api.github.com/repos/elvanto/litemoji/zipball/7b64216805bc746f46be648b18cffbd813f6086a", + "reference": "7b64216805bc746f46be648b18cffbd813f6086a", "shasum": "" }, "require": { "php": ">=5.6" }, "require-dev": { - "milesj/emojibase": "4.0.0", + "milesj/emojibase": "6.0.0", "phpunit/phpunit": "^5.0" }, "type": "library", @@ -192,11 +191,7 @@ "emoji", "php-emoji" ], - "support": { - "issues": "https://github.com/elvanto/litemoji/issues", - "source": "https://github.com/elvanto/litemoji/tree/2.0.1" - }, - "time": "2019-07-24T19:58:51+00:00" + "time": "2020-11-10T08:58:16+00:00" }, { "name": "glen/filename-normalizer", @@ -324,23 +319,23 @@ }, { "name": "guzzlehttp/promises", - "version": "v1.3.1", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + "reference": "60d379c243457e073cff02bc323a2a86cb355631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", + "reference": "60d379c243457e073cff02bc323a2a86cb355631", "shasum": "" }, "require": { - "php": ">=5.5.0" + "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": "^4.0" + "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", "extra": { @@ -367,248 +362,1041 @@ "homepage": "https://github.com/mtdowling" } ], - "description": "Guzzle promises library", + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2020-09-30T07:37:28+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", + "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.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-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": "2020-09-30T07:37:11+00:00" + }, + { + "name": "htmlawed/htmlawed", + "version": "1.2.5", + "dist": { + "type": "zip", + "url": "https://www.bioinformatics.org/phplabware/downloads/htmLawed125.zip" + }, + "type": "library", + "autoload": { + "files": [ + "htmLawed.php" + ] + }, + "license": [ + "LGPL-3.0-only", + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Santosh Patnaik", + "email": "drpatnaik@yahoo.com", + "role": "Developer" + } + ], + "description": "Official htmLawed PHP library for HTML filtering", + "homepage": "https://www.bioinformatics.org/phplabware/internal_utilities/htmLawed" + }, + { + "name": "iamcal/lib_autolink", + "version": "v1.7", + "source": { + "type": "git", + "url": "https://github.com/iamcal/lib_autolink.git", + "reference": "b3a86d8437e5d635fb85b155a86288d94f6a924d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/iamcal/lib_autolink/zipball/b3a86d8437e5d635fb85b155a86288d94f6a924d", + "reference": "b3a86d8437e5d635fb85b155a86288d94f6a924d", + "shasum": "" + }, + "type": "library", + "autoload": { + "files": [ + "lib_autolink.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Adds anchors to urls in a text", + "keywords": [ + "anchor", + "autolink", + "link" + ], + "support": { + "issues": "https://github.com/iamcal/lib_autolink/issues", + "source": "https://github.com/iamcal/lib_autolink/tree/master" + }, + "time": "2015-05-22T17:10:41+00:00" + }, + { + "name": "laminas/laminas-cache", + "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache.git", + "reference": "060b2a71d42b12122a3546594727e7d4b870abd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache/zipball/060b2a71d42b12122a3546594727e7d4b870abd5", + "reference": "060b2a71d42b12122a3546594727e7d4b870abd5", + "shasum": "" + }, + "require": { + "laminas/laminas-cache-storage-adapter-apc": "^1.0", + "laminas/laminas-cache-storage-adapter-apcu": "^1.0", + "laminas/laminas-cache-storage-adapter-blackhole": "^1.0", + "laminas/laminas-cache-storage-adapter-dba": "^1.0", + "laminas/laminas-cache-storage-adapter-ext-mongodb": "^1.0", + "laminas/laminas-cache-storage-adapter-filesystem": "^1.0", + "laminas/laminas-cache-storage-adapter-memcache": "^1.0", + "laminas/laminas-cache-storage-adapter-memcached": "^1.0", + "laminas/laminas-cache-storage-adapter-memory": "^1.0", + "laminas/laminas-cache-storage-adapter-mongodb": "^1.0", + "laminas/laminas-cache-storage-adapter-redis": "^1.0", + "laminas/laminas-cache-storage-adapter-session": "^1.0", + "laminas/laminas-cache-storage-adapter-wincache": "^1.0", + "laminas/laminas-cache-storage-adapter-xcache": "^1.0", + "laminas/laminas-cache-storage-adapter-zend-server": "^1.0", + "laminas/laminas-eventmanager": "^2.6.3 || ^3.2", + "laminas/laminas-servicemanager": "^2.7.8 || ^3.3", + "laminas/laminas-stdlib": "^3.2.1", + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^5.6 || ^7.0", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "zendframework/zend-cache": "^2.9.0" + }, + "require-dev": { + "cache/integration-tests": "^0.16", + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-serializer": "^2.6", + "phpbench/phpbench": "^0.13", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" + }, + "suggest": { + "laminas/laminas-serializer": "Laminas\\Serializer component" + }, + "type": "library", + "extra": { + "laminas": { + "component": "Laminas\\Cache", + "config-provider": "Laminas\\Cache\\ConfigProvider" + } + }, + "autoload": { + "files": [ + "autoload/patternPluginManagerPolyfill.php" + ], + "psr-4": { + "Laminas\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Caching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output", + "homepage": "https://laminas.dev", + "keywords": [ + "cache", + "laminas", + "psr-16", + "psr-6" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-11-08T13:01:19+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-apc", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-apc.git", + "reference": "8b375d994f6e67534f6ae6e995249e706faa30c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-apc/zipball/8b375d994f6e67534f6ae6e995249e706faa30c1", + "reference": "8b375d994f6e67534f6ae6e995249e706faa30c1", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" + }, + "suggest": { + "ext-apc": "APC or compatible extension, to use the APC storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:04:12+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-apcu", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-apcu.git", + "reference": "1fdd7585042c1a577f6e630535df1e86e23cf5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-apcu/zipball/1fdd7585042c1a577f6e630535df1e86e23cf5dc", + "reference": "1fdd7585042c1a577f6e630535df1e86e23cf5dc", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for apcu", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:05:19+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-blackhole", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole.git", + "reference": "5f2cb437160fbc01d7f216b11e4f1ff4c9b95c49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-blackhole/zipball/5f2cb437160fbc01d7f216b11e4f1ff4c9b95c49", + "reference": "5f2cb437160fbc01d7f216b11e4f1ff4c9b95c49", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for blackhole", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:07:07+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-dba", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-dba.git", + "reference": "ad968d3d8a0350af8e6717be58bb96e5a9e77f3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-dba/zipball/ad968d3d8a0350af8e6717be58bb96e5a9e77f3b", + "reference": "ad968d3d8a0350af8e6717be58bb96e5a9e77f3b", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-dba": "DBA, to use the DBA storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for dba", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:08:58+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-ext-mongodb", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb.git", + "reference": "011ec5a8ca721ba012d232b1a01b50a55904b99f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-ext-mongodb/zipball/011ec5a8ca721ba012d232b1a01b50a55904b99f", + "reference": "011ec5a8ca721ba012d232b1a01b50a55904b99f", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-mongodb": "MongoDB, to use the ExtMongoDb storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for ext-mongodb", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:11:06+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-filesystem", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem.git", + "reference": "ae1723bcd84efbdae8f20cbb1bacb9ce9c13dbde" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-filesystem/zipball/ae1723bcd84efbdae8f20cbb1bacb9ce9c13dbde", + "reference": "ae1723bcd84efbdae8f20cbb1bacb9ce9c13dbde", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for filesystem", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:12:14+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-memcache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-memcache.git", + "reference": "62d0fab1cd261b44a81821e986c0110d7dda896b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memcache/zipball/62d0fab1cd261b44a81821e986c0110d7dda896b", + "reference": "62d0fab1cd261b44a81821e986c0110d7dda896b", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for memcache", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:13:36+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-memcached", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-memcached.git", + "reference": "29599106bb501eb96207b175c460c95487518db1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memcached/zipball/29599106bb501eb96207b175c460c95487518db1", + "reference": "29599106bb501eb96207b175c460c95487518db1", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for memcached", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:16:42+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-memory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-memory.git", + "reference": "58f4b45281552bb6673c900fadddad21e0ed05c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memory/zipball/58f4b45281552bb6673c900fadddad21e0ed05c8", + "reference": "58f4b45281552bb6673c900fadddad21e0ed05c8", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for memory", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:17:47+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-mongodb", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb.git", + "reference": "ef4aa396b55533b8eb3e1d4126c39a78a22e49a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-mongodb/zipball/ef4aa396b55533b8eb3e1d4126c39a78a22e49a6", + "reference": "ef4aa396b55533b8eb3e1d4126c39a78a22e49a6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for mongodb", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:19:10+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-redis", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-redis.git", + "reference": "3fe904953d17728d7fdaa87be603231f23fb0a4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-redis/zipball/3fe904953d17728d7fdaa87be603231f23fb0a4d", + "reference": "3fe904953d17728d7fdaa87be603231f23fb0a4d", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for redis", "keywords": [ - "promise" + "cache", + "laminas" ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/master" - }, - "time": "2016-12-20T10:07:11+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:20:13+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "1.6.1", + "name": "laminas/laminas-cache-storage-adapter-session", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + "url": "https://github.com/laminas/laminas-cache-storage-adapter-session.git", + "reference": "0d2276cd61bd162cd38c53aaa22f18137621dc0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-session/zipball/0d2276cd61bd162cd38c53aaa22f18137621dc0c", + "reference": "0d2276cd61bd162cd38c53aaa22f18137621dc0c", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" }, "provide": { - "psr/http-message-implementation": "1.0" + "laminas/laminas-cache-storage-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-session": "^2.7.4", + "squizlabs/php_codesniffer": "^2.7" }, "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + "laminas/laminas-session": "Laminas\\Session component" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, "autoload": { "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, + "description": "Laminas cache adapter for session", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" } ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.6.1" - }, - "time": "2019-07-01T23:21:34+00:00" + "time": "2020-10-12T16:21:28+00:00" }, { - "name": "htmlawed/htmlawed", - "version": "1.2.5", + "name": "laminas/laminas-cache-storage-adapter-wincache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-wincache.git", + "reference": "0f54599c5d9aff11b01adadd2742097f923170ba" + }, "dist": { "type": "zip", - "url": "https://www.bioinformatics.org/phplabware/downloads/htmLawed125.zip" + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-wincache/zipball/0f54599c5d9aff11b01adadd2742097f923170ba", + "reference": "0f54599c5d9aff11b01adadd2742097f923170ba", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-wincache": "WinCache, to use the WinCache storage adapter" }, "type": "library", "autoload": { - "files": [ - "htmLawed.php" - ] + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0-only", - "GPL-2.0-or-later" + "BSD-3-Clause" ], - "authors": [ + "description": "Laminas cache adapter for wincache", + "keywords": [ + "cache", + "laminas" + ], + "funding": [ { - "name": "Santosh Patnaik", - "email": "drpatnaik@yahoo.com", - "role": "Developer" + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" } ], - "description": "Official htmLawed PHP library for HTML filtering", - "homepage": "https://www.bioinformatics.org/phplabware/internal_utilities/htmLawed" + "time": "2020-10-12T16:22:49+00:00" }, { - "name": "iamcal/lib_autolink", - "version": "v1.7", + "name": "laminas/laminas-cache-storage-adapter-xcache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/iamcal/lib_autolink.git", - "reference": "b3a86d8437e5d635fb85b155a86288d94f6a924d" + "url": "https://github.com/laminas/laminas-cache-storage-adapter-xcache.git", + "reference": "24049557aa796ec7527bcc8032ed68346232b219" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/iamcal/lib_autolink/zipball/b3a86d8437e5d635fb85b155a86288d94f6a924d", - "reference": "b3a86d8437e5d635fb85b155a86288d94f6a924d", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-xcache/zipball/24049557aa796ec7527bcc8032ed68346232b219", + "reference": "24049557aa796ec7527bcc8032ed68346232b219", "shasum": "" }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-serializer": "^2.9", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-xcache": "XCache, to use the XCache storage adapter" + }, "type": "library", "autoload": { - "files": [ - "lib_autolink.php" - ] + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "Adds anchors to urls in a text", + "description": "Laminas cache adapter for xcache", "keywords": [ - "anchor", - "autolink", - "link" + "cache", + "laminas" ], - "support": { - "issues": "https://github.com/iamcal/lib_autolink/issues", - "source": "https://github.com/iamcal/lib_autolink/tree/master" - }, - "time": "2015-05-22T17:10:41+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:23:46+00:00" }, { - "name": "laminas/laminas-cache", - "version": "2.9.0", + "name": "laminas/laminas-cache-storage-adapter-zend-server", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-cache.git", - "reference": "f4746a868c3e2f2da63c19d23efac12b9d1bb554" + "url": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server.git", + "reference": "8d0b0d219a048a92472d89a5e527990f3ea2decc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache/zipball/f4746a868c3e2f2da63c19d23efac12b9d1bb554", - "reference": "f4746a868c3e2f2da63c19d23efac12b9d1bb554", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-zend-server/zipball/8d0b0d219a048a92472d89a5e527990f3ea2decc", + "reference": "8d0b0d219a048a92472d89a5e527990f3ea2decc", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^2.6.3 || ^3.2", - "laminas/laminas-servicemanager": "^2.7.8 || ^3.3", - "laminas/laminas-stdlib": "^3.2.1", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0" + "php": "^5.6 || ^7.0" }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" + "conflict": { + "laminas/laminas-cache": "<2.10" }, - "replace": { - "zendframework/zend-cache": "self.version" + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" }, "require-dev": { - "cache/integration-tests": "^0.16", + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-serializer": "^2.6", - "laminas/laminas-session": "^2.7.4", - "phpbench/phpbench": "^0.13", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" - }, - "suggest": { - "ext-apc": "APC or compatible extension, to use the APC storage adapter", - "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter", - "ext-dba": "DBA, to use the DBA storage adapter", - "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter", - "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", - "ext-mongo": "Mongo, to use MongoDb storage adapter", - "ext-mongodb": "MongoDB, to use the ExtMongoDb storage adapter", - "ext-redis": "Redis, to use Redis storage adapter", - "ext-wincache": "WinCache, to use the WinCache storage adapter", - "ext-xcache": "XCache, to use the XCache storage adapter", - "laminas/laminas-serializer": "Laminas\\Serializer component", - "laminas/laminas-session": "Laminas\\Session component", - "mongodb/mongodb": "Required for use with the ext-mongodb adapter", - "mongofill/mongofill": "Alternative to ext-mongo - a pure PHP implementation designed as a drop in replacement" + "squizlabs/php_codesniffer": "^2.7" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.9.x-dev", - "dev-develop": "2.10.x-dev" - }, - "laminas": { - "component": "Laminas\\Cache", - "config-provider": "Laminas\\Cache\\ConfigProvider" - } - }, "autoload": { - "files": [ - "autoload/patternPluginManagerPolyfill.php" - ], "psr-4": { - "Laminas\\Cache\\": "src/" + "Laminas\\Cache\\Storage\\Adapter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "Caching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output", - "homepage": "https://laminas.dev", + "description": "Laminas cache adapter for zend-server", "keywords": [ "cache", - "laminas", - "psr-16", - "psr-6" + "laminas" ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-cache/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-cache/issues", - "rss": "https://github.com/laminas/laminas-cache/releases.atom", - "source": "https://github.com/laminas/laminas-cache" - }, - "time": "2019-12-31T16:23:18+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:24:25+00:00" }, { "name": "laminas/laminas-eventmanager", @@ -1087,16 +1875,16 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.4.0", + "version": "3.5.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "044cb8e380682563fb277ed5f6de4f690e4e6239" + "reference": "0669e1eec8d9f61e35a5bc5012796d49f418b259" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/044cb8e380682563fb277ed5f6de4f690e4e6239", - "reference": "044cb8e380682563fb277ed5f6de4f690e4e6239", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/0669e1eec8d9f61e35a5bc5012796d49f418b259", + "reference": "0669e1eec8d9f61e35a5bc5012796d49f418b259", "shasum": "" }, "require": { @@ -1111,7 +1899,7 @@ "psr/container-implementation": "^1.0" }, "replace": { - "zendframework/zend-servicemanager": "self.version" + "zendframework/zend-servicemanager": "^3.4.0" }, "require-dev": { "laminas/laminas-coding-standard": "~1.0.0", @@ -1155,15 +1943,13 @@ "service-manager", "servicemanager" ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-servicemanager/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-servicemanager/issues", - "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", - "source": "https://github.com/laminas/laminas-servicemanager" - }, - "time": "2019-12-31T17:44:47+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-01-17T16:54:43+00:00" }, { "name": "laminas/laminas-stdlib", @@ -1225,16 +2011,16 @@ }, { "name": "laminas/laminas-validator", - "version": "2.13.4", + "version": "2.13.5", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "93593684e70b8ed1e870cacd34ca32b0c0ace185" + "reference": "d334dddda43af263d6a7e5024fd2b013cb6981f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/93593684e70b8ed1e870cacd34ca32b0c0ace185", - "reference": "93593684e70b8ed1e870cacd34ca32b0c0ace185", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/d334dddda43af263d6a7e5024fd2b013cb6981f7", + "reference": "d334dddda43af263d6a7e5024fd2b013cb6981f7", "shasum": "" }, "require": { @@ -1276,10 +2062,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.13.x-dev", - "dev-develop": "2.14.x-dev" - }, "laminas": { "component": "Laminas\\Validator", "config-provider": "Laminas\\Validator\\ConfigProvider" @@ -1300,43 +2082,37 @@ "laminas", "validator" ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-validator/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-validator/issues", - "rss": "https://github.com/laminas/laminas-validator/releases.atom", - "source": "https://github.com/laminas/laminas-validator" - }, - "time": "2020-03-31T18:57:01+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-01-06T15:05:04+00:00" }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.0.4", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "fcd87520e4943d968557803919523772475e8ea3" + "reference": "6ede70583e101030bcace4dcddd648f760ddf642" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/fcd87520e4943d968557803919523772475e8ea3", - "reference": "fcd87520e4943d968557803919523772475e8ea3", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642", + "reference": "6ede70583e101030bcace4dcddd648f760ddf642", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^5.6 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1", + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev", - "dev-develop": "1.1.x-dev" - }, "laminas": { "module": "Laminas\\ZendFrameworkBridge" } @@ -1360,19 +2136,13 @@ "laminas", "zf" ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, "funding": [ { "url": "https://funding.communitybridge.org/projects/laminas-project", "type": "community_bridge" } ], - "time": "2020-05-20T16:45:56+00:00" + "time": "2020-09-14T14:23:00+00:00" }, { "name": "mexitek/phpcolors", @@ -1660,27 +2430,31 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.1.6", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3" + "reference": "e38888a75c070304ca5514197d4847a59a5c853f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", - "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f", + "reference": "e38888a75c070304ca5514197d4847a59a5c853f", "shasum": "" }, "require": { "ext-ctype": "*", "ext-filter": "*", + "ext-hash": "*", "php": ">=5.5.0" }, "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "doctrine/annotations": "^1.2", - "friendsofphp/php-cs-fixer": "^2.2", - "phpunit/phpunit": "^4.8 || ^5.7" + "phpcompatibility/php-compatibility": "^9.3.5", + "roave/security-advisories": "dev-latest", + "squizlabs/php_codesniffer": "^3.5.6", + "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { "ext-mbstring": "Needed to send email in multibyte encoding charset", @@ -1718,17 +2492,13 @@ } ], "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "support": { - "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/master" - }, "funding": [ { - "url": "https://github.com/synchro", + "url": "https://github.com/Synchro", "type": "github" } ], - "time": "2020-05-27T12:24:03+00:00" + "time": "2020-11-25T15:24:57+00:00" }, { "name": "psr/cache", @@ -2032,35 +2802,38 @@ }, { "name": "ramsey/collection", - "version": "1.0.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca" + "reference": "a2a85f56ac8f0f973f0e43fcbad5464355bcfe1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", - "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a2a85f56ac8f0f973f0e43fcbad5464355bcfe1f", + "reference": "a2a85f56ac8f0f973f0e43fcbad5464355bcfe1f", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.2 || ^8" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", - "fzaninotto/faker": "^1.5", - "jakub-onderka/php-parallel-lint": "^1", - "jangregor/phpstan-prophecy": "^0.6", + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", "mockery/mockery": "^1.3", "phpstan/extension-installer": "^1", - "phpstan/phpdoc-parser": "0.4.1", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5", - "slevomat/coding-standard": "^6.0", - "squizlabs/php_codesniffer": "^3.5" + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { @@ -2080,7 +2853,6 @@ } ], "description": "A PHP 7.2+ library for representing and manipulating collections.", - "homepage": "https://github.com/ramsey/collection", "keywords": [ "array", "collection", @@ -2089,28 +2861,34 @@ "queue", "set" ], - "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection" - }, - "time": "2020-01-05T00:22:59+00:00" + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2021-01-21T02:12:46+00:00" }, { "name": "ramsey/uuid", - "version": "4.0.1", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d" + "reference": "cd4032040a750077205918c86049aa0f43d22947" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d", - "reference": "ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/cd4032040a750077205918c86049aa0f43d22947", + "reference": "cd4032040a750077205918c86049aa0f43d22947", "shasum": "" }, "require": { - "brick/math": "^0.8", + "brick/math": "^0.8 || ^0.9", "ext-json": "*", "php": "^7.2 || ^8", "ramsey/collection": "^1.0", @@ -2121,7 +2899,7 @@ }, "require-dev": { "codeception/aspect-mock": "^3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7.0", "doctrine/annotations": "^1.8", "goaop/framework": "^2", "mockery/mockery": "^1.3", @@ -2130,8 +2908,8 @@ "php-mock/php-mock-mockery": "^1.3", "php-mock/php-mock-phpunit": "^2.5", "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^0.17.1", "phpstan/extension-installer": "^1.0", - "phpstan/phpdoc-parser": "0.4.3", "phpstan/phpstan": "^0.12", "phpstan/phpstan-mockery": "^0.12", "phpstan/phpstan-phpunit": "^0.12", @@ -2174,31 +2952,26 @@ "identifier", "uuid" ], - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "rss": "https://github.com/ramsey/uuid/releases.atom", - "source": "https://github.com/ramsey/uuid" - }, "funding": [ { "url": "https://github.com/ramsey", "type": "github" } ], - "time": "2020-03-29T20:13:32+00:00" + "time": "2020-08-18T17:17:46+00:00" }, { "name": "rlanvin/php-rrule", - "version": "v2.2.0", + "version": "v2.2.2", "source": { "type": "git", "url": "https://github.com/rlanvin/php-rrule.git", - "reference": "931d53d162cd84b46f6fa388cb4ea916bec02c18" + "reference": "4e979ff9b1122e7b5f4b4faf87a000396af12d16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rlanvin/php-rrule/zipball/931d53d162cd84b46f6fa388cb4ea916bec02c18", - "reference": "931d53d162cd84b46f6fa388cb4ea916bec02c18", + "url": "https://api.github.com/repos/rlanvin/php-rrule/zipball/4e979ff9b1122e7b5f4b4faf87a000396af12d16", + "reference": "4e979ff9b1122e7b5f4b4faf87a000396af12d16", "shasum": "" }, "require": { @@ -2206,7 +2979,7 @@ }, "require-dev": { "phpmd/phpmd": "@stable", - "phpunit/phpunit": "^4.8|^5.5|^6.5" + "phpunit/phpunit": "^5.7|^6.5|^8.0" }, "suggest": { "ext-intl": "Intl extension is needed for humanReadable()" @@ -2230,24 +3003,20 @@ "recurring", "rrule" ], - "support": { - "issues": "https://github.com/rlanvin/php-rrule/issues", - "source": "https://github.com/rlanvin/php-rrule/tree/v2.2.0" - }, - "time": "2019-11-01T11:51:17+00:00" + "time": "2021-01-09T13:20:09+00:00" }, { "name": "sabre/dav", - "version": "4.1.3", + "version": "4.1.4", "source": { "type": "git", "url": "https://github.com/sabre-io/dav.git", - "reference": "b903eeedfbdcd6cab7935661ec6dc2d90cdf8a1e" + "reference": "4258420f15425a5f128fe5cad454e00ab4a68ae5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/dav/zipball/b903eeedfbdcd6cab7935661ec6dc2d90cdf8a1e", - "reference": "b903eeedfbdcd6cab7935661ec6dc2d90cdf8a1e", + "url": "https://api.github.com/repos/sabre-io/dav/zipball/4258420f15425a5f128fe5cad454e00ab4a68ae5", + "reference": "4258420f15425a5f128fe5cad454e00ab4a68ae5", "shasum": "" }, "require": { @@ -2271,7 +3040,7 @@ }, "require-dev": { "evert/phpdoc-md": "~0.1.0", - "friendsofphp/php-cs-fixer": "^2.16.7", + "friendsofphp/php-cs-fixer": "^2.17.1", "monolog/monolog": "^1.18", "phpstan/phpstan": "^0.12", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0" @@ -2315,12 +3084,7 @@ "framework", "iCalendar" ], - "support": { - "forum": "https://groups.google.com/group/sabredav-discuss", - "issues": "https://github.com/sabre-io/dav/issues", - "source": "https://github.com/fruux/sabre-dav" - }, - "time": "2020-11-09T07:48:35+00:00" + "time": "2021-01-12T03:39:57+00:00" }, { "name": "sabre/event", @@ -2682,16 +3446,16 @@ }, { "name": "scssphp/scssphp", - "version": "1.1.0", + "version": "v1.4.1", "source": { "type": "git", "url": "https://github.com/scssphp/scssphp.git", - "reference": "4363ddce8d750f055c436833dd77d83517946532" + "reference": "ba86c963b94ec7ebd6e19d90cdab90d89667dbf7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scssphp/scssphp/zipball/4363ddce8d750f055c436833dd77d83517946532", - "reference": "4363ddce8d750f055c436833dd77d83517946532", + "url": "https://api.github.com/repos/scssphp/scssphp/zipball/ba86c963b94ec7ebd6e19d90cdab90d89667dbf7", + "reference": "ba86c963b94ec7ebd6e19d90cdab90d89667dbf7", "shasum": "" }, "require": { @@ -2700,8 +3464,10 @@ "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3", + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3 || ^9.4", + "sass/sass-spec": "2020.12.29", "squizlabs/php_codesniffer": "~3.5", + "symfony/phpunit-bridge": "^5.1", "twbs/bootstrap": "~4.3", "zurb/foundation": "~6.5" }, @@ -2739,28 +3505,24 @@ "scss", "stylesheet" ], - "support": { - "issues": "https://github.com/scssphp/scssphp/issues", - "source": "https://github.com/scssphp/scssphp/tree/1.1.0" - }, - "time": "2020-04-21T15:53:32+00:00" + "time": "2021-01-04T13:23:23+00:00" }, { "name": "sebastian/diff", - "version": "3.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.1" }, "require-dev": { "phpunit/phpunit": "^7.5 || ^8.0", @@ -2782,13 +3544,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", @@ -2799,11 +3561,13 @@ "unidiff", "unified diff" ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/master" - }, - "time": "2019-02-04T06:01:07+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:59:04+00:00" }, { "name": "simplepie/simplepie", @@ -2878,16 +3642,16 @@ }, { "name": "symfony/console", - "version": "v4.4.9", + "version": "v4.4.18", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "326b064d804043005526f5a0494cfb49edb59bb0" + "reference": "12e071278e396cc3e1c149857337e9e192deca0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/326b064d804043005526f5a0494cfb49edb59bb0", - "reference": "326b064d804043005526f5a0494cfb49edb59bb0", + "url": "https://api.github.com/repos/symfony/console/zipball/12e071278e396cc3e1c149857337e9e192deca0b", + "reference": "12e071278e396cc3e1c149857337e9e192deca0b", "shasum": "" }, "require": { @@ -2922,11 +3686,6 @@ "symfony/process": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" @@ -2951,9 +3710,6 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/console/tree/4.4" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -2968,7 +3724,7 @@ "type": "tidelift" } ], - "time": "2020-05-30T20:06:45+00:00" + "time": "2020-12-18T07:41:31+00:00" }, { "name": "symfony/polyfill-intl-normalizer", @@ -3056,16 +3812,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" + "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", - "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", "shasum": "" }, "require": { @@ -3077,7 +3833,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3115,9 +3871,6 @@ "portable", "shim" ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3132,29 +3885,33 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.17.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc" + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a760d8964ff79ab9bf057613a5808284ec852ccc", - "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.17-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -3190,9 +3947,6 @@ "portable", "shim" ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/master" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3207,29 +3961,33 @@ "type": "tidelift" } ], - "time": "2020-05-12T16:47:27+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.17.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd" + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/5e30b2799bc1ad68f7feb62b60a73743589438dd", - "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", "shasum": "" }, "require": { - "php": ">=7.0.8" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.17-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -3269,9 +4027,6 @@ "portable", "shim" ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.17.0" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3286,24 +4041,24 @@ "type": "tidelift" } ], - "time": "2020-05-12T16:47:27+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.8", + "version": "v1.1.9", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf" + "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf", - "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26", + "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.1.3", "psr/container": "^1.0" }, "suggest": { @@ -3313,6 +4068,10 @@ "extra": { "branch-alias": { "dev-master": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -3344,10 +4103,21 @@ "interoperability", "standards" ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v1.1.8" - }, - "time": "2019-10-14T12:27:06+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-06T13:19:58+00:00" }, { "name": "tecnickcom/tcpdf", @@ -3467,16 +4237,16 @@ }, { "name": "wapmorgan/unified-archive", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/wapmorgan/UnifiedArchive.git", - "reference": "74677318c376051fc695a3ab787e4471c00dce0f" + "reference": "7d3623fba223f690da42d3d6b18335eaa926f743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wapmorgan/UnifiedArchive/zipball/74677318c376051fc695a3ab787e4471c00dce0f", - "reference": "74677318c376051fc695a3ab787e4471c00dce0f", + "url": "https://api.github.com/repos/wapmorgan/UnifiedArchive/zipball/7d3623fba223f690da42d3d6b18335eaa926f743", + "reference": "7d3623fba223f690da42d3d6b18335eaa926f743", "shasum": "" }, "require": { @@ -3556,11 +4326,7 @@ "tar", "zip" ], - "support": { - "issues": "https://github.com/wapmorgan/UnifiedArchive/issues", - "source": "https://github.com/wapmorgan/UnifiedArchive/tree/1.0.0" - }, - "time": "2020-06-13T19:42:51+00:00" + "time": "2020-11-28T13:04:06+00:00" } ], "packages-dev": [ @@ -3653,48 +4419,35 @@ }, { "name": "consolidation/annotated-command", - "version": "4.1.1", + "version": "4.2.4", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "efc58dc0f34a45539787c5190b41b5d2a50a08da" + "reference": "ec297e05cb86557671c2d6cbb1bebba6c7ae2c60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/efc58dc0f34a45539787c5190b41b5d2a50a08da", - "reference": "efc58dc0f34a45539787c5190b41b5d2a50a08da", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/ec297e05cb86557671c2d6cbb1bebba6c7ae2c60", + "reference": "ec297e05cb86557671c2d6cbb1bebba6c7ae2c60", "shasum": "" }, "require": { "consolidation/output-formatters": "^4.1.1", "php": ">=7.1.3", "psr/log": "^1|^2", - "symfony/console": "^4.4.8|^5", + "symfony/console": "^4.4.8|~5.1.0", "symfony/event-dispatcher": "^4.4.8|^5", "symfony/finder": "^4.4.8|^5" }, "require-dev": { - "g1a/composer-test-scenarios": "^3", - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^6", - "squizlabs/php_codesniffer": "^3" + "phpunit/phpunit": ">=7.5.20", + "squizlabs/php_codesniffer": "^3", + "yoast/phpunit-polyfills": "^0.2.0" }, "type": "library", "extra": { - "scenarios": { - "symfony4": { - "require": { - "symfony/console": "^4.0" - }, - "config": { - "platform": { - "php": "7.1.3" - } - } - } - }, "branch-alias": { - "dev-master": "4.x-dev" + "dev-main": "4.x-dev" } }, "autoload": { @@ -3713,59 +4466,44 @@ } ], "description": "Initialize Symfony Console commands from annotated command class methods.", - "support": { - "issues": "https://github.com/consolidation/annotated-command/issues", - "source": "https://github.com/consolidation/annotated-command/tree/master" - }, - "time": "2020-05-27T21:11:36+00:00" + "time": "2020-12-10T16:56:39+00:00" }, { "name": "consolidation/config", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/consolidation/config.git", - "reference": "9842670aad3406dbc8df3069fd680a9f8cd6edd7" + "reference": "9a2c2a7b2aea1b3525984a4378743a8b74c14e1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/config/zipball/9842670aad3406dbc8df3069fd680a9f8cd6edd7", - "reference": "9842670aad3406dbc8df3069fd680a9f8cd6edd7", + "url": "https://api.github.com/repos/consolidation/config/zipball/9a2c2a7b2aea1b3525984a4378743a8b74c14e1c", + "reference": "9a2c2a7b2aea1b3525984a4378743a8b74c14e1c", "shasum": "" }, "require": { "dflydev/dot-access-data": "^1.1.0", "grasmash/expander": "^1", - "php": ">=7.1.3" + "php": ">=7.1.3", + "psr/log": "^1.1", + "symfony/event-dispatcher": "^4||^5" }, "require-dev": { - "g1a/composer-test-scenarios": "^3", - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^6", + "phpunit/phpunit": ">=7.5.20", "squizlabs/php_codesniffer": "^3", - "symfony/console": "^4|^5", - "symfony/event-dispatcher": "^4|^5", - "symfony/yaml": "^4|^5" + "symfony/console": "^4||^5", + "symfony/yaml": "^4||^5", + "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { + "symfony/event-dispatcher": "Required to inject configuration into Command options", "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader" }, "type": "library", "extra": { - "scenarios": { - "symfony4": { - "require-dev": { - "symfony/console": "^4" - }, - "config": { - "platform": { - "php": "7.1.3" - } - } - } - }, "branch-alias": { - "dev-master": "2.x-dev" + "dev-main": "2.x-dev" } }, "autoload": { @@ -3784,24 +4522,20 @@ } ], "description": "Provide configuration services for a commandline tool.", - "support": { - "issues": "https://github.com/consolidation/config/issues", - "source": "https://github.com/consolidation/config/tree/master" - }, - "time": "2020-05-27T17:11:23+00:00" + "time": "2020-12-06T00:03:30+00:00" }, { "name": "consolidation/log", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/consolidation/log.git", - "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf" + "reference": "82a2aaaa621a7b976e50a745a8d249d5085ee2b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/log/zipball/ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf", - "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf", + "url": "https://api.github.com/repos/consolidation/log/zipball/82a2aaaa621a7b976e50a745a8d249d5085ee2b1", + "reference": "82a2aaaa621a7b976e50a745a8d249d5085ee2b1", "shasum": "" }, "require": { @@ -3810,27 +4544,14 @@ "symfony/console": "^4|^5" }, "require-dev": { - "g1a/composer-test-scenarios": "^3", - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^6", - "squizlabs/php_codesniffer": "^3" + "phpunit/phpunit": ">=7.5.20", + "squizlabs/php_codesniffer": "^3", + "yoast/phpunit-polyfills": "^0.2.0" }, "type": "library", "extra": { - "scenarios": { - "symfony4": { - "require-dev": { - "symfony/console": "^4" - }, - "config": { - "platform": { - "php": "7.1.3" - } - } - } - }, "branch-alias": { - "dev-master": "2.x-dev" + "dev-main": "2.x-dev" } }, "autoload": { @@ -3849,24 +4570,20 @@ } ], "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.", - "support": { - "issues": "https://github.com/consolidation/log/issues", - "source": "https://github.com/consolidation/log/tree/2.0.1" - }, - "time": "2020-05-27T17:06:13+00:00" + "time": "2020-12-10T16:26:23+00:00" }, { "name": "consolidation/output-formatters", - "version": "4.1.1", + "version": "4.1.2", "source": { "type": "git", "url": "https://github.com/consolidation/output-formatters.git", - "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9" + "reference": "5821e6ae076bf690058a4de6c94dce97398a69c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/9deeddd6a916d0a756b216a8b40ce1016e17c0b9", - "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/5821e6ae076bf690058a4de6c94dce97398a69c9", + "reference": "5821e6ae076bf690058a4de6c94dce97398a69c9", "shasum": "" }, "require": { @@ -3876,32 +4593,20 @@ "symfony/finder": "^4|^5" }, "require-dev": { - "g1a/composer-test-scenarios": "^3", - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^6", + "php-coveralls/php-coveralls": "^2.4.2", + "phpunit/phpunit": ">=7", "squizlabs/php_codesniffer": "^3", "symfony/var-dumper": "^4", - "symfony/yaml": "^4" + "symfony/yaml": "^4", + "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { "symfony/var-dumper": "For using the var_dump formatter" }, "type": "library", "extra": { - "scenarios": { - "symfony4": { - "require": { - "symfony/console": "^4.0" - }, - "config": { - "platform": { - "php": "7.1.3" - } - } - } - }, "branch-alias": { - "dev-master": "4.x-dev" + "dev-main": "4.x-dev" } }, "autoload": { @@ -3920,40 +4625,36 @@ } ], "description": "Format text by applying transformations provided by plug-in formatters.", - "support": { - "issues": "https://github.com/consolidation/output-formatters/issues", - "source": "https://github.com/consolidation/output-formatters/tree/4.1.1" - }, - "time": "2020-05-27T20:51:17+00:00" + "time": "2020-12-12T19:04:59+00:00" }, { "name": "consolidation/robo", - "version": "2.1.0", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/consolidation/Robo.git", - "reference": "a0415a2663f6d9426d3cb9013446d3f00225d76d" + "reference": "b365df174d9cfb0f5814e4f3275a1c558b17bc4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/Robo/zipball/a0415a2663f6d9426d3cb9013446d3f00225d76d", - "reference": "a0415a2663f6d9426d3cb9013446d3f00225d76d", + "url": "https://api.github.com/repos/consolidation/Robo/zipball/b365df174d9cfb0f5814e4f3275a1c558b17bc4c", + "reference": "b365df174d9cfb0f5814e4f3275a1c558b17bc4c", "shasum": "" }, "require": { - "consolidation/annotated-command": "^4.1.1", + "consolidation/annotated-command": "^4.2.1", "consolidation/config": "^1.2.1|^2", "consolidation/log": "^1.1.1|^2.0.1", "consolidation/output-formatters": "^4.1.1", "consolidation/self-update": "^1.2", - "grasmash/yaml-expander": "^1.4", "league/container": "^2.4.1", "php": ">=7.1.3", - "symfony/console": "^4.4.8|^5", - "symfony/event-dispatcher": "^4.4.8|^5", - "symfony/filesystem": "^4.4.8|^5", - "symfony/finder": "^4.4.8|^5", - "symfony/process": "^4.4.8|^5" + "symfony/console": "^4.4.11|^5", + "symfony/event-dispatcher": "^4.4.11|^5", + "symfony/filesystem": "^4.4.11|^5", + "symfony/finder": "^4.4.11|^5", + "symfony/process": "^4.4.11|^5", + "symfony/yaml": "^4.0 || ^5.0" }, "conflict": { "codegyre/robo": "*" @@ -3982,11 +4683,11 @@ "scenarios": { "symfony4": { "require": { - "symfony/console": "^4.4.8", - "symfony/event-dispatcher": "^4.4.8", - "symfony/filesystem": "^4.4.8", - "symfony/finder": "^4.4.8", - "symfony/process": "^4.4.8", + "symfony/console": "^4.4.11", + "symfony/event-dispatcher": "^4.4.11", + "symfony/filesystem": "^4.4.11", + "symfony/finder": "^4.4.11", + "symfony/process": "^4.4.11", "phpunit/phpunit": "^6", "nikic/php-parser": "^2" }, @@ -4001,7 +4702,8 @@ } }, "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "2.x-dev", + "dev-main": "2.x-dev" } }, "autoload": { @@ -4020,11 +4722,7 @@ } ], "description": "Modern task runner", - "support": { - "issues": "https://github.com/consolidation/Robo/issues", - "source": "https://github.com/consolidation/Robo/tree/master" - }, - "time": "2020-05-27T22:03:57+00:00" + "time": "2020-12-18T22:09:18+00:00" }, { "name": "consolidation/self-update", @@ -4235,58 +4933,6 @@ }, "time": "2017-12-21T22:14:55+00:00" }, - { - "name": "grasmash/yaml-expander", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/grasmash/yaml-expander.git", - "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/3f0f6001ae707a24f4d9733958d77d92bf9693b1", - "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^1.1.0", - "php": ">=5.4", - "symfony/yaml": "^2.8.11|^3|^4" - }, - "require-dev": { - "greg-1-anderson/composer-test-scenarios": "^1", - "phpunit/phpunit": "^4.8|^5.5.4", - "satooshi/php-coveralls": "^1.0.2|dev-master", - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Grasmash\\YamlExpander\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthew Grasmick" - } - ], - "description": "Expands internal property references in a yaml file.", - "support": { - "issues": "https://github.com/grasmash/yaml-expander/issues", - "source": "https://github.com/grasmash/yaml-expander/tree/master" - }, - "time": "2017-12-16T16:06:03+00:00" - }, { "name": "league/container", "version": "2.4.1", @@ -4534,16 +5180,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.9.1", + "version": "v4.10.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "88e519766fc58bd46b8265561fb79b54e2e00b28" + "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/88e519766fc58bd46b8265561fb79b54e2e00b28", - "reference": "88e519766fc58bd46b8265561fb79b54e2e00b28", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", "shasum": "" }, "require": { @@ -4582,11 +5228,7 @@ "parser", "php" ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.9.1" - }, - "time": "2020-08-30T16:15:20+00:00" + "time": "2020-12-20T10:01:03+00:00" }, { "name": "php-parallel-lint/php-parallel-lint", @@ -4647,16 +5289,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.5.3", + "version": "3.5.8", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb" + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", - "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", "shasum": "" }, "require": { @@ -4694,25 +5336,20 @@ "phpcs", "standards" ], - "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": "2019-12-04T04:46:47+00:00" + "time": "2020-10-23T02:01:07+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.9", + "version": "v4.4.18", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a5370aaa7807c7a439b21386661ffccf3dff2866" + "reference": "5d4c874b0eb1c32d40328a09dbc37307a5a910b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a5370aaa7807c7a439b21386661ffccf3dff2866", - "reference": "a5370aaa7807c7a439b21386661ffccf3dff2866", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5d4c874b0eb1c32d40328a09dbc37307a5a910b0", + "reference": "5d4c874b0eb1c32d40328a09dbc37307a5a910b0", "shasum": "" }, "require": { @@ -4730,6 +5367,7 @@ "psr/log": "~1.0", "symfony/config": "^3.4|^4.0|^5.0", "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/error-handler": "~3.4|~4.4", "symfony/expression-language": "^3.4|^4.0|^5.0", "symfony/http-foundation": "^3.4|^4.0|^5.0", "symfony/service-contracts": "^1.1|^2", @@ -4740,11 +5378,6 @@ "symfony/http-kernel": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" @@ -4769,9 +5402,6 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/4.4" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4786,24 +5416,24 @@ "type": "tidelift" } ], - "time": "2020-05-20T08:37:50+00:00" + "time": "2020-12-18T07:41:31+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.7", + "version": "v1.1.9", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1.3" }, "suggest": { "psr/event-dispatcher": "", @@ -4813,6 +5443,10 @@ "extra": { "branch-alias": { "dev-master": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4844,23 +5478,34 @@ "interoperability", "standards" ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/master" - }, - "time": "2019-09-17T09:54:03+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-06T13:19:58+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.9", + "version": "v4.4.18", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b27f491309db5757816db672b256ea2e03677d30" + "reference": "d99fbef7e0f69bf162ae6131b31132fa3cc4bcbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b27f491309db5757816db672b256ea2e03677d30", - "reference": "b27f491309db5757816db672b256ea2e03677d30", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d99fbef7e0f69bf162ae6131b31132fa3cc4bcbe", + "reference": "d99fbef7e0f69bf162ae6131b31132fa3cc4bcbe", "shasum": "" }, "require": { @@ -4868,11 +5513,6 @@ "symfony/polyfill-ctype": "~1.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Filesystem\\": "" @@ -4897,9 +5537,6 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/4.4" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4914,31 +5551,26 @@ "type": "tidelift" } ], - "time": "2020-05-30T18:50:54+00:00" + "time": "2020-11-30T13:04:35+00:00" }, { "name": "symfony/finder", - "version": "v4.4.9", + "version": "v4.4.18", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "5729f943f9854c5781984ed4907bbb817735776b" + "reference": "ebd0965f2dc2d4e0f11487c16fbb041e50b5c09b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b", - "reference": "5729f943f9854c5781984ed4907bbb817735776b", + "url": "https://api.github.com/repos/symfony/finder/zipball/ebd0965f2dc2d4e0f11487c16fbb041e50b5c09b", + "reference": "ebd0965f2dc2d4e0f11487c16fbb041e50b5c09b", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" @@ -4963,9 +5595,6 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.8" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4980,31 +5609,26 @@ "type": "tidelift" } ], - "time": "2020-03-27T16:54:36+00:00" + "time": "2020-12-08T16:59:59+00:00" }, { "name": "symfony/process", - "version": "v4.4.15", + "version": "v4.4.18", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "9b887acc522935f77555ae8813495958c7771ba7" + "reference": "075316ff72233ce3d04a9743414292e834f2cb4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/9b887acc522935f77555ae8813495958c7771ba7", - "reference": "9b887acc522935f77555ae8813495958c7771ba7", + "url": "https://api.github.com/repos/symfony/process/zipball/075316ff72233ce3d04a9743414292e834f2cb4a", + "reference": "075316ff72233ce3d04a9743414292e834f2cb4a", "shasum": "" }, "require": { "php": ">=7.1.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" @@ -5029,9 +5653,6 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/4.4" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5046,20 +5667,20 @@ "type": "tidelift" } ], - "time": "2020-09-02T16:08:58+00:00" + "time": "2020-12-08T16:59:59+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.9", + "version": "v4.4.18", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a" + "reference": "bbce94f14d73732340740366fcbe63363663a403" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", - "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", + "url": "https://api.github.com/repos/symfony/yaml/zipball/bbce94f14d73732340740366fcbe63363663a403", + "reference": "bbce94f14d73732340740366fcbe63363663a403", "shasum": "" }, "require": { @@ -5076,11 +5697,6 @@ "symfony/console": "For validating YAML files using the lint command" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -5105,9 +5721,6 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/4.4" - }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5122,7 +5735,7 @@ "type": "tidelift" } ], - "time": "2020-05-20T08:37:50+00:00" + "time": "2020-12-08T16:59:59+00:00" }, { "name": "webmozart/assert", @@ -5304,5 +5917,5 @@ "platform-overrides": { "php": "7.2.0" }, - "plugin-api-version": "2.0.0" + "plugin-api-version": "1.1.0" } diff --git a/inc/mailcollector.class.php b/inc/mailcollector.class.php index bafd7bd53f0..61a3e23dc70 100644 --- a/inc/mailcollector.class.php +++ b/inc/mailcollector.class.php @@ -1541,10 +1541,7 @@ private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $ } } - // Try to get filename from Content-Type header - if (empty($filename)) { - $filename = $content_type_header->getParameter('name') ?? ''; - } + var_dump($filename); $filename_matches = []; if (preg_match("/^(?.*)''(?.*)$/", $filename, $filename_matches) @@ -1558,6 +1555,13 @@ private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $ } } + var_dump($filename); + //die; + // Try to get filename from Content-Type header + if (empty($filename)) { + $filename = $content_type_header->getParameter('name') ?? ''; + } + // part come without correct filename in headers - generate trivial one // (inline images case for example) if ((empty($filename) || !Document::isValidDoc($filename))) { diff --git a/tests/emails-tests/23-multibyte_base64_attachment_name.eml b/tests/emails-tests/23-multibyte_base64_attachment_name.eml new file mode 100644 index 00000000000..fca33f468d6 --- /dev/null +++ b/tests/emails-tests/23-multibyte_base64_attachment_name.eml @@ -0,0 +1,54 @@ +Return-Path: skita@teclib.com +Received: from vm000044.ad.teclib.infra (LHLO vm000044.prod.teclib.infra) + (172.21.3.148) by vm000044.prod.teclib.infra with LMTP; Thu, 21 Jan 2021 + 15:26:54 +0100 (CET) +Received: from mail.teclib.com (localhost [127.0.0.1]) + by vm000044.prod.teclib.infra (Postfix) with ESMTP id B1EA87E80858 + for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) +Received: from mail.teclib.com (localhost [127.0.0.1]) + by vm000044.prod.teclib.infra (Postfix) with ESMTP id A5AE17E80842 + for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) +Received: from vm000044.prod.teclib.infra (localhost [127.0.0.1]) + by vm000044.prod.teclib.infra (Postfix) with ESMTP id 94F5D7E80858 + for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) +Date: Thu, 21 Jan 2021 15:26:54 +0100 (CET) +From: Stanislas Kita +To: Stanislas Kita +Message-ID: <2122674625.1101804.1611239214539.JavaMail.zimbra@teclib.com> +In-Reply-To: <401831029.1101790.1611239208899.JavaMail.zimbra@teclib.com> +Subject: test filename base64 multibyte +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="----=_Part_1101800_1137170823.1611239214535" +X-Mailer: Zimbra 8.0.9_GA_6191 (ZimbraWebClient - FF84 (Linux)/8.0.9_GA_6191) +Thread-Topic: test filename base64 multibyte +Thread-Index: 05AJorsW1pjSDmGFpPm4czpr3p4weA== + +------=_Part_1101800_1137170823.1611239214535 +Content-Type: multipart/alternative; + boundary="----=_Part_1101801_1973047508.1611239214535" + +------=_Part_1101801_1973047508.1611239214535 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 7bit + + +test + + +------=_Part_1101801_1973047508.1611239214535 +Content-Type: text/html; charset=utf-8 +Content-Transfer-Encoding: 7bit + +

test

+------=_Part_1101801_1973047508.1611239214535-- + +------=_Part_1101800_1137170823.1611239214535 +Content-Type: application/pdf; + name="=?utf-8?B?RFVDX1NJTkfCoFdBSMKgUEFOwqAoTUHCoENoYW7CoEhvwqBLaSkucGRm?=" +Content-Disposition: attachment; + filename="=?utf-8?B?RFVDX1NJTkfCoFdBSMKgUEFOwqAoTUHCoENoYW7CoEhvwqBLaSkucGRm?=" +Content-Transfer-Encoding: base64 + +JVBERi0xLjMNCiXi48/TDQoNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL091dGxpbmVzIDIgMCBSDQovUGFnZXMgMyAwIFINCj4+DQplbmRvYmoNCg0KMiAwIG9iag0KPDwNCi9UeXBlIC9PdXRsaW5lcw0KL0NvdW50IDANCj4+DQplbmRvYmoNCg0KMyAwIG9iag0KPDwNCi9UeXBlIC9QYWdlcw0KL0NvdW50IDINCi9LaWRzIFsgNCAwIFIgNiAwIFIgXSANCj4+DQplbmRvYmoNCg0KNCAwIG9iag0KPDwNCi9UeXBlIC9QYWdlDQovUGFyZW50IDMgMCBSDQovUmVzb3VyY2VzIDw8DQovRm9udCA8PA0KL0YxIDkgMCBSIA0KPj4NCi9Qcm9jU2V0IDggMCBSDQo+Pg0KL01lZGlhQm94IFswIDAgNjEyLjAwMDAgNzkyLjAwMDBdDQovQ29udGVudHMgNSAwIFINCj4+DQplbmRvYmoNCg0KNSAwIG9iag0KPDwgL0xlbmd0aCAxMDc0ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBBIFNpbXBsZSBQREYgRmlsZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIFRoaXMgaXMgYSBzbWFsbCBkZW1vbnN0cmF0aW9uIC5wZGYgZmlsZSAtICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjY0LjcwNDAgVGQNCigganVzdCBmb3IgdXNlIGluIHRoZSBWaXJ0dWFsIE1lY2hhbmljcyB0dXRvcmlhbHMuIE1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NTIuNzUyMCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDYyOC44NDgwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjE2Ljg5NjAgVGQNCiggdGV4dC4gQW5kIG1vcmUgdGV4dC4gQm9yaW5nLCB6enp6ei4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjA0Ljk0NDAgVGQNCiggbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDU5Mi45OTIwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNTY5LjA4ODAgVGQNCiggQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA1NTcuMTM2MCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBFdmVuIG1vcmUuIENvbnRpbnVlZCBvbiBwYWdlIDIgLi4uKSBUag0KRVQNCmVuZHN0cmVhbQ0KZW5kb2JqDQoNCjYgMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KL1Jlc291cmNlcyA8PA0KL0ZvbnQgPDwNCi9GMSA5IDAgUiANCj4+DQovUHJvY1NldCA4IDAgUg0KPj4NCi9NZWRpYUJveCBbMCAwIDYxMi4wMDAwIDc5Mi4wMDAwXQ0KL0NvbnRlbnRzIDcgMCBSDQo+Pg0KZW5kb2JqDQoNCjcgMCBvYmoNCjw8IC9MZW5ndGggNjc2ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBTaW1wbGUgUERGIEZpbGUgMiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIC4uLmNvbnRpbnVlZCBmcm9tIHBhZ2UgMS4gWWV0IG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NzYuNjU2MCBUZA0KKCBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY2NC43MDQwIFRkDQooIHRleHQuIE9oLCBob3cgYm9yaW5nIHR5cGluZyB0aGlzIHN0dWZmLiBCdXQgbm90IGFzIGJvcmluZyBhcyB3YXRjaGluZyApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY1Mi43NTIwIFRkDQooIHBhaW50IGRyeS4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NDAuODAwMCBUZA0KKCBCb3JpbmcuICBNb3JlLCBhIGxpdHRsZSBtb3JlIHRleHQuIFRoZSBlbmQsIGFuZCBqdXN0IGFzIHdlbGwuICkgVGoNCkVUDQplbmRzdHJlYW0NCmVuZG9iag0KDQo4IDAgb2JqDQpbL1BERiAvVGV4dF0NCmVuZG9iag0KDQo5IDAgb2JqDQo8PA0KL1R5cGUgL0ZvbnQNCi9TdWJ0eXBlIC9UeXBlMQ0KL05hbWUgL0YxDQovQmFzZUZvbnQgL0hlbHZldGljYQ0KL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcNCj4+DQplbmRvYmoNCg0KMTAgMCBvYmoNCjw8DQovQ3JlYXRvciAoUmF2ZSBcKGh0dHA6Ly93d3cubmV2cm9uYS5jb20vcmF2ZVwpKQ0KL1Byb2R1Y2VyIChOZXZyb25hIERlc2lnbnMpDQovQ3JlYXRpb25EYXRlIChEOjIwMDYwMzAxMDcyODI2KQ0KPj4NCmVuZG9iag0KDQp4cmVmDQowIDExDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTkgMDAwMDAgbg0KMDAwMDAwMDA5MyAwMDAwMCBuDQowMDAwMDAwMTQ3IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAwMDM5MCAwMDAwMCBuDQowMDAwMDAxNTIyIDAwMDAwIG4NCjAwMDAwMDE2OTAgMDAwMDAgbg0KMDAwMDAwMjQyMyAwMDAwMCBuDQowMDAwMDAyNDU2IDAwMDAwIG4NCjAwMDAwMDI1NzQgMDAwMDAgbg0KDQp0cmFpbGVyDQo8PA0KL1NpemUgMTENCi9Sb290IDEgMCBSDQovSW5mbyAxMCAwIFINCj4+DQoNCnN0YXJ0eHJlZg0KMjcxNA0KJSVFT0YNCg== +------=_Part_1101800_1137170823.1611239214535-- From 65e43b8af1f7c1e5b44d4c6f3e665f974532ef5e Mon Sep 17 00:00:00 2001 From: Stanislas KITA Date: Thu, 21 Jan 2021 15:49:07 +0100 Subject: [PATCH 07/12] fixed tests --- .../23-multibyte_base64_attachment_name.eml | 16 ++++++++-------- tests/imap/MailCollector.php | 2 ++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/tests/emails-tests/23-multibyte_base64_attachment_name.eml b/tests/emails-tests/23-multibyte_base64_attachment_name.eml index fca33f468d6..574d5154250 100644 --- a/tests/emails-tests/23-multibyte_base64_attachment_name.eml +++ b/tests/emails-tests/23-multibyte_base64_attachment_name.eml @@ -1,27 +1,27 @@ -Return-Path: skita@teclib.com +Return-Path: normal@glpi-project.org Received: from vm000044.ad.teclib.infra (LHLO vm000044.prod.teclib.infra) (172.21.3.148) by vm000044.prod.teclib.infra with LMTP; Thu, 21 Jan 2021 15:26:54 +0100 (CET) Received: from mail.teclib.com (localhost [127.0.0.1]) by vm000044.prod.teclib.infra (Postfix) with ESMTP id B1EA87E80858 - for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) + for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) Received: from mail.teclib.com (localhost [127.0.0.1]) by vm000044.prod.teclib.infra (Postfix) with ESMTP id A5AE17E80842 - for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) + for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) Received: from vm000044.prod.teclib.infra (localhost [127.0.0.1]) by vm000044.prod.teclib.infra (Postfix) with ESMTP id 94F5D7E80858 - for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) + for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) Date: Thu, 21 Jan 2021 15:26:54 +0100 (CET) -From: Stanislas Kita -To: Stanislas Kita +From: "Normal User" +To: unittests@glpi-project.org Message-ID: <2122674625.1101804.1611239214539.JavaMail.zimbra@teclib.com> In-Reply-To: <401831029.1101790.1611239208899.JavaMail.zimbra@teclib.com> -Subject: test filename base64 multibyte +Subject: Test filename base64 multibyte MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_1101800_1137170823.1611239214535" X-Mailer: Zimbra 8.0.9_GA_6191 (ZimbraWebClient - FF84 (Linux)/8.0.9_GA_6191) -Thread-Topic: test filename base64 multibyte +Thread-Topic: Test filename base64 multibyte Thread-Index: 05AJorsW1pjSDmGFpPm4czpr3p4weA== ------=_Part_1101800_1137170823.1611239214535 diff --git a/tests/imap/MailCollector.php b/tests/imap/MailCollector.php index 9189c8f59b2..c85e9cb06c6 100644 --- a/tests/imap/MailCollector.php +++ b/tests/imap/MailCollector.php @@ -535,6 +535,7 @@ public function testCollect() { 'Mono-part HTML message', 'Test attachment with multibyte filename', 'Test attachment with invalid chars for OS', + 'Test filename base64 multibyte' ] ], // Mails having "normal" user as observer (add_cc_to_observer = true) @@ -603,6 +604,7 @@ public function testCollect() { '20-specïal chars.gif', '22-办公用品预约Apply for office supplies online.xlsx', '23-New Text - Document.txt', + 'DUC_SING WAH PAN (MA Chan Ho Ki).pdf' ]; $iterator = $DB->request( From e8bbff732b58072057013c25b19bd732f9cc6cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Anne?= Date: Thu, 28 Jan 2021 09:31:18 +0100 Subject: [PATCH 08/12] test --- .github/workflows/ci.yml | 14 +- composer.json | 6 +- composer.lock | 1971 ++++++----------- inc/mailcollector.class.php | 28 +- .../22-multibyte_attachment_name.eml | 191 -- .../23-bad_attachment_name_for_OS.eml | 34 - .../23-multibyte_base64_attachment_name.eml | 54 - ...ement-multibyte-name-with-continuation.eml | 30 + ...nt-multibyte-name-without-continuation.eml | 28 + ...-attachement-with-OS-incompatible-char.eml | 28 + tests/imap/MailCollector.php | 15 +- tools/laminas-mail-128.patch | 79 + 12 files changed, 871 insertions(+), 1607 deletions(-) delete mode 100644 tests/emails-tests/22-multibyte_attachment_name.eml delete mode 100644 tests/emails-tests/23-bad_attachment_name_for_OS.eml delete mode 100644 tests/emails-tests/23-multibyte_base64_attachment_name.eml create mode 100644 tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml create mode 100644 tests/emails-tests/24.2-attachement-multibyte-name-without-continuation.eml create mode 100644 tests/emails-tests/25-attachement-with-OS-incompatible-char.eml create mode 100644 tools/laminas-mail-128.patch diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ff6090fe6fc..dc1c6b2a466 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -227,6 +227,13 @@ jobs: docker exec app bin/console glpi:database:configure --config-dir=./tests --no-interaction --reconfigure --db-name=glpi --db-host=db --db-user=root docker exec app vendor/bin/atoum -p 'php -d memory_limit=512M' --debug --force-terminal --use-dot-report --bootstrap-file tests/bootstrap.php --no-code-coverage --fail-if-skipped-methods --max-children-number 1 -d tests/database docker exec app bin/console glpi:database:configure --config-dir=./tests --no-interaction --reconfigure --db-name=glpi --db-host=db --db-user=root + - name: "IMAP tests" + if: env.skip != 'true' + run: | + for f in `ls tests/emails-tests/*.eml`; do cat $f | docker exec --user glpi --interactive dovecot getmail_maildir /home/glpi/Maildir/ ; done + docker exec app sed -e 's/127.0.0.1/dovecot/g' -i tests/imap/MailCollector.php + docker exec app sed -e 's/127.0.0.1/dovecot/g' -i tests/imap/Toolbox.php + docker exec app vendor/bin/atoum -p 'php -d memory_limit=512M' --debug --force-terminal --use-dot-report --bootstrap-file tests/bootstrap.php --no-code-coverage --fail-if-skipped-methods --max-children-number 1 -d tests/imap - name: "Unit tests" if: env.skip != 'true' run: | @@ -240,13 +247,6 @@ jobs: run: | for f in `ls tests/LDAP/ldif/*.ldif`; do cat $f | docker exec --interactive openldap ldapadd -x -H ldap://127.0.0.1:3890/ -D "cn=Manager,dc=glpi,dc=org" -w insecure ; done docker exec app vendor/bin/atoum -p 'php -d memory_limit=512M' --debug --force-terminal --use-dot-report --bootstrap-file tests/bootstrap.php --no-code-coverage --fail-if-skipped-methods --max-children-number 1 -d tests/LDAP - - name: "IMAP tests" - if: env.skip != 'true' - run: | - for f in `ls tests/emails-tests/*.eml`; do cat $f | docker exec --user glpi --interactive dovecot getmail_maildir /home/glpi/Maildir/ ; done - docker exec app sed -e 's/127.0.0.1/dovecot/g' -i tests/imap/MailCollector.php - docker exec app sed -e 's/127.0.0.1/dovecot/g' -i tests/imap/Toolbox.php - docker exec app vendor/bin/atoum -p 'php -d memory_limit=512M' --debug --force-terminal --use-dot-report --bootstrap-file tests/bootstrap.php --no-code-coverage --fail-if-skipped-methods --max-children-number 1 -d tests/imap - name: "WEB tests" if: env.skip != 'true' run: | diff --git a/composer.json b/composer.json index a46a9ce11ee..69d14b9857a 100644 --- a/composer.json +++ b/composer.json @@ -95,11 +95,13 @@ "lint": "vendor/bin/parallel-lint --exclude files --exclude marketplace --exclude plugins --exclude vendor --exclude tools/vendor .", "post-install-cmd": [ "@php -r \"file_put_contents('.composer.hash', sha1_file('composer.lock'));\"", - "patch -f -p1 -d vendor/tecnickcom/tcpdf/ < tools/tcpdf-php8-compat.patch || echo 'Error applying patch, deprecation warnings related to TCPDF lib may pollute logs'" + "patch -f -p1 -d vendor/tecnickcom/tcpdf/ < tools/tcpdf-php8-compat.patch || echo 'Error applying patch, deprecation warnings related to TCPDF lib may pollute logs'", + "patch -f -p1 -d vendor/laminas/laminas-mail/ < tools/laminas-mail-128.patch || echo 'Error applying patch, retrieving some mail attachement could fail'" ], "post-update-cmd": [ "@php -r \"file_put_contents('.composer.hash', sha1_file('composer.lock'));\"", - "patch -f -p1 -d vendor/tecnickcom/tcpdf/ < tools/tcpdf-php8-compat.patch || echo 'Error applying patch, deprecation warnings related to TCPDF lib may pollute logs'" + "patch -f -p1 -d vendor/tecnickcom/tcpdf/ < tools/tcpdf-php8-compat.patch || echo 'Error applying patch, deprecation warnings related to TCPDF lib may pollute logs'", + "patch -f -p1 -d vendor/laminas/laminas-mail/ < tools/laminas-mail-128.patch || echo 'Error applying patch, retrieving some mail attachement could fail'" ] }, "repositories": { diff --git a/composer.lock b/composer.lock index afb38316b71..c261adc60f5 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "blueimp/jquery-file-upload", - "version": "v10.31.0", + "version": "v10.29.0", "source": { "type": "git", "url": "https://github.com/vkhramtsov/jQuery-File-Upload.git", - "reference": "0740f81829698b84efe17e72501e0f420ea0d611" + "reference": "f41132833276acbf72c8e839e900215b0149945d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/0740f81829698b84efe17e72501e0f420ea0d611", - "reference": "0740f81829698b84efe17e72501e0f420ea0d611", + "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/f41132833276acbf72c8e839e900215b0149945d", + "reference": "f41132833276acbf72c8e839e900215b0149945d", "shasum": "" }, "type": "library", @@ -59,36 +59,39 @@ "upload", "widget" ], + "support": { + "forum": "https://stackoverflow.com/questions/tagged/blueimp+jquery+file-upload", + "source": "https://github.com/vkhramtsov/jQuery-File-Upload/tree/v10.29.0" + }, "funding": [ { "url": "https://github.com/blueimp", "type": "github" } ], - "time": "2020-07-13T05:42:06+00:00" + "time": "2020-05-22T17:10:45+00:00" }, { "name": "brick/math", - "version": "0.9.2", + "version": "0.8.14", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0" + "reference": "6f7a46b5c3d487b277f38fbd17df57d348cace8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", - "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", + "url": "https://api.github.com/repos/brick/math/zipball/6f7a46b5c3d487b277f38fbd17df57d348cace8a", + "reference": "6f7a46b5c3d487b277f38fbd17df57d348cace8a", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" + "php": ">=7.1" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.3.2" + "php-coveralls/php-coveralls": "2.*", + "phpunit/phpunit": "7.*", + "vimeo/psalm": "3.*" }, "type": "library", "autoload": { @@ -111,13 +114,11 @@ "brick", "math" ], - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-01-20T22:51:39+00:00" + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.8.14" + }, + "time": "2020-02-17T13:57:43+00:00" }, { "name": "container-interop/container-interop", @@ -157,23 +158,23 @@ }, { "name": "elvanto/litemoji", - "version": "2.0.4", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/elvanto/litemoji.git", - "reference": "7b64216805bc746f46be648b18cffbd813f6086a" + "reference": "2cba2c87c505fe1d3a6e06ff4cc48d98af757521" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elvanto/litemoji/zipball/7b64216805bc746f46be648b18cffbd813f6086a", - "reference": "7b64216805bc746f46be648b18cffbd813f6086a", + "url": "https://api.github.com/repos/elvanto/litemoji/zipball/2cba2c87c505fe1d3a6e06ff4cc48d98af757521", + "reference": "2cba2c87c505fe1d3a6e06ff4cc48d98af757521", "shasum": "" }, "require": { "php": ">=5.6" }, "require-dev": { - "milesj/emojibase": "6.0.0", + "milesj/emojibase": "4.0.0", "phpunit/phpunit": "^5.0" }, "type": "library", @@ -191,7 +192,11 @@ "emoji", "php-emoji" ], - "time": "2020-11-10T08:58:16+00:00" + "support": { + "issues": "https://github.com/elvanto/litemoji/issues", + "source": "https://github.com/elvanto/litemoji/tree/2.0.1" + }, + "time": "2019-07-24T19:58:51+00:00" }, { "name": "glen/filename-normalizer", @@ -319,23 +324,23 @@ }, { "name": "guzzlehttp/promises", - "version": "1.4.0", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "60d379c243457e073cff02bc323a2a86cb355631" + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", - "reference": "60d379c243457e073cff02bc323a2a86cb355631", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=5.5.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "phpunit/phpunit": "^4.0" }, "type": "library", "extra": { @@ -357,1046 +362,253 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2020-09-30T07:37:28+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", - "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.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-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": "2020-09-30T07:37:11+00:00" - }, - { - "name": "htmlawed/htmlawed", - "version": "1.2.5", - "dist": { - "type": "zip", - "url": "https://www.bioinformatics.org/phplabware/downloads/htmLawed125.zip" - }, - "type": "library", - "autoload": { - "files": [ - "htmLawed.php" - ] - }, - "license": [ - "LGPL-3.0-only", - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Santosh Patnaik", - "email": "drpatnaik@yahoo.com", - "role": "Developer" - } - ], - "description": "Official htmLawed PHP library for HTML filtering", - "homepage": "https://www.bioinformatics.org/phplabware/internal_utilities/htmLawed" - }, - { - "name": "iamcal/lib_autolink", - "version": "v1.7", - "source": { - "type": "git", - "url": "https://github.com/iamcal/lib_autolink.git", - "reference": "b3a86d8437e5d635fb85b155a86288d94f6a924d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/iamcal/lib_autolink/zipball/b3a86d8437e5d635fb85b155a86288d94f6a924d", - "reference": "b3a86d8437e5d635fb85b155a86288d94f6a924d", - "shasum": "" - }, - "type": "library", - "autoload": { - "files": [ - "lib_autolink.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Adds anchors to urls in a text", - "keywords": [ - "anchor", - "autolink", - "link" - ], - "support": { - "issues": "https://github.com/iamcal/lib_autolink/issues", - "source": "https://github.com/iamcal/lib_autolink/tree/master" - }, - "time": "2015-05-22T17:10:41+00:00" - }, - { - "name": "laminas/laminas-cache", - "version": "2.10.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache.git", - "reference": "060b2a71d42b12122a3546594727e7d4b870abd5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache/zipball/060b2a71d42b12122a3546594727e7d4b870abd5", - "reference": "060b2a71d42b12122a3546594727e7d4b870abd5", - "shasum": "" - }, - "require": { - "laminas/laminas-cache-storage-adapter-apc": "^1.0", - "laminas/laminas-cache-storage-adapter-apcu": "^1.0", - "laminas/laminas-cache-storage-adapter-blackhole": "^1.0", - "laminas/laminas-cache-storage-adapter-dba": "^1.0", - "laminas/laminas-cache-storage-adapter-ext-mongodb": "^1.0", - "laminas/laminas-cache-storage-adapter-filesystem": "^1.0", - "laminas/laminas-cache-storage-adapter-memcache": "^1.0", - "laminas/laminas-cache-storage-adapter-memcached": "^1.0", - "laminas/laminas-cache-storage-adapter-memory": "^1.0", - "laminas/laminas-cache-storage-adapter-mongodb": "^1.0", - "laminas/laminas-cache-storage-adapter-redis": "^1.0", - "laminas/laminas-cache-storage-adapter-session": "^1.0", - "laminas/laminas-cache-storage-adapter-wincache": "^1.0", - "laminas/laminas-cache-storage-adapter-xcache": "^1.0", - "laminas/laminas-cache-storage-adapter-zend-server": "^1.0", - "laminas/laminas-eventmanager": "^2.6.3 || ^3.2", - "laminas/laminas-servicemanager": "^2.7.8 || ^3.3", - "laminas/laminas-stdlib": "^3.2.1", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0" - }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" - }, - "replace": { - "zendframework/zend-cache": "^2.9.0" - }, - "require-dev": { - "cache/integration-tests": "^0.16", - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-serializer": "^2.6", - "phpbench/phpbench": "^0.13", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" - }, - "suggest": { - "laminas/laminas-serializer": "Laminas\\Serializer component" - }, - "type": "library", - "extra": { - "laminas": { - "component": "Laminas\\Cache", - "config-provider": "Laminas\\Cache\\ConfigProvider" - } - }, - "autoload": { - "files": [ - "autoload/patternPluginManagerPolyfill.php" - ], - "psr-4": { - "Laminas\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Caching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output", - "homepage": "https://laminas.dev", - "keywords": [ - "cache", - "laminas", - "psr-16", - "psr-6" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-11-08T13:01:19+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-apc", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-apc.git", - "reference": "8b375d994f6e67534f6ae6e995249e706faa30c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-apc/zipball/8b375d994f6e67534f6ae6e995249e706faa30c1", - "reference": "8b375d994f6e67534f6ae6e995249e706faa30c1", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" - }, - "suggest": { - "ext-apc": "APC or compatible extension, to use the APC storage adapter" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:04:12+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-apcu", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-apcu.git", - "reference": "1fdd7585042c1a577f6e630535df1e86e23cf5dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-apcu/zipball/1fdd7585042c1a577f6e630535df1e86e23cf5dc", - "reference": "1fdd7585042c1a577f6e630535df1e86e23cf5dc", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "suggest": { - "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for apcu", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:05:19+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-blackhole", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole.git", - "reference": "5f2cb437160fbc01d7f216b11e4f1ff4c9b95c49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-blackhole/zipball/5f2cb437160fbc01d7f216b11e4f1ff4c9b95c49", - "reference": "5f2cb437160fbc01d7f216b11e4f1ff4c9b95c49", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for blackhole", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:07:07+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-dba", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-dba.git", - "reference": "ad968d3d8a0350af8e6717be58bb96e5a9e77f3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-dba/zipball/ad968d3d8a0350af8e6717be58bb96e5a9e77f3b", - "reference": "ad968d3d8a0350af8e6717be58bb96e5a9e77f3b", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "suggest": { - "ext-dba": "DBA, to use the DBA storage adapter" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for dba", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:08:58+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-ext-mongodb", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb.git", - "reference": "011ec5a8ca721ba012d232b1a01b50a55904b99f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-ext-mongodb/zipball/011ec5a8ca721ba012d232b1a01b50a55904b99f", - "reference": "011ec5a8ca721ba012d232b1a01b50a55904b99f", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "suggest": { - "ext-mongodb": "MongoDB, to use the ExtMongoDb storage adapter" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for ext-mongodb", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:11:06+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-filesystem", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem.git", - "reference": "ae1723bcd84efbdae8f20cbb1bacb9ce9c13dbde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-filesystem/zipball/ae1723bcd84efbdae8f20cbb1bacb9ce9c13dbde", - "reference": "ae1723bcd84efbdae8f20cbb1bacb9ce9c13dbde", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for filesystem", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:12:14+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-memcache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-memcache.git", - "reference": "62d0fab1cd261b44a81821e986c0110d7dda896b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memcache/zipball/62d0fab1cd261b44a81821e986c0110d7dda896b", - "reference": "62d0fab1cd261b44a81821e986c0110d7dda896b", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "suggest": { - "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for memcache", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:13:36+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-memcached", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-memcached.git", - "reference": "29599106bb501eb96207b175c460c95487518db1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memcached/zipball/29599106bb501eb96207b175c460c95487518db1", - "reference": "29599106bb501eb96207b175c460c95487518db1", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for memcached", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:16:42+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-memory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-memory.git", - "reference": "58f4b45281552bb6673c900fadddad21e0ed05c8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memory/zipball/58f4b45281552bb6673c900fadddad21e0ed05c8", - "reference": "58f4b45281552bb6673c900fadddad21e0ed05c8", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for memory", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:17:47+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-mongodb", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb.git", - "reference": "ef4aa396b55533b8eb3e1d4126c39a78a22e49a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-mongodb/zipball/ef4aa396b55533b8eb3e1d4126c39a78a22e49a6", - "reference": "ef4aa396b55533b8eb3e1d4126c39a78a22e49a6", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for mongodb", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-10-12T16:19:10+00:00" - }, - { - "name": "laminas/laminas-cache-storage-adapter-redis", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-redis.git", - "reference": "3fe904953d17728d7fdaa87be603231f23fb0a4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-redis/zipball/3fe904953d17728d7fdaa87be603231f23fb0a4d", - "reference": "3fe904953d17728d7fdaa87be603231f23fb0a4d", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for redis", - "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "time": "2020-10-12T16:20:13+00:00" + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/master" + }, + "time": "2016-12-20T10:07:11+00:00" }, { - "name": "laminas/laminas-cache-storage-adapter-session", - "version": "1.0.1", + "name": "guzzlehttp/psr7", + "version": "1.6.1", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-session.git", - "reference": "0d2276cd61bd162cd38c53aaa22f18137621dc0c" + "url": "https://github.com/guzzle/psr7.git", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-session/zipball/0d2276cd61bd162cd38c53aaa22f18137621dc0c", - "reference": "0d2276cd61bd162cd38c53aaa22f18137621dc0c", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" }, "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" + "psr/http-message-implementation": "1.0" }, "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-session": "^2.7.4", - "squizlabs/php_codesniffer": "^2.7" + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" }, "suggest": { - "laminas/laminas-session": "Laminas\\Session component" + "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, "autoload": { "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for session", - "keywords": [ - "cache", - "laminas" + "MIT" ], - "funding": [ + "authors": [ { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" } ], - "time": "2020-10-12T16:21:28+00:00" + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.6.1" + }, + "time": "2019-07-01T23:21:34+00:00" }, { - "name": "laminas/laminas-cache-storage-adapter-wincache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-wincache.git", - "reference": "0f54599c5d9aff11b01adadd2742097f923170ba" - }, + "name": "htmlawed/htmlawed", + "version": "1.2.5", "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-wincache/zipball/0f54599c5d9aff11b01adadd2742097f923170ba", - "reference": "0f54599c5d9aff11b01adadd2742097f923170ba", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" - }, - "suggest": { - "ext-wincache": "WinCache, to use the WinCache storage adapter" + "url": "https://www.bioinformatics.org/phplabware/downloads/htmLawed125.zip" }, "type": "library", "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } + "files": [ + "htmLawed.php" + ] }, - "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "description": "Laminas cache adapter for wincache", - "keywords": [ - "cache", - "laminas" + "LGPL-3.0-only", + "GPL-2.0-or-later" ], - "funding": [ + "authors": [ { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" + "name": "Santosh Patnaik", + "email": "drpatnaik@yahoo.com", + "role": "Developer" } ], - "time": "2020-10-12T16:22:49+00:00" + "description": "Official htmLawed PHP library for HTML filtering", + "homepage": "https://www.bioinformatics.org/phplabware/internal_utilities/htmLawed" }, { - "name": "laminas/laminas-cache-storage-adapter-xcache", - "version": "1.0.1", + "name": "iamcal/lib_autolink", + "version": "v1.7", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-xcache.git", - "reference": "24049557aa796ec7527bcc8032ed68346232b219" + "url": "https://github.com/iamcal/lib_autolink.git", + "reference": "b3a86d8437e5d635fb85b155a86288d94f6a924d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-xcache/zipball/24049557aa796ec7527bcc8032ed68346232b219", - "reference": "24049557aa796ec7527bcc8032ed68346232b219", + "url": "https://api.github.com/repos/iamcal/lib_autolink/zipball/b3a86d8437e5d635fb85b155a86288d94f6a924d", + "reference": "b3a86d8437e5d635fb85b155a86288d94f6a924d", "shasum": "" }, - "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" - }, - "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" - }, - "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-serializer": "^2.9", - "squizlabs/php_codesniffer": "^2.7" - }, - "suggest": { - "ext-xcache": "XCache, to use the XCache storage adapter" - }, "type": "library", "autoload": { - "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" - } + "files": [ + "lib_autolink.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Laminas cache adapter for xcache", + "description": "Adds anchors to urls in a text", "keywords": [ - "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } + "anchor", + "autolink", + "link" ], - "time": "2020-10-12T16:23:46+00:00" + "support": { + "issues": "https://github.com/iamcal/lib_autolink/issues", + "source": "https://github.com/iamcal/lib_autolink/tree/master" + }, + "time": "2015-05-22T17:10:41+00:00" }, { - "name": "laminas/laminas-cache-storage-adapter-zend-server", - "version": "1.0.1", + "name": "laminas/laminas-cache", + "version": "2.9.0", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server.git", - "reference": "8d0b0d219a048a92472d89a5e527990f3ea2decc" + "url": "https://github.com/laminas/laminas-cache.git", + "reference": "f4746a868c3e2f2da63c19d23efac12b9d1bb554" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-zend-server/zipball/8d0b0d219a048a92472d89a5e527990f3ea2decc", - "reference": "8d0b0d219a048a92472d89a5e527990f3ea2decc", + "url": "https://api.github.com/repos/laminas/laminas-cache/zipball/f4746a868c3e2f2da63c19d23efac12b9d1bb554", + "reference": "f4746a868c3e2f2da63c19d23efac12b9d1bb554", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" - }, - "conflict": { - "laminas/laminas-cache": "<2.10" + "laminas/laminas-eventmanager": "^2.6.3 || ^3.2", + "laminas/laminas-servicemanager": "^2.7.8 || ^3.3", + "laminas/laminas-stdlib": "^3.2.1", + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^5.6 || ^7.0", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0" }, "provide": { - "laminas/laminas-cache-storage-implementation": "1.0" + "psr/cache-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "zendframework/zend-cache": "self.version" }, "require-dev": { - "laminas/laminas-cache": "^2.10", - "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "cache/integration-tests": "^0.16", "laminas/laminas-coding-standard": "~1.0.0", - "squizlabs/php_codesniffer": "^2.7" + "laminas/laminas-serializer": "^2.6", + "laminas/laminas-session": "^2.7.4", + "phpbench/phpbench": "^0.13", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" + }, + "suggest": { + "ext-apc": "APC or compatible extension, to use the APC storage adapter", + "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter", + "ext-dba": "DBA, to use the DBA storage adapter", + "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter", + "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", + "ext-mongo": "Mongo, to use MongoDb storage adapter", + "ext-mongodb": "MongoDB, to use the ExtMongoDb storage adapter", + "ext-redis": "Redis, to use Redis storage adapter", + "ext-wincache": "WinCache, to use the WinCache storage adapter", + "ext-xcache": "XCache, to use the XCache storage adapter", + "laminas/laminas-serializer": "Laminas\\Serializer component", + "laminas/laminas-session": "Laminas\\Session component", + "mongodb/mongodb": "Required for use with the ext-mongodb adapter", + "mongofill/mongofill": "Alternative to ext-mongo - a pure PHP implementation designed as a drop in replacement" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.9.x-dev", + "dev-develop": "2.10.x-dev" + }, + "laminas": { + "component": "Laminas\\Cache", + "config-provider": "Laminas\\Cache\\ConfigProvider" + } + }, "autoload": { + "files": [ + "autoload/patternPluginManagerPolyfill.php" + ], "psr-4": { - "Laminas\\Cache\\Storage\\Adapter\\": "src/" + "Laminas\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "Laminas cache adapter for zend-server", + "description": "Caching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output", + "homepage": "https://laminas.dev", "keywords": [ "cache", - "laminas" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } + "laminas", + "psr-16", + "psr-6" ], - "time": "2020-10-12T16:24:25+00:00" + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-cache/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-cache/issues", + "rss": "https://github.com/laminas/laminas-cache/releases.atom", + "source": "https://github.com/laminas/laminas-cache" + }, + "time": "2019-12-31T16:23:18+00:00" }, { "name": "laminas/laminas-eventmanager", @@ -1875,16 +1087,16 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.5.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "0669e1eec8d9f61e35a5bc5012796d49f418b259" + "reference": "044cb8e380682563fb277ed5f6de4f690e4e6239" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/0669e1eec8d9f61e35a5bc5012796d49f418b259", - "reference": "0669e1eec8d9f61e35a5bc5012796d49f418b259", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/044cb8e380682563fb277ed5f6de4f690e4e6239", + "reference": "044cb8e380682563fb277ed5f6de4f690e4e6239", "shasum": "" }, "require": { @@ -1899,7 +1111,7 @@ "psr/container-implementation": "^1.0" }, "replace": { - "zendframework/zend-servicemanager": "^3.4.0" + "zendframework/zend-servicemanager": "self.version" }, "require-dev": { "laminas/laminas-coding-standard": "~1.0.0", @@ -1943,13 +1155,15 @@ "service-manager", "servicemanager" ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-01-17T16:54:43+00:00" + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-servicemanager/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-servicemanager/issues", + "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", + "source": "https://github.com/laminas/laminas-servicemanager" + }, + "time": "2019-12-31T17:44:47+00:00" }, { "name": "laminas/laminas-stdlib", @@ -2011,16 +1225,16 @@ }, { "name": "laminas/laminas-validator", - "version": "2.13.5", + "version": "2.13.4", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "d334dddda43af263d6a7e5024fd2b013cb6981f7" + "reference": "93593684e70b8ed1e870cacd34ca32b0c0ace185" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/d334dddda43af263d6a7e5024fd2b013cb6981f7", - "reference": "d334dddda43af263d6a7e5024fd2b013cb6981f7", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/93593684e70b8ed1e870cacd34ca32b0c0ace185", + "reference": "93593684e70b8ed1e870cacd34ca32b0c0ace185", "shasum": "" }, "require": { @@ -2062,6 +1276,10 @@ }, "type": "library", "extra": { + "branch-alias": { + "dev-master": "2.13.x-dev", + "dev-develop": "2.14.x-dev" + }, "laminas": { "component": "Laminas\\Validator", "config-provider": "Laminas\\Validator\\ConfigProvider" @@ -2082,37 +1300,43 @@ "laminas", "validator" ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-01-06T15:05:04+00:00" + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-validator/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-validator/issues", + "rss": "https://github.com/laminas/laminas-validator/releases.atom", + "source": "https://github.com/laminas/laminas-validator" + }, + "time": "2020-03-31T18:57:01+00:00" }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.1.1", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642" + "reference": "fcd87520e4943d968557803919523772475e8ea3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/fcd87520e4943d968557803919523772475e8ea3", + "reference": "fcd87520e4943d968557803919523772475e8ea3", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0 || ^8.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev", + "dev-develop": "1.1.x-dev" + }, "laminas": { "module": "Laminas\\ZendFrameworkBridge" } @@ -2136,13 +1360,19 @@ "laminas", "zf" ], + "support": { + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", + "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", + "source": "https://github.com/laminas/laminas-zendframework-bridge" + }, "funding": [ { "url": "https://funding.communitybridge.org/projects/laminas-project", "type": "community_bridge" } ], - "time": "2020-09-14T14:23:00+00:00" + "time": "2020-05-20T16:45:56+00:00" }, { "name": "mexitek/phpcolors", @@ -2430,31 +1660,27 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.2.0", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f" + "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", + "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3", "shasum": "" }, "require": { "ext-ctype": "*", "ext-filter": "*", - "ext-hash": "*", "php": ">=5.5.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "doctrine/annotations": "^1.2", - "phpcompatibility/php-compatibility": "^9.3.5", - "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.5.6", - "yoast/phpunit-polyfills": "^0.2.0" + "friendsofphp/php-cs-fixer": "^2.2", + "phpunit/phpunit": "^4.8 || ^5.7" }, "suggest": { "ext-mbstring": "Needed to send email in multibyte encoding charset", @@ -2492,13 +1718,17 @@ } ], "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "support": { + "issues": "https://github.com/PHPMailer/PHPMailer/issues", + "source": "https://github.com/PHPMailer/PHPMailer/tree/master" + }, "funding": [ { - "url": "https://github.com/Synchro", + "url": "https://github.com/synchro", "type": "github" } ], - "time": "2020-11-25T15:24:57+00:00" + "time": "2020-05-27T12:24:03+00:00" }, { "name": "psr/cache", @@ -2802,38 +2032,35 @@ }, { "name": "ramsey/collection", - "version": "1.1.2", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "a2a85f56ac8f0f973f0e43fcbad5464355bcfe1f" + "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a2a85f56ac8f0f973f0e43fcbad5464355bcfe1f", - "reference": "a2a85f56ac8f0f973f0e43fcbad5464355bcfe1f", + "url": "https://api.github.com/repos/ramsey/collection/zipball/925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", + "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", "shasum": "" }, "require": { - "php": "^7.2 || ^8" + "php": "^7.2" }, "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "fzaninotto/faker": "^1.5", + "jakub-onderka/php-parallel-lint": "^1", + "jangregor/phpstan-prophecy": "^0.6", "mockery/mockery": "^1.3", "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" + "phpstan/phpdoc-parser": "0.4.1", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5", + "slevomat/coding-standard": "^6.0", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "autoload": { @@ -2853,42 +2080,37 @@ } ], "description": "A PHP 7.2+ library for representing and manipulating collections.", + "homepage": "https://github.com/ramsey/collection", "keywords": [ "array", "collection", - "hash", - "map", - "queue", - "set" - ], - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } + "hash", + "map", + "queue", + "set" ], - "time": "2021-01-21T02:12:46+00:00" + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection" + }, + "time": "2020-01-05T00:22:59+00:00" }, { "name": "ramsey/uuid", - "version": "4.1.1", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "cd4032040a750077205918c86049aa0f43d22947" + "reference": "ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/cd4032040a750077205918c86049aa0f43d22947", - "reference": "cd4032040a750077205918c86049aa0f43d22947", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d", + "reference": "ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d", "shasum": "" }, "require": { - "brick/math": "^0.8 || ^0.9", + "brick/math": "^0.8", "ext-json": "*", "php": "^7.2 || ^8", "ramsey/collection": "^1.0", @@ -2899,7 +2121,7 @@ }, "require-dev": { "codeception/aspect-mock": "^3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2", "doctrine/annotations": "^1.8", "goaop/framework": "^2", "mockery/mockery": "^1.3", @@ -2908,8 +2130,8 @@ "php-mock/php-mock-mockery": "^1.3", "php-mock/php-mock-phpunit": "^2.5", "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^0.17.1", "phpstan/extension-installer": "^1.0", + "phpstan/phpdoc-parser": "0.4.3", "phpstan/phpstan": "^0.12", "phpstan/phpstan-mockery": "^0.12", "phpstan/phpstan-phpunit": "^0.12", @@ -2952,26 +2174,31 @@ "identifier", "uuid" ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "rss": "https://github.com/ramsey/uuid/releases.atom", + "source": "https://github.com/ramsey/uuid" + }, "funding": [ { "url": "https://github.com/ramsey", "type": "github" } ], - "time": "2020-08-18T17:17:46+00:00" + "time": "2020-03-29T20:13:32+00:00" }, { "name": "rlanvin/php-rrule", - "version": "v2.2.2", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/rlanvin/php-rrule.git", - "reference": "4e979ff9b1122e7b5f4b4faf87a000396af12d16" + "reference": "931d53d162cd84b46f6fa388cb4ea916bec02c18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rlanvin/php-rrule/zipball/4e979ff9b1122e7b5f4b4faf87a000396af12d16", - "reference": "4e979ff9b1122e7b5f4b4faf87a000396af12d16", + "url": "https://api.github.com/repos/rlanvin/php-rrule/zipball/931d53d162cd84b46f6fa388cb4ea916bec02c18", + "reference": "931d53d162cd84b46f6fa388cb4ea916bec02c18", "shasum": "" }, "require": { @@ -2979,7 +2206,7 @@ }, "require-dev": { "phpmd/phpmd": "@stable", - "phpunit/phpunit": "^5.7|^6.5|^8.0" + "phpunit/phpunit": "^4.8|^5.5|^6.5" }, "suggest": { "ext-intl": "Intl extension is needed for humanReadable()" @@ -3003,20 +2230,24 @@ "recurring", "rrule" ], - "time": "2021-01-09T13:20:09+00:00" + "support": { + "issues": "https://github.com/rlanvin/php-rrule/issues", + "source": "https://github.com/rlanvin/php-rrule/tree/v2.2.0" + }, + "time": "2019-11-01T11:51:17+00:00" }, { "name": "sabre/dav", - "version": "4.1.4", + "version": "4.1.3", "source": { "type": "git", "url": "https://github.com/sabre-io/dav.git", - "reference": "4258420f15425a5f128fe5cad454e00ab4a68ae5" + "reference": "b903eeedfbdcd6cab7935661ec6dc2d90cdf8a1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/dav/zipball/4258420f15425a5f128fe5cad454e00ab4a68ae5", - "reference": "4258420f15425a5f128fe5cad454e00ab4a68ae5", + "url": "https://api.github.com/repos/sabre-io/dav/zipball/b903eeedfbdcd6cab7935661ec6dc2d90cdf8a1e", + "reference": "b903eeedfbdcd6cab7935661ec6dc2d90cdf8a1e", "shasum": "" }, "require": { @@ -3040,7 +2271,7 @@ }, "require-dev": { "evert/phpdoc-md": "~0.1.0", - "friendsofphp/php-cs-fixer": "^2.17.1", + "friendsofphp/php-cs-fixer": "^2.16.7", "monolog/monolog": "^1.18", "phpstan/phpstan": "^0.12", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0" @@ -3084,7 +2315,12 @@ "framework", "iCalendar" ], - "time": "2021-01-12T03:39:57+00:00" + "support": { + "forum": "https://groups.google.com/group/sabredav-discuss", + "issues": "https://github.com/sabre-io/dav/issues", + "source": "https://github.com/fruux/sabre-dav" + }, + "time": "2020-11-09T07:48:35+00:00" }, { "name": "sabre/event", @@ -3446,16 +2682,16 @@ }, { "name": "scssphp/scssphp", - "version": "v1.4.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/scssphp/scssphp.git", - "reference": "ba86c963b94ec7ebd6e19d90cdab90d89667dbf7" + "reference": "4363ddce8d750f055c436833dd77d83517946532" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scssphp/scssphp/zipball/ba86c963b94ec7ebd6e19d90cdab90d89667dbf7", - "reference": "ba86c963b94ec7ebd6e19d90cdab90d89667dbf7", + "url": "https://api.github.com/repos/scssphp/scssphp/zipball/4363ddce8d750f055c436833dd77d83517946532", + "reference": "4363ddce8d750f055c436833dd77d83517946532", "shasum": "" }, "require": { @@ -3464,10 +2700,8 @@ "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3 || ^9.4", - "sass/sass-spec": "2020.12.29", + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3", "squizlabs/php_codesniffer": "~3.5", - "symfony/phpunit-bridge": "^5.1", "twbs/bootstrap": "~4.3", "zurb/foundation": "~6.5" }, @@ -3505,24 +2739,28 @@ "scss", "stylesheet" ], - "time": "2021-01-04T13:23:23+00:00" + "support": { + "issues": "https://github.com/scssphp/scssphp/issues", + "source": "https://github.com/scssphp/scssphp/tree/1.1.0" + }, + "time": "2020-04-21T15:53:32+00:00" }, { "name": "sebastian/diff", - "version": "3.0.3", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^7.5 || ^8.0", @@ -3544,13 +2782,13 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Kore Nordmann", "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], "description": "Diff implementation", @@ -3561,13 +2799,11 @@ "unidiff", "unified diff" ], - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-30T07:59:04+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/master" + }, + "time": "2019-02-04T06:01:07+00:00" }, { "name": "simplepie/simplepie", @@ -3642,16 +2878,16 @@ }, { "name": "symfony/console", - "version": "v4.4.18", + "version": "v4.4.9", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "12e071278e396cc3e1c149857337e9e192deca0b" + "reference": "326b064d804043005526f5a0494cfb49edb59bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/12e071278e396cc3e1c149857337e9e192deca0b", - "reference": "12e071278e396cc3e1c149857337e9e192deca0b", + "url": "https://api.github.com/repos/symfony/console/zipball/326b064d804043005526f5a0494cfb49edb59bb0", + "reference": "326b064d804043005526f5a0494cfb49edb59bb0", "shasum": "" }, "require": { @@ -3686,6 +2922,11 @@ "symfony/process": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" @@ -3710,6 +2951,9 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/console/tree/4.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3724,7 +2968,7 @@ "type": "tidelift" } ], - "time": "2020-12-18T07:41:31+00:00" + "time": "2020-05-30T20:06:45+00:00" }, { "name": "symfony/polyfill-intl-normalizer", @@ -3812,16 +3056,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.22.0", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", "shasum": "" }, "require": { @@ -3833,7 +3077,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.20-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3871,6 +3115,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3885,33 +3132,29 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2020-10-23T14:02:19+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.22.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" + "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a760d8964ff79ab9bf057613a5808284ec852ccc", + "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "1.17-dev" } }, "autoload": { @@ -3947,6 +3190,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/master" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3961,33 +3207,29 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.22.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" + "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/5e30b2799bc1ad68f7feb62b60a73743589438dd", + "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "1.17-dev" } }, "autoload": { @@ -4027,6 +3269,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.17.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4041,24 +3286,24 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.9", + "version": "v1.1.8", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26" + "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26", - "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf", + "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": "^7.1.3", "psr/container": "^1.0" }, "suggest": { @@ -4068,10 +3313,6 @@ "extra": { "branch-alias": { "dev-master": "1.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4103,21 +3344,10 @@ "interoperability", "standards" ], - "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-07-06T13:19:58+00:00" + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v1.1.8" + }, + "time": "2019-10-14T12:27:06+00:00" }, { "name": "tecnickcom/tcpdf", @@ -4237,16 +3467,16 @@ }, { "name": "wapmorgan/unified-archive", - "version": "1.0.1", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/wapmorgan/UnifiedArchive.git", - "reference": "7d3623fba223f690da42d3d6b18335eaa926f743" + "reference": "74677318c376051fc695a3ab787e4471c00dce0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wapmorgan/UnifiedArchive/zipball/7d3623fba223f690da42d3d6b18335eaa926f743", - "reference": "7d3623fba223f690da42d3d6b18335eaa926f743", + "url": "https://api.github.com/repos/wapmorgan/UnifiedArchive/zipball/74677318c376051fc695a3ab787e4471c00dce0f", + "reference": "74677318c376051fc695a3ab787e4471c00dce0f", "shasum": "" }, "require": { @@ -4326,7 +3556,11 @@ "tar", "zip" ], - "time": "2020-11-28T13:04:06+00:00" + "support": { + "issues": "https://github.com/wapmorgan/UnifiedArchive/issues", + "source": "https://github.com/wapmorgan/UnifiedArchive/tree/1.0.0" + }, + "time": "2020-06-13T19:42:51+00:00" } ], "packages-dev": [ @@ -4419,35 +3653,48 @@ }, { "name": "consolidation/annotated-command", - "version": "4.2.4", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "ec297e05cb86557671c2d6cbb1bebba6c7ae2c60" + "reference": "efc58dc0f34a45539787c5190b41b5d2a50a08da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/ec297e05cb86557671c2d6cbb1bebba6c7ae2c60", - "reference": "ec297e05cb86557671c2d6cbb1bebba6c7ae2c60", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/efc58dc0f34a45539787c5190b41b5d2a50a08da", + "reference": "efc58dc0f34a45539787c5190b41b5d2a50a08da", "shasum": "" }, "require": { "consolidation/output-formatters": "^4.1.1", "php": ">=7.1.3", "psr/log": "^1|^2", - "symfony/console": "^4.4.8|~5.1.0", + "symfony/console": "^4.4.8|^5", "symfony/event-dispatcher": "^4.4.8|^5", "symfony/finder": "^4.4.8|^5" }, "require-dev": { - "phpunit/phpunit": ">=7.5.20", - "squizlabs/php_codesniffer": "^3", - "yoast/phpunit-polyfills": "^0.2.0" + "g1a/composer-test-scenarios": "^3", + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^6", + "squizlabs/php_codesniffer": "^3" }, "type": "library", "extra": { + "scenarios": { + "symfony4": { + "require": { + "symfony/console": "^4.0" + }, + "config": { + "platform": { + "php": "7.1.3" + } + } + } + }, "branch-alias": { - "dev-main": "4.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -4466,44 +3713,59 @@ } ], "description": "Initialize Symfony Console commands from annotated command class methods.", - "time": "2020-12-10T16:56:39+00:00" + "support": { + "issues": "https://github.com/consolidation/annotated-command/issues", + "source": "https://github.com/consolidation/annotated-command/tree/master" + }, + "time": "2020-05-27T21:11:36+00:00" }, { "name": "consolidation/config", - "version": "2.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/consolidation/config.git", - "reference": "9a2c2a7b2aea1b3525984a4378743a8b74c14e1c" + "reference": "9842670aad3406dbc8df3069fd680a9f8cd6edd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/config/zipball/9a2c2a7b2aea1b3525984a4378743a8b74c14e1c", - "reference": "9a2c2a7b2aea1b3525984a4378743a8b74c14e1c", + "url": "https://api.github.com/repos/consolidation/config/zipball/9842670aad3406dbc8df3069fd680a9f8cd6edd7", + "reference": "9842670aad3406dbc8df3069fd680a9f8cd6edd7", "shasum": "" }, "require": { "dflydev/dot-access-data": "^1.1.0", "grasmash/expander": "^1", - "php": ">=7.1.3", - "psr/log": "^1.1", - "symfony/event-dispatcher": "^4||^5" + "php": ">=7.1.3" }, "require-dev": { - "phpunit/phpunit": ">=7.5.20", + "g1a/composer-test-scenarios": "^3", + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^6", "squizlabs/php_codesniffer": "^3", - "symfony/console": "^4||^5", - "symfony/yaml": "^4||^5", - "yoast/phpunit-polyfills": "^0.2.0" + "symfony/console": "^4|^5", + "symfony/event-dispatcher": "^4|^5", + "symfony/yaml": "^4|^5" }, "suggest": { - "symfony/event-dispatcher": "Required to inject configuration into Command options", "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader" }, "type": "library", "extra": { + "scenarios": { + "symfony4": { + "require-dev": { + "symfony/console": "^4" + }, + "config": { + "platform": { + "php": "7.1.3" + } + } + } + }, "branch-alias": { - "dev-main": "2.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -4522,20 +3784,24 @@ } ], "description": "Provide configuration services for a commandline tool.", - "time": "2020-12-06T00:03:30+00:00" + "support": { + "issues": "https://github.com/consolidation/config/issues", + "source": "https://github.com/consolidation/config/tree/master" + }, + "time": "2020-05-27T17:11:23+00:00" }, { "name": "consolidation/log", - "version": "2.0.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/consolidation/log.git", - "reference": "82a2aaaa621a7b976e50a745a8d249d5085ee2b1" + "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/log/zipball/82a2aaaa621a7b976e50a745a8d249d5085ee2b1", - "reference": "82a2aaaa621a7b976e50a745a8d249d5085ee2b1", + "url": "https://api.github.com/repos/consolidation/log/zipball/ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf", + "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf", "shasum": "" }, "require": { @@ -4544,14 +3810,27 @@ "symfony/console": "^4|^5" }, "require-dev": { - "phpunit/phpunit": ">=7.5.20", - "squizlabs/php_codesniffer": "^3", - "yoast/phpunit-polyfills": "^0.2.0" + "g1a/composer-test-scenarios": "^3", + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^6", + "squizlabs/php_codesniffer": "^3" }, "type": "library", "extra": { + "scenarios": { + "symfony4": { + "require-dev": { + "symfony/console": "^4" + }, + "config": { + "platform": { + "php": "7.1.3" + } + } + } + }, "branch-alias": { - "dev-main": "2.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -4570,20 +3849,24 @@ } ], "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.", - "time": "2020-12-10T16:26:23+00:00" + "support": { + "issues": "https://github.com/consolidation/log/issues", + "source": "https://github.com/consolidation/log/tree/2.0.1" + }, + "time": "2020-05-27T17:06:13+00:00" }, { "name": "consolidation/output-formatters", - "version": "4.1.2", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/consolidation/output-formatters.git", - "reference": "5821e6ae076bf690058a4de6c94dce97398a69c9" + "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/5821e6ae076bf690058a4de6c94dce97398a69c9", - "reference": "5821e6ae076bf690058a4de6c94dce97398a69c9", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/9deeddd6a916d0a756b216a8b40ce1016e17c0b9", + "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9", "shasum": "" }, "require": { @@ -4593,20 +3876,32 @@ "symfony/finder": "^4|^5" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.4.2", - "phpunit/phpunit": ">=7", + "g1a/composer-test-scenarios": "^3", + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^6", "squizlabs/php_codesniffer": "^3", "symfony/var-dumper": "^4", - "symfony/yaml": "^4", - "yoast/phpunit-polyfills": "^0.2.0" + "symfony/yaml": "^4" }, "suggest": { "symfony/var-dumper": "For using the var_dump formatter" }, "type": "library", "extra": { + "scenarios": { + "symfony4": { + "require": { + "symfony/console": "^4.0" + }, + "config": { + "platform": { + "php": "7.1.3" + } + } + } + }, "branch-alias": { - "dev-main": "4.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -4625,36 +3920,40 @@ } ], "description": "Format text by applying transformations provided by plug-in formatters.", - "time": "2020-12-12T19:04:59+00:00" + "support": { + "issues": "https://github.com/consolidation/output-formatters/issues", + "source": "https://github.com/consolidation/output-formatters/tree/4.1.1" + }, + "time": "2020-05-27T20:51:17+00:00" }, { "name": "consolidation/robo", - "version": "2.2.2", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/consolidation/Robo.git", - "reference": "b365df174d9cfb0f5814e4f3275a1c558b17bc4c" + "reference": "a0415a2663f6d9426d3cb9013446d3f00225d76d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/Robo/zipball/b365df174d9cfb0f5814e4f3275a1c558b17bc4c", - "reference": "b365df174d9cfb0f5814e4f3275a1c558b17bc4c", + "url": "https://api.github.com/repos/consolidation/Robo/zipball/a0415a2663f6d9426d3cb9013446d3f00225d76d", + "reference": "a0415a2663f6d9426d3cb9013446d3f00225d76d", "shasum": "" }, "require": { - "consolidation/annotated-command": "^4.2.1", + "consolidation/annotated-command": "^4.1.1", "consolidation/config": "^1.2.1|^2", "consolidation/log": "^1.1.1|^2.0.1", "consolidation/output-formatters": "^4.1.1", "consolidation/self-update": "^1.2", + "grasmash/yaml-expander": "^1.4", "league/container": "^2.4.1", "php": ">=7.1.3", - "symfony/console": "^4.4.11|^5", - "symfony/event-dispatcher": "^4.4.11|^5", - "symfony/filesystem": "^4.4.11|^5", - "symfony/finder": "^4.4.11|^5", - "symfony/process": "^4.4.11|^5", - "symfony/yaml": "^4.0 || ^5.0" + "symfony/console": "^4.4.8|^5", + "symfony/event-dispatcher": "^4.4.8|^5", + "symfony/filesystem": "^4.4.8|^5", + "symfony/finder": "^4.4.8|^5", + "symfony/process": "^4.4.8|^5" }, "conflict": { "codegyre/robo": "*" @@ -4683,11 +3982,11 @@ "scenarios": { "symfony4": { "require": { - "symfony/console": "^4.4.11", - "symfony/event-dispatcher": "^4.4.11", - "symfony/filesystem": "^4.4.11", - "symfony/finder": "^4.4.11", - "symfony/process": "^4.4.11", + "symfony/console": "^4.4.8", + "symfony/event-dispatcher": "^4.4.8", + "symfony/filesystem": "^4.4.8", + "symfony/finder": "^4.4.8", + "symfony/process": "^4.4.8", "phpunit/phpunit": "^6", "nikic/php-parser": "^2" }, @@ -4702,8 +4001,7 @@ } }, "branch-alias": { - "dev-master": "2.x-dev", - "dev-main": "2.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -4722,7 +4020,11 @@ } ], "description": "Modern task runner", - "time": "2020-12-18T22:09:18+00:00" + "support": { + "issues": "https://github.com/consolidation/Robo/issues", + "source": "https://github.com/consolidation/Robo/tree/master" + }, + "time": "2020-05-27T22:03:57+00:00" }, { "name": "consolidation/self-update", @@ -4933,6 +4235,58 @@ }, "time": "2017-12-21T22:14:55+00:00" }, + { + "name": "grasmash/yaml-expander", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/grasmash/yaml-expander.git", + "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/3f0f6001ae707a24f4d9733958d77d92bf9693b1", + "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0", + "php": ">=5.4", + "symfony/yaml": "^2.8.11|^3|^4" + }, + "require-dev": { + "greg-1-anderson/composer-test-scenarios": "^1", + "phpunit/phpunit": "^4.8|^5.5.4", + "satooshi/php-coveralls": "^1.0.2|dev-master", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Grasmash\\YamlExpander\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Grasmick" + } + ], + "description": "Expands internal property references in a yaml file.", + "support": { + "issues": "https://github.com/grasmash/yaml-expander/issues", + "source": "https://github.com/grasmash/yaml-expander/tree/master" + }, + "time": "2017-12-16T16:06:03+00:00" + }, { "name": "league/container", "version": "2.4.1", @@ -5180,16 +4534,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.10.4", + "version": "v4.9.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" + "reference": "88e519766fc58bd46b8265561fb79b54e2e00b28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/88e519766fc58bd46b8265561fb79b54e2e00b28", + "reference": "88e519766fc58bd46b8265561fb79b54e2e00b28", "shasum": "" }, "require": { @@ -5228,7 +4582,11 @@ "parser", "php" ], - "time": "2020-12-20T10:01:03+00:00" + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.9.1" + }, + "time": "2020-08-30T16:15:20+00:00" }, { "name": "php-parallel-lint/php-parallel-lint", @@ -5289,16 +4647,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.5.8", + "version": "3.5.3", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" + "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", - "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", + "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", "shasum": "" }, "require": { @@ -5336,20 +4694,25 @@ "phpcs", "standards" ], - "time": "2020-10-23T02:01:07+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": "2019-12-04T04:46:47+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.18", + "version": "v4.4.9", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "5d4c874b0eb1c32d40328a09dbc37307a5a910b0" + "reference": "a5370aaa7807c7a439b21386661ffccf3dff2866" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5d4c874b0eb1c32d40328a09dbc37307a5a910b0", - "reference": "5d4c874b0eb1c32d40328a09dbc37307a5a910b0", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a5370aaa7807c7a439b21386661ffccf3dff2866", + "reference": "a5370aaa7807c7a439b21386661ffccf3dff2866", "shasum": "" }, "require": { @@ -5367,7 +4730,6 @@ "psr/log": "~1.0", "symfony/config": "^3.4|^4.0|^5.0", "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", "symfony/expression-language": "^3.4|^4.0|^5.0", "symfony/http-foundation": "^3.4|^4.0|^5.0", "symfony/service-contracts": "^1.1|^2", @@ -5378,6 +4740,11 @@ "symfony/http-kernel": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" @@ -5402,6 +4769,9 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/4.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5416,24 +4786,24 @@ "type": "tidelift" } ], - "time": "2020-12-18T07:41:31+00:00" + "time": "2020-05-20T08:37:50+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "version": "v1.1.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": "^7.1.3" }, "suggest": { "psr/event-dispatcher": "", @@ -5443,10 +4813,6 @@ "extra": { "branch-alias": { "dev-master": "1.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -5478,34 +4844,23 @@ "interoperability", "standards" ], - "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-07-06T13:19:58+00:00" + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/master" + }, + "time": "2019-09-17T09:54:03+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.18", + "version": "v4.4.9", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "d99fbef7e0f69bf162ae6131b31132fa3cc4bcbe" + "reference": "b27f491309db5757816db672b256ea2e03677d30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/d99fbef7e0f69bf162ae6131b31132fa3cc4bcbe", - "reference": "d99fbef7e0f69bf162ae6131b31132fa3cc4bcbe", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b27f491309db5757816db672b256ea2e03677d30", + "reference": "b27f491309db5757816db672b256ea2e03677d30", "shasum": "" }, "require": { @@ -5513,6 +4868,11 @@ "symfony/polyfill-ctype": "~1.8" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Filesystem\\": "" @@ -5537,6 +4897,9 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/4.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5551,26 +4914,31 @@ "type": "tidelift" } ], - "time": "2020-11-30T13:04:35+00:00" + "time": "2020-05-30T18:50:54+00:00" }, { "name": "symfony/finder", - "version": "v4.4.18", + "version": "v4.4.9", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ebd0965f2dc2d4e0f11487c16fbb041e50b5c09b" + "reference": "5729f943f9854c5781984ed4907bbb817735776b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ebd0965f2dc2d4e0f11487c16fbb041e50b5c09b", - "reference": "ebd0965f2dc2d4e0f11487c16fbb041e50b5c09b", + "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b", + "reference": "5729f943f9854c5781984ed4907bbb817735776b", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": "^7.1.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" @@ -5595,6 +4963,9 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v4.4.8" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5609,26 +4980,31 @@ "type": "tidelift" } ], - "time": "2020-12-08T16:59:59+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/process", - "version": "v4.4.18", + "version": "v4.4.15", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "075316ff72233ce3d04a9743414292e834f2cb4a" + "reference": "9b887acc522935f77555ae8813495958c7771ba7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/075316ff72233ce3d04a9743414292e834f2cb4a", - "reference": "075316ff72233ce3d04a9743414292e834f2cb4a", + "url": "https://api.github.com/repos/symfony/process/zipball/9b887acc522935f77555ae8813495958c7771ba7", + "reference": "9b887acc522935f77555ae8813495958c7771ba7", "shasum": "" }, "require": { "php": ">=7.1.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" @@ -5653,6 +5029,9 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/4.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5667,20 +5046,20 @@ "type": "tidelift" } ], - "time": "2020-12-08T16:59:59+00:00" + "time": "2020-09-02T16:08:58+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.18", + "version": "v4.4.9", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "bbce94f14d73732340740366fcbe63363663a403" + "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/bbce94f14d73732340740366fcbe63363663a403", - "reference": "bbce94f14d73732340740366fcbe63363663a403", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", + "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", "shasum": "" }, "require": { @@ -5697,6 +5076,11 @@ "symfony/console": "For validating YAML files using the lint command" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -5721,6 +5105,9 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/4.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5735,7 +5122,7 @@ "type": "tidelift" } ], - "time": "2020-12-08T16:59:59+00:00" + "time": "2020-05-20T08:37:50+00:00" }, { "name": "webmozart/assert", @@ -5917,5 +5304,5 @@ "platform-overrides": { "php": "7.2.0" }, - "plugin-api-version": "1.1.0" + "plugin-api-version": "2.0.0" } diff --git a/inc/mailcollector.class.php b/inc/mailcollector.class.php index 61a3e23dc70..13d4925b6fa 100644 --- a/inc/mailcollector.class.php +++ b/inc/mailcollector.class.php @@ -1493,10 +1493,7 @@ function getTotalMails() { private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $maxsize, $subject, $subpart = "") { if ($part->isMultipart()) { $index = 0; - // while instead of foreach to supress header error in laminas-mail - $iterator = new RecursiveIteratorIterator($part); - while (@$iterator->valid()) { - $mypart = $iterator->current(); + foreach (new RecursiveIteratorIterator($part) as $mypart) { $this->getRecursiveAttached( $mypart, $path, @@ -1504,7 +1501,6 @@ private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $ $subject, ($subpart ? $subpart.".".($index+1) : ($index+1)) ); - $iterator->next(); } } else { if (!$part->getHeaders()->has('content-type') @@ -1532,16 +1528,15 @@ private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $ && $part->getHeaders()->has('content-disposition') && ($content_disp_header = $part->getHeader('content-disposition')) instanceof ContentDisposition) { $filename = $content_disp_header->getParameter('filename') ?? ''; - // Check bug in ContentDisposition - if (strpos($filename, '=?UTF-8?') !== false) { - // Format =?UTF-8?Q??= - // Join multiple sequences (=?UTF-8?Q?=AA?==?UTF-8?Q?=BB?= to =?UTF-8?Q?=AA=BB?=) - $filename = str_replace('?==?UTF-8?Q?=', '=', $filename); - $filename = \Laminas\Mail\Header\HeaderWrap::mimeDecodeValue($filename); - } + + var_dump(sprintf('filename from content-disposition: >%s<', $filename)); } - var_dump($filename); + // Try to get filename from Content-Type header + if (empty($filename)) { + $filename = $content_type_header->getParameter('name') ?? ''; + var_dump(sprintf('filename from content-type: >%s<', $filename)); + } $filename_matches = []; if (preg_match("/^(?.*)''(?.*)$/", $filename, $filename_matches) @@ -1555,13 +1550,6 @@ private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $ } } - var_dump($filename); - //die; - // Try to get filename from Content-Type header - if (empty($filename)) { - $filename = $content_type_header->getParameter('name') ?? ''; - } - // part come without correct filename in headers - generate trivial one // (inline images case for example) if ((empty($filename) || !Document::isValidDoc($filename))) { diff --git a/tests/emails-tests/22-multibyte_attachment_name.eml b/tests/emails-tests/22-multibyte_attachment_name.eml deleted file mode 100644 index e3f9d158e32..00000000000 --- a/tests/emails-tests/22-multibyte_attachment_name.eml +++ /dev/null @@ -1,191 +0,0 @@ -MIME-Version: 1.0 -Received: from mail.glpi-project.org (192.168.1.4) by 192.168.1.3 - (192.168.1.5) with Microsoft SMTP Server (version=TLS1_2, - cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2106.2 via Mailbox - Transport; Fri, 8 Jan 2021 15:35:17 +0100 -Received: from mail.glpi-project.org (192.168.1.5) by mail.glpi-project.org - (192.168.1.5) with Microsoft SMTP Server (version=TLS1_2, - cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2106.2; Fri, 8 Jan - 2021 15:35:17 +0100 -Received: from localhost (127.0.0.1) by mail.glpi-project.org (192.168.1.5) - with Microsoft SMTP Server id 15.1.2106.2 via Frontend Transport; Fri, 8 Jan - 2021 15:35:16 +0100 -From: "Normal User" -To: unittests@glpi-project.org -Subject: Test attachment with multibyte filename -Thread-Topic: Test attachment with multibyte filename -Thread-Index: AQHW5ct8hXph1rETQ0y+Otmu2ZohZg== -X-MS-Exchange-MessageSentRepresentingType: 1 -Date: Fri, 8 Jan 2021 15:35:17 +0100 -Message-ID: -Content-Language: en-US -X-MS-Exchange-Organization-AuthAs: Anonymous -X-MS-Exchange-Organization-AuthSource: mail.glpi-project.org -X-MS-Has-Attach: yes -X-MS-Exchange-Organization-Network-Message-Id: - 06f79f7d-c732-40ad-af16-08d8b3e29e37 -X-MS-TNEF-Correlator: -X-MS-Exchange-Organization-RecordReviewCfmType: 0 -x-esetresult: clean, is OK -x-esetid: 37303A29D3597266657364 -Content-Type: multipart/mixed; - boundary="_002_aa097017ea094dc28d718cb3cd64f397mailglpiprojectorg_" - ---_002_aa097017ea094dc28d718cb3cd64f397mailglpiprojectorg_ -Content-Type: text/plain; charset="gb2312" -Content-ID: <00C90C8538325A4BABC81744259DFFD7glpi-project.org> -Content-Transfer-Encoding: base64 - -VGVzdCBib2R5 - ---_002_aa097017ea094dc28d718cb3cd64f397mailglpiprojectorg_ -Content-Type: application/octet-stream; - name="=?gb2312?B?MjItsOy5q9PDxrfUpNS8QXBwbHkgZm9yIG9mZmljZSBzdXBwbGllcyBvbmxpbmU=?= - =?gb2312?Q?.xlsx?=" -Content-Description: - =?gb2312?B?MjItsOy5q9PDxrfUpNS8QXBwbHkgZm9yIG9mZmljZSBzdXBwbGllcyBvbmxpbmU=?= - =?gb2312?Q?.xlsx?= -Content-Disposition: attachment; - filename="=?gb2312?B?MjItsOy5q9PDxrfUpNS8QXBwbHkgZm9yIG9mZmljZSBzdXBwbGllcyBvbmxpbmU=?= - =?gb2312?Q?.xlsx?="; size=8094; creation-date="Fri, 08 Jan 2021 14:35:17 GMT"; - modification-date="Fri, 08 Jan 2021 14:36:14 GMT" -Content-ID: <0A1D59B3522EF84295BE3A82AD1E1896glpi-project.org> -Content-Transfer-Encoding: base64 - -UEsDBBQABgAIAAAAIQCkU8XPTgEAAAgEAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACs -k8tOwzAQRfdI/EPkLYrdskAINe2CxxK6KB9g4kli1S953NL+PRP3sUChFWo3sWLP3HM9M57MNtYU -a4iovavYmI9YAa72Sru2Yp+Lt/KRFZikU9J4BxXbArLZ9PZmstgGwIKyHVasSyk8CYF1B1Yi9wEc -nTQ+WpnoN7YiyHopWxD3o9GDqL1L4FKZeg02nbxAI1cmFa8b2t45iWCQFc+7wJ5VMRmC0bVM5FSs -nfpFKfcETpk5Bjsd8I5sMDFI6E/+BuzzPqg0USso5jKmd2nJhtgY8e3j8sv7JT8tMuDSN42uQfl6 -ZakCHEMEqbADSNbwvHIrtTv4PsHPwSjyMr6ykf5+WfiMj0T9BpG/l1vIMmeAmLYG8Nplz6KnyNSv -efQBaXIj/J9+GM0+uwwkBDFpOA7nUJOPRJr6i68L/btSoAbYIr/j6Q8AAAD//wMAUEsDBBQABgAI -AAAAIQC1VTAj9AAAAEwCAAALAAgCX3JlbHMvLnJlbHMgogQCKKAAAgAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArJJNT8MwDIbvSPyHyPfV3ZAQ -Qkt3QUi7IVR+gEncD7WNoyQb3b8nHBBUGoMDR3+9fvzK2908jerIIfbiNKyLEhQ7I7Z3rYaX+nF1 -ByomcpZGcazhxBF21fXV9plHSnkodr2PKqu4qKFLyd8jRtPxRLEQzy5XGgkTpRyGFj2ZgVrGTVne -YviuAdVCU+2thrC3N6Dqk8+bf9eWpukNP4g5TOzSmRXIc2Jn2a58yGwh9fkaVVNoOWmwYp5yOiJ5 -X2RswPNEm78T/XwtTpzIUiI0Evgyz0fHJaD1f1q0NPHLnXnENwnDq8jwyYKLH6jeAQAA//8DAFBL -AwQUAAYACAAAACEAjYfacOAAAAAtAgAAGgAIAXhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzIKIE -ASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -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 -LnhtbFBLBQYAAAAACQAJAD4CAACcGwAAAAA= - ---_002_aa097017ea094dc28d718cb3cd64f397mailglpiprojectorg_-- diff --git a/tests/emails-tests/23-bad_attachment_name_for_OS.eml b/tests/emails-tests/23-bad_attachment_name_for_OS.eml deleted file mode 100644 index c3c0bec0cbc..00000000000 --- a/tests/emails-tests/23-bad_attachment_name_for_OS.eml +++ /dev/null @@ -1,34 +0,0 @@ -MIME-Version: 1.0 -Received: from FRY09565 (localhost [127.0.0.1]) - by FRY09565 with ESMTP - ; Fri, 15 Jan 2021 11:10:48 +0100 -From: "Normal User" -To: "unittests@glpi-project.org" -Subject: Test attachment with invalid chars for OS -Thread-Topic: Test attachment with invalid chars for OS -Thread-Index: AQKCD+6x8lXoNsHxacNzy6V4F3lQrQ== -X-MS-Exchange-MessageSentRepresentingType: 1 -Date: Fri, 15 Jan 2021 11:10:48 +0100 -Message-ID: <50BFB6E5-3040-4535-9A10-3164C726A37B@FRY09565> -Content-Language: en-US -X-MS-Has-Attach: yes -X-MS-TNEF-Correlator: -X-MS-Exchange-Organization-RecordReviewCfmType: 0 -Content-Type: multipart/mixed; - boundary="_002_50BFB6E5304045359A103164C726A37BFRY09565_" - ---_002_50BFB6E5304045359A103164C726A37BFRY09565_ -Content-Type: text/plain; charset="us-ascii" - -Test body ---_002_50BFB6E5304045359A103164C726A37BFRY09565_ -Content-Type: application/octet-stream; name="23-New Text ? Document.txt" -Content-Description: 23-New Text ? Document.txt -Content-Disposition: attachment; filename="23-New Text ? Document.txt"; size=265; - creation-date="Fri, 15 Jan 2021 12:52:27 GMT"; - modification-date="Fri, 15 Jan 2021 12:52:27 GMT" -Content-Transfer-Encoding: base64 - -dGVzdA== - ---_002_50BFB6E5304045359A103164C726A37BFRY09565_-- \ No newline at end of file diff --git a/tests/emails-tests/23-multibyte_base64_attachment_name.eml b/tests/emails-tests/23-multibyte_base64_attachment_name.eml deleted file mode 100644 index 574d5154250..00000000000 --- a/tests/emails-tests/23-multibyte_base64_attachment_name.eml +++ /dev/null @@ -1,54 +0,0 @@ -Return-Path: normal@glpi-project.org -Received: from vm000044.ad.teclib.infra (LHLO vm000044.prod.teclib.infra) - (172.21.3.148) by vm000044.prod.teclib.infra with LMTP; Thu, 21 Jan 2021 - 15:26:54 +0100 (CET) -Received: from mail.teclib.com (localhost [127.0.0.1]) - by vm000044.prod.teclib.infra (Postfix) with ESMTP id B1EA87E80858 - for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) -Received: from mail.teclib.com (localhost [127.0.0.1]) - by vm000044.prod.teclib.infra (Postfix) with ESMTP id A5AE17E80842 - for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) -Received: from vm000044.prod.teclib.infra (localhost [127.0.0.1]) - by vm000044.prod.teclib.infra (Postfix) with ESMTP id 94F5D7E80858 - for ; Thu, 21 Jan 2021 15:26:54 +0100 (CET) -Date: Thu, 21 Jan 2021 15:26:54 +0100 (CET) -From: "Normal User" -To: unittests@glpi-project.org -Message-ID: <2122674625.1101804.1611239214539.JavaMail.zimbra@teclib.com> -In-Reply-To: <401831029.1101790.1611239208899.JavaMail.zimbra@teclib.com> -Subject: Test filename base64 multibyte -MIME-Version: 1.0 -Content-Type: multipart/mixed; - boundary="----=_Part_1101800_1137170823.1611239214535" -X-Mailer: Zimbra 8.0.9_GA_6191 (ZimbraWebClient - FF84 (Linux)/8.0.9_GA_6191) -Thread-Topic: Test filename base64 multibyte -Thread-Index: 05AJorsW1pjSDmGFpPm4czpr3p4weA== - -------=_Part_1101800_1137170823.1611239214535 -Content-Type: multipart/alternative; - boundary="----=_Part_1101801_1973047508.1611239214535" - -------=_Part_1101801_1973047508.1611239214535 -Content-Type: text/plain; charset=utf-8 -Content-Transfer-Encoding: 7bit - - -test - - -------=_Part_1101801_1973047508.1611239214535 -Content-Type: text/html; charset=utf-8 -Content-Transfer-Encoding: 7bit - -

test

-------=_Part_1101801_1973047508.1611239214535-- - -------=_Part_1101800_1137170823.1611239214535 -Content-Type: application/pdf; - name="=?utf-8?B?RFVDX1NJTkfCoFdBSMKgUEFOwqAoTUHCoENoYW7CoEhvwqBLaSkucGRm?=" -Content-Disposition: attachment; - filename="=?utf-8?B?RFVDX1NJTkfCoFdBSMKgUEFOwqAoTUHCoENoYW7CoEhvwqBLaSkucGRm?=" -Content-Transfer-Encoding: base64 - -JVBERi0xLjMNCiXi48/TDQoNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL091dGxpbmVzIDIgMCBSDQovUGFnZXMgMyAwIFINCj4+DQplbmRvYmoNCg0KMiAwIG9iag0KPDwNCi9UeXBlIC9PdXRsaW5lcw0KL0NvdW50IDANCj4+DQplbmRvYmoNCg0KMyAwIG9iag0KPDwNCi9UeXBlIC9QYWdlcw0KL0NvdW50IDINCi9LaWRzIFsgNCAwIFIgNiAwIFIgXSANCj4+DQplbmRvYmoNCg0KNCAwIG9iag0KPDwNCi9UeXBlIC9QYWdlDQovUGFyZW50IDMgMCBSDQovUmVzb3VyY2VzIDw8DQovRm9udCA8PA0KL0YxIDkgMCBSIA0KPj4NCi9Qcm9jU2V0IDggMCBSDQo+Pg0KL01lZGlhQm94IFswIDAgNjEyLjAwMDAgNzkyLjAwMDBdDQovQ29udGVudHMgNSAwIFINCj4+DQplbmRvYmoNCg0KNSAwIG9iag0KPDwgL0xlbmd0aCAxMDc0ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBBIFNpbXBsZSBQREYgRmlsZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIFRoaXMgaXMgYSBzbWFsbCBkZW1vbnN0cmF0aW9uIC5wZGYgZmlsZSAtICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjY0LjcwNDAgVGQNCigganVzdCBmb3IgdXNlIGluIHRoZSBWaXJ0dWFsIE1lY2hhbmljcyB0dXRvcmlhbHMuIE1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NTIuNzUyMCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDYyOC44NDgwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjE2Ljg5NjAgVGQNCiggdGV4dC4gQW5kIG1vcmUgdGV4dC4gQm9yaW5nLCB6enp6ei4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjA0Ljk0NDAgVGQNCiggbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDU5Mi45OTIwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNTY5LjA4ODAgVGQNCiggQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA1NTcuMTM2MCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBFdmVuIG1vcmUuIENvbnRpbnVlZCBvbiBwYWdlIDIgLi4uKSBUag0KRVQNCmVuZHN0cmVhbQ0KZW5kb2JqDQoNCjYgMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KL1Jlc291cmNlcyA8PA0KL0ZvbnQgPDwNCi9GMSA5IDAgUiANCj4+DQovUHJvY1NldCA4IDAgUg0KPj4NCi9NZWRpYUJveCBbMCAwIDYxMi4wMDAwIDc5Mi4wMDAwXQ0KL0NvbnRlbnRzIDcgMCBSDQo+Pg0KZW5kb2JqDQoNCjcgMCBvYmoNCjw8IC9MZW5ndGggNjc2ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBTaW1wbGUgUERGIEZpbGUgMiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIC4uLmNvbnRpbnVlZCBmcm9tIHBhZ2UgMS4gWWV0IG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NzYuNjU2MCBUZA0KKCBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY2NC43MDQwIFRkDQooIHRleHQuIE9oLCBob3cgYm9yaW5nIHR5cGluZyB0aGlzIHN0dWZmLiBCdXQgbm90IGFzIGJvcmluZyBhcyB3YXRjaGluZyApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY1Mi43NTIwIFRkDQooIHBhaW50IGRyeS4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NDAuODAwMCBUZA0KKCBCb3JpbmcuICBNb3JlLCBhIGxpdHRsZSBtb3JlIHRleHQuIFRoZSBlbmQsIGFuZCBqdXN0IGFzIHdlbGwuICkgVGoNCkVUDQplbmRzdHJlYW0NCmVuZG9iag0KDQo4IDAgb2JqDQpbL1BERiAvVGV4dF0NCmVuZG9iag0KDQo5IDAgb2JqDQo8PA0KL1R5cGUgL0ZvbnQNCi9TdWJ0eXBlIC9UeXBlMQ0KL05hbWUgL0YxDQovQmFzZUZvbnQgL0hlbHZldGljYQ0KL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcNCj4+DQplbmRvYmoNCg0KMTAgMCBvYmoNCjw8DQovQ3JlYXRvciAoUmF2ZSBcKGh0dHA6Ly93d3cubmV2cm9uYS5jb20vcmF2ZVwpKQ0KL1Byb2R1Y2VyIChOZXZyb25hIERlc2lnbnMpDQovQ3JlYXRpb25EYXRlIChEOjIwMDYwMzAxMDcyODI2KQ0KPj4NCmVuZG9iag0KDQp4cmVmDQowIDExDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTkgMDAwMDAgbg0KMDAwMDAwMDA5MyAwMDAwMCBuDQowMDAwMDAwMTQ3IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAwMDM5MCAwMDAwMCBuDQowMDAwMDAxNTIyIDAwMDAwIG4NCjAwMDAwMDE2OTAgMDAwMDAgbg0KMDAwMDAwMjQyMyAwMDAwMCBuDQowMDAwMDAyNDU2IDAwMDAwIG4NCjAwMDAwMDI1NzQgMDAwMDAgbg0KDQp0cmFpbGVyDQo8PA0KL1NpemUgMTENCi9Sb290IDEgMCBSDQovSW5mbyAxMCAwIFINCj4+DQoNCnN0YXJ0eHJlZg0KMjcxNA0KJSVFT0YNCg== -------=_Part_1101800_1137170823.1611239214535-- diff --git a/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml b/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml new file mode 100644 index 00000000000..6e0589a469c --- /dev/null +++ b/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml @@ -0,0 +1,30 @@ +Return-Path: normal@glpi-project.org +Received: from mail.glpi-project.org (localhost [127.0.0.1]) + by mail.glpi-project.org (Postfix) with ESMTP id B74527E805E8 + for ; Wed, 3 Apr 2019 11:48:35 +0200 (CEST) +Date: Thu, 21 Jan 2021 15:26:54 +0100 (CET) +From: "Normal User" +To: unittests@glpi-project.org +Message-ID: +Subject: 24.1 Test attachment with long multibyte filename +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="----=_Part_1101800_1137170823.1611253212835" + +------=_Part_1101800_1137170823.1611253212835 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 7bit + +test + +------=_Part_1101800_1137170823.1611253212835 +Content-Type: application/pdf; + filename*0="=?gb2312?B?MjQuMS3plb/mlofku7blkI3vvIzlsIblr7zoh7TlhoXlrrnlp?="; + filename*1="=?gb2312?B?ITnva7moIflpLTkuK3nmoTov57nu63ooYwudHh0?=" +Content-Disposition: attachment; + filename*0="=?gb2312?B?MjQuMS3plb/mlofku7blkI3vvIzlsIblr7zoh7TlhoXlrrnlp?="; + filename*1="=?gb2312?B?ITnva7moIflpLTkuK3nmoTov57nu63ooYwudHh0?=" +Content-Transfer-Encoding: base64 + +MjQuMS1hdHRhY2hlbWVudC1tdWx0aWJ5dGUtbmFtZS13aXRoLWNvbnRpbnVhdGlvbi5lbWw= +------=_Part_1101800_1137170823.1611253212835-- diff --git a/tests/emails-tests/24.2-attachement-multibyte-name-without-continuation.eml b/tests/emails-tests/24.2-attachement-multibyte-name-without-continuation.eml new file mode 100644 index 00000000000..8b0b6b917b5 --- /dev/null +++ b/tests/emails-tests/24.2-attachement-multibyte-name-without-continuation.eml @@ -0,0 +1,28 @@ +Return-Path: normal@glpi-project.org +Received: from mail.glpi-project.org (localhost [127.0.0.1]) + by mail.glpi-project.org (Postfix) with ESMTP id B74527E805E8 + for ; Wed, 3 Apr 2019 11:48:35 +0200 (CEST) +Date: Thu, 21 Jan 2021 17:25:54 +0100 (CET) +From: "Normal User" +To: unittests@glpi-project.org +Message-ID: <2122674625.1101804.1611239214539@mail.glpi-project.org> +Subject: 24.2 Test attachment with short multibyte filename +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="----=_Part_1101800_1137170823.1611239214535" + +------=_Part_1101801_1973047508.1611239214535 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 7bit + +test + +------=_Part_1101800_1137170823.1611239214535 +Content-Type: application/pdf; + filename="=?gb2312?B?MjQuMi3kuK3lm73lrZfnrKYudHh0?=" +Content-Disposition: attachment; + filename="=?gb2312?B?MjQuMi3kuK3lm73lrZfnrKYudHh0?=" +Content-Transfer-Encoding: base64 + +MjQuMi1hdHRhY2hlbWVudC1tdWx0aWJ5dGUtbmFtZS13aXRob3V0LWNvbnRpbnVhdGlvbi5lbWw= +------=_Part_1101800_1137170823.1611239214535-- diff --git a/tests/emails-tests/25-attachement-with-OS-incompatible-char.eml b/tests/emails-tests/25-attachement-with-OS-incompatible-char.eml new file mode 100644 index 00000000000..9085415b27a --- /dev/null +++ b/tests/emails-tests/25-attachement-with-OS-incompatible-char.eml @@ -0,0 +1,28 @@ +Return-Path: normal@glpi-project.org +Received: from mail.glpi-project.org (localhost [127.0.0.1]) + by mail.glpi-project.org (Postfix) with ESMTP id B74527E805E8 + for ; Wed, 3 Apr 2019 11:48:35 +0200 (CEST) +Date: Thu, 22 Jan 2021 15:26:54 +0100 (CET) +From: "Normal User" +To: unittests@glpi-project.org +Message-ID: <50BFB6E5-3040-4535-9A10-3164C726A37B@FRY09565> +Subject: 25 - Test attachment with invalid chars for OS +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="_002_50BFB6E5304045359A103164C726A37BFRY09565_" + +--_002_50BFB6E5304045359A103164C726A37BFRY09565_ +Content-Type: text/plain; charset="us-ascii" + +Test body +--_002_50BFB6E5304045359A103164C726A37BFRY09565_ +Content-Type: application/octet-stream; name="25-New Text ? Document.txt" +Content-Description: 25-New Text ? Document.txt +Content-Disposition: attachment; filename="25-New Text ? Document.txt"; size=265; + creation-date="Fri, 15 Jan 2021 12:52:27 GMT"; + modification-date="Fri, 15 Jan 2021 12:52:27 GMT" +Content-Transfer-Encoding: base64 + +dGVzdA== + +--_002_50BFB6E5304045359A103164C726A37BFRY09565_-- \ No newline at end of file diff --git a/tests/imap/MailCollector.php b/tests/imap/MailCollector.php index c85e9cb06c6..0999c715ab4 100644 --- a/tests/imap/MailCollector.php +++ b/tests/imap/MailCollector.php @@ -533,9 +533,9 @@ public function testCollect() { 'Attachement having filename using RFC5987 (multiple lines)', 'Attachement having filename using RFC5987 (single line)', 'Mono-part HTML message', - 'Test attachment with multibyte filename', - 'Test attachment with invalid chars for OS', - 'Test filename base64 multibyte' + '24.1 Test attachment with long multibyte filename', + '24.2 Test attachment with short multibyte filename', + '25 - Test attachment with invalid chars for OS' ] ], // Mails having "normal" user as observer (add_cc_to_observer = true) @@ -596,15 +596,16 @@ public function testCollect() { // Check creation of expected documents $expected_docs = [ '00-logoteclib.png', - '01-Screenshot-2018-4-12 Observatoire - France très haut débit.png', + // Space is missing between "France" and "très" due to a bug in laminas-mail + '01-Screenshot-2018-4-12 Observatoire - Francetrès haut débit.png', '01-test.JPG', '15-image001.png', '18-blank.gif', '19-ʂǷèɕɩɐɫ ȼɦâʁȿ.gif', '20-specïal chars.gif', - '22-办公用品预约Apply for office supplies online.xlsx', - '23-New Text - Document.txt', - 'DUC_SING WAH PAN (MA Chan Ho Ki).pdf' + '24.1-长文件名,将导致内容处置标头中的连续行.txt', + '24.2-中国字符.txt', + '25-New Text - Document.txt', ]; $iterator = $DB->request( diff --git a/tools/laminas-mail-128.patch b/tools/laminas-mail-128.patch new file mode 100644 index 00000000000..cfbe40c7e6b --- /dev/null +++ b/tools/laminas-mail-128.patch @@ -0,0 +1,79 @@ +From a58790b1e49588806a24f92a1f2538c18392d61e Mon Sep 17 00:00:00 2001 +From: Edgard Lorraine Messias +Date: Thu, 14 Jan 2021 15:58:43 -0300 +Subject: [PATCH] Fixed multibyte string encoding + +Related to https://github.com/glpi-project/glpi/issues/8495 + +Signed-off-by: Edgard +--- + composer.json | 1 + + src/Header/ContentDisposition.php | 36 ++++++++++++++++---------- + test/Header/ContentDispositionTest.php | 26 ++++++++++++++++--- + 3 files changed, 46 insertions(+), 17 deletions(-) + +diff --git a/composer.json b/composer.json +index d43eba1e..f9c844e3 100644 +--- a/composer.json ++++ b/composer.json +@@ -32,6 +32,7 @@ + "laminas/laminas-stdlib": "^2.7 || ^3.0", + "laminas/laminas-validator": "^2.10.2", + "laminas/laminas-zendframework-bridge": "^1.0", ++ "symfony/polyfill-mbstring": "^1.12.0", + "true/punycode": "^2.1" + }, + "require-dev": { +diff --git a/src/Header/ContentDisposition.php b/src/Header/ContentDisposition.php +index 635e97cc..61fa7c9b 100644 +--- a/src/Header/ContentDisposition.php ++++ b/src/Header/ContentDisposition.php +@@ -137,26 +137,34 @@ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) + } + } else { + // Use 'continuation' per RFC 2231 +- $maxValueLength = strlen($value); +- do { +- $maxValueLength = ceil(0.6 * $maxValueLength); +- } while ($maxValueLength > self::MAX_PARAMETER_LENGTH); +- + if ($valueIsEncoded) { +- $encodedLength = strlen($value); + $value = HeaderWrap::mimeDecodeValue($value); +- $decodedLength = strlen($value); +- $maxValueLength -= ($encodedLength - $decodedLength); + } + +- $valueParts = str_split($value, $maxValueLength); + $i = 0; +- foreach ($valueParts as $valuePart) { +- $attributePart = $attribute . '*' . $i++; +- if ($valueIsEncoded) { +- $valuePart = $this->getEncodedValue($valuePart); ++ $fullLength = mb_strlen($value, 'UTF-8'); ++ while ($fullLength > 0) { ++ $attributePart = $attribute . '*' . $i++ . '="'; ++ $attLen = mb_strlen($attributePart, 'UTF-8'); ++ ++ $subPos = 1; ++ $valuePart = ''; ++ while ($subPos <= $fullLength) { ++ $sub = mb_substr($value, 0, $subPos, 'UTF-8'); ++ if ($valueIsEncoded) { ++ $sub = $this->getEncodedValue($sub); ++ } ++ if ($attLen + mb_strlen($sub, 'UTF-8') >= self::MAX_PARAMETER_LENGTH) { ++ $subPos--; ++ break; ++ } ++ $subPos++; ++ $valuePart = $sub; + } +- $result .= sprintf(';%s%s="%s"', Headers::FOLDING, $attributePart, $valuePart); ++ ++ $value = mb_substr($value, $subPos, null, 'UTF-8'); ++ $fullLength = mb_strlen($value, 'UTF-8'); ++ $result .= ';' . Headers::FOLDING . $attributePart . $valuePart . '"'; + } + } + } From 6d35f4b7180d3d8bdb6213c0a1d88e89ab8a3374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Anne?= Date: Thu, 28 Jan 2021 13:09:37 +0100 Subject: [PATCH 09/12] fix header encoding --- ....1-attachement-multibyte-name-with-continuation.eml | 10 +++++----- ...attachement-multibyte-name-without-continuation.eml | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml b/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml index 6e0589a469c..eb3345d3821 100644 --- a/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml +++ b/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml @@ -18,12 +18,12 @@ Content-Transfer-Encoding: 7bit test ------=_Part_1101800_1137170823.1611253212835 -Content-Type: application/pdf; - filename*0="=?gb2312?B?MjQuMS3plb/mlofku7blkI3vvIzlsIblr7zoh7TlhoXlrrnlp?="; - filename*1="=?gb2312?B?ITnva7moIflpLTkuK3nmoTov57nu63ooYwudHh0?=" +Content-Type: text/plain; + filename*0="=?gb2312?B?MjQuMS2zpM7EvP7D+6Osvau1vNbCxNrI3bSm1sOx6s231tC1x?="; + filename*1="=?gb2312?B?MGs0PjQ0C50eHQ=?=" Content-Disposition: attachment; - filename*0="=?gb2312?B?MjQuMS3plb/mlofku7blkI3vvIzlsIblr7zoh7TlhoXlrrnlp?="; - filename*1="=?gb2312?B?ITnva7moIflpLTkuK3nmoTov57nu63ooYwudHh0?=" + filename*0="=?gb2312?B?MjQuMS2zpM7EvP7D+6Osvau1vNbCxNrI3bSm1sOx6s231tC1x?="; + filename*1="=?gb2312?B?MGs0PjQ0C50eHQ=?=" Content-Transfer-Encoding: base64 MjQuMS1hdHRhY2hlbWVudC1tdWx0aWJ5dGUtbmFtZS13aXRoLWNvbnRpbnVhdGlvbi5lbWw= diff --git a/tests/emails-tests/24.2-attachement-multibyte-name-without-continuation.eml b/tests/emails-tests/24.2-attachement-multibyte-name-without-continuation.eml index 8b0b6b917b5..51b6c24c206 100644 --- a/tests/emails-tests/24.2-attachement-multibyte-name-without-continuation.eml +++ b/tests/emails-tests/24.2-attachement-multibyte-name-without-continuation.eml @@ -18,10 +18,10 @@ Content-Transfer-Encoding: 7bit test ------=_Part_1101800_1137170823.1611239214535 -Content-Type: application/pdf; - filename="=?gb2312?B?MjQuMi3kuK3lm73lrZfnrKYudHh0?=" +Content-Type: text/plain; + filename="=?gb2312?B?MjQuMi3W0Ln619a3+y50eHQ=?=" Content-Disposition: attachment; - filename="=?gb2312?B?MjQuMi3kuK3lm73lrZfnrKYudHh0?=" + filename="=?gb2312?B?MjQuMi3W0Ln619a3+y50eHQ=?=" Content-Transfer-Encoding: base64 MjQuMi1hdHRhY2hlbWVudC1tdWx0aWJ5dGUtbmFtZS13aXRob3V0LWNvbnRpbnVhdGlvbi5lbWw= From f5b29cbe5a92af03a08274b6a0715cfb5ffb15f5 Mon Sep 17 00:00:00 2001 From: Edgard Date: Thu, 28 Jan 2021 09:43:16 -0300 Subject: [PATCH 10/12] fix header encoding --- .../24.1-attachement-multibyte-name-with-continuation.eml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml b/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml index eb3345d3821..c7c49e82681 100644 --- a/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml +++ b/tests/emails-tests/24.1-attachement-multibyte-name-with-continuation.eml @@ -19,11 +19,11 @@ test ------=_Part_1101800_1137170823.1611253212835 Content-Type: text/plain; - filename*0="=?gb2312?B?MjQuMS2zpM7EvP7D+6Osvau1vNbCxNrI3bSm1sOx6s231tC1x?="; - filename*1="=?gb2312?B?MGs0PjQ0C50eHQ=?=" + filename*0="=?gb2312?B?MjQuMS2zpM7EvP7D+6Osvau1vNbCxNrI3bSm1sOx6s231tA=?="; + filename*1="=?gb2312?B?tcTBrND40NAudHh0?=" Content-Disposition: attachment; - filename*0="=?gb2312?B?MjQuMS2zpM7EvP7D+6Osvau1vNbCxNrI3bSm1sOx6s231tC1x?="; - filename*1="=?gb2312?B?MGs0PjQ0C50eHQ=?=" + filename*0="=?gb2312?B?MjQuMS2zpM7EvP7D+6Osvau1vNbCxNrI3bSm1sOx6s231tA=?="; + filename*1="=?gb2312?B?tcTBrND40NAudHh0?=" Content-Transfer-Encoding: base64 MjQuMS1hdHRhY2hlbWVudC1tdWx0aWJ5dGUtbmFtZS13aXRoLWNvbnRpbnVhdGlvbi5lbWw= From eb495235825cd427fbec37acd3eefb06239bfa69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Anne?= Date: Thu, 28 Jan 2021 14:04:18 +0100 Subject: [PATCH 11/12] Remove debug --- .github/workflows/ci.yml | 14 +++++++------- inc/mailcollector.class.php | 3 --- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc1c6b2a466..ff6090fe6fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -227,13 +227,6 @@ jobs: docker exec app bin/console glpi:database:configure --config-dir=./tests --no-interaction --reconfigure --db-name=glpi --db-host=db --db-user=root docker exec app vendor/bin/atoum -p 'php -d memory_limit=512M' --debug --force-terminal --use-dot-report --bootstrap-file tests/bootstrap.php --no-code-coverage --fail-if-skipped-methods --max-children-number 1 -d tests/database docker exec app bin/console glpi:database:configure --config-dir=./tests --no-interaction --reconfigure --db-name=glpi --db-host=db --db-user=root - - name: "IMAP tests" - if: env.skip != 'true' - run: | - for f in `ls tests/emails-tests/*.eml`; do cat $f | docker exec --user glpi --interactive dovecot getmail_maildir /home/glpi/Maildir/ ; done - docker exec app sed -e 's/127.0.0.1/dovecot/g' -i tests/imap/MailCollector.php - docker exec app sed -e 's/127.0.0.1/dovecot/g' -i tests/imap/Toolbox.php - docker exec app vendor/bin/atoum -p 'php -d memory_limit=512M' --debug --force-terminal --use-dot-report --bootstrap-file tests/bootstrap.php --no-code-coverage --fail-if-skipped-methods --max-children-number 1 -d tests/imap - name: "Unit tests" if: env.skip != 'true' run: | @@ -247,6 +240,13 @@ jobs: run: | for f in `ls tests/LDAP/ldif/*.ldif`; do cat $f | docker exec --interactive openldap ldapadd -x -H ldap://127.0.0.1:3890/ -D "cn=Manager,dc=glpi,dc=org" -w insecure ; done docker exec app vendor/bin/atoum -p 'php -d memory_limit=512M' --debug --force-terminal --use-dot-report --bootstrap-file tests/bootstrap.php --no-code-coverage --fail-if-skipped-methods --max-children-number 1 -d tests/LDAP + - name: "IMAP tests" + if: env.skip != 'true' + run: | + for f in `ls tests/emails-tests/*.eml`; do cat $f | docker exec --user glpi --interactive dovecot getmail_maildir /home/glpi/Maildir/ ; done + docker exec app sed -e 's/127.0.0.1/dovecot/g' -i tests/imap/MailCollector.php + docker exec app sed -e 's/127.0.0.1/dovecot/g' -i tests/imap/Toolbox.php + docker exec app vendor/bin/atoum -p 'php -d memory_limit=512M' --debug --force-terminal --use-dot-report --bootstrap-file tests/bootstrap.php --no-code-coverage --fail-if-skipped-methods --max-children-number 1 -d tests/imap - name: "WEB tests" if: env.skip != 'true' run: | diff --git a/inc/mailcollector.class.php b/inc/mailcollector.class.php index 13d4925b6fa..7481a9bb855 100644 --- a/inc/mailcollector.class.php +++ b/inc/mailcollector.class.php @@ -1528,14 +1528,11 @@ private function getRecursiveAttached(\Laminas\Mail\Storage\Part $part, $path, $ && $part->getHeaders()->has('content-disposition') && ($content_disp_header = $part->getHeader('content-disposition')) instanceof ContentDisposition) { $filename = $content_disp_header->getParameter('filename') ?? ''; - - var_dump(sprintf('filename from content-disposition: >%s<', $filename)); } // Try to get filename from Content-Type header if (empty($filename)) { $filename = $content_type_header->getParameter('name') ?? ''; - var_dump(sprintf('filename from content-type: >%s<', $filename)); } $filename_matches = []; From 5e86ab2a80546bc53794ef16bb8476bd6f5973b1 Mon Sep 17 00:00:00 2001 From: Edgard Date: Thu, 28 Jan 2021 11:12:45 -0300 Subject: [PATCH 12/12] Updated the patch --- tools/laminas-mail-128.patch | 41 +++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/tools/laminas-mail-128.patch b/tools/laminas-mail-128.patch index cfbe40c7e6b..5ee3d6f01ce 100644 --- a/tools/laminas-mail-128.patch +++ b/tools/laminas-mail-128.patch @@ -12,18 +12,6 @@ Signed-off-by: Edgard test/Header/ContentDispositionTest.php | 26 ++++++++++++++++--- 3 files changed, 46 insertions(+), 17 deletions(-) -diff --git a/composer.json b/composer.json -index d43eba1e..f9c844e3 100644 ---- a/composer.json -+++ b/composer.json -@@ -32,6 +32,7 @@ - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "laminas/laminas-validator": "^2.10.2", - "laminas/laminas-zendframework-bridge": "^1.0", -+ "symfony/polyfill-mbstring": "^1.12.0", - "true/punycode": "^2.1" - }, - "require-dev": { diff --git a/src/Header/ContentDisposition.php b/src/Header/ContentDisposition.php index 635e97cc..61fa7c9b 100644 --- a/src/Header/ContentDisposition.php @@ -77,3 +65,32 @@ index 635e97cc..61fa7c9b 100644 } } } + +From 2f81aedcb83de61e00fffd6aee4c8938272a1b24 Mon Sep 17 00:00:00 2001 +From: Edgard Lorraine Messias +Date: Thu, 28 Jan 2021 10:20:40 -0300 +Subject: [PATCH 2/3] Fixed malformed header from continued value + +Signed-off-by: Edgard +--- + src/Header/ContentDisposition.php | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/Header/ContentDisposition.php b/src/Header/ContentDisposition.php +index 61fa7c9b..4ec72137 100644 +--- a/src/Header/ContentDisposition.php ++++ b/src/Header/ContentDisposition.php +@@ -87,6 +87,13 @@ public static function fromString($headerLine) + } + $value .= $values[$i]; + } ++ ++ // Fix malformed header ++ if (strncmp($value, '=?', 2) === 0) { ++ $value = preg_replace('/\?\=\=\?[\w-]+\?\w\?/', '', $value); ++ $value = HeaderWrap::mimeDecodeValue($value); ++ } ++ + $header->setParameter($name, $value); + } + }