diff --git a/composer.lock b/composer.lock
index 4947e9c72..772948a89 100644
--- a/composer.lock
+++ b/composer.lock
@@ -582,20 +582,20 @@
},
{
"name": "symfony/contracts",
- "version": "v1.1.8",
+ "version": "v1.1.9",
"source": {
"type": "git",
"url": "https://github.com/symfony/contracts.git",
- "reference": "f51bca9de06b7a25b19a4155da7bebad099a5def"
+ "reference": "8c4de0cf797f2eba4334a1d7a9b788c1b30a7579"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/contracts/zipball/f51bca9de06b7a25b19a4155da7bebad099a5def",
- "reference": "f51bca9de06b7a25b19a4155da7bebad099a5def",
+ "url": "https://api.github.com/repos/symfony/contracts/zipball/8c4de0cf797f2eba4334a1d7a9b788c1b30a7579",
+ "reference": "8c4de0cf797f2eba4334a1d7a9b788c1b30a7579",
"shasum": ""
},
"require": {
- "php": "^7.1.3",
+ "php": ">=7.1.3",
"psr/cache": "^1.0",
"psr/container": "^1.0"
},
@@ -655,7 +655,7 @@
"interoperability",
"standards"
],
- "time": "2019-11-07T12:44:51+00:00"
+ "time": "2020-07-29T14:46:19+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -771,16 +771,16 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.17.0",
+ "version": "v1.18.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
"shasum": ""
},
"require": {
@@ -792,7 +792,11 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.17-dev"
+ "dev-master": "1.18-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
@@ -826,21 +830,7 @@
"portable",
"shim"
],
- "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-05-12T16:47:27+00:00"
+ "time": "2020-07-14T12:35:20+00:00"
}
],
"packages-dev": [
@@ -898,20 +888,6 @@
"constructor",
"instantiate"
],
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
- "type": "tidelift"
- }
- ],
"time": "2020-05-29T17:27:14+00:00"
},
{
@@ -960,12 +936,6 @@
"object",
"object graph"
],
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
- "type": "tidelift"
- }
- ],
"time": "2020-06-29T13:22:24+00:00"
},
{
@@ -1218,33 +1188,33 @@
},
{
"name": "phpspec/prophecy",
- "version": "v1.10.3",
+ "version": "1.11.1",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "451c3cd1418cf640de218914901e51b064abb093"
+ "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
- "reference": "451c3cd1418cf640de218914901e51b064abb093",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160",
+ "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.0.2",
- "php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
- "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
- "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2",
+ "phpdocumentor/reflection-docblock": "^5.0",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
},
"require-dev": {
- "phpspec/phpspec": "^2.5 || ^3.2",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+ "phpspec/phpspec": "^6.0",
+ "phpunit/phpunit": "^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.10.x-dev"
+ "dev-master": "1.11.x-dev"
}
},
"autoload": {
@@ -1277,7 +1247,7 @@
"spy",
"stub"
],
- "time": "2020-03-05T15:02:03+00:00"
+ "time": "2020-07-08T12:44:21+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -1973,16 +1943,6 @@
}
],
"description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
- "funding": [
- {
- "url": "https://github.com/Ocramius",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories",
- "type": "tidelift"
- }
- ],
"time": "2020-08-16T05:16:28+00:00"
},
{
@@ -2606,20 +2566,6 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
- "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-23T08:31:43+00:00"
},
{
@@ -2682,25 +2628,11 @@
"polyfill",
"portable"
],
- "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-14T12:35:20+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.18.0",
+ "version": "v1.18.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
@@ -2762,20 +2694,6 @@
"portable",
"shim"
],
- "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-14T12:35:20+00:00"
},
{
@@ -2826,20 +2744,6 @@
],
"description": "Symfony Stopwatch Component",
"homepage": "https://symfony.com",
- "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-05-20T08:37:50+00:00"
},
{
@@ -2899,41 +2803,27 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "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-05-20T08:37:50+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.1.3",
+ "version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
- "php": "^7.0"
+ "php": "^7.2 || ^8.0"
},
"type": "library",
"autoload": {
@@ -2953,7 +2843,7 @@
}
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
- "time": "2019-06-13T22:48:21+00:00"
+ "time": "2020-07-12T23:59:07+00:00"
},
{
"name": "webmozart/assert",
@@ -3026,6 +2916,5 @@
"ext-filter": "*",
"ext-session": "*"
},
- "platform-dev": [],
- "plugin-api-version": "1.1.0"
+ "platform-dev": []
}
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index a398ab31e..4f91749f3 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -13,28 +13,29 @@ return array(
'ClassWithBeforeMethod' => $baseDir . '/libs/jsonrpc/tests/ProcedureHandlerTest.php',
'ClientTest' => $baseDir . '/libs/jsonrpc/tests/ClientTest.php',
'DummyMiddleware' => $baseDir . '/libs/jsonrpc/tests/ServerTest.php',
- 'Eluceo\\iCal\\Component' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Component.php',
- 'Eluceo\\iCal\\Component\\Alarm' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Component/Alarm.php',
- 'Eluceo\\iCal\\Component\\Calendar' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Component/Calendar.php',
- 'Eluceo\\iCal\\Component\\Event' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Component/Event.php',
- 'Eluceo\\iCal\\Component\\Timezone' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Component/Timezone.php',
- 'Eluceo\\iCal\\Component\\TimezoneRule' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Component/TimezoneRule.php',
- 'Eluceo\\iCal\\ParameterBag' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/ParameterBag.php',
- 'Eluceo\\iCal\\Property' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property.php',
- 'Eluceo\\iCal\\PropertyBag' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/PropertyBag.php',
- 'Eluceo\\iCal\\Property\\ArrayValue' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/ArrayValue.php',
- 'Eluceo\\iCal\\Property\\DateTimeProperty' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/DateTimeProperty.php',
- 'Eluceo\\iCal\\Property\\DateTimesProperty' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/DateTimesProperty.php',
- 'Eluceo\\iCal\\Property\\Event\\Attendees' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/Event/Attendees.php',
- 'Eluceo\\iCal\\Property\\Event\\Description' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/Event/Description.php',
- 'Eluceo\\iCal\\Property\\Event\\Organizer' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/Event/Organizer.php',
- 'Eluceo\\iCal\\Property\\Event\\RecurrenceId' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceId.php',
- 'Eluceo\\iCal\\Property\\Event\\RecurrenceRule' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceRule.php',
- 'Eluceo\\iCal\\Property\\StringValue' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/StringValue.php',
- 'Eluceo\\iCal\\Property\\ValueInterface' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Property/ValueInterface.php',
- 'Eluceo\\iCal\\Util\\ComponentUtil' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Util/ComponentUtil.php',
- 'Eluceo\\iCal\\Util\\DateUtil' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Util/DateUtil.php',
- 'Eluceo\\iCal\\Util\\PropertyValueUtil' => $vendorDir . '/eluceo/ical/src/Eluceo/iCal/Util/PropertyValueUtil.php',
+ 'Eluceo\\iCal\\Component' => $vendorDir . '/eluceo/ical/src/Component.php',
+ 'Eluceo\\iCal\\Component\\Alarm' => $vendorDir . '/eluceo/ical/src/Component/Alarm.php',
+ 'Eluceo\\iCal\\Component\\Calendar' => $vendorDir . '/eluceo/ical/src/Component/Calendar.php',
+ 'Eluceo\\iCal\\Component\\Event' => $vendorDir . '/eluceo/ical/src/Component/Event.php',
+ 'Eluceo\\iCal\\Component\\Timezone' => $vendorDir . '/eluceo/ical/src/Component/Timezone.php',
+ 'Eluceo\\iCal\\Component\\TimezoneRule' => $vendorDir . '/eluceo/ical/src/Component/TimezoneRule.php',
+ 'Eluceo\\iCal\\ParameterBag' => $vendorDir . '/eluceo/ical/src/ParameterBag.php',
+ 'Eluceo\\iCal\\Property' => $vendorDir . '/eluceo/ical/src/Property.php',
+ 'Eluceo\\iCal\\PropertyBag' => $vendorDir . '/eluceo/ical/src/PropertyBag.php',
+ 'Eluceo\\iCal\\Property\\ArrayValue' => $vendorDir . '/eluceo/ical/src/Property/ArrayValue.php',
+ 'Eluceo\\iCal\\Property\\DateTimeProperty' => $vendorDir . '/eluceo/ical/src/Property/DateTimeProperty.php',
+ 'Eluceo\\iCal\\Property\\DateTimesProperty' => $vendorDir . '/eluceo/ical/src/Property/DateTimesProperty.php',
+ 'Eluceo\\iCal\\Property\\Event\\Attachment' => $vendorDir . '/eluceo/ical/src/Property/Event/Attachment.php',
+ 'Eluceo\\iCal\\Property\\Event\\Attendees' => $vendorDir . '/eluceo/ical/src/Property/Event/Attendees.php',
+ 'Eluceo\\iCal\\Property\\Event\\Geo' => $vendorDir . '/eluceo/ical/src/Property/Event/Geo.php',
+ 'Eluceo\\iCal\\Property\\Event\\Organizer' => $vendorDir . '/eluceo/ical/src/Property/Event/Organizer.php',
+ 'Eluceo\\iCal\\Property\\Event\\RecurrenceId' => $vendorDir . '/eluceo/ical/src/Property/Event/RecurrenceId.php',
+ 'Eluceo\\iCal\\Property\\Event\\RecurrenceRule' => $vendorDir . '/eluceo/ical/src/Property/Event/RecurrenceRule.php',
+ 'Eluceo\\iCal\\Property\\RawStringValue' => $vendorDir . '/eluceo/ical/src/Property/RawStringValue.php',
+ 'Eluceo\\iCal\\Property\\StringValue' => $vendorDir . '/eluceo/ical/src/Property/StringValue.php',
+ 'Eluceo\\iCal\\Property\\ValueInterface' => $vendorDir . '/eluceo/ical/src/Property/ValueInterface.php',
+ 'Eluceo\\iCal\\Util\\ComponentUtil' => $vendorDir . '/eluceo/ical/src/Util/ComponentUtil.php',
+ 'Eluceo\\iCal\\Util\\DateUtil' => $vendorDir . '/eluceo/ical/src/Util/DateUtil.php',
'FirstMiddleware' => $baseDir . '/libs/jsonrpc/tests/MiddlewareHandlerTest.php',
'Gregwar\\Captcha\\CaptchaBuilder' => $vendorDir . '/gregwar/captcha/src/Gregwar/Captcha/CaptchaBuilder.php',
'Gregwar\\Captcha\\CaptchaBuilderInterface' => $vendorDir . '/gregwar/captcha/src/Gregwar/Captcha/CaptchaBuilderInterface.php',
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
index 9bc8799c9..9a277b8a8 100644
--- a/vendor/composer/autoload_namespaces.php
+++ b/vendor/composer/autoload_namespaces.php
@@ -9,6 +9,5 @@ return array(
'Pimple' => array($vendorDir . '/pimple/pimple/src'),
'Parsedown' => array($vendorDir . '/erusev/parsedown'),
'Otp' => array($vendorDir . '/christian-riesen/otp/src'),
- 'Eluceo\\iCal' => array($vendorDir . '/eluceo/ical/src'),
'' => array($baseDir . '/libs'),
);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 6686f4201..d6c95b93c 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -16,5 +16,6 @@ return array(
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
'Kanboard\\' => array($baseDir . '/app'),
'Gregwar\\' => array($vendorDir . '/gregwar/captcha/src/Gregwar'),
+ 'Eluceo\\iCal\\' => array($vendorDir . '/eluceo/ical/src'),
'Base32\\' => array($vendorDir . '/christian-riesen/base32/src'),
);
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index a59d6fc9f..cdc9949a8 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -35,6 +35,10 @@ class ComposerStaticInit80f59a55e693f3d5493bcaaa968d1851
array (
'Gregwar\\' => 8,
),
+ 'E' =>
+ array (
+ 'Eluceo\\iCal\\' => 12,
+ ),
'B' =>
array (
'Base32\\' => 7,
@@ -82,6 +86,10 @@ class ComposerStaticInit80f59a55e693f3d5493bcaaa968d1851
array (
0 => __DIR__ . '/..' . '/gregwar/captcha/src/Gregwar',
),
+ 'Eluceo\\iCal\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/eluceo/ical/src',
+ ),
'Base32\\' =>
array (
0 => __DIR__ . '/..' . '/christian-riesen/base32/src',
@@ -107,13 +115,6 @@ class ComposerStaticInit80f59a55e693f3d5493bcaaa968d1851
0 => __DIR__ . '/..' . '/christian-riesen/otp/src',
),
),
- 'E' =>
- array (
- 'Eluceo\\iCal' =>
- array (
- 0 => __DIR__ . '/..' . '/eluceo/ical/src',
- ),
- ),
);
public static $fallbackDirsPsr0 = array (
@@ -128,28 +129,29 @@ class ComposerStaticInit80f59a55e693f3d5493bcaaa968d1851
'ClassWithBeforeMethod' => __DIR__ . '/../..' . '/libs/jsonrpc/tests/ProcedureHandlerTest.php',
'ClientTest' => __DIR__ . '/../..' . '/libs/jsonrpc/tests/ClientTest.php',
'DummyMiddleware' => __DIR__ . '/../..' . '/libs/jsonrpc/tests/ServerTest.php',
- 'Eluceo\\iCal\\Component' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Component.php',
- 'Eluceo\\iCal\\Component\\Alarm' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Component/Alarm.php',
- 'Eluceo\\iCal\\Component\\Calendar' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Component/Calendar.php',
- 'Eluceo\\iCal\\Component\\Event' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Component/Event.php',
- 'Eluceo\\iCal\\Component\\Timezone' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Component/Timezone.php',
- 'Eluceo\\iCal\\Component\\TimezoneRule' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Component/TimezoneRule.php',
- 'Eluceo\\iCal\\ParameterBag' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/ParameterBag.php',
- 'Eluceo\\iCal\\Property' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property.php',
- 'Eluceo\\iCal\\PropertyBag' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/PropertyBag.php',
- 'Eluceo\\iCal\\Property\\ArrayValue' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/ArrayValue.php',
- 'Eluceo\\iCal\\Property\\DateTimeProperty' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/DateTimeProperty.php',
- 'Eluceo\\iCal\\Property\\DateTimesProperty' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/DateTimesProperty.php',
- 'Eluceo\\iCal\\Property\\Event\\Attendees' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/Event/Attendees.php',
- 'Eluceo\\iCal\\Property\\Event\\Description' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/Event/Description.php',
- 'Eluceo\\iCal\\Property\\Event\\Organizer' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/Event/Organizer.php',
- 'Eluceo\\iCal\\Property\\Event\\RecurrenceId' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceId.php',
- 'Eluceo\\iCal\\Property\\Event\\RecurrenceRule' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceRule.php',
- 'Eluceo\\iCal\\Property\\StringValue' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/StringValue.php',
- 'Eluceo\\iCal\\Property\\ValueInterface' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Property/ValueInterface.php',
- 'Eluceo\\iCal\\Util\\ComponentUtil' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Util/ComponentUtil.php',
- 'Eluceo\\iCal\\Util\\DateUtil' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Util/DateUtil.php',
- 'Eluceo\\iCal\\Util\\PropertyValueUtil' => __DIR__ . '/..' . '/eluceo/ical/src/Eluceo/iCal/Util/PropertyValueUtil.php',
+ 'Eluceo\\iCal\\Component' => __DIR__ . '/..' . '/eluceo/ical/src/Component.php',
+ 'Eluceo\\iCal\\Component\\Alarm' => __DIR__ . '/..' . '/eluceo/ical/src/Component/Alarm.php',
+ 'Eluceo\\iCal\\Component\\Calendar' => __DIR__ . '/..' . '/eluceo/ical/src/Component/Calendar.php',
+ 'Eluceo\\iCal\\Component\\Event' => __DIR__ . '/..' . '/eluceo/ical/src/Component/Event.php',
+ 'Eluceo\\iCal\\Component\\Timezone' => __DIR__ . '/..' . '/eluceo/ical/src/Component/Timezone.php',
+ 'Eluceo\\iCal\\Component\\TimezoneRule' => __DIR__ . '/..' . '/eluceo/ical/src/Component/TimezoneRule.php',
+ 'Eluceo\\iCal\\ParameterBag' => __DIR__ . '/..' . '/eluceo/ical/src/ParameterBag.php',
+ 'Eluceo\\iCal\\Property' => __DIR__ . '/..' . '/eluceo/ical/src/Property.php',
+ 'Eluceo\\iCal\\PropertyBag' => __DIR__ . '/..' . '/eluceo/ical/src/PropertyBag.php',
+ 'Eluceo\\iCal\\Property\\ArrayValue' => __DIR__ . '/..' . '/eluceo/ical/src/Property/ArrayValue.php',
+ 'Eluceo\\iCal\\Property\\DateTimeProperty' => __DIR__ . '/..' . '/eluceo/ical/src/Property/DateTimeProperty.php',
+ 'Eluceo\\iCal\\Property\\DateTimesProperty' => __DIR__ . '/..' . '/eluceo/ical/src/Property/DateTimesProperty.php',
+ 'Eluceo\\iCal\\Property\\Event\\Attachment' => __DIR__ . '/..' . '/eluceo/ical/src/Property/Event/Attachment.php',
+ 'Eluceo\\iCal\\Property\\Event\\Attendees' => __DIR__ . '/..' . '/eluceo/ical/src/Property/Event/Attendees.php',
+ 'Eluceo\\iCal\\Property\\Event\\Geo' => __DIR__ . '/..' . '/eluceo/ical/src/Property/Event/Geo.php',
+ 'Eluceo\\iCal\\Property\\Event\\Organizer' => __DIR__ . '/..' . '/eluceo/ical/src/Property/Event/Organizer.php',
+ 'Eluceo\\iCal\\Property\\Event\\RecurrenceId' => __DIR__ . '/..' . '/eluceo/ical/src/Property/Event/RecurrenceId.php',
+ 'Eluceo\\iCal\\Property\\Event\\RecurrenceRule' => __DIR__ . '/..' . '/eluceo/ical/src/Property/Event/RecurrenceRule.php',
+ 'Eluceo\\iCal\\Property\\RawStringValue' => __DIR__ . '/..' . '/eluceo/ical/src/Property/RawStringValue.php',
+ 'Eluceo\\iCal\\Property\\StringValue' => __DIR__ . '/..' . '/eluceo/ical/src/Property/StringValue.php',
+ 'Eluceo\\iCal\\Property\\ValueInterface' => __DIR__ . '/..' . '/eluceo/ical/src/Property/ValueInterface.php',
+ 'Eluceo\\iCal\\Util\\ComponentUtil' => __DIR__ . '/..' . '/eluceo/ical/src/Util/ComponentUtil.php',
+ 'Eluceo\\iCal\\Util\\DateUtil' => __DIR__ . '/..' . '/eluceo/ical/src/Util/DateUtil.php',
'FirstMiddleware' => __DIR__ . '/../..' . '/libs/jsonrpc/tests/MiddlewareHandlerTest.php',
'Gregwar\\Captcha\\CaptchaBuilder' => __DIR__ . '/..' . '/gregwar/captcha/src/Gregwar/Captcha/CaptchaBuilder.php',
'Gregwar\\Captcha\\CaptchaBuilderInterface' => __DIR__ . '/..' . '/gregwar/captcha/src/Gregwar/Captcha/CaptchaBuilderInterface.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 4292a53a8..91dbdadba 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -111,31 +111,34 @@
},
{
"name": "eluceo/ical",
- "version": "0.10.1",
- "version_normalized": "0.10.1.0",
+ "version": "0.16.0",
+ "version_normalized": "0.16.0.0",
"source": {
"type": "git",
"url": "https://github.com/markuspoerschke/iCal.git",
- "reference": "2dd99c12c0aa961c541380ab0c113135e14af33e"
+ "reference": "97da0d94c9716e65c141066a2d96aa098379721b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/2dd99c12c0aa961c541380ab0c113135e14af33e",
- "reference": "2dd99c12c0aa961c541380ab0c113135e14af33e",
+ "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/97da0d94c9716e65c141066a2d96aa098379721b",
+ "reference": "97da0d94c9716e65c141066a2d96aa098379721b",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=7.1"
},
"require-dev": {
- "phpunit/phpunit": "~4.3"
+ "phpunit/phpunit": "^7.0"
},
- "time": "2016-06-09T09:08:55+00:00",
+ "suggest": {
+ "ext-mbstring": "Massive performance enhancement of line folding"
+ },
+ "time": "2019-12-29T22:08:56+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
- "psr-0": {
- "Eluceo\\iCal": "src/"
+ "psr-4": {
+ "Eluceo\\iCal\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -143,18 +146,13 @@
"MIT"
],
"authors": [
- {
- "name": "Maciej Łebkowski",
- "email": "m.lebkowski@gmail.com",
- "role": "Contributor"
- },
{
"name": "Markus Poerschke",
"email": "markus@eluceo.de",
"role": "Developer"
}
],
- "description": "The eluceo/iCal package offers a abstraction layer for creating iCalendars. You can easily create iCal files by using PHP object instead of typing your *.ics file by hand. The output will follow RFC 2445 as best as possible.",
+ "description": "The eluceo/iCal package offers a abstraction layer for creating iCalendars. You can easily create iCal files by using PHP object instead of typing your *.ics file by hand. The output will follow RFC 5545 as best as possible.",
"homepage": "https://github.com/markuspoerschke/iCal",
"keywords": [
"calendar",
@@ -599,21 +597,21 @@
},
{
"name": "symfony/contracts",
- "version": "v1.1.8",
- "version_normalized": "1.1.8.0",
+ "version": "v1.1.9",
+ "version_normalized": "1.1.9.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/contracts.git",
- "reference": "f51bca9de06b7a25b19a4155da7bebad099a5def"
+ "reference": "8c4de0cf797f2eba4334a1d7a9b788c1b30a7579"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/contracts/zipball/f51bca9de06b7a25b19a4155da7bebad099a5def",
- "reference": "f51bca9de06b7a25b19a4155da7bebad099a5def",
+ "url": "https://api.github.com/repos/symfony/contracts/zipball/8c4de0cf797f2eba4334a1d7a9b788c1b30a7579",
+ "reference": "8c4de0cf797f2eba4334a1d7a9b788c1b30a7579",
"shasum": ""
},
"require": {
- "php": "^7.1.3",
+ "php": ">=7.1.3",
"psr/cache": "^1.0",
"psr/container": "^1.0"
},
@@ -635,7 +633,7 @@
"symfony/service-implementation": "",
"symfony/translation-implementation": ""
},
- "time": "2019-11-07T12:44:51+00:00",
+ "time": "2020-07-29T14:46:19+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -794,17 +792,17 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.17.0",
- "version_normalized": "1.17.0.0",
+ "version": "v1.18.1",
+ "version_normalized": "1.18.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
"shasum": ""
},
"require": {
@@ -813,11 +811,15 @@
"suggest": {
"ext-mbstring": "For best performance"
},
- "time": "2020-05-12T16:47:27+00:00",
+ "time": "2020-07-14T12:35:20+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.17-dev"
+ "dev-master": "1.18-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"installation-source": "dist",
diff --git a/vendor/eluceo/ical/.gitignore b/vendor/eluceo/ical/.gitignore
deleted file mode 100644
index 4e06e7d44..000000000
--- a/vendor/eluceo/ical/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor
-composer.lock
-bin
diff --git a/vendor/eluceo/ical/.php_cs b/vendor/eluceo/ical/.php_cs
deleted file mode 100644
index 1d54d34a2..000000000
--- a/vendor/eluceo/ical/.php_cs
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-This source file is subject to the MIT license that is bundled
-with this source code in the file LICENSE.
-EOF
-);
-
-$finder = Symfony\CS\Finder\DefaultFinder::create();
-$finder->in(__DIR__ . '/src');
-
-return Symfony\CS\Config\Config::create()
- ->fixers(array(
- 'header_comment',
- 'concat_with_spaces',
- 'align_equals',
- 'align_double_arrow',
- 'unused_use',
- 'long_array_syntax',
- ))
- ->finder($finder)
-;
diff --git a/vendor/eluceo/ical/.scrutinizer.yml b/vendor/eluceo/ical/.scrutinizer.yml
deleted file mode 100644
index d3b381a2c..000000000
--- a/vendor/eluceo/ical/.scrutinizer.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-filter:
- excluded_paths:
- - tests/*
-
-tools:
- php_cs_fixer: true
- php_code_sniffer:
- config:
- standard: PSR2
- php_mess_detector: true
- php_analyzer: true
- sensiolabs_security_checker: true
- external_code_coverage:
- timeout: 300
- runs: 1
-
-checks:
- php:
- code_rating: true
- duplication: true
diff --git a/vendor/eluceo/ical/.travis.yml b/vendor/eluceo/ical/.travis.yml
deleted file mode 100644
index cbe31ac99..000000000
--- a/vendor/eluceo/ical/.travis.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-language: php
-
-php:
- - 5.3
- - 5.4
- - 5.5
- - 5.6
- - 7.0
- - hhvm
-
-before_script:
- - composer self-update
- - composer install
-
-script: ./bin/phpunit --coverage-clover=coverage.clover
-
-after_script:
- - wget https://scrutinizer-ci.com/ocular.phar
- - php ocular.phar code-coverage:upload --format=php-clover coverage.clover
diff --git a/vendor/eluceo/ical/CHANGELOG.md b/vendor/eluceo/ical/CHANGELOG.md
deleted file mode 100644
index 84320d982..000000000
--- a/vendor/eluceo/ical/CHANGELOG.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Change Log
-All notable changes to this project will be documented in this file.
-
-## [0.10.1] - 2016-05-09
-### Fixed
-- Problem with GEO property when importing into Google Calendar [#74](https://github.com/markuspoerschke/iCal/pull/74)
-
-## [0.10.0] - 2016-04-26
-### Changed
-- Use 'escapeValue' to escape the new line character. [#60](https://github.com/markuspoerschke/iCal/pull/60)
-- Order components by type when building ical file. [#65](https://github.com/markuspoerschke/iCal/pull/65)
-
-### Added
-- X-ALT-DESC for HTML types with new descriptionHTML field. [#55](https://github.com/markuspoerschke/iCal/pull/55)
-- Added a property and setter for calendar color. [#68](https://github.com/markuspoerschke/iCal/pull/68)
-- Write also GEO property if geo location is given. [#66](https://github.com/markuspoerschke/iCal/pull/66)
-
-## [0.9.0] - 2015-11-13
-### Added
-- CHANGELOG.md based on [’Keep a CHANGELOG’](https://github.com/olivierlacan/keep-a-changelog)
-- Support event properties EXDATE and RECURRENCE-ID [#50](https://github.com/markuspoerschke/iCal/pull/53)
-
-### Changed
-- Allow new lines in event descriptions [#53](https://github.com/markuspoerschke/iCal/pull/53)
-- **Breaking Change:** Changed signature of the ```Event::setOrganizer``` method. Now there is is only one parameter that must be an instance of ```Property\Organizer```.
-- Updated install section in README.md [#54](https://github.com/markuspoerschke/iCal/pull/53)
-
-[Unreleased]: https://github.com/markuspoerschke/iCal/compare/0.10.1...HEAD
-[0.10.1]: https://github.com/markuspoerschke/iCal/compare/0.10.0...0.10.1
-[0.10.0]: https://github.com/markuspoerschke/iCal/compare/0.9.0...0.10.0
-[0.9.0]: https://github.com/markuspoerschke/iCal/compare/0.8.0...0.9.0
diff --git a/vendor/eluceo/ical/LICENSE b/vendor/eluceo/ical/LICENSE
index 92be8d061..e14b6b390 100644
--- a/vendor/eluceo/ical/LICENSE
+++ b/vendor/eluceo/ical/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2012-2015 Markus Poerschke
+Copyright (c) 2012-2019 Markus Poerschke
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/eluceo/ical/README.md b/vendor/eluceo/ical/README.md
deleted file mode 100644
index 521d537de..000000000
--- a/vendor/eluceo/ical/README.md
+++ /dev/null
@@ -1,158 +0,0 @@
-# eluceo — iCal
-
-[](https://scrutinizer-ci.com/g/markuspoerschke/iCal/?branch=master) [](https://scrutinizer-ci.com/g/markuspoerschke/iCal/?branch=master) [](https://travis-ci.org/markuspoerschke/iCal)
-
-This package offers a abstraction layer for creating iCalendars. The output will
-follow [RFC 5545](http://www.ietf.org/rfc/rfc5545.txt) as best as possible.
-
-The following components are supported at this time:
-
-* VCALENDAR
-* VEVENT
-* VALARM
-* VTIMEZONE
-
-## Installation
-
-You can install this package by using [Composer](http://getcomposer.org), running this command:
-
-```sh
-composer require eluceo/ical
-```
-Link to Packagist: https://packagist.org/packages/eluceo/ical
-
-## Usage
-
-### Basic Usage
-
-#### 1. Create a Calendar object
-
-```PHP
-$vCalendar = new \Eluceo\iCal\Component\Calendar('www.example.com');
-```
-
-#### 2. Create an Event object
-
-```PHP
-$vEvent = new \Eluceo\iCal\Component\Event();
-```
-
-#### 3. Add your information to the Event
-
-```PHP
-$vEvent
- ->setDtStart(new \DateTime('2012-12-24'))
- ->setDtEnd(new \DateTime('2012-12-24'))
- ->setNoTime(true)
- ->setSummary('Christmas')
-;
-```
-
-#### 4. Add Event to Calendar
-
-```PHP
-$vCalendar->addComponent($vEvent);
-```
-
-#### 5. Set HTTP-headers
-
-```PHP
-header('Content-Type: text/calendar; charset=utf-8');
-header('Content-Disposition: attachment; filename="cal.ics"');
-```
-
-#### 6. Send output
-
-```PHP
-echo $vCalendar->render();
-```
-
-### Timezone support
-
-This package supports three different types of handling timezones:
-
-#### 1. UTC (default)
-
-In the default setting, UTC/GMT will be used as Timezone. The time will be formated as following:
-
-```
-DTSTART:20121224T180000Z
-```
-
-#### 2. Use explicit timezone
-
-You can use an explicit timezone by calling `$vEvent->setUseTimezone(true);`. The timezone of your
-`\DateTime` object will be used. In this case the non-standard field "X-WR-TIMEZONE" will be used.
-Be awre that this is a simple solution which is not supported by all calendar clients.
-The output will be as following:
-
-```
-DTSTART;TZID=Europe/Berlin:20121224T180000
-```
-
-#### 3. Use explicit timezone with definition
-
-You can use an explicit timezone and define it using `Timezone()` and `TimezoneRule()` (see example5.php).
-The timezone of your `\DateTime` object will be used. The output will be as following:
-
-```
-BEGIN:VTIMEZONE
-TZID:Europe/Berlin
-X-LIC-LOCATION:Europe/Berlin
-BEGIN:DAYLIGHT
-TZOFFSETFROM:+0100
-TZOFFSETTO:+0200
-DTSTART:19810329T030000
-RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=3;BYDAY=-1SU
-END:DAYLIGHT
-BEGIN:STANDARD
-TZOFFSETFROM:+0200
-TZOFFSETTO:+0100
-DTSTART:19961027T030000
-RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=10;BYDAY=-1SU
-END:STANDARD
-END:VTIMEZONE
-...
-DTSTART;TZID=Europe/Berlin:20121224T180000
-```
-
-#### 4. Use locale time
-
-You can use local time by calling `$vEvent->setUseUtc(false);`. The output will be:
-
-```
-DTSTART:20121224T180000
-```
-
-## Running the tests
-
-To setup and run tests:
-
-- go to the root directory of this project
-- download composer: `wget https://getcomposer.org/composer.phar`
-- install dev dependencies: `php composer.phar install --dev`
-- run `./bin/phpunit`
-
-## License
-
-This package is released under the __MIT license__.
-
-Copyright (c) 2012-2015 Markus Poerschke
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/eluceo/ical/UPGRADE.md b/vendor/eluceo/ical/UPGRADE.md
deleted file mode 100644
index 951209dd0..000000000
--- a/vendor/eluceo/ical/UPGRADE.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# v0.8.0 -> v0.9.0
-
-- The signature of the ```Event::setOrganizer``` method was changed:
-Now there is is only one parameter that must be an instance of ```Property\Organizer```.
-
-# v0.7.0 -> v0.8.0
-
-- The signature of the ```Event::setOrganizer``` method was changed: Now there are
-two parameters name and email instead of an already formatted string.
diff --git a/vendor/eluceo/ical/composer.json b/vendor/eluceo/ical/composer.json
index b2477c283..c17e057ee 100644
--- a/vendor/eluceo/ical/composer.json
+++ b/vendor/eluceo/ical/composer.json
@@ -1,6 +1,6 @@
{
"name": "eluceo/ical",
- "description": "The eluceo/iCal package offers a abstraction layer for creating iCalendars. You can easily create iCal files by using PHP object instead of typing your *.ics file by hand. The output will follow RFC 2445 as best as possible.",
+ "description": "The eluceo/iCal package offers a abstraction layer for creating iCalendars. You can easily create iCal files by using PHP object instead of typing your *.ics file by hand. The output will follow RFC 5545 as best as possible.",
"license": "MIT",
"homepage": "https://github.com/markuspoerschke/iCal",
"authors": [
@@ -8,11 +8,6 @@
"name": "Markus Poerschke",
"email": "markus@eluceo.de",
"role": "Developer"
- },
- {
- "name": "Maciej Łebkowski",
- "email": "m.lebkowski@gmail.com",
- "role": "Contributor"
}
],
"keywords": [
@@ -27,17 +22,25 @@
"source": "https://github.com/markuspoerschke/iCal"
},
"autoload": {
- "psr-0": {
- "Eluceo\\iCal": "src/"
+ "psr-4": {
+ "Eluceo\\iCal\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Eluceo\\iCal\\": "tests/"
}
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-mbstring" : "Massive performance enhancement of line folding"
},
"require-dev": {
- "phpunit/phpunit": "~4.3"
+ "phpunit/phpunit": "^7.0"
},
- "config": {
- "bin-dir": "bin"
+ "scripts": {
+ "test": "phpunit"
}
}
diff --git a/vendor/eluceo/ical/examples/example1.php b/vendor/eluceo/ical/examples/example1.php
deleted file mode 100644
index 4d1d32c4e..000000000
--- a/vendor/eluceo/ical/examples/example1.php
+++ /dev/null
@@ -1,30 +0,0 @@
-setDtStart(new \DateTime('2012-12-24'));
-$vEvent->setDtEnd(new \DateTime('2012-12-24'));
-$vEvent->setNoTime(true);
-$vEvent->setSummary('Christmas');
-
-// Adding Timezone (optional)
-$vEvent->setUseTimezone(true);
-
-// 3. Add event to calendar
-$vCalendar->addComponent($vEvent);
-
-// 4. Set headers
-header('Content-Type: text/calendar; charset=utf-8');
-header('Content-Disposition: attachment; filename="cal.ics"');
-
-// 5. Output
-echo $vCalendar->render();
diff --git a/vendor/eluceo/ical/examples/example2.php b/vendor/eluceo/ical/examples/example2.php
deleted file mode 100644
index bafcf033b..000000000
--- a/vendor/eluceo/ical/examples/example2.php
+++ /dev/null
@@ -1,31 +0,0 @@
-setDtStart(new \DateTime('2012-12-24'));
-$vEvent->setDtEnd(new \DateTime('2012-12-24'));
-$vEvent->setNoTime(true);
-$vEvent->setSummary('Summary with some german "umlauten" and a backslash \\: Kinder mögen Äpfel pflücken.');
-$vEvent->setCategories(['holidays']);
-
-// Adding Timezone (optional)
-$vEvent->setUseTimezone(true);
-
-// 3. Add event to calendar
-$vCalendar->addComponent($vEvent);
-
-// 4. Set headers
-header('Content-Type: text/calendar; charset=utf-8');
-header('Content-Disposition: attachment; filename="cal.ics"');
-
-// 5. Output
-echo $vCalendar->render();
diff --git a/vendor/eluceo/ical/examples/example3.php b/vendor/eluceo/ical/examples/example3.php
deleted file mode 100644
index 290ff2dcc..000000000
--- a/vendor/eluceo/ical/examples/example3.php
+++ /dev/null
@@ -1,36 +0,0 @@
-setDtStart(new \DateTime('2012-12-31'));
-$vEvent->setDtEnd(new \DateTime('2012-12-31'));
-$vEvent->setNoTime(true);
-$vEvent->setSummary('New Year’s Eve');
-
-// Set recurrence rule
-$recurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule();
-$recurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_YEARLY);
-$recurrenceRule->setInterval(1);
-$vEvent->setRecurrenceRule($recurrenceRule);
-
-// Adding Timezone (optional)
-$vEvent->setUseTimezone(true);
-
-// 3. Add event to calendar
-$vCalendar->addComponent($vEvent);
-
-// 4. Set headers
-header('Content-Type: text/calendar; charset=utf-8');
-header('Content-Disposition: attachment; filename="cal.ics"');
-
-// 5. Output
-echo $vCalendar->render();
diff --git a/vendor/eluceo/ical/examples/example4.php b/vendor/eluceo/ical/examples/example4.php
deleted file mode 100644
index 7b87144ce..000000000
--- a/vendor/eluceo/ical/examples/example4.php
+++ /dev/null
@@ -1,35 +0,0 @@
-setDtStart(new \DateTime('2012-11-11 13:00:00'));
-$vEvent->setDtEnd(new \DateTime('2012-11-11 14:30:00'));
-$vEvent->setSummary('Weekly lunch with Markus');
-
-// Set recurrence rule
-$recurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule();
-$recurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_WEEKLY);
-$recurrenceRule->setInterval(1);
-$vEvent->setRecurrenceRule($recurrenceRule);
-
-// Adding Timezone (optional)
-$vEvent->setUseTimezone(true);
-
-// 3. Add event to calendar
-$vCalendar->addComponent($vEvent);
-
-// 4. Set headers
-header('Content-Type: text/calendar; charset=utf-8');
-header('Content-Disposition: attachment; filename="cal.ics"');
-
-// 5. Output
-echo $vCalendar->render();
diff --git a/vendor/eluceo/ical/examples/example5.php b/vendor/eluceo/ical/examples/example5.php
deleted file mode 100644
index a7da6e27c..000000000
--- a/vendor/eluceo/ical/examples/example5.php
+++ /dev/null
@@ -1,66 +0,0 @@
-setTzName('CEST');
-$vTimezoneRuleDst->setDtStart(new \DateTime('1981-03-29 02:00:00', $dtz));
-$vTimezoneRuleDst->setTzOffsetFrom('+0100');
-$vTimezoneRuleDst->setTzOffsetTo('+0200');
-$dstRecurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule();
-$dstRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_YEARLY);
-$dstRecurrenceRule->setByMonth(3);
-$dstRecurrenceRule->setByDay('-1SU');
-$vTimezoneRuleDst->setRecurrenceRule($dstRecurrenceRule);
-
-// 3. Create timezone rule object for Standard Time
-$vTimezoneRuleStd = new \Eluceo\iCal\Component\TimezoneRule(\Eluceo\iCal\Component\TimezoneRule::TYPE_STANDARD);
-$vTimezoneRuleStd->setTzName('CET');
-$vTimezoneRuleStd->setDtStart(new \DateTime('1996-10-27 03:00:00', $dtz));
-$vTimezoneRuleStd->setTzOffsetFrom('+0200');
-$vTimezoneRuleStd->setTzOffsetTo('+0100');
-$stdRecurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule();
-$stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_YEARLY);
-$stdRecurrenceRule->setByMonth(10);
-$stdRecurrenceRule->setByDay('-1SU');
-$vTimezoneRuleStd->setRecurrenceRule($stdRecurrenceRule);
-
-// 4. Create timezone definition and add rules
-$vTimezone = new \Eluceo\iCal\Component\Timezone($tz);
-$vTimezone->addComponent($vTimezoneRuleDst);
-$vTimezone->addComponent($vTimezoneRuleStd);
-$vCalendar->setTimezone($vTimezone);
-
-// 5. Create an event
-$vEvent = new \Eluceo\iCal\Component\Event();
-$vEvent->setDtStart(new \DateTime('2012-12-24', $dtz));
-$vEvent->setDtEnd(new \DateTime('2012-12-24', $dtz));
-$vEvent->setSummary('Summary with some german "umlauten" and a backslash \\: Kinder mögen Äpfel pflücken.');
-
-// 6. Adding Timezone
-$vEvent->setUseTimezone(true);
-
-// 7. Add event to calendar
-$vCalendar->addComponent($vEvent);
-
-// 8. Set headers
-header('Content-Type: text/calendar; charset=utf-8');
-header('Content-Disposition: attachment; filename="cal.ics"');
-
-// 9. Output
-echo $vCalendar->render();
diff --git a/vendor/eluceo/ical/examples/example6.php b/vendor/eluceo/ical/examples/example6.php
deleted file mode 100644
index 104009932..000000000
--- a/vendor/eluceo/ical/examples/example6.php
+++ /dev/null
@@ -1,30 +0,0 @@
-setDtStart(new \DateTime('2012-12-24'));
-$vEvent->setDtEnd(new \DateTime('2012-12-24'));
-$vEvent->setNoTime(true);
-$vEvent->setSummary('Christmas');
-
-// add some location information for apple devices
-$vEvent->setLocation("Infinite Loop\nCupertino CA 95014", 'Infinite Loop', '37.332095,-122.030743');
-
-// 3. Add event to calendar
-$vCalendar->addComponent($vEvent);
-
-// 4. Set headers
-header('Content-Type: text/calendar; charset=utf-8');
-header('Content-Disposition: attachment; filename="cal.ics"');
-
-// 5. Output
-echo $vCalendar->render();
diff --git a/vendor/eluceo/ical/examples/example7.php b/vendor/eluceo/ical/examples/example7.php
deleted file mode 100644
index 1f8013e79..000000000
--- a/vendor/eluceo/ical/examples/example7.php
+++ /dev/null
@@ -1,33 +0,0 @@
-setDtStart(new \DateTime('2012-12-24'));
-$vEvent->setDtEnd(new \DateTime('2012-12-24'));
-$vEvent->setNoTime(true);
-$vEvent->setSummary('Christmas');
-$vEvent->setDescription('Happy Christmas!');
-$vEvent->setDescriptionHTML('Happy Christmas!');
-
-
-// add some location information for apple devices
-$vEvent->setLocation("Infinite Loop\nCupertino CA 95014", 'Infinite Loop', '37.332095,-122.030743');
-
-// 3. Add event to calendar
-$vCalendar->addComponent($vEvent);
-
-// 4. Set headers
-header('Content-Type: text/calendar; charset=utf-8');
-header('Content-Disposition: attachment; filename="cal.ics"');
-
-// 5. Output
-echo $vCalendar->render();
diff --git a/vendor/eluceo/ical/phpunit.xml.dist b/vendor/eluceo/ical/phpunit.xml.dist
deleted file mode 100644
index 13e18c0e4..000000000
--- a/vendor/eluceo/ical/phpunit.xml.dist
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
- ./tests/Eluceo/iCal/
-
-
-
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Component.php b/vendor/eluceo/ical/src/Component.php
similarity index 83%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Component.php
rename to vendor/eluceo/ical/src/Component.php
index 76c9b2d94..c6e94dd9e 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Component.php
+++ b/vendor/eluceo/ical/src/Component.php
@@ -23,7 +23,7 @@ abstract class Component
*
* @var Component[]
*/
- protected $components = array();
+ protected $components = [];
/**
* The order in which the components will be rendered during build.
@@ -32,7 +32,7 @@ abstract class Component
*
* @var array
*/
- private $componentsBuildOrder = array('VTIMEZONE', 'DAYLIGHT', 'STANDARD');
+ private $componentsBuildOrder = ['VTIMEZONE', 'DAYLIGHT', 'STANDARD'];
/**
* The type of the concrete Component.
@@ -60,7 +60,7 @@ abstract class Component
* @param Component $component The Component that will be added
* @param null $key The key of the Component
*/
- public function addComponent(Component $component, $key = null)
+ public function addComponent(self $component, $key = null)
{
if (null == $key) {
$this->components[] = $component;
@@ -69,6 +69,19 @@ abstract class Component
}
}
+ /**
+ * Set all Components.
+ *
+ * @param Component[] $components The array of Component that will be set
+ * @param null $key The key of the Component
+ */
+ public function setComponents(array $components)
+ {
+ $this->components = $components;
+
+ return $this;
+ }
+
/**
* Renders an array containing the lines of the iCal file.
*
@@ -76,7 +89,7 @@ abstract class Component
*/
public function build()
{
- $lines = array();
+ $lines = [];
$lines[] = sprintf('BEGIN:%s', $this->getType());
@@ -91,7 +104,7 @@ abstract class Component
$lines[] = sprintf('END:%s', $this->getType());
- $ret = array();
+ $ret = [];
foreach ($lines as $line) {
foreach (ComponentUtil::fold($line) as $l) {
@@ -129,13 +142,13 @@ abstract class Component
*/
private function buildComponents(array &$lines)
{
- $componentsByType = array();
+ $componentsByType = [];
/** @var $component Component */
foreach ($this->components as $component) {
$type = $component->getType();
if (!isset($componentsByType[$type])) {
- $componentsByType[$type] = array();
+ $componentsByType[$type] = [];
}
$componentsByType[$type][] = $component;
}
@@ -160,10 +173,9 @@ abstract class Component
}
/**
- * @param array $lines
* @param Component $component
*/
- private function addComponentLines(array &$lines, Component $component)
+ private function addComponentLines(array &$lines, self $component)
{
foreach ($component->build() as $l) {
$lines[] = $l;
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Component/Alarm.php b/vendor/eluceo/ical/src/Component/Alarm.php
similarity index 94%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Component/Alarm.php
rename to vendor/eluceo/ical/src/Component/Alarm.php
index 9e0f0c1b4..5bd02bf09 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Component/Alarm.php
+++ b/vendor/eluceo/ical/src/Component/Alarm.php
@@ -13,7 +13,6 @@ namespace Eluceo\iCal\Component;
use Eluceo\iCal\Component;
use Eluceo\iCal\PropertyBag;
-use Eluceo\iCal\Property;
/**
* Implementation of the VALARM component.
@@ -25,11 +24,11 @@ class Alarm extends Component
*
* According to RFC 5545: 3.8.6.1. Action
*
- * @link http://tools.ietf.org/html/rfc5545#section-3.8.6.1
+ * @see http://tools.ietf.org/html/rfc5545#section-3.8.6.1
*/
- const ACTION_AUDIO = 'AUDIO';
+ const ACTION_AUDIO = 'AUDIO';
const ACTION_DISPLAY = 'DISPLAY';
- const ACTION_EMAIL = 'EMAIL';
+ const ACTION_EMAIL = 'EMAIL';
protected $action;
protected $repeat;
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Component/Calendar.php b/vendor/eluceo/ical/src/Component/Calendar.php
similarity index 88%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Component/Calendar.php
rename to vendor/eluceo/ical/src/Component/Calendar.php
index db3dd98dc..2193d140e 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Component/Calendar.php
+++ b/vendor/eluceo/ical/src/Component/Calendar.php
@@ -19,20 +19,20 @@ class Calendar extends Component
/**
* Methods for calendar components.
*
- * According to RFP 5545: 3.7.2. Method
+ * According to RFC 5545: 3.7.2. Method
*
- * @link http://tools.ietf.org/html/rfc5545#section-3.7.2
+ * @see http://tools.ietf.org/html/rfc5545#section-3.7.2
*
* And then according to RFC 2446: 3 APPLICATION PROTOCOL ELEMENTS
- * @link https://www.ietf.org/rfc/rfc2446.txt
+ * @see https://tools.ietf.org/html/rfc2446#section-3.2
*/
- const METHOD_PUBLISH = 'PUBLISH';
- const METHOD_REQUEST = 'REQUEST';
- const METHOD_REPLY = 'REPLY';
- const METHOD_ADD = 'ADD';
- const METHOD_CANCEL = 'CANCEL';
- const METHOD_REFRESH = 'REFRESH';
- const METHOD_COUNTER = 'COUNTER';
+ const METHOD_PUBLISH = 'PUBLISH';
+ const METHOD_REQUEST = 'REQUEST';
+ const METHOD_REPLY = 'REPLY';
+ const METHOD_ADD = 'ADD';
+ const METHOD_CANCEL = 'CANCEL';
+ const METHOD_REFRESH = 'REFRESH';
+ const METHOD_COUNTER = 'COUNTER';
const METHOD_DECLINECOUNTER = 'DECLINECOUNTER';
/**
@@ -40,26 +40,26 @@ class Calendar extends Component
*
* According to RFC 5545: 3.7.1. Calendar Scale
*
- * @link http://tools.ietf.org/html/rfc5545#section-3.7
+ * @see http://tools.ietf.org/html/rfc5545#section-3.7
*/
const CALSCALE_GREGORIAN = 'GREGORIAN';
/**
* The Product Identifier.
*
- * According to RFC 2445: 4.7.3 Product Identifier
+ * According to RFC 5545: 3.7.3 Product Identifier
*
* This property specifies the identifier for the product that created the Calendar object.
*
- * @link http://www.ietf.org/rfc/rfc2445.txt
+ * @see https://tools.ietf.org/html/rfc5545#section-3.7.3
*
* @var string
*/
- protected $prodId = null;
- protected $method = null;
- protected $name = null;
+ protected $prodId = null;
+ protected $method = null;
+ protected $name = null;
protected $description = null;
- protected $timezone = null;
+ protected $timezone = null;
/**
* This property defines the calendar scale used for the
@@ -96,11 +96,14 @@ class Calendar extends Component
* Specifies a suggested iCalendar file download frequency for clients and
* servers with sync capabilities.
*
+ * For example you can set the value to 'P1W' if the calendar should be
+ * synced once a week. Use 'P3H' to sync the file every 3 hours.
+ *
* @var string
*
* @see http://msdn.microsoft.com/en-us/library/ee178699(v=exchg.80).aspx
*/
- protected $publishedTTL = 'P1W';
+ protected $publishedTTL = null;
/**
* Specifies a color for the calendar in calendar for Apple/Outlook.
@@ -300,8 +303,6 @@ class Calendar extends Component
*
* @see Eluceo\iCal::addComponent
* @deprecated Please, use public method addComponent() from abstract Component class
- *
- * @param Event $event
*/
public function addEvent(Event $event)
{
@@ -309,7 +310,7 @@ class Calendar extends Component
}
/**
- * @return null|string
+ * @return string|null
*/
public function getProdId()
{
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Component/Event.php b/vendor/eluceo/ical/src/Component/Event.php
similarity index 70%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Component/Event.php
rename to vendor/eluceo/ical/src/Component/Event.php
index e93d506c6..2e290694b 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Component/Event.php
+++ b/vendor/eluceo/ical/src/Component/Event.php
@@ -14,26 +14,33 @@ namespace Eluceo\iCal\Component;
use Eluceo\iCal\Component;
use Eluceo\iCal\Property;
use Eluceo\iCal\Property\DateTimeProperty;
-use Eluceo\iCal\Property\Event\Attendees;
-use Eluceo\iCal\Property\Event\Organizer;
-use Eluceo\iCal\Property\Event\RecurrenceRule;
-use Eluceo\iCal\Property\Event\Description;
-use Eluceo\iCal\PropertyBag;
-use Eluceo\iCal\Property\Event\RecurrenceId;
use Eluceo\iCal\Property\DateTimesProperty;
+use Eluceo\iCal\Property\Event\Attachment;
+use Eluceo\iCal\Property\Event\Attendees;
+use Eluceo\iCal\Property\Event\Geo;
+use Eluceo\iCal\Property\Event\Organizer;
+use Eluceo\iCal\Property\Event\RecurrenceId;
+use Eluceo\iCal\Property\Event\RecurrenceRule;
+use Eluceo\iCal\Property\RawStringValue;
+use Eluceo\iCal\PropertyBag;
/**
* Implementation of the EVENT component.
*/
class Event extends Component
{
- const TIME_TRANSPARENCY_OPAQUE = 'OPAQUE';
+ const TIME_TRANSPARENCY_OPAQUE = 'OPAQUE';
const TIME_TRANSPARENCY_TRANSPARENT = 'TRANSPARENT';
const STATUS_TENTATIVE = 'TENTATIVE';
const STATUS_CONFIRMED = 'CONFIRMED';
const STATUS_CANCELLED = 'CANCELLED';
+ const MS_BUSYSTATUS_FREE = 'FREE';
+ const MS_BUSYSTATUS_TENTATIVE = 'TENTATIVE';
+ const MS_BUSYSTATUS_BUSY = 'BUSY';
+ const MS_BUSYSTATUS_OOF = 'OOF';
+
/**
* @var string
*/
@@ -71,6 +78,11 @@ class Event extends Component
*/
protected $noTime = false;
+ /**
+ * @var string
+ */
+ protected $msBusyStatus = null;
+
/**
* @var string
*/
@@ -87,7 +99,7 @@ class Event extends Component
protected $locationTitle;
/**
- * @var string
+ * @var Geo
*/
protected $locationGeo;
@@ -102,7 +114,7 @@ class Event extends Component
protected $organizer;
/**
- * @see http://www.ietf.org/rfc/rfc2445.txt 4.8.2.7 Time Transparency
+ * @see https://tools.ietf.org/html/rfc5545#section-3.8.2.7
*
* @var string
*/
@@ -115,6 +127,13 @@ class Event extends Component
*/
protected $useTimezone = false;
+ /**
+ * If set will be used as the timezone identifier.
+ *
+ * @var string
+ */
+ protected $timezoneString = '';
+
/**
* @var int
*/
@@ -145,6 +164,11 @@ class Event extends Component
*/
protected $recurrenceRule;
+ /**
+ * @var array
+ */
+ protected $recurrenceRules = [];
+
/**
* This property specifies the date and time that the calendar
* information was created.
@@ -198,22 +222,28 @@ class Event extends Component
/**
* Dates to be excluded from a series of events.
*
- * @var \DateTime[]
+ * @var \DateTimeInterface[]
*/
- protected $exDates = array();
+ protected $exDates = [];
/**
* @var RecurrenceId
*/
protected $recurrenceId;
- public function __construct($uniqueId = null)
+ /**
+ * @var Attachment[]
+ */
+ protected $attachments = [];
+
+ public function __construct(string $uniqueId = null)
{
if (null == $uniqueId) {
$uniqueId = uniqid();
}
$this->uniqueId = $uniqueId;
+ $this->attendees = new Attendees();
}
/**
@@ -234,7 +264,7 @@ class Event extends Component
// mandatory information
$propertyBag->set('UID', $this->uniqueId);
- $propertyBag->add(new DateTimeProperty('DTSTART', $this->dtStart, $this->noTime, $this->useTimezone, $this->useUtc));
+ $propertyBag->add(new DateTimeProperty('DTSTART', $this->dtStart, $this->noTime, $this->useTimezone, $this->useUtc, $this->timezoneString));
$propertyBag->set('SEQUENCE', $this->sequence);
$propertyBag->set('TRANSP', $this->transparency);
@@ -243,9 +273,13 @@ class Event extends Component
}
// An event can have a 'dtend' or 'duration', but not both.
- if (null != $this->dtEnd) {
- $propertyBag->add(new DateTimeProperty('DTEND', $this->dtEnd, $this->noTime, $this->useTimezone, $this->useUtc));
- } elseif (null != $this->duration) {
+ if ($this->dtEnd !== null) {
+ $dtEnd = clone $this->dtEnd;
+ if ($this->noTime === true) {
+ $dtEnd = $dtEnd->add(new \DateInterval('P1D'));
+ }
+ $propertyBag->add(new DateTimeProperty('DTEND', $dtEnd, $this->noTime, $this->useTimezone, $this->useUtc, $this->timezoneString));
+ } elseif ($this->duration !== null) {
$propertyBag->set('DURATION', $this->duration->format('P%dDT%hH%iM%sS'));
}
@@ -261,19 +295,22 @@ class Event extends Component
$propertyBag->add(
new Property(
'X-APPLE-STRUCTURED-LOCATION',
- 'geo:' . $this->locationGeo,
- array(
- 'VALUE' => 'URI',
- 'X-ADDRESS' => $this->location,
+ new RawStringValue('geo:' . $this->locationGeo->getGeoLocationAsString(',')),
+ [
+ 'VALUE' => 'URI',
+ 'X-ADDRESS' => $this->location,
'X-APPLE-RADIUS' => 49,
- 'X-TITLE' => $this->locationTitle,
- )
+ 'X-TITLE' => $this->locationTitle,
+ ]
)
);
- $propertyBag->set('GEO', str_replace(',', ';', $this->locationGeo));
}
}
+ if (null != $this->locationGeo) {
+ $propertyBag->add($this->locationGeo);
+ }
+
if (null != $this->summary) {
$propertyBag->set('SUMMARY', $this->summary);
}
@@ -285,7 +322,7 @@ class Event extends Component
$propertyBag->set('CLASS', $this->isPrivate ? 'PRIVATE' : 'PUBLIC');
if (null != $this->description) {
- $propertyBag->set('DESCRIPTION', new Description($this->description));
+ $propertyBag->set('DESCRIPTION', $this->description);
}
if (null != $this->descriptionHTML) {
@@ -293,9 +330,9 @@ class Event extends Component
new Property(
'X-ALT-DESC',
$this->descriptionHTML,
- array(
+ [
'FMTTYPE' => 'text/html',
- )
+ ]
)
);
}
@@ -304,13 +341,17 @@ class Event extends Component
$propertyBag->set('RRULE', $this->recurrenceRule);
}
+ foreach ($this->recurrenceRules as $recurrenceRule) {
+ $propertyBag->set('RRULE', $recurrenceRule);
+ }
+
if (null != $this->recurrenceId) {
- $this->recurrenceId->applyTimeSettings($this->noTime, $this->useTimezone, $this->useUtc);
+ $this->recurrenceId->applyTimeSettings($this->noTime, $this->useTimezone, $this->useUtc, $this->timezoneString);
$propertyBag->add($this->recurrenceId);
}
if (!empty($this->exDates)) {
- $propertyBag->add(new DateTimesProperty('EXDATE', $this->exDates, $this->noTime, $this->useTimezone, $this->useUtc));
+ $propertyBag->add(new DateTimesProperty('EXDATE', $this->exDates, $this->noTime, $this->useTimezone, $this->useUtc, $this->timezoneString));
}
if ($this->cancelled) {
@@ -325,12 +366,17 @@ class Event extends Component
$propertyBag->set('X-MICROSOFT-CDO-ALLDAYEVENT', 'TRUE');
}
+ if (null != $this->msBusyStatus) {
+ $propertyBag->set('X-MICROSOFT-CDO-BUSYSTATUS', $this->msBusyStatus);
+ $propertyBag->set('X-MICROSOFT-CDO-INTENDEDSTATUS', $this->msBusyStatus);
+ }
+
if (null != $this->categories) {
$propertyBag->set('CATEGORIES', $this->categories);
}
$propertyBag->add(
- new DateTimeProperty('DTSTAMP', $this->dtStamp ?: new \DateTime(), false, false, true)
+ new DateTimeProperty('DTSTAMP', $this->dtStamp ?: new \DateTimeImmutable(), false, false, true)
);
if ($this->created) {
@@ -341,6 +387,10 @@ class Event extends Component
$propertyBag->add(new DateTimeProperty('LAST-MODIFIED', $this->modified, false, false, true));
}
+ foreach ($this->attachments as $attachment) {
+ $propertyBag->add($attachment);
+ }
+
return $propertyBag;
}
@@ -368,6 +418,11 @@ class Event extends Component
return $this;
}
+ public function getDtStart()
+ {
+ return $this->dtStart;
+ }
+
/**
* @param $dtStamp
*
@@ -393,17 +448,34 @@ class Event extends Component
}
/**
- * @param $location
- * @param string $title
- * @param null $geo
+ * @param string $location
+ * @param string $title
+ * @param Geo|string $geo
*
* @return $this
*/
public function setLocation($location, $title = '', $geo = null)
{
- $this->location = $location;
+ if (is_scalar($geo)) {
+ $geo = Geo::fromString($geo);
+ } elseif (!is_null($geo) && !$geo instanceof Geo) {
+ $className = get_class($geo);
+ throw new \InvalidArgumentException("The parameter 'geo' must be a string or an instance of " . Geo::class . " but an instance of {$className} was given.");
+ }
+
+ $this->location = $location;
$this->locationTitle = $title;
- $this->locationGeo = $geo;
+ $this->locationGeo = $geo;
+
+ return $this;
+ }
+
+ /**
+ * @return $this
+ */
+ public function setGeoLocation(Geo $geoProperty)
+ {
+ $this->locationGeo = $geoProperty;
return $this;
}
@@ -420,6 +492,37 @@ class Event extends Component
return $this;
}
+ /**
+ * @param $msBusyStatus
+ *
+ * @return $this
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function setMsBusyStatus($msBusyStatus)
+ {
+ $msBusyStatus = strtoupper($msBusyStatus);
+ if ($msBusyStatus == self::MS_BUSYSTATUS_FREE
+ || $msBusyStatus == self::MS_BUSYSTATUS_TENTATIVE
+ || $msBusyStatus == self::MS_BUSYSTATUS_BUSY
+ || $msBusyStatus == self::MS_BUSYSTATUS_OOF
+ ) {
+ $this->msBusyStatus = $msBusyStatus;
+ } else {
+ throw new \InvalidArgumentException('Invalid value for status');
+ }
+
+ return $this;
+ }
+
+ /**
+ * @return string|null
+ */
+ public function getMsBusyStatus()
+ {
+ return $this->msBusyStatus;
+ }
+
/**
* @param int $sequence
*
@@ -441,8 +544,6 @@ class Event extends Component
}
/**
- * @param Organizer $organizer
- *
* @return $this
*/
public function setOrganizer(Organizer $organizer)
@@ -517,10 +618,28 @@ class Event extends Component
}
/**
- * @param Attendees $attendees
+ * @param $timezoneString
*
* @return $this
*/
+ public function setTimezoneString($timezoneString)
+ {
+ $this->timezoneString = $timezoneString;
+
+ return $this;
+ }
+
+ /**
+ * @return bool
+ */
+ public function getTimezoneString()
+ {
+ return $this->timezoneString;
+ }
+
+ /**
+ * @return $this
+ */
public function setAttendees(Attendees $attendees)
{
$this->attendees = $attendees;
@@ -534,20 +653,14 @@ class Event extends Component
*
* @return $this
*/
- public function addAttendee($attendee, $params = array())
+ public function addAttendee($attendee, $params = [])
{
- if (!isset($this->attendees)) {
- $this->attendees = new Attendees();
- }
$this->attendees->add($attendee, $params);
return $this;
}
- /**
- * @return Attendees
- */
- public function getAttendees()
+ public function getAttendees(): Attendees
{
return $this->attendees;
}
@@ -660,25 +773,49 @@ class Event extends Component
}
/**
- * @param RecurrenceRule $recurrenceRule
+ * @deprecated Deprecated since version 0.11.0, to be removed in 1.0. Use addRecurrenceRule instead.
*
* @return $this
*/
public function setRecurrenceRule(RecurrenceRule $recurrenceRule)
{
+ @trigger_error('setRecurrenceRule() is deprecated since version 0.11.0 and will be removed in 1.0. Use addRecurrenceRule instead.', E_USER_DEPRECATED);
+
$this->recurrenceRule = $recurrenceRule;
return $this;
}
/**
+ * @deprecated Deprecated since version 0.11.0, to be removed in 1.0. Use getRecurrenceRules instead.
+ *
* @return RecurrenceRule
*/
public function getRecurrenceRule()
{
+ @trigger_error('getRecurrenceRule() is deprecated since version 0.11.0 and will be removed in 1.0. Use getRecurrenceRules instead.', E_USER_DEPRECATED);
+
return $this->recurrenceRule;
}
+ /**
+ * @return $this
+ */
+ public function addRecurrenceRule(RecurrenceRule $recurrenceRule)
+ {
+ $this->recurrenceRules[] = $recurrenceRule;
+
+ return $this;
+ }
+
+ /**
+ * @return array
+ */
+ public function getRecurrenceRules()
+ {
+ return $this->recurrenceRules;
+ }
+
/**
* @param $dtStamp
*
@@ -730,11 +867,9 @@ class Event extends Component
}
/**
- * @param \DateTime $dateTime
- *
* @return \Eluceo\iCal\Component\Event
*/
- public function addExDate(\DateTime $dateTime)
+ public function addExDate(\DateTimeInterface $dateTime)
{
$this->exDates[] = $dateTime;
@@ -742,7 +877,7 @@ class Event extends Component
}
/**
- * @return \DateTime[]
+ * @return \DateTimeInterface[]
*/
public function getExDates()
{
@@ -750,7 +885,7 @@ class Event extends Component
}
/**
- * @param \DateTime[]
+ * @param \DateTimeInterface[]
*
* @return \Eluceo\iCal\Component\Event
*/
@@ -770,8 +905,6 @@ class Event extends Component
}
/**
- * @param RecurrenceId $recurrenceId
- *
* @return \Eluceo\iCal\Component\Event
*/
public function setRecurrenceId(RecurrenceId $recurrenceId)
@@ -780,4 +913,29 @@ class Event extends Component
return $this;
}
+
+ /**
+ * @param array $attachment
+ *
+ * @return $this
+ */
+ public function addAttachment(Attachment $attachment)
+ {
+ $this->attachments[] = $attachment;
+
+ return $this;
+ }
+
+ /**
+ * @return array
+ */
+ public function getAttachments()
+ {
+ return $this->attachments;
+ }
+
+ public function addUrlAttachment(string $url)
+ {
+ $this->addAttachment(new Attachment($url));
+ }
}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Component/Timezone.php b/vendor/eluceo/ical/src/Component/Timezone.php
similarity index 100%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Component/Timezone.php
rename to vendor/eluceo/ical/src/Component/Timezone.php
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Component/TimezoneRule.php b/vendor/eluceo/ical/src/Component/TimezoneRule.php
similarity index 95%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Component/TimezoneRule.php
rename to vendor/eluceo/ical/src/Component/TimezoneRule.php
index 97da49119..88ead9c3e 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Component/TimezoneRule.php
+++ b/vendor/eluceo/ical/src/Component/TimezoneRule.php
@@ -12,8 +12,8 @@
namespace Eluceo\iCal\Component;
use Eluceo\iCal\Component;
-use Eluceo\iCal\PropertyBag;
use Eluceo\iCal\Property\Event\RecurrenceRule;
+use Eluceo\iCal\PropertyBag;
/**
* Implementation of Standard Time and Daylight Saving Time observances (or rules)
@@ -45,7 +45,7 @@ class TimezoneRule extends Component
protected $tzName;
/**
- * @var \DateTime
+ * @var \DateTimeInterface
*/
protected $dtStart;
@@ -138,11 +138,9 @@ class TimezoneRule extends Component
}
/**
- * @param \DateTime $dtStart
- *
* @return $this
*/
- public function setDtStart(\DateTime $dtStart)
+ public function setDtStart(\DateTimeInterface $dtStart)
{
$this->dtStart = $dtStart;
@@ -150,8 +148,6 @@ class TimezoneRule extends Component
}
/**
- * @param RecurrenceRule $recurrenceRule
- *
* @return $this
*/
public function setRecurrenceRule(RecurrenceRule $recurrenceRule)
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/Description.php b/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/Description.php
deleted file mode 100644
index b0dbb3c1e..000000000
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/Description.php
+++ /dev/null
@@ -1,66 +0,0 @@
-
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Eluceo\iCal\Property\Event;
-
-use Eluceo\iCal\Property\ValueInterface;
-use Eluceo\iCal\Util\PropertyValueUtil;
-
-/**
- * Class Description
- * Alows new line charectars to be in the description.
- */
-class Description implements ValueInterface
-{
- /**
- * The value.
- *
- * @var string
- */
- protected $value;
-
- public function __construct($value)
- {
- $this->value = $value;
- }
-
- /**
- * Return the value of the Property as an escaped string.
- *
- * Escape values as per RFC 2445. See http://www.kanzaki.com/docs/ical/text.html
- *
- * @return string
- */
- public function getEscapedValue()
- {
- return PropertyValueUtil::escapeValue((string) $this->value);
- }
-
- /**
- * @param string $value
- *
- * @return $this
- */
- public function setValue($value)
- {
- $this->value = $value;
-
- return $this;
- }
-
- /**
- * @return string
- */
- public function getValue()
- {
- return $this->value;
- }
-}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/StringValue.php b/vendor/eluceo/ical/src/Eluceo/iCal/Property/StringValue.php
deleted file mode 100644
index 4995723b5..000000000
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/StringValue.php
+++ /dev/null
@@ -1,61 +0,0 @@
-
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Eluceo\iCal\Property;
-
-use Eluceo\iCal\Util\PropertyValueUtil;
-
-class StringValue implements ValueInterface
-{
- /**
- * The value.
- *
- * @var string
- */
- protected $value;
-
- public function __construct($value)
- {
- $this->value = $value;
- }
-
- /**
- * Return the value of the Property as an escaped string.
- *
- * Escape values as per RFC 2445. See http://www.kanzaki.com/docs/ical/text.html
- *
- * @return string
- */
- public function getEscapedValue()
- {
- return PropertyValueUtil::escapeValue((string) $this->value);
- }
-
- /**
- * @param string $value
- *
- * @return $this
- */
- public function setValue($value)
- {
- $this->value = $value;
-
- return $this;
- }
-
- /**
- * @return string
- */
- public function getValue()
- {
- return $this->value;
- }
-}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Util/ComponentUtil.php b/vendor/eluceo/ical/src/Eluceo/iCal/Util/ComponentUtil.php
deleted file mode 100644
index ca6a2be0e..000000000
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Util/ComponentUtil.php
+++ /dev/null
@@ -1,48 +0,0 @@
-
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Eluceo\iCal\Util;
-
-class ComponentUtil
-{
- /**
- * Folds a single line.
- *
- * According to RFC 2445, all lines longer than 75 characters will be folded
- *
- * @link http://www.ietf.org/rfc/rfc2445.txt
- *
- * @param $string
- *
- * @return array
- */
- public static function fold($string)
- {
- $lines = array();
- $array = preg_split('/(? 75) {
- $line = ' ' . $char;
- ++$lineNo;
- } else {
- $line .= $char;
- }
- $lines[$lineNo] = $line;
- }
-
- return $lines;
- }
-}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/ParameterBag.php b/vendor/eluceo/ical/src/ParameterBag.php
similarity index 85%
rename from vendor/eluceo/ical/src/Eluceo/iCal/ParameterBag.php
rename to vendor/eluceo/ical/src/ParameterBag.php
index 9b0c24a12..ac40e1a4b 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/ParameterBag.php
+++ b/vendor/eluceo/ical/src/ParameterBag.php
@@ -20,7 +20,7 @@ class ParameterBag
*/
protected $params;
- public function __construct($params = array())
+ public function __construct($params = [])
{
$this->params = $params;
}
@@ -36,33 +36,32 @@ class ParameterBag
/**
* @param $name
+ *
+ * @return array|mixed
*/
public function getParam($name)
{
- if (array_key_exists($name, $this->params)) {
+ if (isset($this->params[$name])) {
return $this->params[$name];
}
+
+ return null;
}
/**
* Checks if there are any params.
- *
- * @return bool
*/
- public function hasParams()
+ public function hasParams(): bool
{
return count($this->params) > 0;
}
- /**
- * @return string
- */
- public function toString()
+ public function toString(): string
{
$line = '';
foreach ($this->params as $param => $paramValues) {
if (!is_array($paramValues)) {
- $paramValues = array($paramValues);
+ $paramValues = [$paramValues];
}
foreach ($paramValues as $k => $v) {
$paramValues[$k] = $this->escapeParamValue($v);
@@ -85,7 +84,7 @@ class ParameterBag
*
* @return string
*/
- public function escapeParamValue($value)
+ private function escapeParamValue($value)
{
$count = 0;
$value = str_replace('\\', '\\\\', $value);
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property.php b/vendor/eluceo/ical/src/Property.php
similarity index 91%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Property.php
rename to vendor/eluceo/ical/src/Property.php
index 1bf2c3f09..c8494230d 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property.php
+++ b/vendor/eluceo/ical/src/Property.php
@@ -16,9 +16,11 @@ use Eluceo\iCal\Property\StringValue;
use Eluceo\iCal\Property\ValueInterface;
/**
- * The Property Class represents a property as defined in RFC 2445.
+ * The Property Class represents a property as defined in RFC 5545.
*
- * The content of a line (unfolded) will be rendered in this class
+ * The content of a line (unfolded) will be rendered in this class.
+ *
+ * @see https://tools.ietf.org/html/rfc5545#section-3.5
*/
class Property
{
@@ -46,7 +48,7 @@ class Property
* @param $value
* @param array $params
*/
- public function __construct($name, $value, $params = array())
+ public function __construct($name, $value, $params = [])
{
$this->name = $name;
$this->setValue($value);
@@ -82,7 +84,7 @@ class Property
*/
public function toLines()
{
- return array($this->toLine());
+ return [$this->toLine()];
}
/**
@@ -138,10 +140,7 @@ class Property
return $this->value;
}
- /**
- * @return string
- */
- public function getName()
+ public function getName(): string
{
return $this->name;
}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/ArrayValue.php b/vendor/eluceo/ical/src/Property/ArrayValue.php
similarity index 75%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Property/ArrayValue.php
rename to vendor/eluceo/ical/src/Property/ArrayValue.php
index 314787a0d..cb3f5a815 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/ArrayValue.php
+++ b/vendor/eluceo/ical/src/Property/ArrayValue.php
@@ -11,8 +11,6 @@
namespace Eluceo\iCal\Property;
-use Eluceo\iCal\Util\PropertyValueUtil;
-
class ArrayValue implements ValueInterface
{
/**
@@ -34,10 +32,10 @@ class ArrayValue implements ValueInterface
return $this;
}
- public function getEscapedValue()
+ public function getEscapedValue(): string
{
- return implode(',', array_map(function ($value) {
- return PropertyValueUtil::escapeValue((string) $value);
+ return implode(',', array_map(function (string $value): string {
+ return (new StringValue($value))->getEscapedValue();
}, $this->values));
}
}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/DateTimeProperty.php b/vendor/eluceo/ical/src/Property/DateTimeProperty.php
similarity index 58%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Property/DateTimeProperty.php
rename to vendor/eluceo/ical/src/Property/DateTimeProperty.php
index d0fd495e7..01431c790 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/DateTimeProperty.php
+++ b/vendor/eluceo/ical/src/Property/DateTimeProperty.php
@@ -17,21 +17,23 @@ use Eluceo\iCal\Util\DateUtil;
class DateTimeProperty extends Property
{
/**
- * @param string $name
- * @param \DateTime $dateTime
- * @param bool $noTime
- * @param bool $useTimezone
- * @param bool $useUtc
+ * @param string $name
+ * @param \DateTimeInterface $dateTime
+ * @param bool $noTime
+ * @param bool $useTimezone
+ * @param bool $useUtc
+ * @param string $timezoneString
*/
public function __construct(
$name,
- \DateTime $dateTime = null,
+ \DateTimeInterface $dateTime = null,
$noTime = false,
$useTimezone = false,
- $useUtc = false
+ $useUtc = false,
+ $timezoneString = ''
) {
$dateString = DateUtil::getDateString($dateTime, $noTime, $useTimezone, $useUtc);
- $params = DateUtil::getDefaultParams($dateTime, $noTime, $useTimezone);
+ $params = DateUtil::getDefaultParams($dateTime, $noTime, $useTimezone, $timezoneString);
parent::__construct($name, $dateString, $params);
}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/DateTimesProperty.php b/vendor/eluceo/ical/src/Property/DateTimesProperty.php
similarity index 59%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Property/DateTimesProperty.php
rename to vendor/eluceo/ical/src/Property/DateTimesProperty.php
index 6242f2858..9a81f3dc2 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/DateTimesProperty.php
+++ b/vendor/eluceo/ical/src/Property/DateTimesProperty.php
@@ -17,24 +17,29 @@ use Eluceo\iCal\Util\DateUtil;
class DateTimesProperty extends Property
{
/**
- * @param string $name
- * @param \DateTime[] $dateTimes
- * @param bool $noTime
- * @param bool $useTimezone
- * @param bool $useUtc
+ * @param string $name
+ * @param \DateTimeInterface[] $dateTimes
+ * @param bool $noTime
+ * @param bool $useTimezone
+ * @param bool $useUtc
+ * @param string $timezoneString
*/
public function __construct(
$name,
- $dateTimes = array(),
+ $dateTimes = [],
$noTime = false,
$useTimezone = false,
- $useUtc = false
+ $useUtc = false,
+ $timezoneString = ''
) {
- $dates = array();
+ $dates = [];
+ $dateTime = new \DateTimeImmutable();
foreach ($dateTimes as $dateTime) {
$dates[] = DateUtil::getDateString($dateTime, $noTime, $useTimezone, $useUtc);
}
- $params = DateUtil::getDefaultParams($dateTime, $noTime, $useTimezone);
+
+ //@todo stop this triggering an E_NOTICE when $dateTimes is empty
+ $params = DateUtil::getDefaultParams($dateTime, $noTime, $useTimezone, $timezoneString);
parent::__construct($name, $dates, $params);
}
diff --git a/vendor/eluceo/ical/src/Property/Event/Attachment.php b/vendor/eluceo/ical/src/Property/Event/Attachment.php
new file mode 100644
index 000000000..736c99b2d
--- /dev/null
+++ b/vendor/eluceo/ical/src/Property/Event/Attachment.php
@@ -0,0 +1,39 @@
+
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace Eluceo\iCal\Property\Event;
+
+use Eluceo\iCal\Property;
+
+/**
+ * Class Attachment.
+ */
+class Attachment extends Property
+{
+ /**
+ * @param string $value
+ * @param array $params
+ */
+ public function __construct($value, $params = [])
+ {
+ parent::__construct('ATTACH', $value, $params);
+ }
+
+ /**
+ * @param $url
+ *
+ * @throws \Exception
+ */
+ public function setUrl($url)
+ {
+ $this->setValue($url);
+ }
+}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/Attendees.php b/vendor/eluceo/ical/src/Property/Event/Attendees.php
similarity index 82%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/Attendees.php
rename to vendor/eluceo/ical/src/Property/Event/Attendees.php
index dbb36e7df..a014a9595 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/Attendees.php
+++ b/vendor/eluceo/ical/src/Property/Event/Attendees.php
@@ -15,14 +15,15 @@ use Eluceo\iCal\Property;
class Attendees extends Property
{
- /** @var Property[] */
- protected $attendees = array();
-
- const PROPERTY_NAME = 'ATTENDEES';
+ /**
+ * @var Property[]
+ */
+ protected $attendees = [];
public function __construct()
{
- // Overwrites constructor functionality of Property
+ $this->name = 'ATTENDEES';
+ // prevent super constructor to be called
}
/**
@@ -31,7 +32,7 @@ class Attendees extends Property
*
* @return $this
*/
- public function add($value, $params = array())
+ public function add($value, $params = [])
{
$this->attendees[] = new Property('ATTENDEE', $value, $params);
@@ -63,7 +64,7 @@ class Attendees extends Property
*/
public function toLines()
{
- $lines = array();
+ $lines = [];
foreach ($this->attendees as $attendee) {
$lines[] = $attendee->toLine();
}
@@ -91,12 +92,4 @@ class Attendees extends Property
{
throw new \BadMethodCallException('Cannot call getParam on Attendees Property');
}
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return self::PROPERTY_NAME;
- }
}
diff --git a/vendor/eluceo/ical/src/Property/Event/Geo.php b/vendor/eluceo/ical/src/Property/Event/Geo.php
new file mode 100644
index 000000000..81b7a4b75
--- /dev/null
+++ b/vendor/eluceo/ical/src/Property/Event/Geo.php
@@ -0,0 +1,82 @@
+
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace Eluceo\iCal\Property\Event;
+
+use Eluceo\iCal\Property;
+
+/**
+ * GEO property.
+ *
+ * @see https://tools.ietf.org/html/rfc5545#section-3.8.1.6
+ */
+class Geo extends Property
+{
+ /**
+ * @var float
+ */
+ private $latitude;
+
+ /**
+ * @var float
+ */
+ private $longitude;
+
+ public function __construct(float $latitude, float $longitude)
+ {
+ $this->latitude = $latitude;
+ $this->longitude = $longitude;
+
+ if ($this->latitude < -90 || $this->latitude > 90) {
+ throw new \InvalidArgumentException("The geographical latitude must be a value between -90 and 90 degrees. '{$this->latitude}' was given.");
+ }
+
+ if ($this->longitude < -180 || $this->longitude > 180) {
+ throw new \InvalidArgumentException("The geographical longitude must be a value between -180 and 180 degrees. '{$this->longitude}' was given.");
+ }
+
+ parent::__construct('GEO', new Property\RawStringValue($this->getGeoLocationAsString()));
+ }
+
+ /**
+ * @deprecated This method is used to allow backwards compatibility for Event::setLocation
+ *
+ * @return Geo
+ */
+ public static function fromString(string $geoLocationString): self
+ {
+ $geoLocationString = str_replace(',', ';', $geoLocationString);
+ $geoLocationString = str_replace('GEO:', '', $geoLocationString);
+ $parts = explode(';', $geoLocationString);
+
+ return new static((float) $parts[0], (float) $parts[1]);
+ }
+
+ /**
+ * Returns the coordinates as a string.
+ *
+ * @example 37.386013;-122.082932
+ */
+ public function getGeoLocationAsString(string $separator = ';'): string
+ {
+ return number_format($this->latitude, 6) . $separator . number_format($this->longitude, 6);
+ }
+
+ public function getLatitude(): float
+ {
+ return $this->latitude;
+ }
+
+ public function getLongitude(): float
+ {
+ return $this->longitude;
+ }
+}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/Organizer.php b/vendor/eluceo/ical/src/Property/Event/Organizer.php
similarity index 60%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/Organizer.php
rename to vendor/eluceo/ical/src/Property/Event/Organizer.php
index a91a75d28..46d497cc7 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/Organizer.php
+++ b/vendor/eluceo/ical/src/Property/Event/Organizer.php
@@ -18,22 +18,12 @@ use Eluceo\iCal\Property;
*/
class Organizer extends Property
{
- const PROPERTY_NAME = 'ORGANIZER';
-
/**
* @param string $value
* @param array $params
*/
- public function __construct($value, $params = array())
+ public function __construct($value, $params = [])
{
- parent::__construct(self::PROPERTY_NAME, $value, $params);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return self::PROPERTY_NAME;
+ parent::__construct('ORGANIZER', $value, $params);
}
}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceId.php b/vendor/eluceo/ical/src/Property/Event/RecurrenceId.php
similarity index 82%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceId.php
rename to vendor/eluceo/ical/src/Property/Event/RecurrenceId.php
index 2a684dda9..b350709e4 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceId.php
+++ b/vendor/eluceo/ical/src/Property/Event/RecurrenceId.php
@@ -13,29 +13,27 @@ namespace Eluceo\iCal\Property\Event;
use Eluceo\iCal\ParameterBag;
use Eluceo\iCal\Property;
-use Eluceo\iCal\Util\DateUtil;
use Eluceo\iCal\Property\ValueInterface;
+use Eluceo\iCal\Util\DateUtil;
/**
* Implementation of Recurrence Id.
*
- * @see http://www.ietf.org/rfc/rfc2445.txt 4.8.4.4 Recurrence ID
+ * @see https://tools.ietf.org/html/rfc5545#section-3.8.4.4
*/
class RecurrenceId extends Property
{
- const PROPERTY_NAME = 'RECURRENCE-ID';
-
/**
* The effective range of recurrence instances from the instance
* specified by the recurrence identifier specified by the property.
*/
- const RANGE_THISANDPRIOR = 'THISANDPRIOR';
+ const RANGE_THISANDPRIOR = 'THISANDPRIOR';
const RANGE_THISANDFUTURE = 'THISANDFUTURE';
/**
* The dateTime to identify a particular instance of a recurring event which is getting modified.
*
- * @var \DateTime
+ * @var \DateTimeInterface
*/
protected $dateTime;
@@ -46,17 +44,18 @@ class RecurrenceId extends Property
*/
protected $range;
- public function __construct(\DateTime $dateTime = null)
+ public function __construct(\DateTimeInterface $dateTime = null)
{
+ $this->name = 'RECURRENCE-ID';
$this->parameterBag = new ParameterBag();
if (isset($dateTime)) {
$this->dateTime = $dateTime;
}
}
- public function applyTimeSettings($noTime = false, $useTimezone = false, $useUtc = false)
+ public function applyTimeSettings($noTime = false, $useTimezone = false, $useUtc = false, $timezoneString = '')
{
- $params = DateUtil::getDefaultParams($this->dateTime, $noTime, $useTimezone, $useUtc);
+ $params = DateUtil::getDefaultParams($this->dateTime, $noTime, $useTimezone, $timezoneString);
foreach ($params as $name => $value) {
$this->parameterBag->setParam($name, $value);
}
@@ -69,7 +68,7 @@ class RecurrenceId extends Property
}
/**
- * @return DateTime
+ * @return \DateTimeInterface
*/
public function getDatetime()
{
@@ -77,11 +76,9 @@ class RecurrenceId extends Property
}
/**
- * @param \DateTime $dateTime
- *
* @return \Eluceo\iCal\Property\Event\RecurrenceId
*/
- public function setDatetime(\DateTime $dateTime)
+ public function setDatetime(\DateTimeInterface $dateTime)
{
$this->dateTime = $dateTime;
@@ -104,6 +101,8 @@ class RecurrenceId extends Property
public function setRange($range)
{
$this->range = $range;
+
+ return $this;
}
/**
@@ -119,12 +118,4 @@ class RecurrenceId extends Property
return parent::toLines();
}
}
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return self::PROPERTY_NAME;
- }
}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceRule.php b/vendor/eluceo/ical/src/Property/Event/RecurrenceRule.php
similarity index 63%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceRule.php
rename to vendor/eluceo/ical/src/Property/Event/RecurrenceRule.php
index 32533449c..c5015c952 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/Event/RecurrenceRule.php
+++ b/vendor/eluceo/ical/src/Property/Event/RecurrenceRule.php
@@ -11,29 +11,32 @@
namespace Eluceo\iCal\Property\Event;
-use Eluceo\iCal\Property\ValueInterface;
use Eluceo\iCal\ParameterBag;
+use Eluceo\iCal\Property\ValueInterface;
use InvalidArgumentException;
/**
* Implementation of Recurrence Rule.
*
- * @see http://www.ietf.org/rfc/rfc2445.txt 3.3.10. Recurrence Rule
+ * @see https://tools.ietf.org/html/rfc5545#section-3.8.5.3
*/
class RecurrenceRule implements ValueInterface
{
- const FREQ_YEARLY = 'YEARLY';
+ const FREQ_YEARLY = 'YEARLY';
const FREQ_MONTHLY = 'MONTHLY';
- const FREQ_WEEKLY = 'WEEKLY';
- const FREQ_DAILY = 'DAILY';
+ const FREQ_WEEKLY = 'WEEKLY';
+ const FREQ_DAILY = 'DAILY';
+ const FREQ_HOURLY = 'HOURLY';
+ const FREQ_MINUTELY = 'MINUTELY';
+ const FREQ_SECONDLY = 'SECONDLY';
- const WEEKDAY_SUNDAY = 'SU';
- const WEEKDAY_MONDAY = 'MO';
- const WEEKDAY_TUESDAY = 'TU';
+ const WEEKDAY_SUNDAY = 'SU';
+ const WEEKDAY_MONDAY = 'MO';
+ const WEEKDAY_TUESDAY = 'TU';
const WEEKDAY_WEDNESDAY = 'WE';
- const WEEKDAY_THURSDAY = 'TH';
- const WEEKDAY_FRIDAY = 'FR';
- const WEEKDAY_SATURDAY = 'SA';
+ const WEEKDAY_THURSDAY = 'TH';
+ const WEEKDAY_FRIDAY = 'FR';
+ const WEEKDAY_SATURDAY = 'SA';
/**
* The frequency of an Event.
@@ -43,73 +46,78 @@ class RecurrenceRule implements ValueInterface
protected $freq = self::FREQ_YEARLY;
/**
- * @var null|int
+ * BYSETPOS must require use of other BY*.
+ *
+ * @var bool
+ */
+ protected $canUseBySetPos = false;
+
+ /**
+ * @var int|null
*/
protected $interval = 1;
/**
- * @var null|int
+ * @var int|null
*/
protected $count = null;
/**
- * @var null|\DateTime
+ * @var \DateTimeInterface|null
*/
protected $until = null;
/**
- * @var null|string
+ * @var string|null
*/
protected $wkst;
/**
- * @var null|string
+ * @var array|null
+ */
+ protected $bySetPos = null;
+
+ /**
+ * @var string|null
*/
protected $byMonth;
/**
- * @var null|string
+ * @var string|null
*/
protected $byWeekNo;
/**
- * @var null|string
+ * @var string|null
*/
protected $byYearDay;
/**
- * @var null|string
+ * @var string|null
*/
protected $byMonthDay;
/**
- * @var null|string
+ * @var string|null
*/
protected $byDay;
/**
- * @var null|string
+ * @var string|null
*/
protected $byHour;
/**
- * @var null|string
+ * @var string|null
*/
protected $byMinute;
/**
- * @var null|string
+ * @var string|null
*/
protected $bySecond;
- /**
- * Return the value of the Property as an escaped string.
- *
- * Escape values as per RFC 2445. See http://www.kanzaki.com/docs/ical/text.html
- *
- * @return string
- */
- public function getEscapedValue()
+ public function getEscapedValue(): string
{
return $this->buildParameterBag()->toString();
}
@@ -139,36 +147,40 @@ class RecurrenceRule implements ValueInterface
$parameterBag->setParam('WKST', $this->wkst);
}
+ if (null !== $this->bySetPos && $this->canUseBySetPos) {
+ $parameterBag->setParam('BYSETPOS', $this->bySetPos);
+ }
+
if (null !== $this->byMonth) {
- $parameterBag->setParam('BYMONTH', $this->byMonth);
+ $parameterBag->setParam('BYMONTH', explode(',', $this->byMonth));
}
if (null !== $this->byWeekNo) {
- $parameterBag->setParam('BYWEEKNO', $this->byWeekNo);
+ $parameterBag->setParam('BYWEEKNO', explode(',', $this->byWeekNo));
}
if (null !== $this->byYearDay) {
- $parameterBag->setParam('BYYEARDAY', $this->byYearDay);
+ $parameterBag->setParam('BYYEARDAY', explode(',', $this->byYearDay));
}
if (null !== $this->byMonthDay) {
- $parameterBag->setParam('BYMONTHDAY', $this->byMonthDay);
+ $parameterBag->setParam('BYMONTHDAY', explode(',', $this->byMonthDay));
}
if (null !== $this->byDay) {
- $parameterBag->setParam('BYDAY', $this->byDay);
+ $parameterBag->setParam('BYDAY', explode(',', $this->byDay));
}
if (null !== $this->byHour) {
- $parameterBag->setParam('BYHOUR', $this->byHour);
+ $parameterBag->setParam('BYHOUR', explode(',', $this->byHour));
}
if (null !== $this->byMinute) {
- $parameterBag->setParam('BYMINUTE', $this->byMinute);
+ $parameterBag->setParam('BYMINUTE', explode(',', $this->byMinute));
}
if (null !== $this->bySecond) {
- $parameterBag->setParam('BYSECOND', $this->bySecond);
+ $parameterBag->setParam('BYSECOND', explode(',', $this->bySecond));
}
return $parameterBag;
@@ -195,11 +207,9 @@ class RecurrenceRule implements ValueInterface
}
/**
- * @param \DateTime|null $until
- *
* @return $this
*/
- public function setUntil(\DateTime $until = null)
+ public function setUntil(\DateTimeInterface $until = null)
{
$this->until = $until;
@@ -207,7 +217,7 @@ class RecurrenceRule implements ValueInterface
}
/**
- * @return \DateTime|null
+ * @return \DateTimeInterface|null
*/
public function getUntil()
{
@@ -235,10 +245,7 @@ class RecurrenceRule implements ValueInterface
*/
public function setFreq($freq)
{
- if (self::FREQ_YEARLY === $freq || self::FREQ_MONTHLY === $freq
- || self::FREQ_WEEKLY === $freq
- || self::FREQ_DAILY === $freq
- ) {
+ if (@constant('static::FREQ_' . $freq) !== null) {
$this->freq = $freq;
} else {
throw new \InvalidArgumentException("The Frequency {$freq} is not supported.");
@@ -294,23 +301,88 @@ class RecurrenceRule implements ValueInterface
}
/**
- * The BYMONTH rule part specifies a COMMA-separated list of months of the year.
- * Valid values are 1 to 12.
+ * The BYSETPOS filters one interval of events by the specified position.
+ * A positive position will start from the beginning and go forward while
+ * a negative position will start at the end and move backward.
*
- * @param int $month
+ * Valid values are a comma separated string or an array of integers
+ * from 1 to 366 or negative integers from -1 to -366.
+ *
+ * @param int|string|array|null $value
*
* @throws InvalidArgumentException
*
* @return $this
*/
+ public function setBySetPos($value)
+ {
+ if (null === $value) {
+ $this->bySetPos = $value;
+
+ return $this;
+ }
+
+ if (!(is_string($value) || is_array($value) || is_int($value))) {
+ throw new InvalidArgumentException('Invalid value for BYSETPOS');
+ }
+
+ $list = $value;
+
+ if (is_int($value)) {
+ if ($value === 0 || $value < -366 || $value > 366) {
+ throw new InvalidArgumentException('Invalid value for BYSETPOS');
+ }
+ $this->bySetPos = [$value];
+
+ return $this;
+ }
+
+ if (is_string($value)) {
+ $list = explode(',', $value);
+ }
+
+ $output = [];
+
+ foreach ($list as $item) {
+ if (is_string($item)) {
+ if (!preg_match('/^ *-?[0-9]* *$/', $item)) {
+ throw new InvalidArgumentException('Invalid value for BYSETPOS');
+ }
+ $item = intval($item);
+ }
+
+ if (!is_int($item) || $item === 0 || $item < -366 || $item > 366) {
+ throw new InvalidArgumentException('Invalid value for BYSETPOS');
+ }
+
+ $output[] = $item;
+ }
+
+ $this->bySetPos = $output;
+
+ return $this;
+ }
+
+ /**
+ * The BYMONTH rule part specifies a COMMA-separated list of months of the year.
+ * Valid values are 1 to 12.
+ *
+ * @param int $month
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return $this
+ */
public function setByMonth($month)
{
- if (!is_integer($month) || $month < 0 || $month > 12) {
+ if (!is_integer($month) || $month <= 0 || $month > 12) {
throw new InvalidArgumentException('Invalid value for BYMONTH');
}
$this->byMonth = $month;
+ $this->canUseBySetPos = true;
+
return $this;
}
@@ -320,12 +392,20 @@ class RecurrenceRule implements ValueInterface
*
* @param int $value
*
+ * @throws \InvalidArgumentException
+ *
* @return $this
*/
public function setByWeekNo($value)
{
+ if (!is_integer($value) || $value > 53 || $value < -53 || $value === 0) {
+ throw new InvalidArgumentException('Invalid value for BYWEEKNO');
+ }
+
$this->byWeekNo = $value;
+ $this->canUseBySetPos = true;
+
return $this;
}
@@ -335,12 +415,20 @@ class RecurrenceRule implements ValueInterface
*
* @param int $day
*
+ * @throws \InvalidArgumentException
+ *
* @return $this
*/
public function setByYearDay($day)
{
+ if (!is_integer($day) || $day > 366 || $day < -366 || $day === 0) {
+ throw new InvalidArgumentException('Invalid value for BYYEARDAY');
+ }
+
$this->byYearDay = $day;
+ $this->canUseBySetPos = true;
+
return $this;
}
@@ -351,11 +439,19 @@ class RecurrenceRule implements ValueInterface
* @param int $day
*
* @return $this
+ *
+ * @throws \InvalidArgumentException
*/
public function setByMonthDay($day)
{
+ if (!is_integer($day) || $day > 31 || $day < -31 || $day === 0) {
+ throw new InvalidArgumentException('Invalid value for BYMONTHDAY');
+ }
+
$this->byMonthDay = $day;
+ $this->canUseBySetPos = true;
+
return $this;
}
@@ -368,14 +464,14 @@ class RecurrenceRule implements ValueInterface
* Each BYDAY value can also be preceded by a positive (+n) or negative (-n) integer.
* If present, this indicates the nth occurrence of a specific day within the MONTHLY or YEARLY "RRULE".
*
- * @param string $day
- *
* @return $this
*/
- public function setByDay($day)
+ public function setByDay(string $day)
{
$this->byDay = $day;
+ $this->canUseBySetPos = true;
+
return $this;
}
@@ -397,6 +493,8 @@ class RecurrenceRule implements ValueInterface
$this->byHour = $value;
+ $this->canUseBySetPos = true;
+
return $this;
}
@@ -418,6 +516,8 @@ class RecurrenceRule implements ValueInterface
$this->byMinute = $value;
+ $this->canUseBySetPos = true;
+
return $this;
}
@@ -439,6 +539,8 @@ class RecurrenceRule implements ValueInterface
$this->bySecond = $value;
+ $this->canUseBySetPos = true;
+
return $this;
}
}
diff --git a/vendor/eluceo/ical/src/Property/RawStringValue.php b/vendor/eluceo/ical/src/Property/RawStringValue.php
new file mode 100644
index 000000000..a0e16d0e0
--- /dev/null
+++ b/vendor/eluceo/ical/src/Property/RawStringValue.php
@@ -0,0 +1,20 @@
+
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace Eluceo\iCal\Property;
+
+class RawStringValue extends StringValue
+{
+ public function getEscapedValue(): string
+ {
+ return $this->getValue();
+ }
+}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Util/PropertyValueUtil.php b/vendor/eluceo/ical/src/Property/StringValue.php
similarity index 56%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Util/PropertyValueUtil.php
rename to vendor/eluceo/ical/src/Property/StringValue.php
index 405385891..7b8f31591 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Util/PropertyValueUtil.php
+++ b/vendor/eluceo/ical/src/Property/StringValue.php
@@ -9,32 +9,59 @@
* with this source code in the file LICENSE.
*/
-namespace Eluceo\iCal\Util;
+namespace Eluceo\iCal\Property;
-class PropertyValueUtil
+class StringValue implements ValueInterface
{
- public static function escapeValue($value)
- {
- $value = self::escapeValueAllowNewLine($value);
- $value = str_replace("\n", '\\n', $value);
+ /**
+ * The value.
+ *
+ * @var string
+ */
+ protected $value;
- return $value;
+ public function __construct($value)
+ {
+ $this->value = $value;
}
- public static function escapeValueAllowNewLine($value)
+ public function getEscapedValue(): string
{
+ $value = $this->value;
+
$value = str_replace('\\', '\\\\', $value);
$value = str_replace('"', '\\"', $value);
$value = str_replace(',', '\\,', $value);
$value = str_replace(';', '\\;', $value);
- $value = str_replace(array(
+ $value = str_replace("\n", '\\n', $value);
+ $value = str_replace([
"\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07",
"\x08", "\x09", /* \n*/ "\x0B", "\x0C", "\x0D", "\x0E", "\x0F",
"\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17",
"\x18", "\x19", "\x1A", "\x1B", "\x1C", "\x1D", "\x1E", "\x1F",
"\x7F",
- ), '', $value);
+ ], '', $value);
return $value;
}
+
+ /**
+ * @param string $value
+ *
+ * @return $this
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Property/ValueInterface.php b/vendor/eluceo/ical/src/Property/ValueInterface.php
similarity index 71%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Property/ValueInterface.php
rename to vendor/eluceo/ical/src/Property/ValueInterface.php
index cc3d885c6..5e8c68898 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Property/ValueInterface.php
+++ b/vendor/eluceo/ical/src/Property/ValueInterface.php
@@ -16,9 +16,9 @@ interface ValueInterface
/**
* Return the value of the Property as an escaped string.
*
- * Escape values as per RFC 2445. See http://www.kanzaki.com/docs/ical/text.html
+ * Escape values as per RFC 5545.
*
- * @return string
+ * @see https://tools.ietf.org/html/rfc5545#section-3.3.11
*/
- public function getEscapedValue();
+ public function getEscapedValue(): string;
}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/PropertyBag.php b/vendor/eluceo/ical/src/PropertyBag.php
similarity index 54%
rename from vendor/eluceo/ical/src/Eluceo/iCal/PropertyBag.php
rename to vendor/eluceo/ical/src/PropertyBag.php
index 7032360be..4ff82d88a 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/PropertyBag.php
+++ b/vendor/eluceo/ical/src/PropertyBag.php
@@ -16,7 +16,7 @@ class PropertyBag implements \IteratorAggregate
/**
* @var array
*/
- protected $elements = array();
+ protected $elements = [];
/**
* Creates a new Property with $name, $value and $params.
@@ -27,47 +27,41 @@ class PropertyBag implements \IteratorAggregate
*
* @return $this
*/
- public function set($name, $value, $params = array())
+ public function set($name, $value, $params = [])
{
- $property = new Property($name, $value, $params);
- $this->elements[] = $property;
+ $this->add(new Property($name, $value, $params));
return $this;
}
/**
- * @param string $name
- *
- * @return null|Property
+ * @return Property|null
*/
- public function get($name)
+ public function get(string $name)
{
- // Searching Property in elements-array
- /** @var $property Property */
- foreach ($this->elements as $property) {
- if ($property->getName() == $name) {
- return $property;
- }
+ if (isset($this->elements[$name])) {
+ return $this->elements[$name];
}
+
+ return null;
}
/**
* Adds a Property. If Property already exists an Exception will be thrown.
*
- * @param Property $property
- *
* @return $this
*
* @throws \Exception
*/
public function add(Property $property)
{
- // Property already exists?
- if (null !== $this->get($property->getName())) {
- throw new \Exception("Property with name '{$property->getName()}' already exists");
+ $name = $property->getName();
+
+ if (isset($this->elements[$name])) {
+ throw new \Exception("Property with name '{$name}' already exists");
}
- $this->elements[] = $property;
+ $this->elements[$name] = $property;
return $this;
}
diff --git a/vendor/eluceo/ical/src/Util/ComponentUtil.php b/vendor/eluceo/ical/src/Util/ComponentUtil.php
new file mode 100644
index 000000000..d6b3d25db
--- /dev/null
+++ b/vendor/eluceo/ical/src/Util/ComponentUtil.php
@@ -0,0 +1,62 @@
+
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace Eluceo\iCal\Util;
+
+class ComponentUtil
+{
+ /**
+ * Folds a single line.
+ *
+ * According to RFC 5545, all lines longer than 75 characters should be folded
+ *
+ * @see https://tools.ietf.org/html/rfc5545#section-5
+ * @see https://tools.ietf.org/html/rfc5545#section-3.1
+ *
+ * @param string $string
+ *
+ * @return array
+ */
+ public static function fold($string)
+ {
+ $lines = [];
+
+ if (function_exists('mb_strcut')) {
+ while (strlen($string) > 0) {
+ if (strlen($string) > 75) {
+ $lines[] = mb_strcut($string, 0, 75, 'utf-8');
+ $string = ' ' . mb_strcut($string, 75, strlen($string), 'utf-8');
+ } else {
+ $lines[] = $string;
+ $string = '';
+ break;
+ }
+ }
+ } else {
+ $array = preg_split('/(? 75) {
+ $line = ' ' . $char;
+ ++$lineNo;
+ } else {
+ $line .= $char;
+ }
+ $lines[$lineNo] = $line;
+ }
+ }
+
+ return $lines;
+ }
+}
diff --git a/vendor/eluceo/ical/src/Eluceo/iCal/Util/DateUtil.php b/vendor/eluceo/ical/src/Util/DateUtil.php
similarity index 50%
rename from vendor/eluceo/ical/src/Eluceo/iCal/Util/DateUtil.php
rename to vendor/eluceo/ical/src/Util/DateUtil.php
index 3bd3367fd..a6e87579c 100644
--- a/vendor/eluceo/ical/src/Eluceo/iCal/Util/DateUtil.php
+++ b/vendor/eluceo/ical/src/Util/DateUtil.php
@@ -13,12 +13,12 @@ namespace Eluceo\iCal\Util;
class DateUtil
{
- public static function getDefaultParams(\DateTime $dateTime = null, $noTime = false, $useTimezone = false)
+ public static function getDefaultParams(\DateTimeInterface $dateTime = null, $noTime = false, $useTimezone = false, $timezoneString = '')
{
- $params = array();
+ $params = [];
- if ($useTimezone) {
- $timeZone = $dateTime->getTimezone()->getName();
+ if ($useTimezone && $noTime === false) {
+ $timeZone = $timezoneString === '' ? $dateTime->getTimezone()->getName() : $timezoneString;
$params['TZID'] = $timeZone;
}
@@ -32,17 +32,25 @@ class DateUtil
/**
* Returns a formatted date string.
*
- * @param \DateTime|null $dateTime The DateTime object
- * @param bool $noTime Indicates if the time will be added
- * @param bool $useTimezone
- * @param bool $useUtc
+ * @param \DateTimeInterface|null $dateTime The DateTime object
+ * @param bool $noTime Indicates if the time will be added
+ * @param bool $useTimezone
+ * @param bool $useUtc
*
* @return mixed
*/
- public static function getDateString(\DateTime $dateTime = null, $noTime = false, $useTimezone = false, $useUtc = false)
+ public static function getDateString(\DateTimeInterface $dateTime = null, $noTime = false, $useTimezone = false, $useUtc = false)
{
if (empty($dateTime)) {
- $dateTime = new \DateTime();
+ $dateTime = new \DateTimeImmutable();
+ }
+
+ // Only convert the DateTime to UTC if there is a time present. For date-only the
+ // timezone is meaningless and converting it might shift it to the wrong date.
+ // Do not convert DateTime to UTC if a timezone it specified, as it should be local time.
+ if (!$noTime && $useUtc && !$useTimezone) {
+ $dateTime = clone $dateTime;
+ $dateTime = $dateTime->setTimezone(new \DateTimeZone('UTC'));
}
return $dateTime->format(self::getDateFormat($noTime, $useTimezone, $useUtc));
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/Component/CalendarIntegrationTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/Component/CalendarIntegrationTest.php
deleted file mode 100644
index eb869af8c..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/Component/CalendarIntegrationTest.php
+++ /dev/null
@@ -1,64 +0,0 @@
-setDtStart(new \DateTime('2012-12-31', $timeZone));
- $vEvent->setDtEnd(new \DateTime('2012-12-31', $timeZone));
- $vEvent->setNoTime(true);
- $vEvent->setIsPrivate(true);
- $vEvent->setSummary('New Year’s Eve');
-
- // Set recurrence rule
- $recurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule();
- $recurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_YEARLY);
- $recurrenceRule->setInterval(1);
- $vEvent->setRecurrenceRule($recurrenceRule);
-
- // Adding Timezone (optional)
- $vEvent->setUseTimezone(true);
-
- // 3. Add event to calendar
- $vCalendar->addComponent($vEvent);
-
- $lines = array(
- '/BEGIN:VCALENDAR/',
- '/VERSION:2\.0/',
- '/PRODID:www\.example\.com/',
- '/X-PUBLISHED-TTL:P1W/',
- '/BEGIN:VEVENT/',
- '/UID:123456/',
- '/DTSTART;TZID=Europe\/Berlin;VALUE=DATE:20121231/',
- '/SEQUENCE:0/',
- '/TRANSP:OPAQUE/',
- '/DTEND;TZID=Europe\/Berlin;VALUE=DATE:20121231/',
- '/SUMMARY:New Year’s Eve/',
- '/CLASS:PRIVATE/',
- '/RRULE:FREQ=YEARLY;INTERVAL=1/',
- '/X-MICROSOFT-CDO-ALLDAYEVENT:TRUE/',
- '/DTSTAMP:20\d{6}T\d{6}Z/',
- '/END:VEVENT/',
- '/END:VCALENDAR/',
- );
-
- foreach (explode("\n", $vCalendar->render()) as $key => $line)
- {
- $this->assertTrue(isset($lines[$key]), 'Too many lines... ' . $line);
-
- $this->assertRegExp($lines[$key], $line);
- }
- }
-}
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/ComponentTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/ComponentTest.php
deleted file mode 100644
index 5cac7c5df..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/ComponentTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-setDtStart(new \DateTime('2014-12-24'));
- $vEvent->setDtEnd(new \DateTime('2014-12-24'));
- $vEvent->setDescription($input);
-
- $vAlarm = new \Eluceo\iCal\Component\Alarm;
- $vAlarm->setAction(\Eluceo\iCal\Component\Alarm::ACTION_DISPLAY);
- $vAlarm->setDescription($input);
- $vAlarm->setTrigger('PT0S', true);
- $vEvent->addComponent($vAlarm);
-
- $vCalendar->addComponent($vEvent);
-
- $output = $vCalendar->render();
- $output = preg_replace('/\r\n /u', '', $output);
- $this->assertContains($input, $output);
- }
-
- public function testDescriptionWithNewLines()
- {
- $input = "new string \n new line \n new line \n new string";
-
- $vCalendar = new \Eluceo\iCal\Component\Calendar('www.example.com');
- $vEvent = new \Eluceo\iCal\Component\Event();
- $vEvent->setDtStart(new \DateTime('2014-12-24'));
- $vEvent->setDtEnd(new \DateTime('2014-12-24'));
- $vEvent->setDescription($input);
-
- $vCalendar->addComponent($vEvent);
-
- $output = $vCalendar->render();
- $this->assertContains(str_replace("\n", "\\n", $input), $output);
- }
-}
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/ParameterBagTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/ParameterBagTest.php
deleted file mode 100644
index 0fb6e84cf..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/ParameterBagTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-assertEquals(
- 'test string',
- $propertyObject->escapeParamValue('test string'),
- 'No escaping necessary'
- );
-
- $this->assertEquals(
- '"Containing \\"double-quotes\\""',
- $propertyObject->escapeParamValue('Containing "double-quotes"'),
- 'Text contains double quotes'
- );
-
- $this->assertEquals(
- '"Containing forbidden chars like a ;"',
- $propertyObject->escapeParamValue('Containing forbidden chars like a ;'),
- 'Text with semicolon'
- );
-
- $this->assertEquals(
- '"Containing forbidden chars like a :"',
- $propertyObject->escapeParamValue('Containing forbidden chars like a :'),
- 'Text with colon'
- );
- }
-}
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/ArrayValueTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/Property/ArrayValueTest.php
deleted file mode 100644
index 1d1b3331b..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/ArrayValueTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-assertEquals($expectedOutput, $arrayValue->getEscapedValue());
- }
-
- public function arrayValuesProvider()
- {
- return array(
- array(array(), ''),
- array(array('Lorem'), 'Lorem'),
- array(array('Lorem', 'Ipsum'), 'Lorem,Ipsum'),
- array(array('Lorem', '"doublequotes"'), 'Lorem,\"doublequotes\"'),
- );
- }
-}
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/Event/DescriptionTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/Property/Event/DescriptionTest.php
deleted file mode 100644
index 0ad16bccf..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/Event/DescriptionTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-assertEquals(
- str_replace("\n", "\\n", $testString),
- $description->getEscapedValue()
- );
- }
-}
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/Event/OrganizerTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/Property/Event/OrganizerTest.php
deleted file mode 100644
index 71acdce97..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/Event/OrganizerTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-
- */
-
-namespace Eluceo\iCal\Property\Event;
-
-/**
- * OrganizerTest
- */
-class OrganizerTest extends \PHPUnit_Framework_TestCase
-{
- public function testOrganizerValueOnly()
- {
- $value = "MAILTO:name.lastname@example.com";
- $expected = "ORGANIZER:$value";
-
- $vCalendar = $this->createCalendarWithOrganizer(
- new \Eluceo\iCal\Property\Event\Organizer($value)
- );
-
- foreach (explode("\n", $vCalendar->render()) as $line)
- {
- if (preg_match('/^ORGANIZER[:;](.*)$/', $line)) {
- $this->assertEquals($expected, trim($line));
- }
- }
- }
-
- public function testOrganizerValueAndParameter()
- {
- $value = "MAILTO:name.lastname@example.com";
- $param = "Name LastName";
- $expected = "ORGANIZER;CN=$param:$value";
-
- $vCalendar = $this->createCalendarWithOrganizer(
- new \Eluceo\iCal\Property\Event\Organizer($value, array('CN' => $param))
- );
-
- foreach (explode("\n", $vCalendar->render()) as $line)
- {
- if (preg_match('/^ORGANIZER[:;](.*)$/', $line)) {
- $this->assertEquals($expected, trim($line));
- }
- }
-
- }
-
- /**
- * @param Organizer $vOrganizer
- * @return \Eluceo\iCal\Component\Calendar
- */
- private function createCalendarWithOrganizer(\Eluceo\iCal\Property\Event\Organizer $vOrganizer)
- {
- $vCalendar = new \Eluceo\iCal\Component\Calendar('www.example.com');
- $vEvent = new \Eluceo\iCal\Component\Event('123456');
- $vEvent->setOrganizer($vOrganizer);
- $vCalendar->addComponent($vEvent);
- return $vCalendar;
- }
-}
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/Event/RecurrenceRuleTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/Property/Event/RecurrenceRuleTest.php
deleted file mode 100644
index a44b25800..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/Event/RecurrenceRuleTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-setFreq(RecurrenceRule::FREQ_DAILY);
- $rule->setInterval(null);
- $rule->setUntil(new \DateTime('1997-12-24'));
- $this->assertEquals(
- 'FREQ=DAILY;UNTIL=19971224T000000Z',
- $rule->getEscapedValue()
- );
- }
-}
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/StringValueTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/Property/StringValueTest.php
deleted file mode 100644
index afa70df10..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/Property/StringValueTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-assertEquals(
- 'LOREM',
- $stringValue->getEscapedValue(),
- 'No escaping necessary'
- );
- }
-
- public function testValueContainsBackslash()
- {
- $stringValue = new StringValue('text contains backslash: \\');
-
- $this->assertEquals(
- 'text contains backslash: \\\\',
- $stringValue->getEscapedValue(),
- 'Text contains backslash'
- );
- }
-
- public function testEscapingDoubleQuotes()
- {
- $stringValue = new StringValue('text with "doublequotes" will be escaped');
-
- $this->assertEquals(
- 'text with \\"doublequotes\\" will be escaped',
- $stringValue->getEscapedValue(),
- 'Escaping double quotes'
- );
- }
-
- public function testEscapingSemicolonAndComma()
- {
- $stringValue = new StringValue('text with , and ; will also be escaped');
-
- $this->assertEquals(
- 'text with \\, and \\; will also be escaped',
- $stringValue->getEscapedValue(),
- 'Escaping ; and ,'
- );
- }
-
- public function testNewLineEscaping()
- {
- $stringValue = new StringValue("Text with new\n line");
-
- $this->assertEquals(
- 'Text with new\\n line',
- $stringValue->getEscapedValue(),
- 'Escape new line to text'
- );
- }
-}
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/PropertyBagTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/PropertyBagTest.php
deleted file mode 100644
index a7f8d8cea..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/PropertyBagTest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-setExpectedException('\\Exception', "Property with name 'propName' already exists");
-
- $propertyBag = new PropertyBag();
- $propertyBag->add(new Property('propName', ''));
- $propertyBag->add(new Property('propName', ''));
- }
-}
diff --git a/vendor/eluceo/ical/tests/Eluceo/iCal/PropertyTest.php b/vendor/eluceo/ical/tests/Eluceo/iCal/PropertyTest.php
deleted file mode 100644
index b30f5a3a2..000000000
--- a/vendor/eluceo/ical/tests/Eluceo/iCal/PropertyTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-assertEquals(
- 'DTSTAMP:20131020T153112',
- $property->toLine()
- );
- }
-
- public function testPropertyWithValueAndParams()
- {
- $property = new Property('DTSTAMP', '20131020T153112', array('TZID' => 'Europe/Berlin'));
- $this->assertEquals(
- 'DTSTAMP;TZID=Europe/Berlin:20131020T153112',
- $property->toLine()
- );
- }
-
- public function testPropertyWithEscapedSingleValue()
- {
- $property = new Property('SOMEPROP', 'Escape me!"');
- $this->assertEquals(
- 'SOMEPROP:Escape me!\\"',
- $property->toLine()
- );
- }
-
- public function testPropertyWithEscapedValues()
- {
- $property = new Property('SOMEPROP', 'Escape me!"', array('TEST' => 'Lorem "test" ipsum'));
- $this->assertEquals(
- 'SOMEPROP;TEST="Lorem \\"test\\" ipsum":Escape me!\\"',
- $property->toLine()
- );
- }
-}
diff --git a/vendor/symfony/contracts/CHANGELOG.md b/vendor/symfony/contracts/CHANGELOG.md
index f909b4976..f3e279781 100644
--- a/vendor/symfony/contracts/CHANGELOG.md
+++ b/vendor/symfony/contracts/CHANGELOG.md
@@ -1,6 +1,11 @@
CHANGELOG
=========
+1.1.9
+-----
+
+ * fixed compat with PHP 8
+
1.1.0
-----
diff --git a/vendor/symfony/contracts/Cache/CacheTrait.php b/vendor/symfony/contracts/Cache/CacheTrait.php
index 355ea2962..1cc3841e2 100644
--- a/vendor/symfony/contracts/Cache/CacheTrait.php
+++ b/vendor/symfony/contracts/Cache/CacheTrait.php
@@ -15,6 +15,9 @@ use Psr\Cache\CacheItemPoolInterface;
use Psr\Cache\InvalidArgumentException;
use Psr\Log\LoggerInterface;
+// Help opcache.preload discover always-needed symbols
+class_exists(InvalidArgumentException::class);
+
/**
* An implementation of CacheInterface for PSR-6 CacheItemPoolInterface classes.
*
@@ -41,8 +44,7 @@ trait CacheTrait
private function doGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null)
{
if (0 > $beta = $beta ?? 1.0) {
- throw new class(sprintf('Argument "$beta" provided to "%s::get()" must be a positive number, %f given.', \get_class($this), $beta)) extends \InvalidArgumentException implements InvalidArgumentException {
- };
+ throw new class(sprintf('Argument "$beta" provided to "%s::get()" must be a positive number, %f given.', static::class, $beta)) extends \InvalidArgumentException implements InvalidArgumentException { };
}
$item = $pool->getItem($key);
diff --git a/vendor/symfony/contracts/Cache/LICENSE b/vendor/symfony/contracts/Cache/LICENSE
index 3f853aaf3..69d925ba7 100644
--- a/vendor/symfony/contracts/Cache/LICENSE
+++ b/vendor/symfony/contracts/Cache/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2020 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/contracts/Cache/composer.json b/vendor/symfony/contracts/Cache/composer.json
index 4e0bd1a42..97eabec6a 100644
--- a/vendor/symfony/contracts/Cache/composer.json
+++ b/vendor/symfony/contracts/Cache/composer.json
@@ -16,7 +16,7 @@
}
],
"require": {
- "php": "^7.1.3",
+ "php": ">=7.1.3",
"psr/cache": "^1.0"
},
"suggest": {
@@ -29,6 +29,10 @@
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
}
}
diff --git a/vendor/symfony/contracts/EventDispatcher/LICENSE b/vendor/symfony/contracts/EventDispatcher/LICENSE
index 3f853aaf3..69d925ba7 100644
--- a/vendor/symfony/contracts/EventDispatcher/LICENSE
+++ b/vendor/symfony/contracts/EventDispatcher/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2020 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/contracts/EventDispatcher/composer.json b/vendor/symfony/contracts/EventDispatcher/composer.json
index 55802a491..862c2565f 100644
--- a/vendor/symfony/contracts/EventDispatcher/composer.json
+++ b/vendor/symfony/contracts/EventDispatcher/composer.json
@@ -16,7 +16,7 @@
}
],
"require": {
- "php": "^7.1.3"
+ "php": ">=7.1.3"
},
"suggest": {
"psr/event-dispatcher": "",
@@ -29,6 +29,10 @@
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
}
}
diff --git a/vendor/symfony/contracts/HttpClient/LICENSE b/vendor/symfony/contracts/HttpClient/LICENSE
index 3f853aaf3..69d925ba7 100644
--- a/vendor/symfony/contracts/HttpClient/LICENSE
+++ b/vendor/symfony/contracts/HttpClient/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2020 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/contracts/HttpClient/Test/Fixtures/web/index.php b/vendor/symfony/contracts/HttpClient/Test/Fixtures/web/index.php
index d3c4f0f1d..96486ca31 100644
--- a/vendor/symfony/contracts/HttpClient/Test/Fixtures/web/index.php
+++ b/vendor/symfony/contracts/HttpClient/Test/Fixtures/web/index.php
@@ -155,6 +155,27 @@ switch ($vars['REQUEST_URI']) {
usleep(500);
}
exit;
+
+ case '/json':
+ header("Content-Type: application/json");
+ echo json_encode([
+ 'documents' => [
+ ['id' => '/json/1'],
+ ['id' => '/json/2'],
+ ['id' => '/json/3'],
+ ],
+ ]);
+ exit;
+
+ case '/json/1':
+ case '/json/2':
+ case '/json/3':
+ header("Content-Type: application/json");
+ echo json_encode([
+ 'title' => $vars['REQUEST_URI'],
+ ]);
+
+ exit;
}
header('Content-Type: application/json', true);
diff --git a/vendor/symfony/contracts/HttpClient/Test/HttpClientTestCase.php b/vendor/symfony/contracts/HttpClient/Test/HttpClientTestCase.php
index 4badb4c35..c1ad3ffec 100644
--- a/vendor/symfony/contracts/HttpClient/Test/HttpClientTestCase.php
+++ b/vendor/symfony/contracts/HttpClient/Test/HttpClientTestCase.php
@@ -24,8 +24,6 @@ use Symfony\Contracts\HttpClient\HttpClientInterface;
*/
abstract class HttpClientTestCase extends TestCase
{
- private static $server;
-
public static function setUpBeforeClass(): void
{
TestHttpServer::start();
@@ -166,7 +164,7 @@ abstract class HttpClientTestCase extends TestCase
$client = $this->getHttpClient(__FUNCTION__);
$response = $client->request('GET', 'http://localhost:8057', ['buffer' => function () {
- throw new \Exception('Boo');
+ throw new \Exception('Boo.');
}]);
$this->assertSame(200, $response->getStatusCode());
@@ -648,7 +646,7 @@ abstract class HttpClientTestCase extends TestCase
$response = $client->request('GET', 'http://localhost:8057/timeout-body', [
'on_progress' => function ($dlNow) {
if (0 < $dlNow) {
- throw new \Exception('Aborting the request');
+ throw new \Exception('Aborting the request.');
}
},
]);
@@ -658,7 +656,7 @@ abstract class HttpClientTestCase extends TestCase
}
$this->fail(ClientExceptionInterface::class.' expected');
} catch (TransportExceptionInterface $e) {
- $this->assertSame('Aborting the request', $e->getPrevious()->getMessage());
+ $this->assertSame('Aborting the request.', $e->getPrevious()->getMessage());
}
$this->assertNotNull($response->getInfo('error'));
@@ -672,7 +670,7 @@ abstract class HttpClientTestCase extends TestCase
$response = $client->request('GET', 'http://localhost:8057/timeout-body', [
'on_progress' => function ($dlNow) {
if (0 < $dlNow) {
- throw new \Error('BUG');
+ throw new \Error('BUG.');
}
},
]);
@@ -682,7 +680,7 @@ abstract class HttpClientTestCase extends TestCase
}
$this->fail('Error expected');
} catch (\Error $e) {
- $this->assertSame('BUG', $e->getMessage());
+ $this->assertSame('BUG.', $e->getMessage());
}
$this->assertNotNull($response->getInfo('error'));
@@ -705,6 +703,23 @@ abstract class HttpClientTestCase extends TestCase
$client->request('GET', 'http://symfony.com:8057/', ['timeout' => 1]);
}
+ public function testIdnResolve()
+ {
+ $client = $this->getHttpClient(__FUNCTION__);
+
+ $response = $client->request('GET', 'http://0-------------------------------------------------------------0.com:8057/', [
+ 'resolve' => ['0-------------------------------------------------------------0.com' => '127.0.0.1'],
+ ]);
+
+ $this->assertSame(200, $response->getStatusCode());
+
+ $response = $client->request('GET', 'http://Bücher.example:8057/', [
+ 'resolve' => ['xn--bcher-kva.example' => '127.0.0.1'],
+ ]);
+
+ $this->assertSame(200, $response->getStatusCode());
+ }
+
public function testNotATimeout()
{
$client = $this->getHttpClient(__FUNCTION__);
@@ -771,6 +786,30 @@ abstract class HttpClientTestCase extends TestCase
}
}
+ public function testTimeoutWithActiveConcurrentStream()
+ {
+ $p1 = TestHttpServer::start(8067);
+ $p2 = TestHttpServer::start(8077);
+
+ $client = $this->getHttpClient(__FUNCTION__);
+ $streamingResponse = $client->request('GET', 'http://localhost:8067/max-duration');
+ $blockingResponse = $client->request('GET', 'http://localhost:8077/timeout-body', [
+ 'timeout' => 0.25,
+ ]);
+
+ $this->assertSame(200, $streamingResponse->getStatusCode());
+ $this->assertSame(200, $blockingResponse->getStatusCode());
+
+ $this->expectException(TransportExceptionInterface::class);
+
+ try {
+ $blockingResponse->getContent();
+ } finally {
+ $p1->stop();
+ $p2->stop();
+ }
+ }
+
public function testDestruct()
{
$client = $this->getHttpClient(__FUNCTION__);
@@ -784,6 +823,18 @@ abstract class HttpClientTestCase extends TestCase
$this->assertLessThan(4, $duration);
}
+ public function testGetContentAfterDestruct()
+ {
+ $client = $this->getHttpClient(__FUNCTION__);
+
+ try {
+ $client->request('GET', 'http://localhost:8057/404');
+ $this->fail(ClientExceptionInterface::class.' expected');
+ } catch (ClientExceptionInterface $e) {
+ $this->assertSame('GET', $e->getResponse()->toArray(false)['REQUEST_METHOD']);
+ }
+ }
+
public function testProxy()
{
$client = $this->getHttpClient(__FUNCTION__);
diff --git a/vendor/symfony/contracts/HttpClient/Test/TestHttpServer.php b/vendor/symfony/contracts/HttpClient/Test/TestHttpServer.php
index 8e7a469c4..06a11444e 100644
--- a/vendor/symfony/contracts/HttpClient/Test/TestHttpServer.php
+++ b/vendor/symfony/contracts/HttpClient/Test/TestHttpServer.php
@@ -19,31 +19,28 @@ use Symfony\Component\Process\Process;
*/
class TestHttpServer
{
- private static $server;
+ private static $process = [];
- public static function start()
+ public static function start(int $port = 8057)
{
- if (null !== self::$server) {
- return;
+ if (isset(self::$process[$port])) {
+ self::$process[$port]->stop();
+ } else {
+ register_shutdown_function(static function () use ($port) {
+ self::$process[$port]->stop();
+ });
}
$finder = new PhpExecutableFinder();
- $process = new Process(array_merge([$finder->find(false)], $finder->findArguments(), ['-dopcache.enable=0', '-dvariables_order=EGPCS', '-S', '127.0.0.1:8057']));
+ $process = new Process(array_merge([$finder->find(false)], $finder->findArguments(), ['-dopcache.enable=0', '-dvariables_order=EGPCS', '-S', '127.0.0.1:'.$port]));
$process->setWorkingDirectory(__DIR__.'/Fixtures/web');
- $process->setTimeout(300);
$process->start();
+ self::$process[$port] = $process;
- self::$server = new class() {
- public $process;
+ do {
+ usleep(50000);
+ } while (!@fopen('http://127.0.0.1:'.$port, 'r'));
- public function __destruct()
- {
- $this->process->stop();
- }
- };
-
- self::$server->process = $process;
-
- sleep('\\' === \DIRECTORY_SEPARATOR ? 10 : 1);
+ return $process;
}
}
diff --git a/vendor/symfony/contracts/HttpClient/composer.json b/vendor/symfony/contracts/HttpClient/composer.json
index 4dc9b2d38..2382aa7a0 100644
--- a/vendor/symfony/contracts/HttpClient/composer.json
+++ b/vendor/symfony/contracts/HttpClient/composer.json
@@ -16,7 +16,7 @@
}
],
"require": {
- "php": "^7.1.3"
+ "php": ">=7.1.3"
},
"suggest": {
"symfony/http-client-implementation": ""
@@ -28,6 +28,10 @@
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
}
}
diff --git a/vendor/symfony/contracts/LICENSE b/vendor/symfony/contracts/LICENSE
index 3f853aaf3..69d925ba7 100644
--- a/vendor/symfony/contracts/LICENSE
+++ b/vendor/symfony/contracts/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2020 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/contracts/Service/LICENSE b/vendor/symfony/contracts/Service/LICENSE
index 3f853aaf3..69d925ba7 100644
--- a/vendor/symfony/contracts/Service/LICENSE
+++ b/vendor/symfony/contracts/Service/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2020 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/contracts/Service/ServiceLocatorTrait.php b/vendor/symfony/contracts/Service/ServiceLocatorTrait.php
index 4ec6eb427..1737f50e9 100644
--- a/vendor/symfony/contracts/Service/ServiceLocatorTrait.php
+++ b/vendor/symfony/contracts/Service/ServiceLocatorTrait.php
@@ -14,6 +14,10 @@ namespace Symfony\Contracts\Service;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
+// Help opcache.preload discover always-needed symbols
+class_exists(ContainerExceptionInterface::class);
+class_exists(NotFoundExceptionInterface::class);
+
/**
* A trait to help implement ServiceProviderInterface.
*
@@ -83,7 +87,7 @@ trait ServiceLocatorTrait
} else {
$type = (new \ReflectionFunction($factory))->getReturnType();
- $this->providedTypes[$name] = $type ? ($type->allowsNull() ? '?' : '').$type->getName() : '?';
+ $this->providedTypes[$name] = $type ? ($type->allowsNull() ? '?' : '').($type instanceof \ReflectionNamedType ? $type->getName() : $type) : '?';
}
}
}
diff --git a/vendor/symfony/contracts/Service/ServiceSubscriberTrait.php b/vendor/symfony/contracts/Service/ServiceSubscriberTrait.php
index 5d9d456d0..82fb5ab36 100644
--- a/vendor/symfony/contracts/Service/ServiceSubscriberTrait.php
+++ b/vendor/symfony/contracts/Service/ServiceSubscriberTrait.php
@@ -40,7 +40,7 @@ trait ServiceSubscriberTrait
}
if (self::class === $method->getDeclaringClass()->name && ($returnType = $method->getReturnType()) && !$returnType->isBuiltin()) {
- $services[self::class.'::'.$method->name] = '?'.$returnType->getName();
+ $services[self::class.'::'.$method->name] = '?'.($returnType instanceof \ReflectionNamedType ? $returnType->getName() : $type);
}
}
diff --git a/vendor/symfony/contracts/Service/composer.json b/vendor/symfony/contracts/Service/composer.json
index f4209cc41..58748f374 100644
--- a/vendor/symfony/contracts/Service/composer.json
+++ b/vendor/symfony/contracts/Service/composer.json
@@ -16,7 +16,7 @@
}
],
"require": {
- "php": "^7.1.3",
+ "php": ">=7.1.3",
"psr/container": "^1.0"
},
"suggest": {
@@ -29,6 +29,10 @@
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
}
}
diff --git a/vendor/symfony/contracts/Translation/LICENSE b/vendor/symfony/contracts/Translation/LICENSE
index 3f853aaf3..69d925ba7 100644
--- a/vendor/symfony/contracts/Translation/LICENSE
+++ b/vendor/symfony/contracts/Translation/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2020 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/contracts/Translation/composer.json b/vendor/symfony/contracts/Translation/composer.json
index 09749d35f..7a449e0eb 100644
--- a/vendor/symfony/contracts/Translation/composer.json
+++ b/vendor/symfony/contracts/Translation/composer.json
@@ -16,7 +16,7 @@
}
],
"require": {
- "php": "^7.1.3"
+ "php": ">=7.1.3"
},
"suggest": {
"symfony/translation-implementation": ""
@@ -28,6 +28,10 @@
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
}
}
diff --git a/vendor/symfony/contracts/composer.json b/vendor/symfony/contracts/composer.json
index b9277e1dd..4ac096ed1 100644
--- a/vendor/symfony/contracts/composer.json
+++ b/vendor/symfony/contracts/composer.json
@@ -16,7 +16,7 @@
}
],
"require": {
- "php": "^7.1.3",
+ "php": ">=7.1.3",
"psr/cache": "^1.0",
"psr/container": "^1.0"
},
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
index e6fbfa64e..a22eca57b 100644
--- a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
@@ -1,6 +1,6 @@
'a',
'B' => 'b',
'C' => 'c',
@@ -510,6 +510,138 @@ return array(
'Ⴥ' => 'ⴥ',
'Ⴧ' => 'ⴧ',
'Ⴭ' => 'ⴭ',
+ 'Ꭰ' => 'ꭰ',
+ 'Ꭱ' => 'ꭱ',
+ 'Ꭲ' => 'ꭲ',
+ 'Ꭳ' => 'ꭳ',
+ 'Ꭴ' => 'ꭴ',
+ 'Ꭵ' => 'ꭵ',
+ 'Ꭶ' => 'ꭶ',
+ 'Ꭷ' => 'ꭷ',
+ 'Ꭸ' => 'ꭸ',
+ 'Ꭹ' => 'ꭹ',
+ 'Ꭺ' => 'ꭺ',
+ 'Ꭻ' => 'ꭻ',
+ 'Ꭼ' => 'ꭼ',
+ 'Ꭽ' => 'ꭽ',
+ 'Ꭾ' => 'ꭾ',
+ 'Ꭿ' => 'ꭿ',
+ 'Ꮀ' => 'ꮀ',
+ 'Ꮁ' => 'ꮁ',
+ 'Ꮂ' => 'ꮂ',
+ 'Ꮃ' => 'ꮃ',
+ 'Ꮄ' => 'ꮄ',
+ 'Ꮅ' => 'ꮅ',
+ 'Ꮆ' => 'ꮆ',
+ 'Ꮇ' => 'ꮇ',
+ 'Ꮈ' => 'ꮈ',
+ 'Ꮉ' => 'ꮉ',
+ 'Ꮊ' => 'ꮊ',
+ 'Ꮋ' => 'ꮋ',
+ 'Ꮌ' => 'ꮌ',
+ 'Ꮍ' => 'ꮍ',
+ 'Ꮎ' => 'ꮎ',
+ 'Ꮏ' => 'ꮏ',
+ 'Ꮐ' => 'ꮐ',
+ 'Ꮑ' => 'ꮑ',
+ 'Ꮒ' => 'ꮒ',
+ 'Ꮓ' => 'ꮓ',
+ 'Ꮔ' => 'ꮔ',
+ 'Ꮕ' => 'ꮕ',
+ 'Ꮖ' => 'ꮖ',
+ 'Ꮗ' => 'ꮗ',
+ 'Ꮘ' => 'ꮘ',
+ 'Ꮙ' => 'ꮙ',
+ 'Ꮚ' => 'ꮚ',
+ 'Ꮛ' => 'ꮛ',
+ 'Ꮜ' => 'ꮜ',
+ 'Ꮝ' => 'ꮝ',
+ 'Ꮞ' => 'ꮞ',
+ 'Ꮟ' => 'ꮟ',
+ 'Ꮠ' => 'ꮠ',
+ 'Ꮡ' => 'ꮡ',
+ 'Ꮢ' => 'ꮢ',
+ 'Ꮣ' => 'ꮣ',
+ 'Ꮤ' => 'ꮤ',
+ 'Ꮥ' => 'ꮥ',
+ 'Ꮦ' => 'ꮦ',
+ 'Ꮧ' => 'ꮧ',
+ 'Ꮨ' => 'ꮨ',
+ 'Ꮩ' => 'ꮩ',
+ 'Ꮪ' => 'ꮪ',
+ 'Ꮫ' => 'ꮫ',
+ 'Ꮬ' => 'ꮬ',
+ 'Ꮭ' => 'ꮭ',
+ 'Ꮮ' => 'ꮮ',
+ 'Ꮯ' => 'ꮯ',
+ 'Ꮰ' => 'ꮰ',
+ 'Ꮱ' => 'ꮱ',
+ 'Ꮲ' => 'ꮲ',
+ 'Ꮳ' => 'ꮳ',
+ 'Ꮴ' => 'ꮴ',
+ 'Ꮵ' => 'ꮵ',
+ 'Ꮶ' => 'ꮶ',
+ 'Ꮷ' => 'ꮷ',
+ 'Ꮸ' => 'ꮸ',
+ 'Ꮹ' => 'ꮹ',
+ 'Ꮺ' => 'ꮺ',
+ 'Ꮻ' => 'ꮻ',
+ 'Ꮼ' => 'ꮼ',
+ 'Ꮽ' => 'ꮽ',
+ 'Ꮾ' => 'ꮾ',
+ 'Ꮿ' => 'ꮿ',
+ 'Ᏸ' => 'ᏸ',
+ 'Ᏹ' => 'ᏹ',
+ 'Ᏺ' => 'ᏺ',
+ 'Ᏻ' => 'ᏻ',
+ 'Ᏼ' => 'ᏼ',
+ 'Ᏽ' => 'ᏽ',
+ 'Ა' => 'ა',
+ 'Ბ' => 'ბ',
+ 'Გ' => 'გ',
+ 'Დ' => 'დ',
+ 'Ე' => 'ე',
+ 'Ვ' => 'ვ',
+ 'Ზ' => 'ზ',
+ 'Თ' => 'თ',
+ 'Ი' => 'ი',
+ 'Კ' => 'კ',
+ 'Ლ' => 'ლ',
+ 'Მ' => 'მ',
+ 'Ნ' => 'ნ',
+ 'Ო' => 'ო',
+ 'Პ' => 'პ',
+ 'Ჟ' => 'ჟ',
+ 'Რ' => 'რ',
+ 'Ს' => 'ს',
+ 'Ტ' => 'ტ',
+ 'Უ' => 'უ',
+ 'Ფ' => 'ფ',
+ 'Ქ' => 'ქ',
+ 'Ღ' => 'ღ',
+ 'Ყ' => 'ყ',
+ 'Შ' => 'შ',
+ 'Ჩ' => 'ჩ',
+ 'Ც' => 'ც',
+ 'Ძ' => 'ძ',
+ 'Წ' => 'წ',
+ 'Ჭ' => 'ჭ',
+ 'Ხ' => 'ხ',
+ 'Ჯ' => 'ჯ',
+ 'Ჰ' => 'ჰ',
+ 'Ჱ' => 'ჱ',
+ 'Ჲ' => 'ჲ',
+ 'Ჳ' => 'ჳ',
+ 'Ჴ' => 'ჴ',
+ 'Ჵ' => 'ჵ',
+ 'Ჶ' => 'ჶ',
+ 'Ჷ' => 'ჷ',
+ 'Ჸ' => 'ჸ',
+ 'Ჹ' => 'ჹ',
+ 'Ჺ' => 'ჺ',
+ 'Ჽ' => 'ჽ',
+ 'Ჾ' => 'ჾ',
+ 'Ჿ' => 'ჿ',
'Ḁ' => 'ḁ',
'Ḃ' => 'ḃ',
'Ḅ' => 'ḅ',
@@ -993,8 +1125,24 @@ return array(
'Ɜ' => 'ɜ',
'Ɡ' => 'ɡ',
'Ɬ' => 'ɬ',
+ 'Ɪ' => 'ɪ',
'Ʞ' => 'ʞ',
'Ʇ' => 'ʇ',
+ 'Ʝ' => 'ʝ',
+ 'Ꭓ' => 'ꭓ',
+ 'Ꞵ' => 'ꞵ',
+ 'Ꞷ' => 'ꞷ',
+ 'Ꞹ' => 'ꞹ',
+ 'Ꞻ' => 'ꞻ',
+ 'Ꞽ' => 'ꞽ',
+ 'Ꞿ' => 'ꞿ',
+ 'Ꟃ' => 'ꟃ',
+ 'Ꞔ' => 'ꞔ',
+ 'Ʂ' => 'ʂ',
+ 'Ᶎ' => 'ᶎ',
+ 'Ꟈ' => 'ꟈ',
+ 'Ꟊ' => 'ꟊ',
+ 'Ꟶ' => 'ꟶ',
'A' => 'a',
'B' => 'b',
'C' => 'c',
@@ -1061,6 +1209,93 @@ return array(
'𐐥' => '𐑍',
'𐐦' => '𐑎',
'𐐧' => '𐑏',
+ '𐒰' => '𐓘',
+ '𐒱' => '𐓙',
+ '𐒲' => '𐓚',
+ '𐒳' => '𐓛',
+ '𐒴' => '𐓜',
+ '𐒵' => '𐓝',
+ '𐒶' => '𐓞',
+ '𐒷' => '𐓟',
+ '𐒸' => '𐓠',
+ '𐒹' => '𐓡',
+ '𐒺' => '𐓢',
+ '𐒻' => '𐓣',
+ '𐒼' => '𐓤',
+ '𐒽' => '𐓥',
+ '𐒾' => '𐓦',
+ '𐒿' => '𐓧',
+ '𐓀' => '𐓨',
+ '𐓁' => '𐓩',
+ '𐓂' => '𐓪',
+ '𐓃' => '𐓫',
+ '𐓄' => '𐓬',
+ '𐓅' => '𐓭',
+ '𐓆' => '𐓮',
+ '𐓇' => '𐓯',
+ '𐓈' => '𐓰',
+ '𐓉' => '𐓱',
+ '𐓊' => '𐓲',
+ '𐓋' => '𐓳',
+ '𐓌' => '𐓴',
+ '𐓍' => '𐓵',
+ '𐓎' => '𐓶',
+ '𐓏' => '𐓷',
+ '𐓐' => '𐓸',
+ '𐓑' => '𐓹',
+ '𐓒' => '𐓺',
+ '𐓓' => '𐓻',
+ '𐲀' => '𐳀',
+ '𐲁' => '𐳁',
+ '𐲂' => '𐳂',
+ '𐲃' => '𐳃',
+ '𐲄' => '𐳄',
+ '𐲅' => '𐳅',
+ '𐲆' => '𐳆',
+ '𐲇' => '𐳇',
+ '𐲈' => '𐳈',
+ '𐲉' => '𐳉',
+ '𐲊' => '𐳊',
+ '𐲋' => '𐳋',
+ '𐲌' => '𐳌',
+ '𐲍' => '𐳍',
+ '𐲎' => '𐳎',
+ '𐲏' => '𐳏',
+ '𐲐' => '𐳐',
+ '𐲑' => '𐳑',
+ '𐲒' => '𐳒',
+ '𐲓' => '𐳓',
+ '𐲔' => '𐳔',
+ '𐲕' => '𐳕',
+ '𐲖' => '𐳖',
+ '𐲗' => '𐳗',
+ '𐲘' => '𐳘',
+ '𐲙' => '𐳙',
+ '𐲚' => '𐳚',
+ '𐲛' => '𐳛',
+ '𐲜' => '𐳜',
+ '𐲝' => '𐳝',
+ '𐲞' => '𐳞',
+ '𐲟' => '𐳟',
+ '𐲠' => '𐳠',
+ '𐲡' => '𐳡',
+ '𐲢' => '𐳢',
+ '𐲣' => '𐳣',
+ '𐲤' => '𐳤',
+ '𐲥' => '𐳥',
+ '𐲦' => '𐳦',
+ '𐲧' => '𐳧',
+ '𐲨' => '𐳨',
+ '𐲩' => '𐳩',
+ '𐲪' => '𐳪',
+ '𐲫' => '𐳫',
+ '𐲬' => '𐳬',
+ '𐲭' => '𐳭',
+ '𐲮' => '𐳮',
+ '𐲯' => '𐳯',
+ '𐲰' => '𐳰',
+ '𐲱' => '𐳱',
+ '𐲲' => '𐳲',
'𑢠' => '𑣀',
'𑢡' => '𑣁',
'𑢢' => '𑣂',
@@ -1093,4 +1328,70 @@ return array(
'𑢽' => '𑣝',
'𑢾' => '𑣞',
'𑢿' => '𑣟',
+ '𖹀' => '𖹠',
+ '𖹁' => '𖹡',
+ '𖹂' => '𖹢',
+ '𖹃' => '𖹣',
+ '𖹄' => '𖹤',
+ '𖹅' => '𖹥',
+ '𖹆' => '𖹦',
+ '𖹇' => '𖹧',
+ '𖹈' => '𖹨',
+ '𖹉' => '𖹩',
+ '𖹊' => '𖹪',
+ '𖹋' => '𖹫',
+ '𖹌' => '𖹬',
+ '𖹍' => '𖹭',
+ '𖹎' => '𖹮',
+ '𖹏' => '𖹯',
+ '𖹐' => '𖹰',
+ '𖹑' => '𖹱',
+ '𖹒' => '𖹲',
+ '𖹓' => '𖹳',
+ '𖹔' => '𖹴',
+ '𖹕' => '𖹵',
+ '𖹖' => '𖹶',
+ '𖹗' => '𖹷',
+ '𖹘' => '𖹸',
+ '𖹙' => '𖹹',
+ '𖹚' => '𖹺',
+ '𖹛' => '𖹻',
+ '𖹜' => '𖹼',
+ '𖹝' => '𖹽',
+ '𖹞' => '𖹾',
+ '𖹟' => '𖹿',
+ '𞤀' => '𞤢',
+ '𞤁' => '𞤣',
+ '𞤂' => '𞤤',
+ '𞤃' => '𞤥',
+ '𞤄' => '𞤦',
+ '𞤅' => '𞤧',
+ '𞤆' => '𞤨',
+ '𞤇' => '𞤩',
+ '𞤈' => '𞤪',
+ '𞤉' => '𞤫',
+ '𞤊' => '𞤬',
+ '𞤋' => '𞤭',
+ '𞤌' => '𞤮',
+ '𞤍' => '𞤯',
+ '𞤎' => '𞤰',
+ '𞤏' => '𞤱',
+ '𞤐' => '𞤲',
+ '𞤑' => '𞤳',
+ '𞤒' => '𞤴',
+ '𞤓' => '𞤵',
+ '𞤔' => '𞤶',
+ '𞤕' => '𞤷',
+ '𞤖' => '𞤸',
+ '𞤗' => '𞤹',
+ '𞤘' => '𞤺',
+ '𞤙' => '𞤻',
+ '𞤚' => '𞤼',
+ '𞤛' => '𞤽',
+ '𞤜' => '𞤾',
+ '𞤝' => '𞤿',
+ '𞤞' => '𞥀',
+ '𞤟' => '𞥁',
+ '𞤠' => '𞥂',
+ '𞤡' => '𞥃',
);
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
index b8103b2e8..ecbc15895 100644
--- a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
@@ -1,6 +1,6 @@
'A',
'b' => 'B',
'c' => 'C',
@@ -225,6 +225,7 @@ return array(
'ɦ' => 'Ɦ',
'ɨ' => 'Ɨ',
'ɩ' => 'Ɩ',
+ 'ɪ' => 'Ɪ',
'ɫ' => 'Ɫ',
'ɬ' => 'Ɬ',
'ɯ' => 'Ɯ',
@@ -233,6 +234,7 @@ return array(
'ɵ' => 'Ɵ',
'ɽ' => 'Ɽ',
'ʀ' => 'Ʀ',
+ 'ʂ' => 'Ʂ',
'ʃ' => 'Ʃ',
'ʇ' => 'Ʇ',
'ʈ' => 'Ʈ',
@@ -241,6 +243,7 @@ return array(
'ʋ' => 'Ʋ',
'ʌ' => 'Ʌ',
'ʒ' => 'Ʒ',
+ 'ʝ' => 'Ʝ',
'ʞ' => 'Ʞ',
'ͅ' => 'Ι',
'ͱ' => 'Ͱ',
@@ -493,8 +496,70 @@ return array(
'ք' => 'Ք',
'օ' => 'Օ',
'ֆ' => 'Ֆ',
+ 'ა' => 'Ა',
+ 'ბ' => 'Ბ',
+ 'გ' => 'Გ',
+ 'დ' => 'Დ',
+ 'ე' => 'Ე',
+ 'ვ' => 'Ვ',
+ 'ზ' => 'Ზ',
+ 'თ' => 'Თ',
+ 'ი' => 'Ი',
+ 'კ' => 'Კ',
+ 'ლ' => 'Ლ',
+ 'მ' => 'Მ',
+ 'ნ' => 'Ნ',
+ 'ო' => 'Ო',
+ 'პ' => 'Პ',
+ 'ჟ' => 'Ჟ',
+ 'რ' => 'Რ',
+ 'ს' => 'Ს',
+ 'ტ' => 'Ტ',
+ 'უ' => 'Უ',
+ 'ფ' => 'Ფ',
+ 'ქ' => 'Ქ',
+ 'ღ' => 'Ღ',
+ 'ყ' => 'Ყ',
+ 'შ' => 'Შ',
+ 'ჩ' => 'Ჩ',
+ 'ც' => 'Ც',
+ 'ძ' => 'Ძ',
+ 'წ' => 'Წ',
+ 'ჭ' => 'Ჭ',
+ 'ხ' => 'Ხ',
+ 'ჯ' => 'Ჯ',
+ 'ჰ' => 'Ჰ',
+ 'ჱ' => 'Ჱ',
+ 'ჲ' => 'Ჲ',
+ 'ჳ' => 'Ჳ',
+ 'ჴ' => 'Ჴ',
+ 'ჵ' => 'Ჵ',
+ 'ჶ' => 'Ჶ',
+ 'ჷ' => 'Ჷ',
+ 'ჸ' => 'Ჸ',
+ 'ჹ' => 'Ჹ',
+ 'ჺ' => 'Ჺ',
+ 'ჽ' => 'Ჽ',
+ 'ჾ' => 'Ჾ',
+ 'ჿ' => 'Ჿ',
+ 'ᏸ' => 'Ᏸ',
+ 'ᏹ' => 'Ᏹ',
+ 'ᏺ' => 'Ᏺ',
+ 'ᏻ' => 'Ᏻ',
+ 'ᏼ' => 'Ᏼ',
+ 'ᏽ' => 'Ᏽ',
+ 'ᲀ' => 'В',
+ 'ᲁ' => 'Д',
+ 'ᲂ' => 'О',
+ 'ᲃ' => 'С',
+ 'ᲄ' => 'Т',
+ 'ᲅ' => 'Т',
+ 'ᲆ' => 'Ъ',
+ 'ᲇ' => 'Ѣ',
+ 'ᲈ' => 'Ꙋ',
'ᵹ' => 'Ᵹ',
'ᵽ' => 'Ᵽ',
+ 'ᶎ' => 'Ᶎ',
'ḁ' => 'Ḁ',
'ḃ' => 'Ḃ',
'ḅ' => 'Ḅ',
@@ -993,6 +1058,7 @@ return array(
'ꞌ' => 'Ꞌ',
'ꞑ' => 'Ꞑ',
'ꞓ' => 'Ꞓ',
+ 'ꞔ' => 'Ꞔ',
'ꞗ' => 'Ꞗ',
'ꞙ' => 'Ꞙ',
'ꞛ' => 'Ꞛ',
@@ -1003,6 +1069,97 @@ return array(
'ꞥ' => 'Ꞥ',
'ꞧ' => 'Ꞧ',
'ꞩ' => 'Ꞩ',
+ 'ꞵ' => 'Ꞵ',
+ 'ꞷ' => 'Ꞷ',
+ 'ꞹ' => 'Ꞹ',
+ 'ꞻ' => 'Ꞻ',
+ 'ꞽ' => 'Ꞽ',
+ 'ꞿ' => 'Ꞿ',
+ 'ꟃ' => 'Ꟃ',
+ 'ꟈ' => 'Ꟈ',
+ 'ꟊ' => 'Ꟊ',
+ 'ꟶ' => 'Ꟶ',
+ 'ꭓ' => 'Ꭓ',
+ 'ꭰ' => 'Ꭰ',
+ 'ꭱ' => 'Ꭱ',
+ 'ꭲ' => 'Ꭲ',
+ 'ꭳ' => 'Ꭳ',
+ 'ꭴ' => 'Ꭴ',
+ 'ꭵ' => 'Ꭵ',
+ 'ꭶ' => 'Ꭶ',
+ 'ꭷ' => 'Ꭷ',
+ 'ꭸ' => 'Ꭸ',
+ 'ꭹ' => 'Ꭹ',
+ 'ꭺ' => 'Ꭺ',
+ 'ꭻ' => 'Ꭻ',
+ 'ꭼ' => 'Ꭼ',
+ 'ꭽ' => 'Ꭽ',
+ 'ꭾ' => 'Ꭾ',
+ 'ꭿ' => 'Ꭿ',
+ 'ꮀ' => 'Ꮀ',
+ 'ꮁ' => 'Ꮁ',
+ 'ꮂ' => 'Ꮂ',
+ 'ꮃ' => 'Ꮃ',
+ 'ꮄ' => 'Ꮄ',
+ 'ꮅ' => 'Ꮅ',
+ 'ꮆ' => 'Ꮆ',
+ 'ꮇ' => 'Ꮇ',
+ 'ꮈ' => 'Ꮈ',
+ 'ꮉ' => 'Ꮉ',
+ 'ꮊ' => 'Ꮊ',
+ 'ꮋ' => 'Ꮋ',
+ 'ꮌ' => 'Ꮌ',
+ 'ꮍ' => 'Ꮍ',
+ 'ꮎ' => 'Ꮎ',
+ 'ꮏ' => 'Ꮏ',
+ 'ꮐ' => 'Ꮐ',
+ 'ꮑ' => 'Ꮑ',
+ 'ꮒ' => 'Ꮒ',
+ 'ꮓ' => 'Ꮓ',
+ 'ꮔ' => 'Ꮔ',
+ 'ꮕ' => 'Ꮕ',
+ 'ꮖ' => 'Ꮖ',
+ 'ꮗ' => 'Ꮗ',
+ 'ꮘ' => 'Ꮘ',
+ 'ꮙ' => 'Ꮙ',
+ 'ꮚ' => 'Ꮚ',
+ 'ꮛ' => 'Ꮛ',
+ 'ꮜ' => 'Ꮜ',
+ 'ꮝ' => 'Ꮝ',
+ 'ꮞ' => 'Ꮞ',
+ 'ꮟ' => 'Ꮟ',
+ 'ꮠ' => 'Ꮠ',
+ 'ꮡ' => 'Ꮡ',
+ 'ꮢ' => 'Ꮢ',
+ 'ꮣ' => 'Ꮣ',
+ 'ꮤ' => 'Ꮤ',
+ 'ꮥ' => 'Ꮥ',
+ 'ꮦ' => 'Ꮦ',
+ 'ꮧ' => 'Ꮧ',
+ 'ꮨ' => 'Ꮨ',
+ 'ꮩ' => 'Ꮩ',
+ 'ꮪ' => 'Ꮪ',
+ 'ꮫ' => 'Ꮫ',
+ 'ꮬ' => 'Ꮬ',
+ 'ꮭ' => 'Ꮭ',
+ 'ꮮ' => 'Ꮮ',
+ 'ꮯ' => 'Ꮯ',
+ 'ꮰ' => 'Ꮰ',
+ 'ꮱ' => 'Ꮱ',
+ 'ꮲ' => 'Ꮲ',
+ 'ꮳ' => 'Ꮳ',
+ 'ꮴ' => 'Ꮴ',
+ 'ꮵ' => 'Ꮵ',
+ 'ꮶ' => 'Ꮶ',
+ 'ꮷ' => 'Ꮷ',
+ 'ꮸ' => 'Ꮸ',
+ 'ꮹ' => 'Ꮹ',
+ 'ꮺ' => 'Ꮺ',
+ 'ꮻ' => 'Ꮻ',
+ 'ꮼ' => 'Ꮼ',
+ 'ꮽ' => 'Ꮽ',
+ 'ꮾ' => 'Ꮾ',
+ 'ꮿ' => 'Ꮿ',
'a' => 'A',
'b' => 'B',
'c' => 'C',
@@ -1069,6 +1226,93 @@ return array(
'𐑍' => '𐐥',
'𐑎' => '𐐦',
'𐑏' => '𐐧',
+ '𐓘' => '𐒰',
+ '𐓙' => '𐒱',
+ '𐓚' => '𐒲',
+ '𐓛' => '𐒳',
+ '𐓜' => '𐒴',
+ '𐓝' => '𐒵',
+ '𐓞' => '𐒶',
+ '𐓟' => '𐒷',
+ '𐓠' => '𐒸',
+ '𐓡' => '𐒹',
+ '𐓢' => '𐒺',
+ '𐓣' => '𐒻',
+ '𐓤' => '𐒼',
+ '𐓥' => '𐒽',
+ '𐓦' => '𐒾',
+ '𐓧' => '𐒿',
+ '𐓨' => '𐓀',
+ '𐓩' => '𐓁',
+ '𐓪' => '𐓂',
+ '𐓫' => '𐓃',
+ '𐓬' => '𐓄',
+ '𐓭' => '𐓅',
+ '𐓮' => '𐓆',
+ '𐓯' => '𐓇',
+ '𐓰' => '𐓈',
+ '𐓱' => '𐓉',
+ '𐓲' => '𐓊',
+ '𐓳' => '𐓋',
+ '𐓴' => '𐓌',
+ '𐓵' => '𐓍',
+ '𐓶' => '𐓎',
+ '𐓷' => '𐓏',
+ '𐓸' => '𐓐',
+ '𐓹' => '𐓑',
+ '𐓺' => '𐓒',
+ '𐓻' => '𐓓',
+ '𐳀' => '𐲀',
+ '𐳁' => '𐲁',
+ '𐳂' => '𐲂',
+ '𐳃' => '𐲃',
+ '𐳄' => '𐲄',
+ '𐳅' => '𐲅',
+ '𐳆' => '𐲆',
+ '𐳇' => '𐲇',
+ '𐳈' => '𐲈',
+ '𐳉' => '𐲉',
+ '𐳊' => '𐲊',
+ '𐳋' => '𐲋',
+ '𐳌' => '𐲌',
+ '𐳍' => '𐲍',
+ '𐳎' => '𐲎',
+ '𐳏' => '𐲏',
+ '𐳐' => '𐲐',
+ '𐳑' => '𐲑',
+ '𐳒' => '𐲒',
+ '𐳓' => '𐲓',
+ '𐳔' => '𐲔',
+ '𐳕' => '𐲕',
+ '𐳖' => '𐲖',
+ '𐳗' => '𐲗',
+ '𐳘' => '𐲘',
+ '𐳙' => '𐲙',
+ '𐳚' => '𐲚',
+ '𐳛' => '𐲛',
+ '𐳜' => '𐲜',
+ '𐳝' => '𐲝',
+ '𐳞' => '𐲞',
+ '𐳟' => '𐲟',
+ '𐳠' => '𐲠',
+ '𐳡' => '𐲡',
+ '𐳢' => '𐲢',
+ '𐳣' => '𐲣',
+ '𐳤' => '𐲤',
+ '𐳥' => '𐲥',
+ '𐳦' => '𐲦',
+ '𐳧' => '𐲧',
+ '𐳨' => '𐲨',
+ '𐳩' => '𐲩',
+ '𐳪' => '𐲪',
+ '𐳫' => '𐲫',
+ '𐳬' => '𐲬',
+ '𐳭' => '𐲭',
+ '𐳮' => '𐲮',
+ '𐳯' => '𐲯',
+ '𐳰' => '𐲰',
+ '𐳱' => '𐲱',
+ '𐳲' => '𐲲',
'𑣀' => '𑢠',
'𑣁' => '𑢡',
'𑣂' => '𑢢',
@@ -1101,4 +1345,70 @@ return array(
'𑣝' => '𑢽',
'𑣞' => '𑢾',
'𑣟' => '𑢿',
+ '𖹠' => '𖹀',
+ '𖹡' => '𖹁',
+ '𖹢' => '𖹂',
+ '𖹣' => '𖹃',
+ '𖹤' => '𖹄',
+ '𖹥' => '𖹅',
+ '𖹦' => '𖹆',
+ '𖹧' => '𖹇',
+ '𖹨' => '𖹈',
+ '𖹩' => '𖹉',
+ '𖹪' => '𖹊',
+ '𖹫' => '𖹋',
+ '𖹬' => '𖹌',
+ '𖹭' => '𖹍',
+ '𖹮' => '𖹎',
+ '𖹯' => '𖹏',
+ '𖹰' => '𖹐',
+ '𖹱' => '𖹑',
+ '𖹲' => '𖹒',
+ '𖹳' => '𖹓',
+ '𖹴' => '𖹔',
+ '𖹵' => '𖹕',
+ '𖹶' => '𖹖',
+ '𖹷' => '𖹗',
+ '𖹸' => '𖹘',
+ '𖹹' => '𖹙',
+ '𖹺' => '𖹚',
+ '𖹻' => '𖹛',
+ '𖹼' => '𖹜',
+ '𖹽' => '𖹝',
+ '𖹾' => '𖹞',
+ '𖹿' => '𖹟',
+ '𞤢' => '𞤀',
+ '𞤣' => '𞤁',
+ '𞤤' => '𞤂',
+ '𞤥' => '𞤃',
+ '𞤦' => '𞤄',
+ '𞤧' => '𞤅',
+ '𞤨' => '𞤆',
+ '𞤩' => '𞤇',
+ '𞤪' => '𞤈',
+ '𞤫' => '𞤉',
+ '𞤬' => '𞤊',
+ '𞤭' => '𞤋',
+ '𞤮' => '𞤌',
+ '𞤯' => '𞤍',
+ '𞤰' => '𞤎',
+ '𞤱' => '𞤏',
+ '𞤲' => '𞤐',
+ '𞤳' => '𞤑',
+ '𞤴' => '𞤒',
+ '𞤵' => '𞤓',
+ '𞤶' => '𞤔',
+ '𞤷' => '𞤕',
+ '𞤸' => '𞤖',
+ '𞤹' => '𞤗',
+ '𞤺' => '𞤘',
+ '𞤻' => '𞤙',
+ '𞤼' => '𞤚',
+ '𞤽' => '𞤛',
+ '𞤾' => '𞤜',
+ '𞤿' => '𞤝',
+ '𞥀' => '𞤞',
+ '𞥁' => '𞤟',
+ '𞥂' => '𞤠',
+ '𞥃' => '𞤡',
);
diff --git a/vendor/symfony/polyfill-mbstring/composer.json b/vendor/symfony/polyfill-mbstring/composer.json
index d3dcc244c..06e6b31a2 100644
--- a/vendor/symfony/polyfill-mbstring/composer.json
+++ b/vendor/symfony/polyfill-mbstring/composer.json
@@ -28,7 +28,11 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
- "dev-master": "1.17-dev"
+ "dev-master": "1.18-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
}
}