aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/vobject/lib
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/vobject/lib')
-rw-r--r--vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php51
-rw-r--r--vendor/sabre/vobject/lib/Cli.php351
-rw-r--r--vendor/sabre/vobject/lib/Component.php236
-rw-r--r--vendor/sabre/vobject/lib/Component/Available.php43
-rw-r--r--vendor/sabre/vobject/lib/Component/VAlarm.php46
-rw-r--r--vendor/sabre/vobject/lib/Component/VAvailability.php64
-rw-r--r--vendor/sabre/vobject/lib/Component/VCalendar.php295
-rw-r--r--vendor/sabre/vobject/lib/Component/VCard.php314
-rw-r--r--vendor/sabre/vobject/lib/Component/VEvent.php96
-rw-r--r--vendor/sabre/vobject/lib/Component/VFreeBusy.php38
-rw-r--r--vendor/sabre/vobject/lib/Component/VJournal.php61
-rw-r--r--vendor/sabre/vobject/lib/Component/VTimeZone.php19
-rw-r--r--vendor/sabre/vobject/lib/Component/VTodo.php101
-rw-r--r--vendor/sabre/vobject/lib/DateTimeParser.php164
-rw-r--r--vendor/sabre/vobject/lib/Document.php94
-rw-r--r--vendor/sabre/vobject/lib/ElementList.php22
-rw-r--r--vendor/sabre/vobject/lib/EofException.php4
-rw-r--r--vendor/sabre/vobject/lib/FreeBusyData.php68
-rw-r--r--vendor/sabre/vobject/lib/FreeBusyGenerator.php220
-rw-r--r--vendor/sabre/vobject/lib/ITip/Broker.php221
-rw-r--r--vendor/sabre/vobject/lib/ITip/ITipException.php3
-rw-r--r--vendor/sabre/vobject/lib/ITip/Message.php15
-rw-r--r--vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php4
-rw-r--r--vendor/sabre/vobject/lib/InvalidDataException.php3
-rw-r--r--vendor/sabre/vobject/lib/Node.php82
-rw-r--r--vendor/sabre/vobject/lib/PHPUnitAssertions.php28
-rw-r--r--vendor/sabre/vobject/lib/Parameter.php233
-rw-r--r--vendor/sabre/vobject/lib/ParseException.php3
-rw-r--r--vendor/sabre/vobject/lib/Parser/Json.php63
-rw-r--r--vendor/sabre/vobject/lib/Parser/MimeDir.php187
-rw-r--r--vendor/sabre/vobject/lib/Parser/Parser.php21
-rw-r--r--vendor/sabre/vobject/lib/Parser/XML.php137
-rw-r--r--vendor/sabre/vobject/lib/Parser/XML/Element/KeyValue.php19
-rw-r--r--vendor/sabre/vobject/lib/Property.php268
-rw-r--r--vendor/sabre/vobject/lib/Property/Binary.php47
-rw-r--r--vendor/sabre/vobject/lib/Property/Boolean.php33
-rw-r--r--vendor/sabre/vobject/lib/Property/FlatText.php12
-rw-r--r--vendor/sabre/vobject/lib/Property/FloatValue.php54
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/CalAddress.php15
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/Date.php4
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php145
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/Duration.php28
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/Period.php58
-rw-r--r--vendor/sabre/vobject/lib/Property/ICalendar/Recur.php133
-rw-r--r--vendor/sabre/vobject/lib/Property/IntegerValue.php37
-rw-r--r--vendor/sabre/vobject/lib/Property/Text.php131
-rw-r--r--vendor/sabre/vobject/lib/Property/Time.php35
-rw-r--r--vendor/sabre/vobject/lib/Property/Unknown.php15
-rw-r--r--vendor/sabre/vobject/lib/Property/Uri.php34
-rw-r--r--vendor/sabre/vobject/lib/Property/UtcOffset.php27
-rw-r--r--vendor/sabre/vobject/lib/Property/VCard/Date.php17
-rw-r--r--vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php122
-rw-r--r--vendor/sabre/vobject/lib/Property/VCard/DateTime.php10
-rw-r--r--vendor/sabre/vobject/lib/Property/VCard/LanguageTag.php22
-rw-r--r--vendor/sabre/vobject/lib/Property/VCard/TimeStamp.php33
-rw-r--r--vendor/sabre/vobject/lib/Reader.php31
-rw-r--r--vendor/sabre/vobject/lib/Recur/EventIterator.php103
-rw-r--r--vendor/sabre/vobject/lib/Recur/MaxInstancesExceededException.php3
-rw-r--r--vendor/sabre/vobject/lib/Recur/NoInstancesException.php4
-rw-r--r--vendor/sabre/vobject/lib/Recur/RDateIterator.php73
-rw-r--r--vendor/sabre/vobject/lib/Recur/RRuleIterator.php411
-rw-r--r--vendor/sabre/vobject/lib/Settings.php11
-rw-r--r--vendor/sabre/vobject/lib/Splitter/ICalendar.php35
-rw-r--r--vendor/sabre/vobject/lib/Splitter/SplitterInterface.php13
-rw-r--r--vendor/sabre/vobject/lib/Splitter/VCard.php22
-rw-r--r--vendor/sabre/vobject/lib/StringUtil.php24
-rw-r--r--vendor/sabre/vobject/lib/TimeZoneUtil.php83
-rw-r--r--vendor/sabre/vobject/lib/UUIDUtil.php19
-rw-r--r--vendor/sabre/vobject/lib/VCardConverter.php184
-rw-r--r--vendor/sabre/vobject/lib/Version.php7
-rw-r--r--vendor/sabre/vobject/lib/Writer.php30
-rw-r--r--vendor/sabre/vobject/lib/timezonedata/exchangezones.php156
-rw-r--r--vendor/sabre/vobject/lib/timezonedata/lotuszones.php166
-rw-r--r--vendor/sabre/vobject/lib/timezonedata/php-workaround.php48
-rw-r--r--vendor/sabre/vobject/lib/timezonedata/windowszones.php254
75 files changed, 3587 insertions, 2676 deletions
diff --git a/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php b/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php
index fade50e16..553912249 100644
--- a/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php
+++ b/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php
@@ -11,8 +11,8 @@ use Sabre\VObject\Component\VCalendar;
* @author Dominik Tobschall (http://tobschall.de/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class BirthdayCalendarGenerator
-{
+class BirthdayCalendarGenerator {
+
/**
* Input objects.
*
@@ -41,11 +41,12 @@ class BirthdayCalendarGenerator
*
* @param mixed $objects
*/
- public function __construct($objects = null)
- {
+ function __construct($objects = null) {
+
if ($objects) {
$this->setObjects($objects);
}
+
}
/**
@@ -55,38 +56,52 @@ class BirthdayCalendarGenerator
* It's also possible to supply an array of strings or objects.
*
* @param mixed $objects
+ *
+ * @return void
*/
- public function setObjects($objects)
- {
+ function setObjects($objects) {
+
if (!is_array($objects)) {
$objects = [$objects];
}
$this->objects = [];
foreach ($objects as $object) {
+
if (is_string($object)) {
+
$vObj = Reader::read($object);
if (!$vObj instanceof Component\VCard) {
throw new \InvalidArgumentException('String could not be parsed as \\Sabre\\VObject\\Component\\VCard by setObjects');
}
$this->objects[] = $vObj;
+
} elseif ($object instanceof Component\VCard) {
+
$this->objects[] = $object;
+
} else {
+
throw new \InvalidArgumentException('You can only pass strings or \\Sabre\\VObject\\Component\\VCard arguments to setObjects');
+
}
+
}
+
}
/**
- * Sets the output format for the SUMMARY.
+ * Sets the output format for the SUMMARY
*
* @param string $format
+ *
+ * @return void
*/
- public function setFormat($format)
- {
+ function setFormat($format) {
+
$this->format = $format;
+
}
/**
@@ -94,11 +109,12 @@ class BirthdayCalendarGenerator
*
* @return Component/VCalendar
*/
- public function getResult()
- {
+ function getResult() {
+
$calendar = new VCalendar();
foreach ($this->objects as $object) {
+
// Skip if there is no BDAY property.
if (!$object->select('BDAY')) {
continue;
@@ -136,7 +152,7 @@ class BirthdayCalendarGenerator
$unknownYear = false;
if (!$dateParts['year']) {
- $object->BDAY = self::DEFAULT_YEAR.'-'.$dateParts['month'].'-'.$dateParts['date'];
+ $object->BDAY = self::DEFAULT_YEAR . '-' . $dateParts['month'] . '-' . $dateParts['date'];
$unknownYear = true;
}
@@ -145,8 +161,8 @@ class BirthdayCalendarGenerator
$event = $calendar->add('VEVENT', [
'SUMMARY' => sprintf($this->format, $object->FN->getValue()),
'DTSTART' => new \DateTime($object->BDAY->getValue()),
- 'RRULE' => 'FREQ=YEARLY',
- 'TRANSP' => 'TRANSPARENT',
+ 'RRULE' => 'FREQ=YEARLY',
+ 'TRANSP' => 'TRANSPARENT',
]);
// add VALUE=date
@@ -156,17 +172,20 @@ class BirthdayCalendarGenerator
if ($unknownYear) {
$event->add('X-SABRE-BDAY', 'BDAY', [
'X-SABRE-VCARD-UID' => $object->UID->getValue(),
- 'X-SABRE-VCARD-FN' => $object->FN->getValue(),
+ 'X-SABRE-VCARD-FN' => $object->FN->getValue(),
'X-SABRE-OMIT-YEAR' => self::DEFAULT_YEAR,
]);
} else {
$event->add('X-SABRE-BDAY', 'BDAY', [
'X-SABRE-VCARD-UID' => $object->UID->getValue(),
- 'X-SABRE-VCARD-FN' => $object->FN->getValue(),
+ 'X-SABRE-VCARD-FN' => $object->FN->getValue(),
]);
}
+
}
return $calendar;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Cli.php b/vendor/sabre/vobject/lib/Cli.php
index 70b5e8d6e..df7ac22f3 100644
--- a/vendor/sabre/vobject/lib/Cli.php
+++ b/vendor/sabre/vobject/lib/Cli.php
@@ -12,8 +12,8 @@ use
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Cli
-{
+class Cli {
+
/**
* No output.
*
@@ -96,8 +96,8 @@ class Cli
*
* @return int
*/
- public function main(array $argv)
- {
+ function main(array $argv) {
+
// @codeCoverageIgnoreStart
// We cannot easily test this, so we'll skip it. Pretty basic anyway.
@@ -113,96 +113,103 @@ class Cli
// @codeCoverageIgnoreEnd
+
try {
+
list($options, $positional) = $this->parseArguments($argv);
if (isset($options['q'])) {
$this->quiet = true;
}
- $this->log($this->colorize('green', 'sabre/vobject ').$this->colorize('yellow', Version::VERSION));
+ $this->log($this->colorize('green', "sabre/vobject ") . $this->colorize('yellow', Version::VERSION));
foreach ($options as $name => $value) {
+
switch ($name) {
- case 'q':
+
+ case 'q' :
// Already handled earlier.
break;
- case 'h':
- case 'help':
+ case 'h' :
+ case 'help' :
$this->showHelp();
-
return 0;
break;
- case 'format':
+ case 'format' :
switch ($value) {
+
// jcard/jcal documents
- case 'jcard':
- case 'jcal':
+ case 'jcard' :
+ case 'jcal' :
// specific document versions
- case 'vcard21':
- case 'vcard30':
- case 'vcard40':
- case 'icalendar20':
+ case 'vcard21' :
+ case 'vcard30' :
+ case 'vcard40' :
+ case 'icalendar20' :
// specific formats
- case 'json':
- case 'mimedir':
+ case 'json' :
+ case 'mimedir' :
// icalendar/vcad
- case 'icalendar':
- case 'vcard':
+ case 'icalendar' :
+ case 'vcard' :
$this->format = $value;
break;
- default:
- throw new InvalidArgumentException('Unknown format: '.$value);
+ default :
+ throw new InvalidArgumentException('Unknown format: ' . $value);
+
}
break;
- case 'pretty':
+ case 'pretty' :
if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
$this->pretty = true;
}
break;
- case 'forgiving':
+ case 'forgiving' :
$this->forgiving = true;
break;
- case 'inputformat':
+ case 'inputformat' :
switch ($value) {
// json formats
- case 'jcard':
- case 'jcal':
- case 'json':
+ case 'jcard' :
+ case 'jcal' :
+ case 'json' :
$this->inputFormat = 'json';
break;
// mimedir formats
- case 'mimedir':
- case 'icalendar':
- case 'vcard':
- case 'vcard21':
- case 'vcard30':
- case 'vcard40':
- case 'icalendar20':
+ case 'mimedir' :
+ case 'icalendar' :
+ case 'vcard' :
+ case 'vcard21' :
+ case 'vcard30' :
+ case 'vcard40' :
+ case 'icalendar20' :
$this->inputFormat = 'mimedir';
break;
- default:
- throw new InvalidArgumentException('Unknown format: '.$value);
+ default :
+ throw new InvalidArgumentException('Unknown format: ' . $value);
+
}
break;
- default:
- throw new InvalidArgumentException('Unknown option: '.$name);
+ default :
+ throw new InvalidArgumentException('Unknown option: ' . $name);
+
}
+
}
- if (0 === count($positional)) {
+ if (count($positional) === 0) {
$this->showHelp();
-
return 1;
}
- if (1 === count($positional)) {
+ if (count($positional) === 1) {
throw new InvalidArgumentException('Inputfile is a required argument');
}
@@ -211,12 +218,12 @@ class Cli
}
if (!in_array($positional[0], ['validate', 'repair', 'convert', 'color'])) {
- throw new InvalidArgumentException('Uknown command: '.$positional[0]);
+ throw new InvalidArgumentException('Uknown command: ' . $positional[0]);
}
+
} catch (InvalidArgumentException $e) {
$this->showHelp();
- $this->log('Error: '.$e->getMessage(), 'red');
-
+ $this->log('Error: ' . $e->getMessage(), 'red');
return 1;
}
@@ -225,71 +232,76 @@ class Cli
$this->inputPath = $positional[1];
$this->outputPath = isset($positional[2]) ? $positional[2] : '-';
- if ('-' !== $this->outputPath) {
+ if ($this->outputPath !== '-') {
$this->stdout = fopen($this->outputPath, 'w');
}
if (!$this->inputFormat) {
- if ('.json' === substr($this->inputPath, -5)) {
+ if (substr($this->inputPath, -5) === '.json') {
$this->inputFormat = 'json';
} else {
$this->inputFormat = 'mimedir';
}
}
if (!$this->format) {
- if ('.json' === substr($this->outputPath, -5)) {
+ if (substr($this->outputPath, -5) === '.json') {
$this->format = 'json';
} else {
$this->format = 'mimedir';
}
}
+
$realCode = 0;
try {
+
while ($input = $this->readInput()) {
+
$returnCode = $this->$command($input);
- if (0 !== $returnCode) {
- $realCode = $returnCode;
- }
+ if ($returnCode !== 0) $realCode = $returnCode;
+
}
+
} catch (EofException $e) {
// end of file
} catch (\Exception $e) {
- $this->log('Error: '.$e->getMessage(), 'red');
-
+ $this->log('Error: ' . $e->getMessage(), 'red');
return 2;
}
return $realCode;
+
}
/**
* Shows the help message.
+ *
+ * @return void
*/
- protected function showHelp()
- {
+ protected function showHelp() {
+
$this->log('Usage:', 'yellow');
- $this->log(' vobject [options] command [arguments]');
+ $this->log(" vobject [options] command [arguments]");
$this->log('');
$this->log('Options:', 'yellow');
- $this->log($this->colorize('green', ' -q ')."Don't output anything.");
- $this->log($this->colorize('green', ' -help -h ').'Display this help message.');
- $this->log($this->colorize('green', ' --format ').'Convert to a specific format. Must be one of: vcard, vcard21,');
- $this->log($this->colorize('green', ' --forgiving ').'Makes the parser less strict.');
- $this->log(' vcard30, vcard40, icalendar20, jcal, jcard, json, mimedir.');
- $this->log($this->colorize('green', ' --inputformat ').'If the input format cannot be guessed from the extension, it');
- $this->log(' must be specified here.');
+ $this->log($this->colorize('green', ' -q ') . "Don't output anything.");
+ $this->log($this->colorize('green', ' -help -h ') . "Display this help message.");
+ $this->log($this->colorize('green', ' --format ') . "Convert to a specific format. Must be one of: vcard, vcard21,");
+ $this->log($this->colorize('green', ' --forgiving ') . "Makes the parser less strict.");
+ $this->log(" vcard30, vcard40, icalendar20, jcal, jcard, json, mimedir.");
+ $this->log($this->colorize('green', ' --inputformat ') . "If the input format cannot be guessed from the extension, it");
+ $this->log(" must be specified here.");
// Only PHP 5.4 and up
if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
- $this->log($this->colorize('green', ' --pretty ').'json pretty-print.');
+ $this->log($this->colorize('green', ' --pretty ') . "json pretty-print.");
}
$this->log('');
$this->log('Commands:', 'yellow');
- $this->log($this->colorize('green', ' validate').' source_file Validates a file for correctness.');
- $this->log($this->colorize('green', ' repair').' source_file [output_file] Repairs a file.');
- $this->log($this->colorize('green', ' convert').' source_file [output_file] Converts a file.');
- $this->log($this->colorize('green', ' color').' source_file Colorize a file, useful for debbugging.');
+ $this->log($this->colorize('green', ' validate') . ' source_file Validates a file for correctness.');
+ $this->log($this->colorize('green', ' repair') . ' source_file [output_file] Repairs a file.');
+ $this->log($this->colorize('green', ' convert') . ' source_file [output_file] Converts a file.');
+ $this->log($this->colorize('green', ' color') . ' source_file Colorize a file, useful for debbugging.');
$this->log(
<<<HELP
@@ -307,6 +319,7 @@ HELP
$this->log(' vobject color calendar.ics');
$this->log('');
$this->log('https://github.com/fruux/sabre-vobject', 'purple');
+
}
/**
@@ -316,23 +329,24 @@ HELP
*
* @return int
*/
- protected function validate(Component $vObj)
- {
+ protected function validate(Component $vObj) {
+
$returnCode = 0;
switch ($vObj->name) {
- case 'VCALENDAR':
- $this->log('iCalendar: '.(string) $vObj->VERSION);
+ case 'VCALENDAR' :
+ $this->log("iCalendar: " . (string)$vObj->VERSION);
break;
- case 'VCARD':
- $this->log('vCard: '.(string) $vObj->VERSION);
+ case 'VCARD' :
+ $this->log("vCard: " . (string)$vObj->VERSION);
break;
}
$warnings = $vObj->validate();
if (!count($warnings)) {
- $this->log(' No warnings!');
+ $this->log(" No warnings!");
} else {
+
$levels = [
1 => 'REPAIRED',
2 => 'WARNING',
@@ -340,15 +354,19 @@ HELP
];
$returnCode = 2;
foreach ($warnings as $warn) {
+
$extra = '';
if ($warn['node'] instanceof Property) {
- $extra = ' (property: "'.$warn['node']->name.'")';
+ $extra = ' (property: "' . $warn['node']->name . '")';
}
- $this->log(' ['.$levels[$warn['level']].'] '.$warn['message'].$extra);
+ $this->log(" [" . $levels[$warn['level']] . '] ' . $warn['message'] . $extra);
+
}
+
}
return $returnCode;
+
}
/**
@@ -358,23 +376,24 @@ HELP
*
* @return int
*/
- protected function repair(Component $vObj)
- {
+ protected function repair(Component $vObj) {
+
$returnCode = 0;
switch ($vObj->name) {
- case 'VCALENDAR':
- $this->log('iCalendar: '.(string) $vObj->VERSION);
+ case 'VCALENDAR' :
+ $this->log("iCalendar: " . (string)$vObj->VERSION);
break;
- case 'VCARD':
- $this->log('vCard: '.(string) $vObj->VERSION);
+ case 'VCARD' :
+ $this->log("vCard: " . (string)$vObj->VERSION);
break;
}
$warnings = $vObj->validate(Node::REPAIR);
if (!count($warnings)) {
- $this->log(' No warnings!');
+ $this->log(" No warnings!");
} else {
+
$levels = [
1 => 'REPAIRED',
2 => 'WARNING',
@@ -382,16 +401,20 @@ HELP
];
$returnCode = 2;
foreach ($warnings as $warn) {
+
$extra = '';
if ($warn['node'] instanceof Property) {
- $extra = ' (property: "'.$warn['node']->name.'")';
+ $extra = ' (property: "' . $warn['node']->name . '")';
}
- $this->log(' ['.$levels[$warn['level']].'] '.$warn['message'].$extra);
+ $this->log(" [" . $levels[$warn['level']] . '] ' . $warn['message'] . $extra);
+
}
+
}
fwrite($this->stdout, $vObj->serialize());
return $returnCode;
+
}
/**
@@ -401,46 +424,47 @@ HELP
*
* @return int
*/
- protected function convert($vObj)
- {
+ protected function convert($vObj) {
+
$json = false;
$convertVersion = null;
$forceInput = null;
switch ($this->format) {
- case 'json':
+ case 'json' :
$json = true;
- if ('VCARD' === $vObj->name) {
+ if ($vObj->name === 'VCARD') {
$convertVersion = Document::VCARD40;
}
break;
- case 'jcard':
+ case 'jcard' :
$json = true;
$forceInput = 'VCARD';
$convertVersion = Document::VCARD40;
break;
- case 'jcal':
+ case 'jcal' :
$json = true;
$forceInput = 'VCALENDAR';
break;
- case 'mimedir':
- case 'icalendar':
- case 'icalendar20':
- case 'vcard':
+ case 'mimedir' :
+ case 'icalendar' :
+ case 'icalendar20' :
+ case 'vcard' :
break;
- case 'vcard21':
+ case 'vcard21' :
$convertVersion = Document::VCARD21;
break;
- case 'vcard30':
+ case 'vcard30' :
$convertVersion = Document::VCARD30;
break;
- case 'vcard40':
+ case 'vcard40' :
$convertVersion = Document::VCARD40;
break;
+
}
if ($forceInput && $vObj->name !== $forceInput) {
- throw new \Exception('You cannot convert a '.strtolower($vObj->name).' to '.$this->format);
+ throw new \Exception('You cannot convert a ' . strtolower($vObj->name) . ' to ' . $this->format);
}
if ($convertVersion) {
$vObj = $vObj->convert($convertVersion);
@@ -456,6 +480,7 @@ HELP
}
return 0;
+
}
/**
@@ -465,9 +490,10 @@ HELP
*
* @return int
*/
- protected function color($vObj)
- {
+ protected function color($vObj) {
+
fwrite($this->stdout, $this->serializeComponent($vObj));
+
}
/**
@@ -477,19 +503,19 @@ HELP
*
* @return string
*/
- protected function colorize($color, $str, $resetTo = 'default')
- {
+ protected function colorize($color, $str, $resetTo = 'default') {
+
$colors = [
- 'cyan' => '1;36',
- 'red' => '1;31',
- 'yellow' => '1;33',
- 'blue' => '0;34',
- 'green' => '0;32',
+ 'cyan' => '1;36',
+ 'red' => '1;31',
+ 'yellow' => '1;33',
+ 'blue' => '0;34',
+ 'green' => '0;32',
'default' => '0',
- 'purple' => '0;35',
+ 'purple' => '0;35',
];
+ return "\033[" . $colors[$color] . 'm' . $str . "\033[" . $colors[$resetTo] . "m";
- return "\033[".$colors[$color].'m'.$str."\033[".$colors[$resetTo].'m';
}
/**
@@ -497,17 +523,20 @@ HELP
*
* @param string $color
* @param string $str
+ *
+ * @return void
*/
- protected function cWrite($color, $str)
- {
+ protected function cWrite($color, $str) {
+
fwrite($this->stdout, $this->colorize($color, $str));
+
}
- protected function serializeComponent(Component $vObj)
- {
+ protected function serializeComponent(Component $vObj) {
+
$this->cWrite('cyan', 'BEGIN');
$this->cWrite('red', ':');
- $this->cWrite('yellow', $vObj->name."\n");
+ $this->cWrite('yellow', $vObj->name . "\n");
/**
* Gives a component a 'score' for sorting purposes.
@@ -519,51 +548,52 @@ HELP
* space to accomodate elements. The $key is added to the $score to
* preserve the original relative order of elements.
*
- * @param int $key
+ * @param int $key
* @param array $array
*
* @return int
*/
- $sortScore = function ($key, $array) {
+ $sortScore = function($key, $array) {
+
if ($array[$key] instanceof Component) {
+
// We want to encode VTIMEZONE first, this is a personal
// preference.
- if ('VTIMEZONE' === $array[$key]->name) {
+ if ($array[$key]->name === 'VTIMEZONE') {
$score = 300000000;
-
return $score + $key;
} else {
$score = 400000000;
-
return $score + $key;
}
} else {
// Properties get encoded first
// VCARD version 4.0 wants the VERSION property to appear first
if ($array[$key] instanceof Property) {
- if ('VERSION' === $array[$key]->name) {
+ if ($array[$key]->name === 'VERSION') {
$score = 100000000;
-
return $score + $key;
} else {
// All other properties
$score = 200000000;
-
return $score + $key;
}
}
}
+
};
$children = $vObj->children();
$tmp = $children;
uksort(
$children,
- function ($a, $b) use ($sortScore, $tmp) {
+ function($a, $b) use ($sortScore, $tmp) {
+
$sA = $sortScore($a, $tmp);
$sB = $sortScore($b, $tmp);
return $sA - $sB;
+
}
);
@@ -577,16 +607,19 @@ HELP
$this->cWrite('cyan', 'END');
$this->cWrite('red', ':');
- $this->cWrite('yellow', $vObj->name."\n");
+ $this->cWrite('yellow', $vObj->name . "\n");
+
}
/**
* Colorizes a property.
*
* @param Property $property
+ *
+ * @return void
*/
- protected function serializeProperty(Property $property)
- {
+ protected function serializeProperty(Property $property) {
+
if ($property->group) {
$this->cWrite('default', $property->group);
$this->cWrite('red', '.');
@@ -595,14 +628,19 @@ HELP
$this->cWrite('yellow', $property->name);
foreach ($property->parameters as $param) {
+
$this->cWrite('red', ';');
$this->cWrite('blue', $param->serialize());
+
}
$this->cWrite('red', ':');
if ($property instanceof Property\Binary) {
- $this->cWrite('default', 'embedded binary stripped. ('.strlen($property->getValue()).' bytes)');
+
+ $this->cWrite('default', 'embedded binary stripped. (' . strlen($property->getValue()) . ' bytes)');
+
} else {
+
$parts = $property->getParts();
$first1 = true;
// Looping through property values
@@ -614,7 +652,7 @@ HELP
}
$first2 = true;
// Looping through property sub-values
- foreach ((array) $part as $subPart) {
+ foreach ((array)$part as $subPart) {
if ($first2) {
$first2 = false;
} else {
@@ -626,39 +664,42 @@ HELP
$subPart,
[
'\\' => $this->colorize('purple', '\\\\', 'green'),
- ';' => $this->colorize('purple', '\;', 'green'),
- ',' => $this->colorize('purple', '\,', 'green'),
+ ';' => $this->colorize('purple', '\;', 'green'),
+ ',' => $this->colorize('purple', '\,', 'green'),
"\n" => $this->colorize('purple', "\\n\n\t", 'green'),
- "\r" => '',
+ "\r" => "",
]
);
$this->cWrite('green', $subPart);
}
}
+
}
- $this->cWrite('default', "\n");
+ $this->cWrite("default", "\n");
+
}
/**
* Parses the list of arguments.
*
* @param array $argv
+ *
+ * @return void
*/
- protected function parseArguments(array $argv)
- {
+ protected function parseArguments(array $argv) {
+
$positional = [];
$options = [];
- for ($ii = 0; $ii < count($argv); ++$ii) {
+ for ($ii = 0; $ii < count($argv); $ii++) {
+
// Skipping the first argument.
- if (0 === $ii) {
- continue;
- }
+ if ($ii === 0) continue;
$v = $argv[$ii];
- if ('--' === substr($v, 0, 2)) {
+ if (substr($v, 0, 2) === '--') {
// This is a long-form option.
$optionName = substr($v, 2);
$optionValue = true;
@@ -666,17 +707,22 @@ HELP
list($optionName, $optionValue) = explode('=', $optionName);
}
$options[$optionName] = $optionValue;
- } elseif ('-' === substr($v, 0, 1) && strlen($v) > 1) {
+ } elseif (substr($v, 0, 1) === '-' && strlen($v) > 1) {
// This is a short-form option.
foreach (str_split(substr($v, 1)) as $option) {
$options[$option] = true;
}
+
} else {
+
$positional[] = $v;
+
}
+
}
return [$options, $positional];
+
}
protected $parser;
@@ -686,14 +732,14 @@ HELP
*
* @return Component
*/
- protected function readInput()
- {
+ protected function readInput() {
+
if (!$this->parser) {
- if ('-' !== $this->inputPath) {
+ if ($this->inputPath !== '-') {
$this->stdin = fopen($this->inputPath, 'r');
}
- if ('mimedir' === $this->inputFormat) {
+ if ($this->inputFormat === 'mimedir') {
$this->parser = new Parser\MimeDir($this->stdin, ($this->forgiving ? Reader::OPTION_FORGIVING : 0));
} else {
$this->parser = new Parser\Json($this->stdin, ($this->forgiving ? Reader::OPTION_FORGIVING : 0));
@@ -701,20 +747,25 @@ HELP
}
return $this->parser->parse();
+
}
/**
* Sends a message to STDERR.
*
* @param string $msg
+ *
+ * @return void
*/
- protected function log($msg, $color = 'default')
- {
+ protected function log($msg, $color = 'default') {
+
if (!$this->quiet) {
- if ('default' !== $color) {
+ if ($color !== 'default') {
$msg = $this->colorize($color, $msg);
}
- fwrite($this->stderr, $msg."\n");
+ fwrite($this->stderr, $msg . "\n");
}
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Component.php b/vendor/sabre/vobject/lib/Component.php
index a33b7d577..ac87a10ec 100644
--- a/vendor/sabre/vobject/lib/Component.php
+++ b/vendor/sabre/vobject/lib/Component.php
@@ -14,8 +14,8 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Component extends Node
-{
+class Component extends Node {
+
/**
* Component name.
*
@@ -44,12 +44,14 @@ class Component extends Node
* ensure that this does not happen, set $defaults to false.
*
* @param Document $root
- * @param string $name such as VCALENDAR, VEVENT
- * @param array $children
- * @param bool $defaults
+ * @param string $name such as VCALENDAR, VEVENT.
+ * @param array $children
+ * @param bool $defaults
+ *
+ * @return void
*/
- public function __construct(Document $root, $name, array $children = [], $defaults = true)
- {
+ function __construct(Document $root, $name, array $children = [], $defaults = true) {
+
$this->name = strtoupper($name);
$this->root = $root;
@@ -82,11 +84,13 @@ class Component extends Node
// Component or Property
$this->add($child);
} else {
+
// Property key=>value
$this->add($k, $child);
}
}
}
+
}
/**
@@ -102,8 +106,8 @@ class Component extends Node
*
* @return Node
*/
- public function add()
- {
+ function add() {
+
$arguments = func_get_args();
if ($arguments[0] instanceof Node) {
@@ -112,10 +116,15 @@ class Component extends Node
}
$arguments[0]->parent = $this;
$newNode = $arguments[0];
+
} elseif (is_string($arguments[0])) {
+
$newNode = call_user_func_array([$this->root, 'create'], $arguments);
+
} else {
+
throw new \InvalidArgumentException('The first argument must either be a \\Sabre\\VObject\\Node or a string');
+
}
$name = $newNode->name;
@@ -124,8 +133,8 @@ class Component extends Node
} else {
$this->children[$name] = [$newNode];
}
-
return $newNode;
+
}
/**
@@ -137,34 +146,36 @@ class Component extends Node
* exact item will be removed.
*
* @param string|Property|Component $item
+ * @return void
*/
- public function remove($item)
- {
+ function remove($item) {
+
if (is_string($item)) {
// If there's no dot in the name, it's an exact property name and
// we can just wipe out all those properties.
//
- if (false === strpos($item, '.')) {
+ if (strpos($item, '.') === false) {
unset($this->children[strtoupper($item)]);
-
return;
}
// If there was a dot, we need to ask select() to help us out and
// then we just call remove recursively.
foreach ($this->select($item) as $child) {
+
$this->remove($child);
+
}
} else {
foreach ($this->select($item->name) as $k => $child) {
if ($child === $item) {
unset($this->children[$item->name][$k]);
-
return;
}
}
}
throw new \InvalidArgumentException('The item you passed to remove() was not a child of this component');
+
}
/**
@@ -173,14 +184,14 @@ class Component extends Node
*
* @return array
*/
- public function children()
- {
+ function children() {
+
$result = [];
foreach ($this->children as $childGroup) {
$result = array_merge($result, $childGroup);
}
-
return $result;
+
}
/**
@@ -189,8 +200,8 @@ class Component extends Node
*
* @return array
*/
- public function getComponents()
- {
+ function getComponents() {
+
$result = [];
foreach ($this->children as $childGroup) {
@@ -200,8 +211,8 @@ class Component extends Node
}
}
}
-
return $result;
+
}
/**
@@ -215,21 +226,19 @@ class Component extends Node
* has not been assigned a group, specify ".EMAIL".
*
* @param string $name
- *
* @return array
*/
- public function select($name)
- {
+ function select($name) {
+
$group = null;
$name = strtoupper($name);
- if (false !== strpos($name, '.')) {
+ if (strpos($name, '.') !== false) {
list($group, $name) = explode('.', $name, 2);
}
- if ('' === $name) {
- $name = null;
- }
+ if ($name === '') $name = null;
if (!is_null($name)) {
+
$result = isset($this->children[$name]) ? $this->children[$name] : [];
if (is_null($group)) {
@@ -239,25 +248,32 @@ class Component extends Node
// more.
return array_filter(
$result,
- function ($child) use ($group) {
+ function($child) use ($group) {
+
return $child instanceof Property && strtoupper($child->group) === $group;
+
}
);
}
+
}
// If we got to this point, it means there was no 'name' specified for
// searching, implying that this is a group-only search.
$result = [];
foreach ($this->children as $childGroup) {
+
foreach ($childGroup as $child) {
+
if ($child instanceof Property && strtoupper($child->group) === $group) {
$result[] = $child;
}
+
}
- }
+ }
return $result;
+
}
/**
@@ -265,9 +281,9 @@ class Component extends Node
*
* @return string
*/
- public function serialize()
- {
- $str = 'BEGIN:'.$this->name."\r\n";
+ function serialize() {
+
+ $str = "BEGIN:" . $this->name . "\r\n";
/**
* Gives a component a 'score' for sorting purposes.
@@ -279,60 +295,60 @@ class Component extends Node
* space to accomodate elements. The $key is added to the $score to
* preserve the original relative order of elements.
*
- * @param int $key
+ * @param int $key
* @param array $array
*
* @return int
*/
- $sortScore = function ($key, $array) {
+ $sortScore = function($key, $array) {
+
if ($array[$key] instanceof Component) {
+
// We want to encode VTIMEZONE first, this is a personal
// preference.
- if ('VTIMEZONE' === $array[$key]->name) {
+ if ($array[$key]->name === 'VTIMEZONE') {
$score = 300000000;
-
return $score + $key;
} else {
$score = 400000000;
-
return $score + $key;
}
} else {
// Properties get encoded first
// VCARD version 4.0 wants the VERSION property to appear first
if ($array[$key] instanceof Property) {
- if ('VERSION' === $array[$key]->name) {
+ if ($array[$key]->name === 'VERSION') {
$score = 100000000;
-
return $score + $key;
} else {
// All other properties
$score = 200000000;
-
return $score + $key;
}
}
}
+
};
$children = $this->children();
$tmp = $children;
uksort(
$children,
- function ($a, $b) use ($sortScore, $tmp) {
+ function($a, $b) use ($sortScore, $tmp) {
+
$sA = $sortScore($a, $tmp);
$sB = $sortScore($b, $tmp);
return $sA - $sB;
+
}
);
- foreach ($children as $child) {
- $str .= $child->serialize();
- }
- $str .= 'END:'.$this->name."\r\n";
+ foreach ($children as $child) $str .= $child->serialize();
+ $str .= "END:" . $this->name . "\r\n";
return $str;
+
}
/**
@@ -341,8 +357,8 @@ class Component extends Node
*
* @return array
*/
- public function jsonSerialize()
- {
+ function jsonSerialize() {
+
$components = [];
$properties = [];
@@ -359,18 +375,21 @@ class Component extends Node
return [
strtolower($this->name),
$properties,
- $components,
+ $components
];
+
}
/**
* This method serializes the data into XML. This is used to create xCard or
* xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- public function xmlSerialize(Xml\Writer $writer)
- {
+ function xmlSerialize(Xml\Writer $writer) {
+
$components = [];
$properties = [];
@@ -387,6 +406,7 @@ class Component extends Node
$writer->startElement(strtolower($this->name));
if (!empty($properties)) {
+
$writer->startElement('properties');
foreach ($properties as $property) {
@@ -394,9 +414,11 @@ class Component extends Node
}
$writer->endElement();
+
}
if (!empty($components)) {
+
$writer->startElement('components');
foreach ($components as $component) {
@@ -407,6 +429,7 @@ class Component extends Node
}
$writer->endElement();
+
}
/**
@@ -414,9 +437,10 @@ class Component extends Node
*
* @return array
*/
- protected function getDefaults()
- {
+ protected function getDefaults() {
+
return [];
+
}
/* Magic property accessors {{{ */
@@ -435,22 +459,24 @@ class Component extends Node
*
* @return Property
*/
- public function __get($name)
- {
- if ('children' === $name) {
+ function __get($name) {
+
+ if ($name === 'children') {
+
throw new \RuntimeException('Starting sabre/vobject 4.0 the children property is now protected. You should use the children() method instead');
+
}
$matches = $this->select($name);
- if (0 === count($matches)) {
+ if (count($matches) === 0) {
return;
} else {
$firstMatch = current($matches);
- /* @var $firstMatch Property */
+ /** @var $firstMatch Property */
$firstMatch->setIterator(new ElementList(array_values($matches)));
-
return $firstMatch;
}
+
}
/**
@@ -460,11 +486,11 @@ class Component extends Node
*
* @return bool
*/
- public function __isset($name)
- {
- $matches = $this->select($name);
+ function __isset($name) {
+ $matches = $this->select($name);
return count($matches) > 0;
+
}
/**
@@ -477,10 +503,12 @@ class Component extends Node
* a new item with the same name, always use the add() method.
*
* @param string $name
- * @param mixed $value
+ * @param mixed $value
+ *
+ * @return void
*/
- public function __set($name, $value)
- {
+ function __set($name, $value) {
+
$name = strtoupper($name);
$this->remove($name);
if ($value instanceof self || $value instanceof Property) {
@@ -495,10 +523,13 @@ class Component extends Node
* specified name.
*
* @param string $name
+ *
+ * @return void
*/
- public function __unset($name)
- {
+ function __unset($name) {
+
$this->remove($name);
+
}
/* }}} */
@@ -506,9 +537,11 @@ class Component extends Node
/**
* This method is automatically called when the object is cloned.
* Specifically, this will ensure all child elements are also cloned.
+ *
+ * @return void
*/
- public function __clone()
- {
+ function __clone() {
+
foreach ($this->children as $childName => $childGroup) {
foreach ($childGroup as $key => $child) {
$clonedChild = clone $child;
@@ -517,6 +550,7 @@ class Component extends Node
$this->children[$childName][$key] = $clonedChild;
}
}
+
}
/**
@@ -540,9 +574,10 @@ class Component extends Node
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [];
+
}
/**
@@ -569,8 +604,8 @@ class Component extends Node
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$rules = $this->getValidationRules();
$defaults = $this->getDefaults();
@@ -583,48 +618,49 @@ class Component extends Node
if (!isset($propertyCounters[$name])) {
$propertyCounters[$name] = 1;
} else {
- ++$propertyCounters[$name];
+ $propertyCounters[$name]++;
}
$messages = array_merge($messages, $child->validate($options));
}
foreach ($rules as $propName => $rule) {
+
switch ($rule) {
- case '0':
+ case '0' :
if (isset($propertyCounters[$propName])) {
$messages[] = [
- 'level' => 3,
- 'message' => $propName.' MUST NOT appear in a '.$this->name.' component',
- 'node' => $this,
+ 'level' => 3,
+ 'message' => $propName . ' MUST NOT appear in a ' . $this->name . ' component',
+ 'node' => $this,
];
}
break;
- case '1':
- if (!isset($propertyCounters[$propName]) || 1 !== $propertyCounters[$propName]) {
+ case '1' :
+ if (!isset($propertyCounters[$propName]) || $propertyCounters[$propName] !== 1) {
$repaired = false;
if ($options & self::REPAIR && isset($defaults[$propName])) {
$this->add($propName, $defaults[$propName]);
$repaired = true;
}
$messages[] = [
- 'level' => $repaired ? 1 : 3,
- 'message' => $propName.' MUST appear exactly once in a '.$this->name.' component',
- 'node' => $this,
+ 'level' => $repaired ? 1 : 3,
+ 'message' => $propName . ' MUST appear exactly once in a ' . $this->name . ' component',
+ 'node' => $this,
];
}
break;
- case '+':
+ case '+' :
if (!isset($propertyCounters[$propName]) || $propertyCounters[$propName] < 1) {
$messages[] = [
- 'level' => 3,
- 'message' => $propName.' MUST appear at least once in a '.$this->name.' component',
- 'node' => $this,
+ 'level' => 3,
+ 'message' => $propName . ' MUST appear at least once in a ' . $this->name . ' component',
+ 'node' => $this,
];
}
break;
- case '*':
+ case '*' :
break;
- case '?':
+ case '?' :
if (isset($propertyCounters[$propName]) && $propertyCounters[$propName] > 1) {
$level = 3;
@@ -633,7 +669,7 @@ class Component extends Node
if ($options & self::REPAIR) {
$properties = array_unique($this->select($propName), SORT_REGULAR);
- if (1 === count($properties)) {
+ if (count($properties) === 1) {
$this->remove($propName);
$this->add($properties[0]);
@@ -642,16 +678,18 @@ class Component extends Node
}
$messages[] = [
- 'level' => $level,
- 'message' => $propName.' MUST NOT appear more than once in a '.$this->name.' component',
- 'node' => $this,
+ 'level' => $level,
+ 'message' => $propName . ' MUST NOT appear more than once in a ' . $this->name . ' component',
+ 'node' => $this,
];
}
break;
+
}
- }
+ }
return $messages;
+
}
/**
@@ -659,9 +697,11 @@ class Component extends Node
*
* It's intended to remove all circular references, so PHP can easily clean
* it up.
+ *
+ * @return void
*/
- public function destroy()
- {
+ function destroy() {
+
parent::destroy();
foreach ($this->children as $childGroup) {
foreach ($childGroup as $child) {
@@ -669,5 +709,7 @@ class Component extends Node
}
}
$this->children = [];
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Component/Available.php b/vendor/sabre/vobject/lib/Component/Available.php
index 5510b9e0a..b3aaf08af 100644
--- a/vendor/sabre/vobject/lib/Component/Available.php
+++ b/vendor/sabre/vobject/lib/Component/Available.php
@@ -14,8 +14,8 @@ use Sabre\VObject;
* @author Ivan Enderlin
* @license http://sabre.io/license/ Modified BSD License
*/
-class Available extends VObject\Component
-{
+class Available extends VObject\Component {
+
/**
* Returns the 'effective start' and 'effective end' of this VAVAILABILITY
* component.
@@ -28,8 +28,8 @@ class Available extends VObject\Component
*
* @return array
*/
- public function getEffectiveStartEnd()
- {
+ function getEffectiveStartEnd() {
+
$effectiveStart = $this->DTSTART->getDateTime();
if (isset($this->DTEND)) {
$effectiveEnd = $this->DTEND->getDateTime();
@@ -38,6 +38,7 @@ class Available extends VObject\Component
}
return [$effectiveStart, $effectiveEnd];
+
}
/**
@@ -55,31 +56,32 @@ class Available extends VObject\Component
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [
- 'UID' => 1,
+ 'UID' => 1,
'DTSTART' => 1,
'DTSTAMP' => 1,
- 'DTEND' => '?',
+ 'DTEND' => '?',
'DURATION' => '?',
- 'CREATED' => '?',
- 'DESCRIPTION' => '?',
+ 'CREATED' => '?',
+ 'DESCRIPTION' => '?',
'LAST-MODIFIED' => '?',
'RECURRENCE-ID' => '?',
- 'RRULE' => '?',
- 'SUMMARY' => '?',
+ 'RRULE' => '?',
+ 'SUMMARY' => '?',
'CATEGORIES' => '*',
- 'COMMENT' => '*',
- 'CONTACT' => '*',
- 'EXDATE' => '*',
- 'RDATE' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
+ 'EXDATE' => '*',
+ 'RDATE' => '*',
'AVAILABLE' => '*',
];
+
}
/**
@@ -106,18 +108,19 @@ class Available extends VObject\Component
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$result = parent::validate($options);
if (isset($this->DTEND) && isset($this->DURATION)) {
$result[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'DTEND and DURATION cannot both be present',
- 'node' => $this,
+ 'node' => $this
];
}
return $result;
+
}
}
diff --git a/vendor/sabre/vobject/lib/Component/VAlarm.php b/vendor/sabre/vobject/lib/Component/VAlarm.php
index bd00eb600..faa8a5e74 100644
--- a/vendor/sabre/vobject/lib/Component/VAlarm.php
+++ b/vendor/sabre/vobject/lib/Component/VAlarm.php
@@ -16,8 +16,8 @@ use Sabre\VObject\InvalidDataException;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class VAlarm extends VObject\Component
-{
+class VAlarm extends VObject\Component {
+
/**
* Returns a DateTime object when this alarm is going to trigger.
*
@@ -25,16 +25,17 @@ class VAlarm extends VObject\Component
*
* @return DateTimeImmutable
*/
- public function getEffectiveTriggerTime()
- {
+ function getEffectiveTriggerTime() {
+
$trigger = $this->TRIGGER;
- if (!isset($trigger['VALUE']) || 'DURATION' === strtoupper($trigger['VALUE'])) {
+ if (!isset($trigger['VALUE']) || strtoupper($trigger['VALUE']) === 'DURATION') {
$triggerDuration = VObject\DateTimeParser::parseDuration($this->TRIGGER);
- $related = (isset($trigger['RELATED']) && 'END' == strtoupper($trigger['RELATED'])) ? 'END' : 'START';
+ $related = (isset($trigger['RELATED']) && strtoupper($trigger['RELATED']) == 'END') ? 'END' : 'START';
$parentComponent = $this->parent;
- if ('START' === $related) {
- if ('VTODO' === $parentComponent->name) {
+ if ($related === 'START') {
+
+ if ($parentComponent->name === 'VTODO') {
$propName = 'DUE';
} else {
$propName = 'DTSTART';
@@ -43,9 +44,9 @@ class VAlarm extends VObject\Component
$effectiveTrigger = $parentComponent->$propName->getDateTime();
$effectiveTrigger = $effectiveTrigger->add($triggerDuration);
} else {
- if ('VTODO' === $parentComponent->name) {
+ if ($parentComponent->name === 'VTODO') {
$endProp = 'DUE';
- } elseif ('VEVENT' === $parentComponent->name) {
+ } elseif ($parentComponent->name === 'VEVENT') {
$endProp = 'DTEND';
} else {
throw new InvalidDataException('time-range filters on VALARM components are only supported when they are a child of VTODO or VEVENT');
@@ -67,8 +68,8 @@ class VAlarm extends VObject\Component
} else {
$effectiveTrigger = $trigger->getDateTime();
}
-
return $effectiveTrigger;
+
}
/**
@@ -83,29 +84,30 @@ class VAlarm extends VObject\Component
*
* @return bool
*/
- public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end)
- {
+ function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) {
+
$effectiveTrigger = $this->getEffectiveTriggerTime();
if (isset($this->DURATION)) {
$duration = VObject\DateTimeParser::parseDuration($this->DURATION);
- $repeat = (string) $this->REPEAT;
+ $repeat = (string)$this->REPEAT;
if (!$repeat) {
$repeat = 1;
}
- $period = new \DatePeriod($effectiveTrigger, $duration, (int) $repeat);
+ $period = new \DatePeriod($effectiveTrigger, $duration, (int)$repeat);
foreach ($period as $occurrence) {
+
if ($start <= $occurrence && $end > $occurrence) {
return true;
}
}
-
return false;
} else {
- return $start <= $effectiveTrigger && $end > $effectiveTrigger;
+ return ($start <= $effectiveTrigger && $end > $effectiveTrigger);
}
+
}
/**
@@ -123,16 +125,18 @@ class VAlarm extends VObject\Component
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [
- 'ACTION' => 1,
+ 'ACTION' => 1,
'TRIGGER' => 1,
'DURATION' => '?',
- 'REPEAT' => '?',
+ 'REPEAT' => '?',
'ATTACH' => '?',
];
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Component/VAvailability.php b/vendor/sabre/vobject/lib/Component/VAvailability.php
index 6f3e7f13c..66b3310c5 100644
--- a/vendor/sabre/vobject/lib/Component/VAvailability.php
+++ b/vendor/sabre/vobject/lib/Component/VAvailability.php
@@ -15,8 +15,8 @@ use Sabre\VObject;
* @author Ivan Enderlin
* @license http://sabre.io/license/ Modified BSD License
*/
-class VAvailability extends VObject\Component
-{
+class VAvailability extends VObject\Component {
+
/**
* Returns true or false depending on if the event falls in the specified
* time-range. This is used for filtering purposes.
@@ -31,14 +31,14 @@ class VAvailability extends VObject\Component
*
* @return bool
*/
- public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end)
- {
- list($effectiveStart, $effectiveEnd) = $this->getEffectiveStartEnd();
+ function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) {
- return
+ list($effectiveStart, $effectiveEnd) = $this->getEffectiveStartEnd();
+ return (
(is_null($effectiveStart) || $start < $effectiveEnd) &&
(is_null($effectiveEnd) || $end > $effectiveStart)
- ;
+ );
+
}
/**
@@ -53,8 +53,8 @@ class VAvailability extends VObject\Component
*
* @return array
*/
- public function getEffectiveStartEnd()
- {
+ function getEffectiveStartEnd() {
+
$effectiveStart = null;
$effectiveEnd = null;
@@ -68,8 +68,10 @@ class VAvailability extends VObject\Component
}
return [$effectiveStart, $effectiveEnd];
+
}
+
/**
* A simple list of validation rules.
*
@@ -85,30 +87,31 @@ class VAvailability extends VObject\Component
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [
- 'UID' => 1,
+ 'UID' => 1,
'DTSTAMP' => 1,
- 'BUSYTYPE' => '?',
- 'CLASS' => '?',
- 'CREATED' => '?',
- 'DESCRIPTION' => '?',
- 'DTSTART' => '?',
+ 'BUSYTYPE' => '?',
+ 'CLASS' => '?',
+ 'CREATED' => '?',
+ 'DESCRIPTION' => '?',
+ 'DTSTART' => '?',
'LAST-MODIFIED' => '?',
- 'ORGANIZER' => '?',
- 'PRIORITY' => '?',
- 'SEQUENCE' => '?',
- 'SUMMARY' => '?',
- 'URL' => '?',
- 'DTEND' => '?',
- 'DURATION' => '?',
+ 'ORGANIZER' => '?',
+ 'PRIORITY' => '?',
+ 'SEQUENCE' => '?',
+ 'SUMMARY' => '?',
+ 'URL' => '?',
+ 'DTEND' => '?',
+ 'DURATION' => '?',
'CATEGORIES' => '*',
- 'COMMENT' => '*',
- 'CONTACT' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
];
+
}
/**
@@ -135,18 +138,19 @@ class VAvailability extends VObject\Component
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$result = parent::validate($options);
if (isset($this->DTEND) && isset($this->DURATION)) {
$result[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'DTEND and DURATION cannot both be present',
- 'node' => $this,
+ 'node' => $this
];
}
return $result;
+
}
}
diff --git a/vendor/sabre/vobject/lib/Component/VCalendar.php b/vendor/sabre/vobject/lib/Component/VCalendar.php
index 4687a092b..1b3137d38 100644
--- a/vendor/sabre/vobject/lib/Component/VCalendar.php
+++ b/vendor/sabre/vobject/lib/Component/VCalendar.php
@@ -20,8 +20,8 @@ use Sabre\VObject\Recur\NoInstancesException;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class VCalendar extends VObject\Document
-{
+class VCalendar extends VObject\Document {
+
/**
* The default name for this component.
*
@@ -29,23 +29,23 @@ class VCalendar extends VObject\Document
*
* @var string
*/
- public static $defaultName = 'VCALENDAR';
+ static $defaultName = 'VCALENDAR';
/**
* This is a list of components, and which classes they should map to.
*
* @var array
*/
- public static $componentMap = [
- 'VCALENDAR' => 'Sabre\\VObject\\Component\\VCalendar',
- 'VALARM' => 'Sabre\\VObject\\Component\\VAlarm',
- 'VEVENT' => 'Sabre\\VObject\\Component\\VEvent',
- 'VFREEBUSY' => 'Sabre\\VObject\\Component\\VFreeBusy',
+ static $componentMap = [
+ 'VCALENDAR' => 'Sabre\\VObject\\Component\\VCalendar',
+ 'VALARM' => 'Sabre\\VObject\\Component\\VAlarm',
+ 'VEVENT' => 'Sabre\\VObject\\Component\\VEvent',
+ 'VFREEBUSY' => 'Sabre\\VObject\\Component\\VFreeBusy',
'VAVAILABILITY' => 'Sabre\\VObject\\Component\\VAvailability',
- 'AVAILABLE' => 'Sabre\\VObject\\Component\\Available',
- 'VJOURNAL' => 'Sabre\\VObject\\Component\\VJournal',
- 'VTIMEZONE' => 'Sabre\\VObject\\Component\\VTimeZone',
- 'VTODO' => 'Sabre\\VObject\\Component\\VTodo',
+ 'AVAILABLE' => 'Sabre\\VObject\\Component\\Available',
+ 'VJOURNAL' => 'Sabre\\VObject\\Component\\VJournal',
+ 'VTIMEZONE' => 'Sabre\\VObject\\Component\\VTimeZone',
+ 'VTODO' => 'Sabre\\VObject\\Component\\VTodo',
];
/**
@@ -53,22 +53,22 @@ class VCalendar extends VObject\Document
*
* @var array
*/
- public static $valueMap = [
- 'BINARY' => 'Sabre\\VObject\\Property\\Binary',
- 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean',
+ static $valueMap = [
+ 'BINARY' => 'Sabre\\VObject\\Property\\Binary',
+ 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean',
'CAL-ADDRESS' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
- 'DATE' => 'Sabre\\VObject\\Property\\ICalendar\\Date',
- 'DATE-TIME' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
- 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue',
- 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue',
- 'PERIOD' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
- 'RECUR' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
- 'TEXT' => 'Sabre\\VObject\\Property\\Text',
- 'TIME' => 'Sabre\\VObject\\Property\\Time',
- 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only.
- 'URI' => 'Sabre\\VObject\\Property\\Uri',
- 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset',
+ 'DATE' => 'Sabre\\VObject\\Property\\ICalendar\\Date',
+ 'DATE-TIME' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
+ 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue',
+ 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'PERIOD' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
+ 'RECUR' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
+ 'TEXT' => 'Sabre\\VObject\\Property\\Text',
+ 'TIME' => 'Sabre\\VObject\\Property\\Time',
+ 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only.
+ 'URI' => 'Sabre\\VObject\\Property\\Uri',
+ 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset',
];
/**
@@ -76,80 +76,81 @@ class VCalendar extends VObject\Document
*
* @var array
*/
- public static $propertyMap = [
+ static $propertyMap = [
// Calendar properties
'CALSCALE' => 'Sabre\\VObject\\Property\\FlatText',
- 'METHOD' => 'Sabre\\VObject\\Property\\FlatText',
- 'PRODID' => 'Sabre\\VObject\\Property\\FlatText',
- 'VERSION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'METHOD' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PRODID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'VERSION' => 'Sabre\\VObject\\Property\\FlatText',
// Component properties
- 'ATTACH' => 'Sabre\\VObject\\Property\\Uri',
- 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text',
- 'CLASS' => 'Sabre\\VObject\\Property\\FlatText',
- 'COMMENT' => 'Sabre\\VObject\\Property\\FlatText',
- 'DESCRIPTION' => 'Sabre\\VObject\\Property\\FlatText',
- 'GEO' => 'Sabre\\VObject\\Property\\FloatValue',
- 'LOCATION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ATTACH' => 'Sabre\\VObject\\Property\\Uri',
+ 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text',
+ 'CLASS' => 'Sabre\\VObject\\Property\\FlatText',
+ 'COMMENT' => 'Sabre\\VObject\\Property\\FlatText',
+ 'DESCRIPTION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'GEO' => 'Sabre\\VObject\\Property\\FloatValue',
+ 'LOCATION' => 'Sabre\\VObject\\Property\\FlatText',
'PERCENT-COMPLETE' => 'Sabre\\VObject\\Property\\IntegerValue',
- 'PRIORITY' => 'Sabre\\VObject\\Property\\IntegerValue',
- 'RESOURCES' => 'Sabre\\VObject\\Property\\Text',
- 'STATUS' => 'Sabre\\VObject\\Property\\FlatText',
- 'SUMMARY' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PRIORITY' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'RESOURCES' => 'Sabre\\VObject\\Property\\Text',
+ 'STATUS' => 'Sabre\\VObject\\Property\\FlatText',
+ 'SUMMARY' => 'Sabre\\VObject\\Property\\FlatText',
// Date and Time Component Properties
'COMPLETED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DTEND' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DUE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DTSTART' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
- 'FREEBUSY' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
- 'TRANSP' => 'Sabre\\VObject\\Property\\FlatText',
+ 'DTEND' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DUE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DTSTART' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
+ 'FREEBUSY' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
+ 'TRANSP' => 'Sabre\\VObject\\Property\\FlatText',
// Time Zone Component Properties
- 'TZID' => 'Sabre\\VObject\\Property\\FlatText',
- 'TZNAME' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TZID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TZNAME' => 'Sabre\\VObject\\Property\\FlatText',
'TZOFFSETFROM' => 'Sabre\\VObject\\Property\\UtcOffset',
- 'TZOFFSETTO' => 'Sabre\\VObject\\Property\\UtcOffset',
- 'TZURL' => 'Sabre\\VObject\\Property\\Uri',
+ 'TZOFFSETTO' => 'Sabre\\VObject\\Property\\UtcOffset',
+ 'TZURL' => 'Sabre\\VObject\\Property\\Uri',
// Relationship Component Properties
- 'ATTENDEE' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
- 'CONTACT' => 'Sabre\\VObject\\Property\\FlatText',
- 'ORGANIZER' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
+ 'ATTENDEE' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
+ 'CONTACT' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ORGANIZER' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
'RECURRENCE-ID' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'RELATED-TO' => 'Sabre\\VObject\\Property\\FlatText',
- 'URL' => 'Sabre\\VObject\\Property\\Uri',
- 'UID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'RELATED-TO' => 'Sabre\\VObject\\Property\\FlatText',
+ 'URL' => 'Sabre\\VObject\\Property\\Uri',
+ 'UID' => 'Sabre\\VObject\\Property\\FlatText',
// Recurrence Component Properties
'EXDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'RDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'RRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
+ 'RDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'RRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
'EXRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur', // Deprecated since rfc5545
// Alarm Component Properties
- 'ACTION' => 'Sabre\\VObject\\Property\\FlatText',
- 'REPEAT' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'ACTION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'REPEAT' => 'Sabre\\VObject\\Property\\IntegerValue',
'TRIGGER' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
// Change Management Component Properties
- 'CREATED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'DTSTAMP' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'CREATED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DTSTAMP' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
'LAST-MODIFIED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'SEQUENCE' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'SEQUENCE' => 'Sabre\\VObject\\Property\\IntegerValue',
// Request Status
'REQUEST-STATUS' => 'Sabre\\VObject\\Property\\Text',
// Additions from draft-daboo-valarm-extensions-04
- 'ALARM-AGENT' => 'Sabre\\VObject\\Property\\Text',
- 'ACKNOWLEDGED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
- 'PROXIMITY' => 'Sabre\\VObject\\Property\\Text',
+ 'ALARM-AGENT' => 'Sabre\\VObject\\Property\\Text',
+ 'ACKNOWLEDGED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'PROXIMITY' => 'Sabre\\VObject\\Property\\Text',
'DEFAULT-ALARM' => 'Sabre\\VObject\\Property\\Boolean',
// Additions from draft-daboo-calendar-availability-05
'BUSYTYPE' => 'Sabre\\VObject\\Property\\Text',
+
];
/**
@@ -157,9 +158,10 @@ class VCalendar extends VObject\Document
*
* @return int
*/
- public function getDocumentType()
- {
+ function getDocumentType() {
+
return self::ICALENDAR20;
+
}
/**
@@ -173,20 +175,21 @@ class VCalendar extends VObject\Document
*
* @return VObject\Component[]
*/
- public function getBaseComponents($componentName = null)
- {
- $isBaseComponent = function ($component) {
+ function getBaseComponents($componentName = null) {
+
+ $isBaseComponent = function($component) {
+
if (!$component instanceof VObject\Component) {
return false;
}
- if ('VTIMEZONE' === $component->name) {
+ if ($component->name === 'VTIMEZONE') {
return false;
}
if (isset($component->{'RECURRENCE-ID'})) {
return false;
}
-
return true;
+
};
if ($componentName) {
@@ -199,7 +202,9 @@ class VCalendar extends VObject\Document
$components = [];
foreach ($this->children as $childGroup) {
+
foreach ($childGroup as $child) {
+
if (!$child instanceof Component) {
// If one child is not a component, they all are so we skip
// the entire group.
@@ -208,10 +213,12 @@ class VCalendar extends VObject\Document
if ($isBaseComponent($child)) {
$components[] = $child;
}
+
}
- }
+ }
return $components;
+
}
/**
@@ -224,20 +231,21 @@ class VCalendar extends VObject\Document
*
* @return VObject\Component|null
*/
- public function getBaseComponent($componentName = null)
- {
- $isBaseComponent = function ($component) {
+ function getBaseComponent($componentName = null) {
+
+ $isBaseComponent = function($component) {
+
if (!$component instanceof VObject\Component) {
return false;
}
- if ('VTIMEZONE' === $component->name) {
+ if ($component->name === 'VTIMEZONE') {
return false;
}
if (isset($component->{'RECURRENCE-ID'})) {
return false;
}
-
return true;
+
};
if ($componentName) {
@@ -246,7 +254,6 @@ class VCalendar extends VObject\Document
return $child;
}
}
-
return null;
}
@@ -257,9 +264,10 @@ class VCalendar extends VObject\Document
return $child;
}
}
- }
+ }
return null;
+
}
/**
@@ -269,7 +277,7 @@ class VCalendar extends VObject\Document
* If this calendar object, has events with recurrence rules, this method
* can be used to expand the event into multiple sub-events.
*
- * Each event will be stripped from its recurrence information, and only
+ * Each event will be stripped from it's recurrence information, and only
* the instances of the event in the specified timerange will be left
* alone.
*
@@ -278,13 +286,12 @@ class VCalendar extends VObject\Document
*
* @param DateTimeInterface $start
* @param DateTimeInterface $end
- * @param DateTimeZone $timeZone reference timezone for floating dates and
- * times
- *
+ * @param DateTimeZone $timeZone reference timezone for floating dates and
+ * times.
* @return VCalendar
*/
- public function expand(DateTimeInterface $start, DateTimeInterface $end, DateTimeZone $timeZone = null)
- {
+ function expand(DateTimeInterface $start, DateTimeInterface $end, DateTimeZone $timeZone = null) {
+
$newChildren = [];
$recurringEvents = [];
@@ -292,9 +299,11 @@ class VCalendar extends VObject\Document
$timeZone = new DateTimeZone('UTC');
}
- $stripTimezones = function (Component $component) use ($timeZone, &$stripTimezones) {
+ $stripTimezones = function(Component $component) use ($timeZone, &$stripTimezones) {
+
foreach ($component->children() as $componentChild) {
if ($componentChild instanceof Property\ICalendar\DateTime && $componentChild->hasTime()) {
+
$dt = $componentChild->getDateTimes($timeZone);
// We only need to update the first timezone, because
// setDateTimes will match all other timezones to the
@@ -304,22 +313,25 @@ class VCalendar extends VObject\Document
} elseif ($componentChild instanceof Component) {
$stripTimezones($componentChild);
}
- }
+ }
return $component;
+
};
foreach ($this->children() as $child) {
- if ($child instanceof Property && 'PRODID' !== $child->name) {
+
+ if ($child instanceof Property && $child->name !== 'PRODID') {
// We explictly want to ignore PRODID, because we want to
// overwrite it with our own.
$newChildren[] = clone $child;
- } elseif ($child instanceof Component && 'VTIMEZONE' !== $child->name) {
+ } elseif ($child instanceof Component && $child->name !== 'VTIMEZONE') {
+
// We're also stripping all VTIMEZONE objects because we're
// converting everything to UTC.
- if ('VEVENT' === $child->name && (isset($child->{'RECURRENCE-ID'}) || isset($child->RRULE) || isset($child->RDATE))) {
+ if ($child->name === 'VEVENT' && (isset($child->{'RECURRENCE-ID'}) || isset($child->RRULE) || isset($child->RDATE))) {
// Handle these a bit later.
- $uid = (string) $child->UID;
+ $uid = (string)$child->UID;
if (!$uid) {
throw new InvalidDataException('Every VEVENT object must have a UID property');
}
@@ -328,15 +340,19 @@ class VCalendar extends VObject\Document
} else {
$recurringEvents[$uid] = [clone $child];
}
- } elseif ('VEVENT' === $child->name && $child->isInTimeRange($start, $end)) {
+ } elseif ($child->name === 'VEVENT' && $child->isInTimeRange($start, $end)) {
$newChildren[] = $stripTimezones(clone $child);
}
+
}
+
}
foreach ($recurringEvents as $events) {
+
try {
$it = new EventIterator($events, $timeZone);
+
} catch (NoInstancesException $e) {
// This event is recurring, but it doesn't have a single
// instance. We are skipping this event from the output
@@ -346,14 +362,20 @@ class VCalendar extends VObject\Document
$it->fastForward($start);
while ($it->valid() && $it->getDTStart() < $end) {
+
if ($it->getDTEnd() > $start) {
+
$newChildren[] = $stripTimezones($it->getEventObject());
+
}
$it->next();
+
}
+
}
return new self($newChildren);
+
}
/**
@@ -361,13 +383,14 @@ class VCalendar extends VObject\Document
*
* @return array
*/
- protected function getDefaults()
- {
+ protected function getDefaults() {
+
return [
- 'VERSION' => '2.0',
- 'PRODID' => '-//Sabre//Sabre VObject '.VObject\Version::VERSION.'//EN',
+ 'VERSION' => '2.0',
+ 'PRODID' => '-//Sabre//Sabre VObject ' . VObject\Version::VERSION . '//EN',
'CALSCALE' => 'GREGORIAN',
];
+
}
/**
@@ -385,15 +408,16 @@ class VCalendar extends VObject\Document
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [
- 'PRODID' => 1,
+ 'PRODID' => 1,
'VERSION' => 1,
'CALSCALE' => '?',
- 'METHOD' => '?',
+ 'METHOD' => '?',
];
+
}
/**
@@ -420,18 +444,19 @@ class VCalendar extends VObject\Document
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$warnings = parent::validate($options);
if ($ver = $this->VERSION) {
- if ('2.0' !== (string) $ver) {
+ if ((string)$ver !== '2.0') {
$warnings[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'Only iCalendar version 2.0 as defined in rfc5545 is supported.',
- 'node' => $this,
+ 'node' => $this,
];
}
+
}
$uidList = [];
@@ -440,75 +465,77 @@ class VCalendar extends VObject\Document
foreach ($this->children() as $child) {
if ($child instanceof Component) {
- ++$componentsFound;
+ $componentsFound++;
if (!in_array($child->name, ['VEVENT', 'VTODO', 'VJOURNAL'])) {
continue;
}
$componentTypes[] = $child->name;
- $uid = (string) $child->UID;
+ $uid = (string)$child->UID;
$isMaster = isset($child->{'RECURRENCE-ID'}) ? 0 : 1;
if (isset($uidList[$uid])) {
- ++$uidList[$uid]['count'];
+ $uidList[$uid]['count']++;
if ($isMaster && $uidList[$uid]['hasMaster']) {
$warnings[] = [
- 'level' => 3,
- 'message' => 'More than one master object was found for the object with UID '.$uid,
- 'node' => $this,
+ 'level' => 3,
+ 'message' => 'More than one master object was found for the object with UID ' . $uid,
+ 'node' => $this,
];
}
$uidList[$uid]['hasMaster'] += $isMaster;
} else {
$uidList[$uid] = [
- 'count' => 1,
+ 'count' => 1,
'hasMaster' => $isMaster,
];
}
+
}
}
- if (0 === $componentsFound) {
+ if ($componentsFound === 0) {
$warnings[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'An iCalendar object must have at least 1 component.',
- 'node' => $this,
+ 'node' => $this,
];
}
if ($options & self::PROFILE_CALDAV) {
if (count($uidList) > 1) {
$warnings[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'A calendar object on a CalDAV server may only have components with the same UID.',
- 'node' => $this,
+ 'node' => $this,
];
}
- if (0 === count($componentTypes)) {
+ if (count($componentTypes) === 0) {
$warnings[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'A calendar object on a CalDAV server must have at least 1 component (VTODO, VEVENT, VJOURNAL).',
- 'node' => $this,
+ 'node' => $this,
];
}
if (count(array_unique($componentTypes)) > 1) {
$warnings[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'A calendar object on a CalDAV server may only have 1 type of component (VEVENT, VTODO or VJOURNAL).',
- 'node' => $this,
+ 'node' => $this,
];
}
if (isset($this->METHOD)) {
$warnings[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'A calendar object on a CalDAV server MUST NOT have a METHOD property.',
- 'node' => $this,
+ 'node' => $this,
];
}
}
return $warnings;
+
}
/**
@@ -516,15 +543,19 @@ class VCalendar extends VObject\Document
*
* @return array
*/
- public function getByUID($uid)
- {
- return array_filter($this->getComponents(), function ($item) use ($uid) {
+ function getByUID($uid) {
+
+ return array_filter($this->getComponents(), function($item) use ($uid) {
+
if (!$itemUid = $item->select('UID')) {
return false;
}
$itemUid = current($itemUid)->getValue();
-
return $uid === $itemUid;
+
});
+
}
+
+
}
diff --git a/vendor/sabre/vobject/lib/Component/VCard.php b/vendor/sabre/vobject/lib/Component/VCard.php
index 860e45ffa..bca623d5e 100644
--- a/vendor/sabre/vobject/lib/Component/VCard.php
+++ b/vendor/sabre/vobject/lib/Component/VCard.php
@@ -15,8 +15,8 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class VCard extends VObject\Document
-{
+class VCard extends VObject\Document {
+
/**
* The default name for this component.
*
@@ -24,7 +24,7 @@ class VCard extends VObject\Document
*
* @var string
*/
- public static $defaultName = 'VCARD';
+ static $defaultName = 'VCARD';
/**
* Caching the version number.
@@ -38,7 +38,7 @@ class VCard extends VObject\Document
*
* @var array
*/
- public static $componentMap = [
+ static $componentMap = [
'VCARD' => 'Sabre\\VObject\\Component\\VCard',
];
@@ -47,23 +47,23 @@ class VCard extends VObject\Document
*
* @var array
*/
- public static $valueMap = [
- 'BINARY' => 'Sabre\\VObject\\Property\\Binary',
- 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean',
- 'CONTENT-ID' => 'Sabre\\VObject\\Property\\FlatText', // vCard 2.1 only
- 'DATE' => 'Sabre\\VObject\\Property\\VCard\\Date',
- 'DATE-TIME' => 'Sabre\\VObject\\Property\\VCard\\DateTime',
+ static $valueMap = [
+ 'BINARY' => 'Sabre\\VObject\\Property\\Binary',
+ 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean',
+ 'CONTENT-ID' => 'Sabre\\VObject\\Property\\FlatText', // vCard 2.1 only
+ 'DATE' => 'Sabre\\VObject\\Property\\VCard\\Date',
+ 'DATE-TIME' => 'Sabre\\VObject\\Property\\VCard\\DateTime',
'DATE-AND-OR-TIME' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime', // vCard only
- 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue',
- 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue',
- 'LANGUAGE-TAG' => 'Sabre\\VObject\\Property\\VCard\\LanguageTag',
- 'TIMESTAMP' => 'Sabre\\VObject\\Property\\VCard\\TimeStamp',
- 'TEXT' => 'Sabre\\VObject\\Property\\Text',
- 'TIME' => 'Sabre\\VObject\\Property\\Time',
- 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only.
- 'URI' => 'Sabre\\VObject\\Property\\Uri',
- 'URL' => 'Sabre\\VObject\\Property\\Uri', // vCard 2.1 only
- 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset',
+ 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue',
+ 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'LANGUAGE-TAG' => 'Sabre\\VObject\\Property\\VCard\\LanguageTag',
+ 'TIMESTAMP' => 'Sabre\\VObject\\Property\\VCard\\TimeStamp',
+ 'TEXT' => 'Sabre\\VObject\\Property\\Text',
+ 'TIME' => 'Sabre\\VObject\\Property\\Time',
+ 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only.
+ 'URI' => 'Sabre\\VObject\\Property\\Uri',
+ 'URL' => 'Sabre\\VObject\\Property\\Uri', // vCard 2.1 only
+ 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset',
];
/**
@@ -71,70 +71,72 @@ class VCard extends VObject\Document
*
* @var array
*/
- public static $propertyMap = [
+ static $propertyMap = [
+
// vCard 2.1 properties and up
- 'N' => 'Sabre\\VObject\\Property\\Text',
- 'FN' => 'Sabre\\VObject\\Property\\FlatText',
- 'PHOTO' => 'Sabre\\VObject\\Property\\Binary',
- 'BDAY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
- 'ADR' => 'Sabre\\VObject\\Property\\Text',
- 'LABEL' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
- 'TEL' => 'Sabre\\VObject\\Property\\FlatText',
- 'EMAIL' => 'Sabre\\VObject\\Property\\FlatText',
+ 'N' => 'Sabre\\VObject\\Property\\Text',
+ 'FN' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PHOTO' => 'Sabre\\VObject\\Property\\Binary',
+ 'BDAY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
+ 'ADR' => 'Sabre\\VObject\\Property\\Text',
+ 'LABEL' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
+ 'TEL' => 'Sabre\\VObject\\Property\\FlatText',
+ 'EMAIL' => 'Sabre\\VObject\\Property\\FlatText',
'MAILER' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
- 'GEO' => 'Sabre\\VObject\\Property\\FlatText',
- 'TITLE' => 'Sabre\\VObject\\Property\\FlatText',
- 'ROLE' => 'Sabre\\VObject\\Property\\FlatText',
- 'LOGO' => 'Sabre\\VObject\\Property\\Binary',
+ 'GEO' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TITLE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ROLE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'LOGO' => 'Sabre\\VObject\\Property\\Binary',
// 'AGENT' => 'Sabre\\VObject\\Property\\', // Todo: is an embedded vCard. Probably rare, so
// not supported at the moment
- 'ORG' => 'Sabre\\VObject\\Property\\Text',
- 'NOTE' => 'Sabre\\VObject\\Property\\FlatText',
- 'REV' => 'Sabre\\VObject\\Property\\VCard\\TimeStamp',
- 'SOUND' => 'Sabre\\VObject\\Property\\FlatText',
- 'URL' => 'Sabre\\VObject\\Property\\Uri',
- 'UID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ORG' => 'Sabre\\VObject\\Property\\Text',
+ 'NOTE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'REV' => 'Sabre\\VObject\\Property\\VCard\\TimeStamp',
+ 'SOUND' => 'Sabre\\VObject\\Property\\FlatText',
+ 'URL' => 'Sabre\\VObject\\Property\\Uri',
+ 'UID' => 'Sabre\\VObject\\Property\\FlatText',
'VERSION' => 'Sabre\\VObject\\Property\\FlatText',
- 'KEY' => 'Sabre\\VObject\\Property\\FlatText',
- 'TZ' => 'Sabre\\VObject\\Property\\Text',
+ 'KEY' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TZ' => 'Sabre\\VObject\\Property\\Text',
// vCard 3.0 properties
- 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text',
+ 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text',
'SORT-STRING' => 'Sabre\\VObject\\Property\\FlatText',
- 'PRODID' => 'Sabre\\VObject\\Property\\FlatText',
- 'NICKNAME' => 'Sabre\\VObject\\Property\\Text',
- 'CLASS' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
+ 'PRODID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'NICKNAME' => 'Sabre\\VObject\\Property\\Text',
+ 'CLASS' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
// rfc2739 properties
- 'FBURL' => 'Sabre\\VObject\\Property\\Uri',
- 'CAPURI' => 'Sabre\\VObject\\Property\\Uri',
- 'CALURI' => 'Sabre\\VObject\\Property\\Uri',
+ 'FBURL' => 'Sabre\\VObject\\Property\\Uri',
+ 'CAPURI' => 'Sabre\\VObject\\Property\\Uri',
+ 'CALURI' => 'Sabre\\VObject\\Property\\Uri',
'CALADRURI' => 'Sabre\\VObject\\Property\\Uri',
// rfc4770 properties
'IMPP' => 'Sabre\\VObject\\Property\\Uri',
// vCard 4.0 properties
- 'SOURCE' => 'Sabre\\VObject\\Property\\Uri',
- 'XML' => 'Sabre\\VObject\\Property\\FlatText',
- 'ANNIVERSARY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
+ 'SOURCE' => 'Sabre\\VObject\\Property\\Uri',
+ 'XML' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ANNIVERSARY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
'CLIENTPIDMAP' => 'Sabre\\VObject\\Property\\Text',
- 'LANG' => 'Sabre\\VObject\\Property\\VCard\\LanguageTag',
- 'GENDER' => 'Sabre\\VObject\\Property\\Text',
- 'KIND' => 'Sabre\\VObject\\Property\\FlatText',
- 'MEMBER' => 'Sabre\\VObject\\Property\\Uri',
- 'RELATED' => 'Sabre\\VObject\\Property\\Uri',
+ 'LANG' => 'Sabre\\VObject\\Property\\VCard\\LanguageTag',
+ 'GENDER' => 'Sabre\\VObject\\Property\\Text',
+ 'KIND' => 'Sabre\\VObject\\Property\\FlatText',
+ 'MEMBER' => 'Sabre\\VObject\\Property\\Uri',
+ 'RELATED' => 'Sabre\\VObject\\Property\\Uri',
// rfc6474 properties
'BIRTHPLACE' => 'Sabre\\VObject\\Property\\FlatText',
'DEATHPLACE' => 'Sabre\\VObject\\Property\\FlatText',
- 'DEATHDATE' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
+ 'DEATHDATE' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
// rfc6715 properties
- 'EXPERTISE' => 'Sabre\\VObject\\Property\\FlatText',
- 'HOBBY' => 'Sabre\\VObject\\Property\\FlatText',
- 'INTEREST' => 'Sabre\\VObject\\Property\\FlatText',
+ 'EXPERTISE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'HOBBY' => 'Sabre\\VObject\\Property\\FlatText',
+ 'INTEREST' => 'Sabre\\VObject\\Property\\FlatText',
'ORG-DIRECTORY' => 'Sabre\\VObject\\Property\\FlatText',
+
];
/**
@@ -142,22 +144,23 @@ class VCard extends VObject\Document
*
* @return int
*/
- public function getDocumentType()
- {
+ function getDocumentType() {
+
if (!$this->version) {
- $version = (string) $this->VERSION;
+
+ $version = (string)$this->VERSION;
switch ($version) {
- case '2.1':
+ case '2.1' :
$this->version = self::VCARD21;
break;
- case '3.0':
+ case '3.0' :
$this->version = self::VCARD30;
break;
- case '4.0':
+ case '4.0' :
$this->version = self::VCARD40;
break;
- default:
+ default :
// We don't want to cache the version if it's unknown,
// because we might get a version property in a bit.
return self::UNKNOWN;
@@ -165,6 +168,7 @@ class VCard extends VObject\Document
}
return $this->version;
+
}
/**
@@ -181,11 +185,11 @@ class VCard extends VObject\Document
*
* @return VCard
*/
- public function convert($target)
- {
- $converter = new VObject\VCardConverter();
+ function convert($target) {
+ $converter = new VObject\VCardConverter();
return $converter->convert($this, $target);
+
}
/**
@@ -217,8 +221,8 @@ class VCard extends VObject\Document
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$warnings = [];
$versionMap = [
@@ -228,28 +232,29 @@ class VCard extends VObject\Document
];
$version = $this->select('VERSION');
- if (1 === count($version)) {
- $version = (string) $this->VERSION;
- if ('2.1' !== $version && '3.0' !== $version && '4.0' !== $version) {
+ if (count($version) === 1) {
+ $version = (string)$this->VERSION;
+ if ($version !== '2.1' && $version !== '3.0' && $version !== '4.0') {
$warnings[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'Only vcard version 4.0 (RFC6350), version 3.0 (RFC2426) or version 2.1 (icm-vcard-2.1) are supported.',
- 'node' => $this,
+ 'node' => $this,
];
if ($options & self::REPAIR) {
$this->VERSION = $versionMap[self::DEFAULT_VERSION];
}
}
- if ('2.1' === $version && ($options & self::PROFILE_CARDDAV)) {
+ if ($version === '2.1' && ($options & self::PROFILE_CARDDAV)) {
$warnings[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'CardDAV servers are not allowed to accept vCard 2.1.',
- 'node' => $this,
+ 'node' => $this,
];
}
+
}
$uid = $this->select('UID');
- if (0 === count($uid)) {
+ if (count($uid) === 0) {
if ($options & self::PROFILE_CARDDAV) {
// Required for CardDAV
$warningLevel = 3;
@@ -264,22 +269,23 @@ class VCard extends VObject\Document
$warningLevel = 1;
}
$warnings[] = [
- 'level' => $warningLevel,
+ 'level' => $warningLevel,
'message' => $message,
- 'node' => $this,
+ 'node' => $this,
];
}
$fn = $this->select('FN');
- if (1 !== count($fn)) {
+ if (count($fn) !== 1) {
+
$repaired = false;
- if (($options & self::REPAIR) && 0 === count($fn)) {
+ if (($options & self::REPAIR) && count($fn) === 0) {
// We're going to try to see if we can use the contents of the
// N property.
if (isset($this->N)) {
- $value = explode(';', (string) $this->N);
+ $value = explode(';', (string)$this->N);
if (isset($value[1]) && $value[1]) {
- $this->FN = $value[1].' '.$value[0];
+ $this->FN = $value[1] . ' ' . $value[0];
} else {
$this->FN = $value[0];
}
@@ -287,19 +293,20 @@ class VCard extends VObject\Document
// Otherwise, the ORG property may work
} elseif (isset($this->ORG)) {
- $this->FN = (string) $this->ORG;
+ $this->FN = (string)$this->ORG;
$repaired = true;
// Otherwise, the EMAIL property may work
} elseif (isset($this->EMAIL)) {
- $this->FN = (string) $this->EMAIL;
+ $this->FN = (string)$this->EMAIL;
$repaired = true;
}
+
}
$warnings[] = [
- 'level' => $repaired ? 1 : 3,
+ 'level' => $repaired ? 1 : 3,
'message' => 'The FN property must appear in the VCARD component exactly 1 time',
- 'node' => $this,
+ 'node' => $this,
];
}
@@ -307,6 +314,7 @@ class VCard extends VObject\Document
parent::validate($options),
$warnings
);
+
}
/**
@@ -324,49 +332,50 @@ class VCard extends VObject\Document
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [
- 'ADR' => '*',
- 'ANNIVERSARY' => '?',
- 'BDAY' => '?',
- 'CALADRURI' => '*',
- 'CALURI' => '*',
- 'CATEGORIES' => '*',
+ 'ADR' => '*',
+ 'ANNIVERSARY' => '?',
+ 'BDAY' => '?',
+ 'CALADRURI' => '*',
+ 'CALURI' => '*',
+ 'CATEGORIES' => '*',
'CLIENTPIDMAP' => '*',
- 'EMAIL' => '*',
- 'FBURL' => '*',
- 'IMPP' => '*',
- 'GENDER' => '?',
- 'GEO' => '*',
- 'KEY' => '*',
- 'KIND' => '?',
- 'LANG' => '*',
- 'LOGO' => '*',
- 'MEMBER' => '*',
- 'N' => '?',
- 'NICKNAME' => '*',
- 'NOTE' => '*',
- 'ORG' => '*',
- 'PHOTO' => '*',
- 'PRODID' => '?',
- 'RELATED' => '*',
- 'REV' => '?',
- 'ROLE' => '*',
- 'SOUND' => '*',
- 'SOURCE' => '*',
- 'TEL' => '*',
- 'TITLE' => '*',
- 'TZ' => '*',
- 'URL' => '*',
- 'VERSION' => '1',
- 'XML' => '*',
+ 'EMAIL' => '*',
+ 'FBURL' => '*',
+ 'IMPP' => '*',
+ 'GENDER' => '?',
+ 'GEO' => '*',
+ 'KEY' => '*',
+ 'KIND' => '?',
+ 'LANG' => '*',
+ 'LOGO' => '*',
+ 'MEMBER' => '*',
+ 'N' => '?',
+ 'NICKNAME' => '*',
+ 'NOTE' => '*',
+ 'ORG' => '*',
+ 'PHOTO' => '*',
+ 'PRODID' => '?',
+ 'RELATED' => '*',
+ 'REV' => '?',
+ 'ROLE' => '*',
+ 'SOUND' => '*',
+ 'SOURCE' => '*',
+ 'TEL' => '*',
+ 'TITLE' => '*',
+ 'TZ' => '*',
+ 'URL' => '*',
+ 'VERSION' => '1',
+ 'XML' => '*',
// FN is commented out, because it's already handled by the
// validate function, which may also try to repair it.
// 'FN' => '+',
'UID' => '?',
];
+
}
/**
@@ -383,11 +392,12 @@ class VCard extends VObject\Document
*
* @return VObject\Property|null
*/
- public function preferred($propertyName)
- {
+ function preferred($propertyName) {
+
$preferred = null;
$lastPref = 101;
foreach ($this->select($propertyName) as $field) {
+
$pref = 101;
if (isset($field['TYPE']) && $field['TYPE']->has('PREF')) {
$pref = 1;
@@ -399,9 +409,10 @@ class VCard extends VObject\Document
$preferred = $field;
$lastPref = $pref;
}
- }
+ }
return $preferred;
+
}
/**
@@ -415,8 +426,7 @@ class VCard extends VObject\Document
*
* @return VObject\Property|null
*/
- public function getByType($propertyName, $type)
- {
+ function getByType($propertyName, $type) {
foreach ($this->select($propertyName) as $field) {
if (isset($field['TYPE']) && $field['TYPE']->has($type)) {
return $field;
@@ -429,13 +439,14 @@ class VCard extends VObject\Document
*
* @return array
*/
- protected function getDefaults()
- {
+ protected function getDefaults() {
+
return [
'VERSION' => '4.0',
- 'PRODID' => '-//Sabre//Sabre VObject '.VObject\Version::VERSION.'//EN',
- 'UID' => 'sabre-vobject-'.VObject\UUIDUtil::getUUID(),
+ 'PRODID' => '-//Sabre//Sabre VObject ' . VObject\Version::VERSION . '//EN',
+ 'UID' => 'sabre-vobject-' . VObject\UUIDUtil::getUUID(),
];
+
}
/**
@@ -444,8 +455,8 @@ class VCard extends VObject\Document
*
* @return array
*/
- public function jsonSerialize()
- {
+ function jsonSerialize() {
+
// A vcard does not have sub-components, so we're overriding this
// method to remove that array element.
$properties = [];
@@ -458,19 +469,23 @@ class VCard extends VObject\Document
strtolower($this->name),
$properties,
];
+
}
/**
* This method serializes the data into XML. This is used to create xCard or
* xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- public function xmlSerialize(Xml\Writer $writer)
- {
+ function xmlSerialize(Xml\Writer $writer) {
+
$propertiesByGroup = [];
foreach ($this->children() as $property) {
+
$group = $property->group;
if (!isset($propertiesByGroup[$group])) {
@@ -478,20 +493,25 @@ class VCard extends VObject\Document
}
$propertiesByGroup[$group][] = $property;
+
}
$writer->startElement(strtolower($this->name));
foreach ($propertiesByGroup as $group => $properties) {
+
if (!empty($group)) {
+
$writer->startElement('group');
$writer->writeAttribute('name', strtolower($group));
+
}
foreach ($properties as $property) {
switch ($property->name) {
+
case 'VERSION':
- break;
+ continue;
case 'XML':
$value = $property->getParts();
@@ -502,15 +522,18 @@ class VCard extends VObject\Document
default:
$property->xmlSerialize($writer);
break;
+
}
}
if (!empty($group)) {
$writer->endElement();
}
+
}
$writer->endElement();
+
}
/**
@@ -520,15 +543,16 @@ class VCard extends VObject\Document
*
* @return string
*/
- public function getClassNameForPropertyName($propertyName)
- {
+ function getClassNameForPropertyName($propertyName) {
+
$className = parent::getClassNameForPropertyName($propertyName);
// In vCard 4, BINARY no longer exists, and we need URI instead.
- if ('Sabre\\VObject\\Property\\Binary' == $className && self::VCARD40 === $this->getDocumentType()) {
+ if ($className == 'Sabre\\VObject\\Property\\Binary' && $this->getDocumentType() === self::VCARD40) {
return 'Sabre\\VObject\\Property\\Uri';
}
-
return $className;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Component/VEvent.php b/vendor/sabre/vobject/lib/Component/VEvent.php
index 09f37033c..7f6861190 100644
--- a/vendor/sabre/vobject/lib/Component/VEvent.php
+++ b/vendor/sabre/vobject/lib/Component/VEvent.php
@@ -16,8 +16,8 @@ use Sabre\VObject\Recur\NoInstancesException;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class VEvent extends VObject\Component
-{
+class VEvent extends VObject\Component {
+
/**
* Returns true or false depending on if the event falls in the specified
* time-range. This is used for filtering purposes.
@@ -30,15 +30,20 @@ class VEvent extends VObject\Component
*
* @return bool
*/
- public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end)
- {
+ function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) {
+
if ($this->RRULE) {
+
try {
+
$it = new EventIterator($this, null, $start->getTimezone());
+
} catch (NoInstancesException $e) {
+
// If we've catched this exception, there are no instances
// for the event that fall into the specified time-range.
return false;
+
}
$it->fastForward($start);
@@ -49,11 +54,13 @@ class VEvent extends VObject\Component
//
// If the starttime of the recurrence did not exceed the
// end of the time range as well, we have a match.
- return $it->getDTStart() < $end && $it->getDTEnd() > $start;
+ return ($it->getDTStart() < $end && $it->getDTEnd() > $start);
+
}
$effectiveStart = $this->DTSTART->getDateTime($start->getTimezone());
if (isset($this->DTEND)) {
+
// The DTEND property is considered non inclusive. So for a 3 day
// event in july, dtstart and dtend would have to be July 1st and
// July 4th respectively.
@@ -61,6 +68,7 @@ class VEvent extends VObject\Component
// See:
// http://tools.ietf.org/html/rfc5545#page-54
$effectiveEnd = $this->DTEND->getDateTime($end->getTimezone());
+
} elseif (isset($this->DURATION)) {
$effectiveEnd = $effectiveStart->add(VObject\DateTimeParser::parseDuration($this->DURATION));
} elseif (!$this->DTSTART->hasTime()) {
@@ -68,10 +76,10 @@ class VEvent extends VObject\Component
} else {
$effectiveEnd = $effectiveStart;
}
-
- return
+ return (
($start < $effectiveEnd) && ($end > $effectiveStart)
- ;
+ );
+
}
/**
@@ -79,12 +87,13 @@ class VEvent extends VObject\Component
*
* @return array
*/
- protected function getDefaults()
- {
+ protected function getDefaults() {
+
return [
- 'UID' => 'sabre-vobject-'.VObject\UUIDUtil::getUUID(),
- 'DTSTAMP' => gmdate('Ymd\\THis\\Z'),
+ 'UID' => 'sabre-vobject-' . VObject\UUIDUtil::getUUID(),
+ 'DTSTAMP' => date('Ymd\\THis\\Z'),
];
+
}
/**
@@ -102,42 +111,43 @@ class VEvent extends VObject\Component
*
* @var array
*/
- public function getValidationRules()
- {
- $hasMethod = isset($this->parent->METHOD);
+ function getValidationRules() {
+ $hasMethod = isset($this->parent->METHOD);
return [
- 'UID' => 1,
- 'DTSTAMP' => 1,
- 'DTSTART' => $hasMethod ? '?' : '1',
- 'CLASS' => '?',
- 'CREATED' => '?',
- 'DESCRIPTION' => '?',
- 'GEO' => '?',
+ 'UID' => 1,
+ 'DTSTAMP' => 1,
+ 'DTSTART' => $hasMethod ? '?' : '1',
+ 'CLASS' => '?',
+ 'CREATED' => '?',
+ 'DESCRIPTION' => '?',
+ 'GEO' => '?',
'LAST-MODIFIED' => '?',
- 'LOCATION' => '?',
- 'ORGANIZER' => '?',
- 'PRIORITY' => '?',
- 'SEQUENCE' => '?',
- 'STATUS' => '?',
- 'SUMMARY' => '?',
- 'TRANSP' => '?',
- 'URL' => '?',
+ 'LOCATION' => '?',
+ 'ORGANIZER' => '?',
+ 'PRIORITY' => '?',
+ 'SEQUENCE' => '?',
+ 'STATUS' => '?',
+ 'SUMMARY' => '?',
+ 'TRANSP' => '?',
+ 'URL' => '?',
'RECURRENCE-ID' => '?',
- 'RRULE' => '?',
- 'DTEND' => '?',
- 'DURATION' => '?',
-
- 'ATTACH' => '*',
- 'ATTENDEE' => '*',
- 'CATEGORIES' => '*',
- 'COMMENT' => '*',
- 'CONTACT' => '*',
- 'EXDATE' => '*',
+ 'RRULE' => '?',
+ 'DTEND' => '?',
+ 'DURATION' => '?',
+
+ 'ATTACH' => '*',
+ 'ATTENDEE' => '*',
+ 'CATEGORIES' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
+ 'EXDATE' => '*',
'REQUEST-STATUS' => '*',
- 'RELATED-TO' => '*',
- 'RESOURCES' => '*',
- 'RDATE' => '*',
+ 'RELATED-TO' => '*',
+ 'RESOURCES' => '*',
+ 'RDATE' => '*',
];
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Component/VFreeBusy.php b/vendor/sabre/vobject/lib/Component/VFreeBusy.php
index 558a85233..72294cc9f 100644
--- a/vendor/sabre/vobject/lib/Component/VFreeBusy.php
+++ b/vendor/sabre/vobject/lib/Component/VFreeBusy.php
@@ -15,8 +15,8 @@ use Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class VFreeBusy extends VObject\Component
-{
+class VFreeBusy extends VObject\Component {
+
/**
* Checks based on the contained FREEBUSY information, if a timeslot is
* available.
@@ -26,18 +26,19 @@ class VFreeBusy extends VObject\Component
*
* @return bool
*/
- public function isFree(DateTimeInterface $start, DatetimeInterface $end)
- {
+ function isFree(DateTimeInterface $start, DatetimeInterface $end) {
+
foreach ($this->select('FREEBUSY') as $freebusy) {
+
// We are only interested in FBTYPE=BUSY (the default),
// FBTYPE=BUSY-TENTATIVE or FBTYPE=BUSY-UNAVAILABLE.
- if (isset($freebusy['FBTYPE']) && 'BUSY' !== strtoupper(substr((string) $freebusy['FBTYPE'], 0, 4))) {
+ if (isset($freebusy['FBTYPE']) && strtoupper(substr((string)$freebusy['FBTYPE'], 0, 4)) !== 'BUSY') {
continue;
}
// The freebusy component can hold more than 1 value, separated by
// commas.
- $periods = explode(',', (string) $freebusy);
+ $periods = explode(',', (string)$freebusy);
foreach ($periods as $period) {
// Every period is formatted as [start]/[end]. The start is an
@@ -54,10 +55,13 @@ class VFreeBusy extends VObject\Component
if ($start < $busyEnd && $end > $busyStart) {
return false;
}
+
}
+
}
return true;
+
}
/**
@@ -75,22 +79,24 @@ class VFreeBusy extends VObject\Component
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [
- 'UID' => 1,
+ 'UID' => 1,
'DTSTAMP' => 1,
- 'CONTACT' => '?',
- 'DTSTART' => '?',
- 'DTEND' => '?',
+ 'CONTACT' => '?',
+ 'DTSTART' => '?',
+ 'DTEND' => '?',
'ORGANIZER' => '?',
- 'URL' => '?',
+ 'URL' => '?',
- 'ATTENDEE' => '*',
- 'COMMENT' => '*',
- 'FREEBUSY' => '*',
+ 'ATTENDEE' => '*',
+ 'COMMENT' => '*',
+ 'FREEBUSY' => '*',
'REQUEST-STATUS' => '*',
];
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Component/VJournal.php b/vendor/sabre/vobject/lib/Component/VJournal.php
index 9bd336776..a1b1a863d 100644
--- a/vendor/sabre/vobject/lib/Component/VJournal.php
+++ b/vendor/sabre/vobject/lib/Component/VJournal.php
@@ -14,8 +14,8 @@ use Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class VJournal extends VObject\Component
-{
+class VJournal extends VObject\Component {
+
/**
* Returns true or false depending on if the event falls in the specified
* time-range. This is used for filtering purposes.
@@ -28,8 +28,8 @@ class VJournal extends VObject\Component
*
* @return bool
*/
- public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end)
- {
+ function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) {
+
$dtstart = isset($this->DTSTART) ? $this->DTSTART->getDateTime() : null;
if ($dtstart) {
$effectiveEnd = $dtstart;
@@ -37,10 +37,11 @@ class VJournal extends VObject\Component
$effectiveEnd = $effectiveEnd->modify('+1 day');
}
- return $start <= $effectiveEnd && $end > $dtstart;
- }
+ return ($start <= $effectiveEnd && $end > $dtstart);
+ }
return false;
+
}
/**
@@ -58,35 +59,36 @@ class VJournal extends VObject\Component
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [
- 'UID' => 1,
+ 'UID' => 1,
'DTSTAMP' => 1,
- 'CLASS' => '?',
- 'CREATED' => '?',
- 'DTSTART' => '?',
+ 'CLASS' => '?',
+ 'CREATED' => '?',
+ 'DTSTART' => '?',
'LAST-MODIFIED' => '?',
- 'ORGANIZER' => '?',
+ 'ORGANIZER' => '?',
'RECURRENCE-ID' => '?',
- 'SEQUENCE' => '?',
- 'STATUS' => '?',
- 'SUMMARY' => '?',
- 'URL' => '?',
+ 'SEQUENCE' => '?',
+ 'STATUS' => '?',
+ 'SUMMARY' => '?',
+ 'URL' => '?',
'RRULE' => '?',
- 'ATTACH' => '*',
- 'ATTENDEE' => '*',
- 'CATEGORIES' => '*',
- 'COMMENT' => '*',
- 'CONTACT' => '*',
+ 'ATTACH' => '*',
+ 'ATTENDEE' => '*',
+ 'CATEGORIES' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
'DESCRIPTION' => '*',
- 'EXDATE' => '*',
- 'RELATED-TO' => '*',
- 'RDATE' => '*',
+ 'EXDATE' => '*',
+ 'RELATED-TO' => '*',
+ 'RDATE' => '*',
];
+
}
/**
@@ -94,11 +96,12 @@ class VJournal extends VObject\Component
*
* @return array
*/
- protected function getDefaults()
- {
+ protected function getDefaults() {
+
return [
- 'UID' => 'sabre-vobject-'.VObject\UUIDUtil::getUUID(),
- 'DTSTAMP' => gmdate('Ymd\\THis\\Z'),
+ 'UID' => 'sabre-vobject-' . VObject\UUIDUtil::getUUID(),
+ 'DTSTAMP' => date('Ymd\\THis\\Z'),
];
+
}
}
diff --git a/vendor/sabre/vobject/lib/Component/VTimeZone.php b/vendor/sabre/vobject/lib/Component/VTimeZone.php
index 21c062377..f6eb6cba1 100644
--- a/vendor/sabre/vobject/lib/Component/VTimeZone.php
+++ b/vendor/sabre/vobject/lib/Component/VTimeZone.php
@@ -14,8 +14,8 @@ use Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class VTimeZone extends VObject\Component
-{
+class VTimeZone extends VObject\Component {
+
/**
* Returns the PHP DateTimeZone for this VTIMEZONE component.
*
@@ -24,9 +24,10 @@ class VTimeZone extends VObject\Component
*
* @return \DateTimeZone
*/
- public function getTimeZone()
- {
- return VObject\TimeZoneUtil::getTimeZone((string) $this->TZID, $this->root);
+ function getTimeZone() {
+
+ return VObject\TimeZoneUtil::getTimeZone((string)$this->TZID, $this->root);
+
}
/**
@@ -44,13 +45,13 @@ class VTimeZone extends VObject\Component
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [
'TZID' => 1,
'LAST-MODIFIED' => '?',
- 'TZURL' => '?',
+ 'TZURL' => '?',
// At least 1 STANDARD or DAYLIGHT must appear.
//
@@ -59,5 +60,7 @@ class VTimeZone extends VObject\Component
'STANDARD' => '*',
'DAYLIGHT' => '*',
];
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Component/VTodo.php b/vendor/sabre/vobject/lib/Component/VTodo.php
index 9de77e841..144ced694 100644
--- a/vendor/sabre/vobject/lib/Component/VTodo.php
+++ b/vendor/sabre/vobject/lib/Component/VTodo.php
@@ -14,8 +14,8 @@ use Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class VTodo extends VObject\Component
-{
+class VTodo extends VObject\Component {
+
/**
* Returns true or false depending on if the event falls in the specified
* time-range. This is used for filtering purposes.
@@ -28,8 +28,8 @@ class VTodo extends VObject\Component
*
* @return bool
*/
- public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end)
- {
+ function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) {
+
$dtstart = isset($this->DTSTART) ? $this->DTSTART->getDateTime() : null;
$duration = isset($this->DURATION) ? VObject\DateTimeParser::parseDuration($this->DURATION) : null;
$due = isset($this->DUE) ? $this->DUE->getDateTime() : null;
@@ -39,7 +39,6 @@ class VTodo extends VObject\Component
if ($dtstart) {
if ($duration) {
$effectiveEnd = $dtstart->add($duration);
-
return $start <= $effectiveEnd && $end > $dtstart;
} elseif ($due) {
return
@@ -50,7 +49,7 @@ class VTodo extends VObject\Component
}
}
if ($due) {
- return $start < $due && $end >= $due;
+ return ($start < $due && $end >= $due);
}
if ($completed && $created) {
return
@@ -58,13 +57,13 @@ class VTodo extends VObject\Component
($end >= $created || $end >= $completed);
}
if ($completed) {
- return $start <= $completed && $end >= $completed;
+ return ($start <= $completed && $end >= $completed);
}
if ($created) {
- return $end > $created;
+ return ($end > $created);
}
-
return true;
+
}
/**
@@ -82,44 +81,45 @@ class VTodo extends VObject\Component
*
* @var array
*/
- public function getValidationRules()
- {
+ function getValidationRules() {
+
return [
- 'UID' => 1,
+ 'UID' => 1,
'DTSTAMP' => 1,
- 'CLASS' => '?',
- 'COMPLETED' => '?',
- 'CREATED' => '?',
- 'DESCRIPTION' => '?',
- 'DTSTART' => '?',
- 'GEO' => '?',
+ 'CLASS' => '?',
+ 'COMPLETED' => '?',
+ 'CREATED' => '?',
+ 'DESCRIPTION' => '?',
+ 'DTSTART' => '?',
+ 'GEO' => '?',
'LAST-MODIFIED' => '?',
- 'LOCATION' => '?',
- 'ORGANIZER' => '?',
- 'PERCENT' => '?',
- 'PRIORITY' => '?',
+ 'LOCATION' => '?',
+ 'ORGANIZER' => '?',
+ 'PERCENT' => '?',
+ 'PRIORITY' => '?',
'RECURRENCE-ID' => '?',
- 'SEQUENCE' => '?',
- 'STATUS' => '?',
- 'SUMMARY' => '?',
- 'URL' => '?',
+ 'SEQUENCE' => '?',
+ 'STATUS' => '?',
+ 'SUMMARY' => '?',
+ 'URL' => '?',
- 'RRULE' => '?',
- 'DUE' => '?',
+ 'RRULE' => '?',
+ 'DUE' => '?',
'DURATION' => '?',
- 'ATTACH' => '*',
- 'ATTENDEE' => '*',
- 'CATEGORIES' => '*',
- 'COMMENT' => '*',
- 'CONTACT' => '*',
- 'EXDATE' => '*',
+ 'ATTACH' => '*',
+ 'ATTENDEE' => '*',
+ 'CATEGORIES' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
+ 'EXDATE' => '*',
'REQUEST-STATUS' => '*',
- 'RELATED-TO' => '*',
- 'RESOURCES' => '*',
- 'RDATE' => '*',
+ 'RELATED-TO' => '*',
+ 'RESOURCES' => '*',
+ 'RDATE' => '*',
];
+
}
/**
@@ -144,29 +144,36 @@ class VTodo extends VObject\Component
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$result = parent::validate($options);
if (isset($this->DUE) && isset($this->DTSTART)) {
+
$due = $this->DUE;
$dtStart = $this->DTSTART;
if ($due->getValueType() !== $dtStart->getValueType()) {
+
$result[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'The value type (DATE or DATE-TIME) must be identical for DUE and DTSTART',
- 'node' => $due,
+ 'node' => $due,
];
+
} elseif ($due->getDateTime() < $dtStart->getDateTime()) {
+
$result[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'DUE must occur after DTSTART',
- 'node' => $due,
+ 'node' => $due,
];
+
}
+
}
return $result;
+
}
/**
@@ -174,11 +181,13 @@ class VTodo extends VObject\Component
*
* @return array
*/
- protected function getDefaults()
- {
+ protected function getDefaults() {
+
return [
- 'UID' => 'sabre-vobject-'.VObject\UUIDUtil::getUUID(),
+ 'UID' => 'sabre-vobject-' . VObject\UUIDUtil::getUUID(),
'DTSTAMP' => date('Ymd\\THis\\Z'),
];
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/DateTimeParser.php b/vendor/sabre/vobject/lib/DateTimeParser.php
index 1c253437a..f9a802d25 100644
--- a/vendor/sabre/vobject/lib/DateTimeParser.php
+++ b/vendor/sabre/vobject/lib/DateTimeParser.php
@@ -16,8 +16,8 @@ use DateTimeZone;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class DateTimeParser
-{
+class DateTimeParser {
+
/**
* Parses an iCalendar (rfc5545) formatted datetime and returns a
* DateTimeImmutable object.
@@ -26,48 +26,49 @@ class DateTimeParser
* if the non-UTC format is used. The argument is used as a reference, the
* returned DateTimeImmutable object will still be in the UTC timezone.
*
- * @param string $dt
+ * @param string $dt
* @param DateTimeZone $tz
*
* @return DateTimeImmutable
*/
- public static function parseDateTime($dt, DateTimeZone $tz = null)
- {
+ static function parseDateTime($dt, DateTimeZone $tz = null) {
+
// Format is YYYYMMDD + "T" + hhmmss
$result = preg_match('/^([0-9]{4})([0-1][0-9])([0-3][0-9])T([0-2][0-9])([0-5][0-9])([0-5][0-9])([Z]?)$/', $dt, $matches);
if (!$result) {
- throw new InvalidDataException('The supplied iCalendar datetime value is incorrect: '.$dt);
+ throw new InvalidDataException('The supplied iCalendar datetime value is incorrect: ' . $dt);
}
- if ('Z' === $matches[7] || is_null($tz)) {
+ if ($matches[7] === 'Z' || is_null($tz)) {
$tz = new DateTimeZone('UTC');
}
try {
- $date = new DateTimeImmutable($matches[1].'-'.$matches[2].'-'.$matches[3].' '.$matches[4].':'.$matches[5].':'.$matches[6], $tz);
+ $date = new DateTimeImmutable($matches[1] . '-' . $matches[2] . '-' . $matches[3] . ' ' . $matches[4] . ':' . $matches[5] . ':' . $matches[6], $tz);
} catch (\Exception $e) {
- throw new InvalidDataException('The supplied iCalendar datetime value is incorrect: '.$dt);
+ throw new InvalidDataException('The supplied iCalendar datetime value is incorrect: ' . $dt);
}
return $date;
+
}
/**
* Parses an iCalendar (rfc5545) formatted date and returns a DateTimeImmutable object.
*
- * @param string $date
+ * @param string $date
* @param DateTimeZone $tz
*
* @return DateTimeImmutable
*/
- public static function parseDate($date, DateTimeZone $tz = null)
- {
+ static function parseDate($date, DateTimeZone $tz = null) {
+
// Format is YYYYMMDD
$result = preg_match('/^([0-9]{4})([0-1][0-9])([0-3][0-9])$/', $date, $matches);
if (!$result) {
- throw new InvalidDataException('The supplied iCalendar date value is incorrect: '.$date);
+ throw new InvalidDataException('The supplied iCalendar date value is incorrect: ' . $date);
}
if (is_null($tz)) {
@@ -75,12 +76,13 @@ class DateTimeParser
}
try {
- $date = new DateTimeImmutable($matches[1].'-'.$matches[2].'-'.$matches[3], $tz);
+ $date = new DateTimeImmutable($matches[1] . '-' . $matches[2] . '-' . $matches[3], $tz);
} catch (\Exception $e) {
- throw new InvalidDataException('The supplied iCalendar date value is incorrect: '.$date);
+ throw new InvalidDataException('The supplied iCalendar date value is incorrect: ' . $date);
}
return $date;
+
}
/**
@@ -90,21 +92,22 @@ class DateTimeParser
* suitable for strtotime or DateTime::modify.
*
* @param string $duration
- * @param bool $asString
+ * @param bool $asString
*
* @return DateInterval|string
*/
- public static function parseDuration($duration, $asString = false)
- {
+ static function parseDuration($duration, $asString = false) {
+
$result = preg_match('/^(?<plusminus>\+|-)?P((?<week>\d+)W)?((?<day>\d+)D)?(T((?<hour>\d+)H)?((?<minute>\d+)M)?((?<second>\d+)S)?)?$/', $duration, $matches);
if (!$result) {
- throw new InvalidDataException('The supplied iCalendar duration value is incorrect: '.$duration);
+ throw new InvalidDataException('The supplied iCalendar duration value is incorrect: ' . $duration);
}
if (!$asString) {
+
$invert = false;
- if ('-' === $matches['plusminus']) {
+ if ($matches['plusminus'] === '-') {
$invert = true;
}
@@ -117,7 +120,7 @@ class DateTimeParser
];
foreach ($parts as $part) {
- $matches[$part] = isset($matches[$part]) && $matches[$part] ? (int) $matches[$part] : 0;
+ $matches[$part] = isset($matches[$part]) && $matches[$part] ? (int)$matches[$part] : 0;
}
// We need to re-construct the $duration string, because weeks and
@@ -130,26 +133,28 @@ class DateTimeParser
}
if ($days) {
- $duration .= $days.'D';
+ $duration .= $days . 'D';
}
if ($matches['minute'] || $matches['second'] || $matches['hour']) {
+
$duration .= 'T';
if ($matches['hour']) {
- $duration .= $matches['hour'].'H';
+ $duration .= $matches['hour'] . 'H';
}
if ($matches['minute']) {
- $duration .= $matches['minute'].'M';
+ $duration .= $matches['minute'] . 'M';
}
if ($matches['second']) {
- $duration .= $matches['second'].'S';
+ $duration .= $matches['second'] . 'S';
}
+
}
- if ('P' === $duration) {
+ if ($duration === 'P') {
$duration = 'PT0S';
}
@@ -160,6 +165,7 @@ class DateTimeParser
}
return $iv;
+
}
$parts = [
@@ -174,36 +180,38 @@ class DateTimeParser
foreach ($parts as $part) {
if (isset($matches[$part]) && $matches[$part]) {
- $newDur .= ' '.$matches[$part].' '.$part.'s';
+ $newDur .= ' ' . $matches[$part] . ' ' . $part . 's';
}
}
- $newDur = ('-' === $matches['plusminus'] ? '-' : '+').trim($newDur);
+ $newDur = ($matches['plusminus'] === '-' ? '-' : '+') . trim($newDur);
- if ('+' === $newDur) {
+ if ($newDur === '+') {
$newDur = '+0 seconds';
- }
+ };
return $newDur;
+
}
/**
* Parses either a Date or DateTime, or Duration value.
*
- * @param string $date
+ * @param string $date
* @param DateTimeZone|string $referenceTz
*
* @return DateTimeImmutable|DateInterval
*/
- public static function parse($date, $referenceTz = null)
- {
- if ('P' === $date[0] || ('-' === $date[0] && 'P' === $date[1])) {
+ static function parse($date, $referenceTz = null) {
+
+ if ($date[0] === 'P' || ($date[0] === '-' && $date[1] === 'P')) {
return self::parseDuration($date);
- } elseif (8 === strlen($date)) {
+ } elseif (strlen($date) === 8) {
return self::parseDate($date, $referenceTz);
} else {
return self::parseDateTime($date, $referenceTz);
}
+
}
/**
@@ -262,8 +270,8 @@ class DateTimeParser
*
* @return array
*/
- public static function parseVCardDateTime($date)
- {
+ static function parseVCardDateTime($date) {
+
$regex = '/^
(?: # date part
(?:
@@ -288,6 +296,7 @@ class DateTimeParser
$/x';
if (!preg_match($regex, $date, $matches)) {
+
// Attempting to parse the extended format.
$regex = '/^
(?: # date part
@@ -312,8 +321,9 @@ class DateTimeParser
$/x';
if (!preg_match($regex, $date, $matches)) {
- throw new InvalidDataException('Invalid vCard date-time string: '.$date);
+ throw new InvalidDataException('Invalid vCard date-time string: ' . $date);
}
+
}
$parts = [
'year',
@@ -322,21 +332,24 @@ class DateTimeParser
'hour',
'minute',
'second',
- 'timezone',
+ 'timezone'
];
$result = [];
foreach ($parts as $part) {
+
if (empty($matches[$part])) {
$result[$part] = null;
- } elseif ('-' === $matches[$part] || '--' === $matches[$part]) {
+ } elseif ($matches[$part] === '-' || $matches[$part] === '--') {
$result[$part] = null;
} else {
$result[$part] = $matches[$part];
}
+
}
return $result;
+
}
/**
@@ -381,8 +394,8 @@ class DateTimeParser
*
* @return array
*/
- public static function parseVCardTime($date)
- {
+ static function parseVCardTime($date) {
+
$regex = '/^
(?<hour> [0-9]{2} | -)
(?<minute> [0-9]{2} | -)?
@@ -396,7 +409,9 @@ class DateTimeParser
)?
$/x';
+
if (!preg_match($regex, $date, $matches)) {
+
// Attempting to parse the extended format.
$regex = '/^
(?: (?<hour> [0-9]{2}) : | -)
@@ -412,28 +427,32 @@ class DateTimeParser
$/x';
if (!preg_match($regex, $date, $matches)) {
- throw new InvalidDataException('Invalid vCard time string: '.$date);
+ throw new InvalidDataException('Invalid vCard time string: ' . $date);
}
+
}
$parts = [
'hour',
'minute',
'second',
- 'timezone',
+ 'timezone'
];
$result = [];
foreach ($parts as $part) {
+
if (empty($matches[$part])) {
$result[$part] = null;
- } elseif ('-' === $matches[$part]) {
+ } elseif ($matches[$part] === '-') {
$result[$part] = null;
} else {
$result[$part] = $matches[$part];
}
+
}
return $result;
+
}
/**
@@ -487,32 +506,32 @@ class DateTimeParser
*
* @return array
*/
- public static function parseVCardDateAndOrTime($date)
- {
+ static function parseVCardDateAndOrTime($date) {
+
// \d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d
- $valueDate = '/^(?J)(?:'.
- '(?<year>\d{4})(?<month>\d\d)(?<date>\d\d)'.
- '|(?<year>\d{4})-(?<month>\d\d)'.
- '|--(?<month>\d\d)(?<date>\d\d)?'.
- '|---(?<date>\d\d)'.
+ $valueDate = '/^(?J)(?:' .
+ '(?<year>\d{4})(?<month>\d\d)(?<date>\d\d)' .
+ '|(?<year>\d{4})-(?<month>\d\d)' .
+ '|--(?<month>\d\d)(?<date>\d\d)?' .
+ '|---(?<date>\d\d)' .
')$/';
// (\d\d(\d\d(\d\d)?)?|-\d\d(\d\d)?|--\d\d)(Z|[+\-]\d\d(\d\d)?)?
- $valueTime = '/^(?J)(?:'.
- '((?<hour>\d\d)((?<minute>\d\d)(?<second>\d\d)?)?'.
- '|-(?<minute>\d\d)(?<second>\d\d)?'.
- '|--(?<second>\d\d))'.
- '(?<timezone>(Z|[+\-]\d\d(\d\d)?))?'.
+ $valueTime = '/^(?J)(?:' .
+ '((?<hour>\d\d)((?<minute>\d\d)(?<second>\d\d)?)?' .
+ '|-(?<minute>\d\d)(?<second>\d\d)?' .
+ '|--(?<second>\d\d))' .
+ '(?<timezone>(Z|[+\-]\d\d(\d\d)?))?' .
')$/';
// (\d{8}|--\d{4}|---\d\d)T\d\d(\d\d(\d\d)?)?(Z|[+\-]\d\d(\d\d?)?
- $valueDateTime = '/^(?:'.
- '((?<year0>\d{4})(?<month0>\d\d)(?<date0>\d\d)'.
- '|--(?<month1>\d\d)(?<date1>\d\d)'.
- '|---(?<date2>\d\d))'.
- 'T'.
- '(?<hour>\d\d)((?<minute>\d\d)(?<second>\d\d)?)?'.
- '(?<timezone>(Z|[+\-]\d\d(\d\d?)))?'.
+ $valueDateTime = '/^(?:' .
+ '((?<year0>\d{4})(?<month0>\d\d)(?<date0>\d\d)' .
+ '|--(?<month1>\d\d)(?<date1>\d\d)' .
+ '|---(?<date2>\d\d))' .
+ 'T' .
+ '(?<hour>\d\d)((?<minute>\d\d)(?<second>\d\d)?)?' .
+ '(?<timezone>(Z|[+\-]\d\d(\d\d?)))?' .
')$/';
// date-and-or-time is date | date-time | time
@@ -521,17 +540,17 @@ class DateTimeParser
if (0 === preg_match($valueDate, $date, $matches)
&& 0 === preg_match($valueDateTime, $date, $matches)
&& 0 === preg_match($valueTime, $date, $matches)) {
- throw new InvalidDataException('Invalid vCard date-time string: '.$date);
+ throw new InvalidDataException('Invalid vCard date-time string: ' . $date);
}
$parts = [
- 'year' => null,
- 'month' => null,
- 'date' => null,
- 'hour' => null,
- 'minute' => null,
- 'second' => null,
- 'timezone' => null,
+ 'year' => null,
+ 'month' => null,
+ 'date' => null,
+ 'hour' => null,
+ 'minute' => null,
+ 'second' => null,
+ 'timezone' => null
];
// The $valueDateTime expression has a bug with (?J) so we simulate it.
@@ -556,5 +575,6 @@ class DateTimeParser
unset($parts['year0']);
return $parts;
+
}
}
diff --git a/vendor/sabre/vobject/lib/Document.php b/vendor/sabre/vobject/lib/Document.php
index 0cb2e0978..03252ab06 100644
--- a/vendor/sabre/vobject/lib/Document.php
+++ b/vendor/sabre/vobject/lib/Document.php
@@ -16,8 +16,8 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-abstract class Document extends Component
-{
+abstract class Document extends Component {
+
/**
* Unknown document type.
*/
@@ -55,28 +55,28 @@ abstract class Document extends Component
*
* @var string
*/
- public static $defaultName;
+ static $defaultName;
/**
* List of properties, and which classes they map to.
*
* @var array
*/
- public static $propertyMap = [];
+ static $propertyMap = [];
/**
* List of components, along with which classes they map to.
*
* @var array
*/
- public static $componentMap = [];
+ static $componentMap = [];
/**
* List of value-types, and which classes they map to.
*
* @var array
*/
- public static $valueMap = [];
+ static $valueMap = [];
/**
* Creates a new document.
@@ -91,20 +91,20 @@ abstract class Document extends Component
*
* new Document(array $children = [], $defaults = true);
* new Document(string $name, array $children = [], $defaults = true)
+ *
+ * @return void
*/
- public function __construct()
- {
+ function __construct() {
+
$args = func_get_args();
- $name = static::$defaultName;
- if (0 === count($args) || is_array($args[0])) {
- $children = isset($args[0]) ? $args[0] : [];
- $defaults = isset($args[1]) ? $args[1] : true;
+ if (count($args) === 0 || is_array($args[0])) {
+ array_unshift($args, $this, static::$defaultName);
+ call_user_func_array(['parent', '__construct'], $args);
} else {
- $name = $args[0];
- $children = isset($args[1]) ? $args[1] : [];
- $defaults = isset($args[2]) ? $args[2] : true;
+ array_unshift($args, $this);
+ call_user_func_array(['parent', '__construct'], $args);
}
- parent::__construct($this, $name, $children, $defaults);
+
}
/**
@@ -112,9 +112,10 @@ abstract class Document extends Component
*
* @return int
*/
- public function getDocumentType()
- {
+ function getDocumentType() {
+
return self::UNKNOWN;
+
}
/**
@@ -128,13 +129,18 @@ abstract class Document extends Component
*
* @return mixed
*/
- public function create($name)
- {
+ function create($name) {
+
if (isset(static::$componentMap[strtoupper($name)])) {
+
return call_user_func_array([$this, 'createComponent'], func_get_args());
+
} else {
+
return call_user_func_array([$this, 'createProperty'], func_get_args());
+
}
+
}
/**
@@ -152,24 +158,22 @@ abstract class Document extends Component
* ensure that this does not happen, set $defaults to false.
*
* @param string $name
- * @param array $children
- * @param bool $defaults
+ * @param array $children
+ * @param bool $defaults
*
* @return Component
*/
- public function createComponent($name, array $children = null, $defaults = true)
- {
+ function createComponent($name, array $children = null, $defaults = true) {
+
$name = strtoupper($name);
$class = 'Sabre\\VObject\\Component';
if (isset(static::$componentMap[$name])) {
$class = static::$componentMap[$name];
}
- if (is_null($children)) {
- $children = [];
- }
-
+ if (is_null($children)) $children = [];
return new $class($this, $name, $children, $defaults);
+
}
/**
@@ -183,16 +187,16 @@ abstract class Document extends Component
* Parameter objects.
*
* @param string $name
- * @param mixed $value
- * @param array $parameters
- * @param string $valueType Force a specific valuetype, such as URI or TEXT
+ * @param mixed $value
+ * @param array $parameters
+ * @param string $valueType Force a specific valuetype, such as URI or TEXT
*
* @return Property
*/
- public function createProperty($name, $value = null, array $parameters = null, $valueType = null)
- {
+ function createProperty($name, $value = null, array $parameters = null, $valueType = null) {
+
// If there's a . in the name, it means it's prefixed by a groupname.
- if (false !== ($i = strpos($name, '.'))) {
+ if (($i = strpos($name, '.')) !== false) {
$group = substr($name, 0, $i);
$name = strtoupper(substr($name, $i + 1));
} else {
@@ -213,17 +217,17 @@ abstract class Document extends Component
if (isset($parameters['VALUE'])) {
$class = $this->getClassNameForPropertyValue($parameters['VALUE']);
if (is_null($class)) {
- throw new InvalidDataException('Unsupported VALUE parameter for '.$name.' property. You supplied "'.$parameters['VALUE'].'"');
+ throw new InvalidDataException('Unsupported VALUE parameter for ' . $name . ' property. You supplied "' . $parameters['VALUE'] . '"');
}
- } else {
+ }
+ else {
$class = $this->getClassNameForPropertyName($name);
}
}
- if (is_null($parameters)) {
- $parameters = [];
- }
+ if (is_null($parameters)) $parameters = [];
return new $class($this, $name, $value, $parameters, $group);
+
}
/**
@@ -235,15 +239,15 @@ abstract class Document extends Component
* This method returns null if we don't have a specialized class.
*
* @param string $valueParam
- *
* @return string|null
*/
- public function getClassNameForPropertyValue($valueParam)
- {
+ function getClassNameForPropertyValue($valueParam) {
+
$valueParam = strtoupper($valueParam);
if (isset(static::$valueMap[$valueParam])) {
return static::$valueMap[$valueParam];
}
+
}
/**
@@ -253,12 +257,14 @@ abstract class Document extends Component
*
* @return string
*/
- public function getClassNameForPropertyName($propertyName)
- {
+ function getClassNameForPropertyName($propertyName) {
+
if (isset(static::$propertyMap[$propertyName])) {
return static::$propertyMap[$propertyName];
} else {
return 'Sabre\\VObject\\Property\\Unknown';
}
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/ElementList.php b/vendor/sabre/vobject/lib/ElementList.php
index 56058cbd5..959249247 100644
--- a/vendor/sabre/vobject/lib/ElementList.php
+++ b/vendor/sabre/vobject/lib/ElementList.php
@@ -15,19 +15,23 @@ use LogicException;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class ElementList extends ArrayIterator
-{
+class ElementList extends ArrayIterator {
+
+
/* {{{ ArrayAccess Interface */
/**
* Sets an item through ArrayAccess.
*
- * @param int $offset
+ * @param int $offset
* @param mixed $value
+ *
+ * @return void
*/
- public function offsetSet($offset, $value)
- {
+ function offsetSet($offset, $value) {
+
throw new LogicException('You can not add new objects to an ElementList');
+
}
/**
@@ -36,11 +40,15 @@ class ElementList extends ArrayIterator
* This method just forwards the request to the inner iterator
*
* @param int $offset
+ *
+ * @return void
*/
- public function offsetUnset($offset)
- {
+ function offsetUnset($offset) {
+
throw new LogicException('You can not remove objects from an ElementList');
+
}
/* }}} */
+
}
diff --git a/vendor/sabre/vobject/lib/EofException.php b/vendor/sabre/vobject/lib/EofException.php
index 837af7eb7..e9bd55878 100644
--- a/vendor/sabre/vobject/lib/EofException.php
+++ b/vendor/sabre/vobject/lib/EofException.php
@@ -10,6 +10,6 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class EofException extends ParseException
-{
+class EofException extends ParseException {
+
}
diff --git a/vendor/sabre/vobject/lib/FreeBusyData.php b/vendor/sabre/vobject/lib/FreeBusyData.php
index d05dfc799..0a6c72bb2 100644
--- a/vendor/sabre/vobject/lib/FreeBusyData.php
+++ b/vendor/sabre/vobject/lib/FreeBusyData.php
@@ -9,17 +9,17 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class FreeBusyData
-{
+class FreeBusyData {
+
/**
- * Start timestamp.
+ * Start timestamp
*
* @var int
*/
protected $start;
/**
- * End timestamp.
+ * End timestamp
*
* @var int
*/
@@ -32,31 +32,35 @@ class FreeBusyData
*/
protected $data;
- public function __construct($start, $end)
- {
+ function __construct($start, $end) {
+
$this->start = $start;
$this->end = $end;
$this->data = [];
$this->data[] = [
'start' => $this->start,
- 'end' => $this->end,
- 'type' => 'FREE',
+ 'end' => $this->end,
+ 'type' => 'FREE',
];
+
}
/**
* Adds free or busytime to the data.
*
- * @param int $start
- * @param int $end
- * @param string $type FREE, BUSY, BUSY-UNAVAILABLE or BUSY-TENTATIVE
+ * @param int $start
+ * @param int $end
+ * @param string $type FREE, BUSY, BUSY-UNAVAILABLE or BUSY-TENTATIVE
+ * @return void
*/
- public function add($start, $end, $type)
- {
+ function add($start, $end, $type) {
+
if ($start > $this->end || $end < $this->start) {
+
// This new data is outside our timerange.
return;
+
}
if ($start < $this->start) {
@@ -71,7 +75,7 @@ class FreeBusyData
// Finding out where we need to insert the new item.
$currentIndex = 0;
while ($start > $this->data[$currentIndex]['end']) {
- ++$currentIndex;
+ $currentIndex++;
}
// The standard insertion point will be one _after_ the first
@@ -80,14 +84,14 @@ class FreeBusyData
$newItem = [
'start' => $start,
- 'end' => $end,
- 'type' => $type,
+ 'end' => $end,
+ 'type' => $type,
];
$preceedingItem = $this->data[$insertStartIndex - 1];
if ($this->data[$insertStartIndex - 1]['start'] === $start) {
// The old item starts at the exact same point as the new item.
- --$insertStartIndex;
+ $insertStartIndex--;
}
// Now we know where to insert the item, we need to know where it
@@ -101,32 +105,32 @@ class FreeBusyData
}
while ($end > $this->data[$currentIndex]['end']) {
- ++$currentIndex;
+
+ $currentIndex++;
+
}
// What we are about to insert into the array
$newItems = [
- $newItem,
+ $newItem
];
// This is the amount of items that are completely overwritten by the
// new item.
$itemsToDelete = $currentIndex - $insertStartIndex;
- if ($this->data[$currentIndex]['end'] <= $end) {
- ++$itemsToDelete;
- }
+ if ($this->data[$currentIndex]['end'] <= $end) $itemsToDelete++;
// If itemsToDelete was -1, it means that the newly inserted item is
// actually sitting inside an existing one. This means we need to split
// the item at the current position in two and insert the new item in
// between.
- if (-1 === $itemsToDelete) {
+ if ($itemsToDelete === -1) {
$itemsToDelete = 0;
if ($newItem['end'] < $preceedingItem['end']) {
$newItems[] = [
'start' => $newItem['end'] + 1,
- 'end' => $preceedingItem['end'],
- 'type' => $preceedingItem['type'],
+ 'end' => $preceedingItem['end'],
+ 'type' => $preceedingItem['type']
];
}
}
@@ -151,8 +155,8 @@ class FreeBusyData
// merge them into one item.
if ($this->data[$insertStartIndex - 1]['type'] === $this->data[$insertStartIndex]['type']) {
$doMerge = true;
- --$mergeOffset;
- ++$mergeDelete;
+ $mergeOffset--;
+ $mergeDelete++;
$mergeItem['start'] = $this->data[$insertStartIndex - 1]['start'];
}
}
@@ -164,9 +168,10 @@ class FreeBusyData
// merge them into one item.
if ($this->data[$insertStartIndex + 1]['type'] === $this->data[$insertStartIndex]['type']) {
$doMerge = true;
- ++$mergeDelete;
+ $mergeDelete++;
$mergeItem['end'] = $this->data[$insertStartIndex + 1]['end'];
}
+
}
if ($doMerge) {
array_splice(
@@ -176,10 +181,13 @@ class FreeBusyData
[$mergeItem]
);
}
+
}
- public function getData()
- {
+ function getData() {
+
return $this->data;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/FreeBusyGenerator.php b/vendor/sabre/vobject/lib/FreeBusyGenerator.php
index adb214c08..e30b136c4 100644
--- a/vendor/sabre/vobject/lib/FreeBusyGenerator.php
+++ b/vendor/sabre/vobject/lib/FreeBusyGenerator.php
@@ -23,8 +23,8 @@ use Sabre\VObject\Recur\NoInstancesException;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class FreeBusyGenerator
-{
+class FreeBusyGenerator {
+
/**
* Input objects.
*
@@ -71,7 +71,7 @@ class FreeBusyGenerator
/**
* A VAVAILABILITY document.
*
- * If this is set, its information will be included when calculating
+ * If this is set, it's information will be included when calculating
* freebusy time.
*
* @var Document
@@ -86,11 +86,11 @@ class FreeBusyGenerator
*
* @param DateTimeInterface $start
* @param DateTimeInterface $end
- * @param mixed $objects
- * @param DateTimeZone $timeZone
+ * @param mixed $objects
+ * @param DateTimeZone $timeZone
*/
- public function __construct(DateTimeInterface $start = null, DateTimeInterface $end = null, $objects = null, DateTimeZone $timeZone = null)
- {
+ function __construct(DateTimeInterface $start = null, DateTimeInterface $end = null, $objects = null, DateTimeZone $timeZone = null) {
+
$this->setTimeRange($start, $end);
if ($objects) {
@@ -100,6 +100,7 @@ class FreeBusyGenerator
$timeZone = new DateTimeZone('UTC');
}
$this->setTimeZone($timeZone);
+
}
/**
@@ -111,20 +112,24 @@ class FreeBusyGenerator
* The VFREEBUSY object will be automatically added though.
*
* @param Document $vcalendar
+ * @return void
*/
- public function setBaseObject(Document $vcalendar)
- {
+ function setBaseObject(Document $vcalendar) {
+
$this->baseObject = $vcalendar;
+
}
/**
* Sets a VAVAILABILITY document.
*
* @param Document $vcalendar
+ * @return void
*/
- public function setVAvailability(Document $vcalendar)
- {
+ function setVAvailability(Document $vcalendar) {
+
$this->vavailability = $vcalendar;
+
}
/**
@@ -135,15 +140,18 @@ class FreeBusyGenerator
* It's also possible to specify multiple objects as an array.
*
* @param mixed $objects
+ *
+ * @return void
*/
- public function setObjects($objects)
- {
+ function setObjects($objects) {
+
if (!is_array($objects)) {
$objects = [$objects];
}
$this->objects = [];
foreach ($objects as $object) {
+
if (is_string($object) || is_resource($object)) {
$this->objects[] = Reader::read($object);
} elseif ($object instanceof Component) {
@@ -151,7 +159,9 @@ class FreeBusyGenerator
} else {
throw new \InvalidArgumentException('You can only pass strings or \\Sabre\\VObject\\Component arguments to setObjects');
}
+
}
+
}
/**
@@ -161,9 +171,11 @@ class FreeBusyGenerator
*
* @param DateTimeInterface $start
* @param DateTimeInterface $end
+ *
+ * @return void
*/
- public function setTimeRange(DateTimeInterface $start = null, DateTimeInterface $end = null)
- {
+ function setTimeRange(DateTimeInterface $start = null, DateTimeInterface $end = null) {
+
if (!$start) {
$start = new DateTimeImmutable(Settings::$minDate);
}
@@ -172,16 +184,20 @@ class FreeBusyGenerator
}
$this->start = $start;
$this->end = $end;
+
}
/**
* Sets the reference timezone for floating times.
*
* @param DateTimeZone $timeZone
+ *
+ * @return void
*/
- public function setTimeZone(DateTimeZone $timeZone)
- {
+ function setTimeZone(DateTimeZone $timeZone) {
+
$this->timeZone = $timeZone;
+
}
/**
@@ -190,19 +206,23 @@ class FreeBusyGenerator
*
* @return Component
*/
- public function getResult()
- {
+ function getResult() {
+
$fbData = new FreeBusyData(
$this->start->getTimeStamp(),
$this->end->getTimeStamp()
);
if ($this->vavailability) {
+
$this->calculateAvailability($fbData, $this->vavailability);
+
}
$this->calculateBusy($fbData, $this->objects);
return $this->generateFreeBusyCalendar($fbData);
+
+
}
/**
@@ -210,30 +230,29 @@ class FreeBusyGenerator
* available times.
*
* @param FreeBusyData $fbData
- * @param VCalendar $vavailability
+ * @param VCalendar $vavailability
+ * @return void
*/
- protected function calculateAvailability(FreeBusyData $fbData, VCalendar $vavailability)
- {
+ protected function calculateAvailability(FreeBusyData $fbData, VCalendar $vavailability) {
+
$vavailComps = iterator_to_array($vavailability->VAVAILABILITY);
usort(
$vavailComps,
- function ($a, $b) {
+ function($a, $b) {
+
// We need to order the components by priority. Priority 1
// comes first, up until priority 9. Priority 0 comes after
// priority 9. No priority implies priority 0.
//
// Yes, I'm serious.
- $priorityA = isset($a->PRIORITY) ? (int) $a->PRIORITY->getValue() : 0;
- $priorityB = isset($b->PRIORITY) ? (int) $b->PRIORITY->getValue() : 0;
+ $priorityA = isset($a->PRIORITY) ? (int)$a->PRIORITY->getValue() : 0;
+ $priorityB = isset($b->PRIORITY) ? (int)$b->PRIORITY->getValue() : 0;
- if (0 === $priorityA) {
- $priorityA = 10;
- }
- if (0 === $priorityB) {
- $priorityB = 10;
- }
+ if ($priorityA === 0) $priorityA = 10;
+ if ($priorityB === 0) $priorityB = 10;
return $priorityA - $priorityB;
+
}
);
@@ -248,6 +267,7 @@ class FreeBusyGenerator
$new = [];
foreach ($old as $vavail) {
+
list($compStart, $compEnd) = $vavail->getEffectiveStartEnd();
// We don't care about datetimes that are earlier or later than the
@@ -268,19 +288,24 @@ class FreeBusyGenerator
// Going through our existing list of components to see if there's
// a higher priority component that already fully covers this one.
foreach ($new as $higherVavail) {
+
list($higherStart, $higherEnd) = $higherVavail->getEffectiveStartEnd();
if (
(is_null($higherStart) || $higherStart < $compStart) &&
(is_null($higherEnd) || $higherEnd > $compEnd)
) {
+
// Component is fully covered by a higher priority
// component. We can skip this component.
continue 2;
+
}
+
}
// We're keeping it!
$new[] = $vavail;
+
}
// Lastly, we need to traverse the remaining components and fill in the
@@ -289,6 +314,7 @@ class FreeBusyGenerator
// We traverse the components in reverse, because we want the higher
// priority components to override the lower ones.
foreach (array_reverse($new) as $vavail) {
+
$busyType = isset($vavail->BUSYTYPE) ? strtoupper($vavail->BUSYTYPE) : 'BUSY-UNAVAILABLE';
list($vavailStart, $vavailEnd) = $vavail->getEffectiveStartEnd();
@@ -310,53 +336,57 @@ class FreeBusyGenerator
);
// Looping over the AVAILABLE components.
- if (isset($vavail->AVAILABLE)) {
- foreach ($vavail->AVAILABLE as $available) {
- list($availStart, $availEnd) = $available->getEffectiveStartEnd();
- $fbData->add(
+ if (isset($vavail->AVAILABLE)) foreach ($vavail->AVAILABLE as $available) {
+
+ list($availStart, $availEnd) = $available->getEffectiveStartEnd();
+ $fbData->add(
$availStart->getTimeStamp(),
$availEnd->getTimeStamp(),
'FREE'
);
- if ($available->RRULE) {
- // Our favourite thing: recurrence!!
+ if ($available->RRULE) {
+ // Our favourite thing: recurrence!!
- $rruleIterator = new Recur\RRuleIterator(
+ $rruleIterator = new Recur\RRuleIterator(
$available->RRULE->getValue(),
$availStart
);
- $rruleIterator->fastForward($vavailStart);
+ $rruleIterator->fastForward($vavailStart);
- $startEndDiff = $availStart->diff($availEnd);
+ $startEndDiff = $availStart->diff($availEnd);
- while ($rruleIterator->valid()) {
- $recurStart = $rruleIterator->current();
- $recurEnd = $recurStart->add($startEndDiff);
+ while ($rruleIterator->valid()) {
- if ($recurStart > $vavailEnd) {
- // We're beyond the legal timerange.
- break;
- }
+ $recurStart = $rruleIterator->current();
+ $recurEnd = $recurStart->add($startEndDiff);
- if ($recurEnd > $vavailEnd) {
- // Truncating the end if it exceeds the
- // VAVAILABILITY end.
- $recurEnd = $vavailEnd;
- }
+ if ($recurStart > $vavailEnd) {
+ // We're beyond the legal timerange.
+ break;
+ }
- $fbData->add(
+ if ($recurEnd > $vavailEnd) {
+ // Truncating the end if it exceeds the
+ // VAVAILABILITY end.
+ $recurEnd = $vavailEnd;
+ }
+
+ $fbData->add(
$recurStart->getTimeStamp(),
$recurEnd->getTimeStamp(),
'FREE'
);
- $rruleIterator->next();
- }
+ $rruleIterator->next();
+
}
}
+
}
+
}
+
}
/**
@@ -364,25 +394,28 @@ class FreeBusyGenerator
* times on fbData.
*
* @param FreeBusyData $fbData
- * @param VCalendar[] $objects
+ * @param VCalendar[] $objects
*/
- protected function calculateBusy(FreeBusyData $fbData, array $objects)
- {
+ protected function calculateBusy(FreeBusyData $fbData, array $objects) {
+
foreach ($objects as $key => $object) {
+
foreach ($object->getBaseComponents() as $component) {
+
switch ($component->name) {
- case 'VEVENT':
+
+ case 'VEVENT' :
$FBTYPE = 'BUSY';
- if (isset($component->TRANSP) && ('TRANSPARENT' === strtoupper($component->TRANSP))) {
+ if (isset($component->TRANSP) && (strtoupper($component->TRANSP) === 'TRANSPARENT')) {
break;
}
if (isset($component->STATUS)) {
$status = strtoupper($component->STATUS);
- if ('CANCELLED' === $status) {
+ if ($status === 'CANCELLED') {
break;
}
- if ('TENTATIVE' === $status) {
+ if ($status === 'TENTATIVE') {
$FBTYPE = 'BUSY-TENTATIVE';
}
}
@@ -391,13 +424,13 @@ class FreeBusyGenerator
if ($component->RRULE) {
try {
- $iterator = new EventIterator($object, (string) $component->UID, $this->timeZone);
+ $iterator = new EventIterator($object, (string)$component->UID, $this->timeZone);
} catch (NoInstancesException $e) {
// This event is recurring, but it doesn't have a single
// instance. We are skipping this event from the output
// entirely.
unset($this->objects[$key]);
- break;
+ continue;
}
if ($this->start) {
@@ -407,6 +440,7 @@ class FreeBusyGenerator
$maxRecurrences = Settings::$maxRecurrences;
while ($iterator->valid() && --$maxRecurrences) {
+
$startTime = $iterator->getDTStart();
if ($this->end && $startTime > $this->end) {
break;
@@ -417,8 +451,11 @@ class FreeBusyGenerator
];
$iterator->next();
+
}
+
} else {
+
$startTime = $component->DTSTART->getDateTime($this->timeZone);
if ($this->end && $startTime > $this->end) {
break;
@@ -427,7 +464,7 @@ class FreeBusyGenerator
if (isset($component->DTEND)) {
$endTime = $component->DTEND->getDateTime($this->timeZone);
} elseif (isset($component->DURATION)) {
- $duration = DateTimeParser::parseDuration((string) $component->DURATION);
+ $duration = DateTimeParser::parseDuration((string)$component->DURATION);
$endTime = clone $startTime;
$endTime = $endTime->add($duration);
} elseif (!$component->DTSTART->hasTime()) {
@@ -439,15 +476,13 @@ class FreeBusyGenerator
}
$times[] = [$startTime, $endTime];
+
}
foreach ($times as $time) {
- if ($this->end && $time[0] > $this->end) {
- break;
- }
- if ($this->start && $time[1] < $this->start) {
- break;
- }
+
+ if ($this->end && $time[0] > $this->end) break;
+ if ($this->start && $time[1] < $this->start) break;
$fbData->add(
$time[0]->getTimeStamp(),
@@ -457,21 +492,21 @@ class FreeBusyGenerator
}
break;
- case 'VFREEBUSY':
+ case 'VFREEBUSY' :
foreach ($component->FREEBUSY as $freebusy) {
+
$fbType = isset($freebusy['FBTYPE']) ? strtoupper($freebusy['FBTYPE']) : 'BUSY';
// Skipping intervals marked as 'free'
- if ('FREE' === $fbType) {
+ if ($fbType === 'FREE')
continue;
- }
$values = explode(',', $freebusy);
foreach ($values as $value) {
list($startTime, $endTime) = explode('/', $value);
$startTime = DateTimeParser::parseDateTime($startTime);
- if ('P' === substr($endTime, 0, 1) || '-P' === substr($endTime, 0, 2)) {
+ if (substr($endTime, 0, 1) === 'P' || substr($endTime, 0, 2) === '-P') {
$duration = DateTimeParser::parseDuration($endTime);
$endTime = clone $startTime;
$endTime = $endTime->add($duration);
@@ -479,23 +514,27 @@ class FreeBusyGenerator
$endTime = DateTimeParser::parseDateTime($endTime);
}
- if ($this->start && $this->start > $endTime) {
- continue;
- }
- if ($this->end && $this->end < $startTime) {
- continue;
- }
+ if ($this->start && $this->start > $endTime) continue;
+ if ($this->end && $this->end < $startTime) continue;
$fbData->add(
$startTime->getTimeStamp(),
$endTime->getTimeStamp(),
$fbType
);
+
}
+
+
}
break;
+
}
+
+
}
+
}
+
}
/**
@@ -504,8 +543,8 @@ class FreeBusyGenerator
*
* @return VCalendar
*/
- protected function generateFreeBusyCalendar(FreeBusyData $fbData)
- {
+ protected function generateFreeBusyCalendar(FreeBusyData $fbData) {
+
if ($this->baseObject) {
$calendar = $this->baseObject;
} else {
@@ -532,29 +571,34 @@ class FreeBusyGenerator
$vfreebusy->add($dtstamp);
foreach ($fbData->getData() as $busyTime) {
+
$busyType = strtoupper($busyTime['type']);
// Ignoring all the FREE parts, because those are already assumed.
- if ('FREE' === $busyType) {
+ if ($busyType === 'FREE') {
continue;
}
- $busyTime[0] = new \DateTimeImmutable('@'.$busyTime['start'], $tz);
- $busyTime[1] = new \DateTimeImmutable('@'.$busyTime['end'], $tz);
+ $busyTime[0] = new \DateTimeImmutable('@' . $busyTime['start'], $tz);
+ $busyTime[1] = new \DateTimeImmutable('@' . $busyTime['end'], $tz);
$prop = $calendar->createProperty(
'FREEBUSY',
- $busyTime[0]->format('Ymd\\THis\\Z').'/'.$busyTime[1]->format('Ymd\\THis\\Z')
+ $busyTime[0]->format('Ymd\\THis\\Z') . '/' . $busyTime[1]->format('Ymd\\THis\\Z')
);
// Only setting FBTYPE if it's not BUSY, because BUSY is the
// default anyway.
- if ('BUSY' !== $busyType) {
+ if ($busyType !== 'BUSY') {
$prop['FBTYPE'] = $busyType;
}
$vfreebusy->add($prop);
+
}
return $calendar;
+
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/ITip/Broker.php b/vendor/sabre/vobject/lib/ITip/Broker.php
index b1cfee367..b954cdc8d 100644
--- a/vendor/sabre/vobject/lib/ITip/Broker.php
+++ b/vendor/sabre/vobject/lib/ITip/Broker.php
@@ -35,8 +35,8 @@ use Sabre\VObject\Recur\EventIterator;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Broker
-{
+class Broker {
+
/**
* This setting determines whether the rules for the SCHEDULE-AGENT
* parameter should be followed.
@@ -104,34 +104,37 @@ class Broker
*
* If the iTip message was not supported, we will always return false.
*
- * @param Message $itipMessage
+ * @param Message $itipMessage
* @param VCalendar $existingObject
*
* @return VCalendar|null
*/
- public function processMessage(Message $itipMessage, VCalendar $existingObject = null)
- {
+ function processMessage(Message $itipMessage, VCalendar $existingObject = null) {
+
// We only support events at the moment.
- if ('VEVENT' !== $itipMessage->component) {
+ if ($itipMessage->component !== 'VEVENT') {
return false;
}
switch ($itipMessage->method) {
- case 'REQUEST':
+
+ case 'REQUEST' :
return $this->processMessageRequest($itipMessage, $existingObject);
- case 'CANCEL':
+ case 'CANCEL' :
return $this->processMessageCancel($itipMessage, $existingObject);
- case 'REPLY':
+ case 'REPLY' :
return $this->processMessageReply($itipMessage, $existingObject);
- default:
+ default :
// Unsupported iTip message
return;
+
}
return $existingObject;
+
}
/**
@@ -158,13 +161,13 @@ class Broker
* organizer gets the 'declined' message.
*
* @param VCalendar|string $calendar
- * @param string|array $userHref
+ * @param string|array $userHref
* @param VCalendar|string $oldCalendar
*
* @return array
*/
- public function parseEvent($calendar = null, $userHref, $oldCalendar = null)
- {
+ function parseEvent($calendar = null, $userHref, $oldCalendar = null) {
+
if ($oldCalendar) {
if (is_string($oldCalendar)) {
$oldCalendar = Reader::read($oldCalendar);
@@ -177,15 +180,16 @@ class Broker
$oldEventInfo = $this->parseEventInfo($oldCalendar);
} else {
$oldEventInfo = [
- 'organizer' => null,
+ 'organizer' => null,
'significantChangeHash' => '',
- 'attendees' => [],
+ 'attendees' => [],
];
}
- $userHref = (array) $userHref;
+ $userHref = (array)$userHref;
if (!is_null($calendar)) {
+
if (is_string($calendar)) {
$calendar = Reader::read($calendar);
}
@@ -213,6 +217,7 @@ class Broker
$eventInfo['organizer'] = $oldEventInfo['organizer'];
$eventInfo['organizerName'] = $oldEventInfo['organizerName'];
}
+
} else {
// The calendar object got deleted, we need to process this as a
// cancellation / decline.
@@ -228,17 +233,19 @@ class Broker
$eventInfo['attendees'] = [];
// Increasing the sequence, but only if the organizer deleted
// the event.
- ++$eventInfo['sequence'];
+ $eventInfo['sequence']++;
} else {
// This is an attendee deleting the event.
foreach ($eventInfo['attendees'] as $key => $attendee) {
if (in_array($attendee['href'], $userHref)) {
- $eventInfo['attendees'][$key]['instances'] = ['master' => ['id' => 'master', 'partstat' => 'DECLINED'],
+ $eventInfo['attendees'][$key]['instances'] = ['master' =>
+ ['id' => 'master', 'partstat' => 'DECLINED']
];
}
}
}
$baseCalendar = $oldCalendar;
+
}
if (in_array($eventInfo['organizer'], $userHref)) {
@@ -253,8 +260,8 @@ class Broker
}
}
}
-
return [];
+
}
/**
@@ -264,13 +271,13 @@ class Broker
* invite, or an update to an existing one.
*
*
- * @param Message $itipMessage
+ * @param Message $itipMessage
* @param VCalendar $existingObject
*
* @return VCalendar|null
*/
- protected function processMessageRequest(Message $itipMessage, VCalendar $existingObject = null)
- {
+ protected function processMessageRequest(Message $itipMessage, VCalendar $existingObject = null) {
+
if (!$existingObject) {
// This is a new invite, and we're just going to copy over
// all the components from the invite.
@@ -289,8 +296,8 @@ class Broker
$existingObject->add(clone $component);
}
}
-
return $existingObject;
+
}
/**
@@ -300,13 +307,13 @@ class Broker
* attendee got removed from an event, or an event got cancelled
* altogether.
*
- * @param Message $itipMessage
+ * @param Message $itipMessage
* @param VCalendar $existingObject
*
* @return VCalendar|null
*/
- protected function processMessageCancel(Message $itipMessage, VCalendar $existingObject = null)
- {
+ protected function processMessageCancel(Message $itipMessage, VCalendar $existingObject = null) {
+
if (!$existingObject) {
// The event didn't exist in the first place, so we're just
// ignoring this message.
@@ -316,8 +323,8 @@ class Broker
$vevent->SEQUENCE = $itipMessage->sequence;
}
}
-
return $existingObject;
+
}
/**
@@ -326,13 +333,13 @@ class Broker
* The message is a reply. This is for example an attendee telling
* an organizer he accepted the invite, or declined it.
*
- * @param Message $itipMessage
+ * @param Message $itipMessage
* @param VCalendar $existingObject
*
* @return VCalendar|null
*/
- protected function processMessageReply(Message $itipMessage, VCalendar $existingObject = null)
- {
+ protected function processMessageReply(Message $itipMessage, VCalendar $existingObject = null) {
+
// A reply can only be processed based on an existing object.
// If the object is not available, the reply is ignored.
if (!$existingObject) {
@@ -357,7 +364,7 @@ class Broker
$masterObject = null;
foreach ($existingObject->VEVENT as $vevent) {
$recurId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->getValue() : 'master';
- if ('master' === $recurId) {
+ if ($recurId === 'master') {
$masterObject = $vevent;
}
if (isset($instances[$recurId])) {
@@ -379,11 +386,9 @@ class Broker
// Adding a new attendee. The iTip documentation calls this
// a party crasher.
$attendee = $vevent->add('ATTENDEE', $itipMessage->sender, [
- 'PARTSTAT' => $instances[$recurId],
+ 'PARTSTAT' => $instances[$recurId]
]);
- if ($itipMessage->senderName) {
- $attendee['CN'] = $itipMessage->senderName;
- }
+ if ($itipMessage->senderName) $attendee['CN'] = $itipMessage->senderName;
}
unset($instances[$recurId]);
}
@@ -396,23 +401,24 @@ class Broker
// If we got replies to instances that did not exist in the
// original list, it means that new exceptions must be created.
foreach ($instances as $recurId => $partstat) {
+
$recurrenceIterator = new EventIterator($existingObject, $itipMessage->uid);
$found = false;
$iterations = 1000;
do {
+
$newObject = $recurrenceIterator->getEventObject();
$recurrenceIterator->next();
if (isset($newObject->{'RECURRENCE-ID'}) && $newObject->{'RECURRENCE-ID'}->getValue() === $recurId) {
$found = true;
}
- --$iterations;
+ $iterations--;
+
} while ($recurrenceIterator->valid() && !$found && $iterations);
// Invalid recurrence id. Skipping this object.
- if (!$found) {
- continue;
- }
+ if (!$found) continue;
unset(
$newObject->RRULE,
@@ -432,16 +438,17 @@ class Broker
if (!$attendeeFound) {
// Adding a new attendee
$attendee = $newObject->add('ATTENDEE', $itipMessage->sender, [
- 'PARTSTAT' => $partstat,
+ 'PARTSTAT' => $partstat
]);
if ($itipMessage->senderName) {
$attendee['CN'] = $itipMessage->senderName;
}
}
$existingObject->add($newObject);
- }
+ }
return $existingObject;
+
}
/**
@@ -453,22 +460,22 @@ class Broker
* specific messages for these situations.
*
* @param VCalendar $calendar
- * @param array $eventInfo
- * @param array $oldEventInfo
+ * @param array $eventInfo
+ * @param array $oldEventInfo
*
* @return array
*/
- protected function parseEventForOrganizer(VCalendar $calendar, array $eventInfo, array $oldEventInfo)
- {
+ protected function parseEventForOrganizer(VCalendar $calendar, array $eventInfo, array $oldEventInfo) {
+
// Merging attendee lists.
$attendees = [];
foreach ($oldEventInfo['attendees'] as $attendee) {
$attendees[$attendee['href']] = [
- 'href' => $attendee['href'],
+ 'href' => $attendee['href'],
'oldInstances' => $attendee['instances'],
'newInstances' => [],
- 'name' => $attendee['name'],
- 'forceSend' => null,
+ 'name' => $attendee['name'],
+ 'forceSend' => null,
];
}
foreach ($eventInfo['attendees'] as $attendee) {
@@ -478,11 +485,11 @@ class Broker
$attendees[$attendee['href']]['forceSend'] = $attendee['forceSend'];
} else {
$attendees[$attendee['href']] = [
- 'href' => $attendee['href'],
+ 'href' => $attendee['href'],
'oldInstances' => [],
'newInstances' => $attendee['instances'],
- 'name' => $attendee['name'],
- 'forceSend' => $attendee['forceSend'],
+ 'name' => $attendee['name'],
+ 'forceSend' => $attendee['forceSend'],
];
}
}
@@ -490,6 +497,7 @@ class Broker
$messages = [];
foreach ($attendees as $attendee) {
+
// An organizer can also be an attendee. We should not generate any
// messages for those.
if ($attendee['href'] === $eventInfo['organizer']) {
@@ -506,6 +514,7 @@ class Broker
$message->recipientName = $attendee['name'];
if (!$attendee['newInstances']) {
+
// If there are no instances the attendee is a part of, it
// means the attendee was removed and we need to send him a
// CANCEL.
@@ -514,13 +523,8 @@ class Broker
// Creating the new iCalendar body.
$icalMsg = new VCalendar();
$icalMsg->METHOD = $message->method;
-
- foreach ($calendar->select('VTIMEZONE') as $timezone) {
- $icalMsg->add(clone $timezone);
- }
-
$event = $icalMsg->add('VEVENT', [
- 'UID' => $message->uid,
+ 'UID' => $message->uid,
'SEQUENCE' => $message->sequence,
]);
if (isset($calendar->VEVENT->SUMMARY)) {
@@ -533,14 +537,14 @@ class Broker
$event->add(clone $calendar->VEVENT->DURATION);
}
$org = $event->add('ORGANIZER', $eventInfo['organizer']);
- if ($eventInfo['organizerName']) {
- $org['CN'] = $eventInfo['organizerName'];
- }
+ if ($eventInfo['organizerName']) $org['CN'] = $eventInfo['organizerName'];
$event->add('ATTENDEE', $attendee['href'], [
'CN' => $attendee['name'],
]);
$message->significantChange = true;
+
} else {
+
// The attendee gets the updated event body
$message->method = 'REQUEST';
@@ -561,13 +565,15 @@ class Broker
// difference in instances that the attendee is invited to.
$message->significantChange =
- 'REQUEST' === $attendee['forceSend'] ||
+ $attendee['forceSend'] === 'REQUEST' ||
array_keys($attendee['oldInstances']) != array_keys($attendee['newInstances']) ||
$oldEventInfo['significantChangeHash'] !== $eventInfo['significantChangeHash'];
foreach ($attendee['newInstances'] as $instanceId => $instanceInfo) {
+
$currentEvent = clone $eventInfo['instances'][$instanceId];
- if ('master' === $instanceId) {
+ if ($instanceId === 'master') {
+
// We need to find a list of events that the attendee
// is not a part of to add to the list of exceptions.
$exceptions = [];
@@ -604,18 +610,24 @@ class Broker
if (!isset($attendee['PARTSTAT'])) {
$attendee['PARTSTAT'] = 'NEEDS-ACTION';
}
+
}
+
}
$icalMsg->add($currentEvent);
+
}
+
}
$message->message = $icalMsg;
$messages[] = $message;
+
}
return $messages;
+
}
/**
@@ -624,21 +636,21 @@ class Broker
* This function figures out if we need to send a reply to an organizer.
*
* @param VCalendar $calendar
- * @param array $eventInfo
- * @param array $oldEventInfo
- * @param string $attendee
+ * @param array $eventInfo
+ * @param array $oldEventInfo
+ * @param string $attendee
*
* @return Message[]
*/
- protected function parseEventForAttendee(VCalendar $calendar, array $eventInfo, array $oldEventInfo, $attendee)
- {
- if ($this->scheduleAgentServerRules && 'CLIENT' === $eventInfo['organizerScheduleAgent']) {
+ protected function parseEventForAttendee(VCalendar $calendar, array $eventInfo, array $oldEventInfo, $attendee) {
+
+ if ($this->scheduleAgentServerRules && $eventInfo['organizerScheduleAgent'] === 'CLIENT') {
return [];
}
// Don't bother generating messages for events that have already been
// cancelled.
- if ('CANCELLED' === $eventInfo['status']) {
+ if ($eventInfo['status'] === 'CANCELLED') {
return [];
}
@@ -648,22 +660,26 @@ class Broker
$instances = [];
foreach ($oldInstances as $instance) {
+
$instances[$instance['id']] = [
- 'id' => $instance['id'],
+ 'id' => $instance['id'],
'oldstatus' => $instance['partstat'],
'newstatus' => null,
];
+
}
foreach ($eventInfo['attendees'][$attendee]['instances'] as $instance) {
+
if (isset($instances[$instance['id']])) {
$instances[$instance['id']]['newstatus'] = $instance['partstat'];
} else {
$instances[$instance['id']] = [
- 'id' => $instance['id'],
+ 'id' => $instance['id'],
'oldstatus' => null,
'newstatus' => $instance['partstat'],
];
}
+
}
// We need to also look for differences in EXDATE. If there are new
@@ -671,29 +687,33 @@ class Broker
// event, which means we need to send DECLINED specifically for those
// instances.
// We only need to do that though, if the master event is not declined.
- if (isset($instances['master']) && 'DECLINED' !== $instances['master']['newstatus']) {
+ if (isset($instances['master']) && $instances['master']['newstatus'] !== 'DECLINED') {
foreach ($eventInfo['exdate'] as $exDate) {
+
if (!in_array($exDate, $oldEventInfo['exdate'])) {
if (isset($instances[$exDate])) {
$instances[$exDate]['newstatus'] = 'DECLINED';
} else {
$instances[$exDate] = [
- 'id' => $exDate,
+ 'id' => $exDate,
'oldstatus' => null,
'newstatus' => 'DECLINED',
];
}
}
+
}
}
// Gathering a few extra properties for each instance.
foreach ($instances as $recurId => $instanceInfo) {
+
if (isset($eventInfo['instances'][$recurId])) {
$instances[$recurId]['dtstart'] = clone $eventInfo['instances'][$recurId]->DTSTART;
} else {
$instances[$recurId]['dtstart'] = $recurId;
}
+
}
$message = new Message();
@@ -712,13 +732,14 @@ class Broker
$hasReply = false;
foreach ($instances as $instance) {
- if ($instance['oldstatus'] == $instance['newstatus'] && 'REPLY' !== $eventInfo['organizerForceSend']) {
+
+ if ($instance['oldstatus'] == $instance['newstatus'] && $eventInfo['organizerForceSend'] !== 'REPLY') {
// Skip
continue;
}
$event = $icalMsg->add('VEVENT', [
- 'UID' => $message->uid,
+ 'UID' => $message->uid,
'SEQUENCE' => $message->sequence,
]);
$summary = isset($calendar->VEVENT->SUMMARY) ? $calendar->VEVENT->SUMMARY->getValue() : '';
@@ -752,7 +773,7 @@ class Broker
$event->add('SUMMARY', $summary);
}
}
- if ('master' !== $instance['id']) {
+ if ($instance['id'] !== 'master') {
$dt = DateTimeParser::parse($instance['id'], $eventInfo['timezone']);
// Treat is as a DATE field
if (strlen($instance['id']) <= 8) {
@@ -766,21 +787,22 @@ class Broker
$organizer['CN'] = $message->recipientName;
}
$attendee = $event->add('ATTENDEE', $message->sender, [
- 'PARTSTAT' => $instance['newstatus'],
+ 'PARTSTAT' => $instance['newstatus']
]);
if ($message->senderName) {
$attendee['CN'] = $message->senderName;
}
$hasReply = true;
+
}
if ($hasReply) {
$message->message = $icalMsg;
-
return [$message];
} else {
return [];
}
+
}
/**
@@ -802,13 +824,12 @@ class Broker
* based on.
* 11. significantChangeHash
* 12. status
- *
* @param VCalendar $calendar
*
* @return array
*/
- protected function parseEventInfo(VCalendar $calendar = null)
- {
+ protected function parseEventInfo(VCalendar $calendar = null) {
+
$uid = null;
$organizer = null;
$organizerName = null;
@@ -847,7 +868,7 @@ class Broker
$organizer = $vevent->ORGANIZER->getNormalizedValue();
$organizerName = isset($vevent->ORGANIZER['CN']) ? $vevent->ORGANIZER['CN'] : null;
} else {
- if (strtoupper($organizer) !== strtoupper($vevent->ORGANIZER->getNormalizedValue())) {
+ if ($organizer !== $vevent->ORGANIZER->getNormalizedValue()) {
throw new SameOrganizerForAllComponentsException('Every instance of the event must have the same organizer.');
}
}
@@ -857,7 +878,7 @@ class Broker
null;
$organizerScheduleAgent =
isset($vevent->ORGANIZER['SCHEDULE-AGENT']) ?
- strtoupper((string) $vevent->ORGANIZER['SCHEDULE-AGENT']) :
+ strtoupper((string)$vevent->ORGANIZER['SCHEDULE-AGENT']) :
'SERVER';
}
if (is_null($sequence) && isset($vevent->SEQUENCE)) {
@@ -873,7 +894,7 @@ class Broker
foreach ($vevent->select('RRULE') as $rr) {
foreach ($rr->getParts() as $key => $val) {
// ignore default values (https://github.com/sabre-io/vobject/issues/126)
- if ('INTERVAL' === $key && 1 == $val) {
+ if ($key === 'INTERVAL' && $val == 1) {
continue;
}
if (is_array($val)) {
@@ -890,7 +911,7 @@ class Broker
$recurId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->getValue() : 'master';
if (is_null($timezone)) {
- if ('master' === $recurId) {
+ if ($recurId === 'master') {
$timezone = $vevent->DTSTART->getDateTime()->getTimeZone();
} else {
$timezone = $vevent->{'RECURRENCE-ID'}->getDateTime()->getTimeZone();
@@ -898,9 +919,10 @@ class Broker
}
if (isset($vevent->ATTENDEE)) {
foreach ($vevent->ATTENDEE as $attendee) {
+
if ($this->scheduleAgentServerRules &&
isset($attendee['SCHEDULE-AGENT']) &&
- 'CLIENT' === strtoupper($attendee['SCHEDULE-AGENT']->getValue())
+ strtoupper($attendee['SCHEDULE-AGENT']->getValue()) === 'CLIENT'
) {
continue;
}
@@ -914,42 +936,45 @@ class Broker
strtoupper($attendee['SCHEDULE-FORCE-SEND']) :
null;
+
if (isset($attendees[$attendee->getNormalizedValue()])) {
$attendees[$attendee->getNormalizedValue()]['instances'][$recurId] = [
- 'id' => $recurId,
- 'partstat' => $partStat,
+ 'id' => $recurId,
+ 'partstat' => $partStat,
'forceSend' => $forceSend,
];
} else {
$attendees[$attendee->getNormalizedValue()] = [
- 'href' => $attendee->getNormalizedValue(),
+ 'href' => $attendee->getNormalizedValue(),
'instances' => [
$recurId => [
- 'id' => $recurId,
+ 'id' => $recurId,
'partstat' => $partStat,
],
],
- 'name' => isset($attendee['CN']) ? (string) $attendee['CN'] : null,
+ 'name' => isset($attendee['CN']) ? (string)$attendee['CN'] : null,
'forceSend' => $forceSend,
];
}
+
}
$instances[$recurId] = $vevent;
+
}
foreach ($this->significantChangeProperties as $prop) {
if (isset($vevent->$prop)) {
$propertyValues = $vevent->select($prop);
- $significantChangeHash .= $prop.':';
+ $significantChangeHash .= $prop . ':';
- if ('EXDATE' === $prop) {
- $significantChangeHash .= implode(',', $exdate).';';
- } elseif ('RRULE' === $prop) {
- $significantChangeHash .= implode(',', $rrule).';';
+ if ($prop === 'EXDATE') {
+ $significantChangeHash .= implode(',', $exdate) . ';';
+ } elseif ($prop === 'RRULE') {
+ $significantChangeHash .= implode(',', $rrule) . ';';
} else {
foreach ($propertyValues as $val) {
- $significantChangeHash .= $val->getValue().';';
+ $significantChangeHash .= $val->getValue() . ';';
}
}
}
@@ -971,5 +996,7 @@ class Broker
'significantChangeHash',
'status'
);
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/ITip/ITipException.php b/vendor/sabre/vobject/lib/ITip/ITipException.php
index 949563614..ad5e53ab4 100644
--- a/vendor/sabre/vobject/lib/ITip/ITipException.php
+++ b/vendor/sabre/vobject/lib/ITip/ITipException.php
@@ -11,6 +11,5 @@ use Exception;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class ITipException extends Exception
-{
+class ITipException extends Exception {
}
diff --git a/vendor/sabre/vobject/lib/ITip/Message.php b/vendor/sabre/vobject/lib/ITip/Message.php
index 43536f172..bebe2e4fc 100644
--- a/vendor/sabre/vobject/lib/ITip/Message.php
+++ b/vendor/sabre/vobject/lib/ITip/Message.php
@@ -14,8 +14,8 @@ namespace Sabre\VObject\ITip;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Message
-{
+class Message {
+
/**
* The object's UID.
*
@@ -123,14 +123,19 @@ class Message
*
* @return mixed bool|string
*/
- public function getScheduleStatus()
- {
+ function getScheduleStatus() {
+
if (!$this->scheduleStatus) {
+
return false;
+
} else {
- list($scheduleStatus) = explode(';', $this->scheduleStatus);
+ list($scheduleStatus) = explode(';', $this->scheduleStatus);
return $scheduleStatus;
+
}
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php b/vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php
index 4c48625be..423b39831 100644
--- a/vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php
+++ b/vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php
@@ -13,6 +13,6 @@ namespace Sabre\VObject\ITip;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class SameOrganizerForAllComponentsException extends ITipException
-{
+class SameOrganizerForAllComponentsException extends ITipException {
+
}
diff --git a/vendor/sabre/vobject/lib/InvalidDataException.php b/vendor/sabre/vobject/lib/InvalidDataException.php
index 1d8b67583..50ebc0f49 100644
--- a/vendor/sabre/vobject/lib/InvalidDataException.php
+++ b/vendor/sabre/vobject/lib/InvalidDataException.php
@@ -10,6 +10,5 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class InvalidDataException extends \Exception
-{
+class InvalidDataException extends \Exception {
}
diff --git a/vendor/sabre/vobject/lib/Node.php b/vendor/sabre/vobject/lib/Node.php
index 154a7fac5..e2845da75 100644
--- a/vendor/sabre/vobject/lib/Node.php
+++ b/vendor/sabre/vobject/lib/Node.php
@@ -11,8 +11,13 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \JsonSerializable, Xml\XmlSerializable
-{
+abstract class Node
+ implements \IteratorAggregate,
+ \ArrayAccess,
+ \Countable,
+ \JsonSerializable,
+ Xml\XmlSerializable {
+
/**
* The following constants are used by the validate() method.
*
@@ -65,7 +70,7 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
*
* @return string
*/
- abstract public function serialize();
+ abstract function serialize();
/**
* This method returns an array, with the representation as it should be
@@ -73,26 +78,31 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
*
* @return array
*/
- abstract public function jsonSerialize();
+ abstract function jsonSerialize();
/**
* This method serializes the data into XML. This is used to create xCard or
* xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- abstract public function xmlSerialize(Xml\Writer $writer);
+ abstract function xmlSerialize(Xml\Writer $writer);
/**
* Call this method on a document if you're done using it.
*
* It's intended to remove all circular references, so PHP can easily clean
* it up.
+ *
+ * @return void
*/
- public function destroy()
- {
+ function destroy() {
+
$this->parent = null;
$this->root = null;
+
}
/* {{{ IteratorAggregator interface */
@@ -102,13 +112,14 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
*
* @return ElementList
*/
- public function getIterator()
- {
+ function getIterator() {
+
if (!is_null($this->iterator)) {
return $this->iterator;
}
return new ElementList([$this]);
+
}
/**
@@ -117,10 +128,13 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
* Note that this is not actually part of the iterator interface
*
* @param ElementList $iterator
+ *
+ * @return void
*/
- public function setIterator(ElementList $iterator)
- {
+ function setIterator(ElementList $iterator) {
+
$this->iterator = $iterator;
+
}
/**
@@ -145,9 +159,10 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
return [];
+
}
/* }}} */
@@ -159,17 +174,18 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
*
* @return int
*/
- public function count()
- {
- $it = $this->getIterator();
+ function count() {
+ $it = $this->getIterator();
return $it->count();
+
}
/* }}} */
/* {{{ ArrayAccess Interface */
+
/**
* Checks if an item exists through ArrayAccess.
*
@@ -179,11 +195,11 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
*
* @return bool
*/
- public function offsetExists($offset)
- {
- $iterator = $this->getIterator();
+ function offsetExists($offset) {
+ $iterator = $this->getIterator();
return $iterator->offsetExists($offset);
+
}
/**
@@ -195,11 +211,11 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
*
* @return mixed
*/
- public function offsetGet($offset)
- {
- $iterator = $this->getIterator();
+ function offsetGet($offset) {
+ $iterator = $this->getIterator();
return $iterator->offsetGet($offset);
+
}
/**
@@ -207,20 +223,21 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
*
* This method just forwards the request to the inner iterator
*
- * @param int $offset
+ * @param int $offset
* @param mixed $value
+ *
+ * @return void
*/
- public function offsetSet($offset, $value)
- {
+ function offsetSet($offset, $value) {
+
$iterator = $this->getIterator();
$iterator->offsetSet($offset, $value);
- // @codeCoverageIgnoreStart
+ // @codeCoverageIgnoreStart
//
// This method always throws an exception, so we ignore the closing
// brace
}
-
// @codeCoverageIgnoreEnd
/**
@@ -229,18 +246,19 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js
* This method just forwards the request to the inner iterator
*
* @param int $offset
+ *
+ * @return void
*/
- public function offsetUnset($offset)
- {
+ function offsetUnset($offset) {
+
$iterator = $this->getIterator();
$iterator->offsetUnset($offset);
- // @codeCoverageIgnoreStart
+ // @codeCoverageIgnoreStart
//
// This method always throws an exception, so we ignore the closing
// brace
}
-
// @codeCoverageIgnoreEnd
/* }}} */
diff --git a/vendor/sabre/vobject/lib/PHPUnitAssertions.php b/vendor/sabre/vobject/lib/PHPUnitAssertions.php
index d77e4b1ed..87ec75e8f 100644
--- a/vendor/sabre/vobject/lib/PHPUnitAssertions.php
+++ b/vendor/sabre/vobject/lib/PHPUnitAssertions.php
@@ -3,7 +3,7 @@
namespace Sabre\VObject;
/**
- * PHPUnit Assertions.
+ * PHPUnit Assertions
*
* This trait can be added to your unittest to make it easier to test iCalendar
* and/or vCards.
@@ -12,8 +12,8 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-trait PHPUnitAssertions
-{
+trait PHPUnitAssertions {
+
/**
* This method tests wether two vcards or icalendar objects are
* semantically identical.
@@ -30,12 +30,13 @@ trait PHPUnitAssertions
*
* @param resource|string|Component $expected
* @param resource|string|Component $actual
- * @param string $message
+ * @param string $message
*/
- public function assertVObjectEqualsVObject($expected, $actual, $message = '')
- {
+ function assertVObjectEqualsVObject($expected, $actual, $message = '') {
+
$self = $this;
- $getObj = function ($input) use ($self) {
+ $getObj = function($input) use ($self) {
+
if (is_resource($input)) {
$input = stream_get_contents($input);
}
@@ -46,11 +47,11 @@ trait PHPUnitAssertions
$this->fail('Input must be a string, stream or VObject component');
}
unset($input->PRODID);
- if ($input instanceof Component\VCalendar && 'GREGORIAN' === (string) $input->CALSCALE) {
+ if ($input instanceof Component\VCalendar && (string)$input->CALSCALE === 'GREGORIAN') {
unset($input->CALSCALE);
}
-
return $input;
+
};
$expected = $getObj($expected)->serialize();
@@ -60,11 +61,13 @@ trait PHPUnitAssertions
preg_match_all('|^([A-Z]+):\\*\\*ANY\\*\\*\r$|m', $expected, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
+
$actual = preg_replace(
- '|^'.preg_quote($match[1], '|').':(.*)\r$|m',
- $match[1].':**ANY**'."\r",
+ '|^' . preg_quote($match[1], '|') . ':(.*)\r$|m',
+ $match[1] . ':**ANY**' . "\r",
$actual
);
+
}
$this->assertEquals(
@@ -72,5 +75,8 @@ trait PHPUnitAssertions
$actual,
$message
);
+
}
+
+
}
diff --git a/vendor/sabre/vobject/lib/Parameter.php b/vendor/sabre/vobject/lib/Parameter.php
index 2c9a8e7fd..a99a33eec 100644
--- a/vendor/sabre/vobject/lib/Parameter.php
+++ b/vendor/sabre/vobject/lib/Parameter.php
@@ -17,8 +17,8 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Parameter extends Node
-{
+class Parameter extends Node {
+
/**
* Parameter name.
*
@@ -29,7 +29,7 @@ class Parameter extends Node
/**
* vCard 2.1 allows parameters to be encoded without a name.
*
- * We can deduce the parameter name based on its value.
+ * We can deduce the parameter name based on it's value.
*
* @var bool
*/
@@ -50,8 +50,8 @@ class Parameter extends Node
* @param string $name
* @param string $value
*/
- public function __construct(Document $root, $name, $value = null)
- {
+ function __construct(Document $root, $name, $value = null) {
+
$this->name = strtoupper($name);
$this->root = $root;
if (is_null($name)) {
@@ -62,12 +62,13 @@ class Parameter extends Node
// If guessParameterNameByValue() returns an empty string
// above, we're actually dealing with a parameter that has no value.
// In that case we have to move the value to the name.
- if ('' === $this->name) {
+ if ($this->name === '') {
$this->noName = false;
$this->name = strtoupper($value);
} else {
$this->setValue($value);
}
+
}
/**
@@ -81,85 +82,85 @@ class Parameter extends Node
*
* @return string
*/
- public static function guessParameterNameByValue($value)
- {
+ static function guessParameterNameByValue($value) {
switch (strtoupper($value)) {
+
// Encodings
- case '7-BIT':
- case 'QUOTED-PRINTABLE':
- case 'BASE64':
+ case '7-BIT' :
+ case 'QUOTED-PRINTABLE' :
+ case 'BASE64' :
$name = 'ENCODING';
break;
// Common types
- case 'WORK':
- case 'HOME':
- case 'PREF':
+ case 'WORK' :
+ case 'HOME' :
+ case 'PREF' :
// Delivery Label Type
- case 'DOM':
- case 'INTL':
- case 'POSTAL':
- case 'PARCEL':
+ case 'DOM' :
+ case 'INTL' :
+ case 'POSTAL' :
+ case 'PARCEL' :
// Telephone types
- case 'VOICE':
- case 'FAX':
- case 'MSG':
- case 'CELL':
- case 'PAGER':
- case 'BBS':
- case 'MODEM':
- case 'CAR':
- case 'ISDN':
- case 'VIDEO':
+ case 'VOICE' :
+ case 'FAX' :
+ case 'MSG' :
+ case 'CELL' :
+ case 'PAGER' :
+ case 'BBS' :
+ case 'MODEM' :
+ case 'CAR' :
+ case 'ISDN' :
+ case 'VIDEO' :
// EMAIL types (lol)
- case 'AOL':
- case 'APPLELINK':
- case 'ATTMAIL':
- case 'CIS':
- case 'EWORLD':
- case 'INTERNET':
- case 'IBMMAIL':
- case 'MCIMAIL':
- case 'POWERSHARE':
- case 'PRODIGY':
- case 'TLX':
- case 'X400':
+ case 'AOL' :
+ case 'APPLELINK' :
+ case 'ATTMAIL' :
+ case 'CIS' :
+ case 'EWORLD' :
+ case 'INTERNET' :
+ case 'IBMMAIL' :
+ case 'MCIMAIL' :
+ case 'POWERSHARE' :
+ case 'PRODIGY' :
+ case 'TLX' :
+ case 'X400' :
// Photo / Logo format types
- case 'GIF':
- case 'CGM':
- case 'WMF':
- case 'BMP':
- case 'DIB':
- case 'PICT':
- case 'TIFF':
- case 'PDF':
- case 'PS':
- case 'JPEG':
- case 'MPEG':
- case 'MPEG2':
- case 'AVI':
- case 'QTIME':
+ case 'GIF' :
+ case 'CGM' :
+ case 'WMF' :
+ case 'BMP' :
+ case 'DIB' :
+ case 'PICT' :
+ case 'TIFF' :
+ case 'PDF' :
+ case 'PS' :
+ case 'JPEG' :
+ case 'MPEG' :
+ case 'MPEG2' :
+ case 'AVI' :
+ case 'QTIME' :
// Sound Digital Audio Type
- case 'WAVE':
- case 'PCM':
- case 'AIFF':
+ case 'WAVE' :
+ case 'PCM' :
+ case 'AIFF' :
// Key types
- case 'X509':
- case 'PGP':
+ case 'X509' :
+ case 'PGP' :
$name = 'TYPE';
break;
// Value types
- case 'INLINE':
- case 'URL':
- case 'CONTENT-ID':
- case 'CID':
+ case 'INLINE' :
+ case 'URL' :
+ case 'CONTENT-ID' :
+ case 'CID' :
$name = 'VALUE';
break;
@@ -176,10 +177,13 @@ class Parameter extends Node
* This may be either a single, or multiple strings in an array.
*
* @param string|array $value
+ *
+ * @return void
*/
- public function setValue($value)
- {
+ function setValue($value) {
+
$this->value = $value;
+
}
/**
@@ -190,23 +194,27 @@ class Parameter extends Node
*
* @return string|null
*/
- public function getValue()
- {
+ function getValue() {
+
if (is_array($this->value)) {
return implode(',', $this->value);
} else {
return $this->value;
}
+
}
/**
* Sets multiple values for this parameter.
*
* @param array $value
+ *
+ * @return void
*/
- public function setParts(array $value)
- {
+ function setParts(array $value) {
+
$this->value = $value;
+
}
/**
@@ -216,8 +224,8 @@ class Parameter extends Node
*
* @return array
*/
- public function getParts()
- {
+ function getParts() {
+
if (is_array($this->value)) {
return $this->value;
} elseif (is_null($this->value)) {
@@ -225,6 +233,7 @@ class Parameter extends Node
} else {
return [$this->value];
}
+
}
/**
@@ -234,14 +243,17 @@ class Parameter extends Node
* parameter value list.
*
* @param string|array $part
+ *
+ * @return void
*/
- public function addValue($part)
- {
+ function addValue($part) {
+
if (is_null($this->value)) {
$this->value = $part;
} else {
- $this->value = array_merge((array) $this->value, (array) $part);
+ $this->value = array_merge((array)$this->value, (array)$part);
}
+
}
/**
@@ -255,12 +267,13 @@ class Parameter extends Node
*
* @return bool
*/
- public function has($value)
- {
+ function has($value) {
+
return in_array(
strtolower($value),
- array_map('strtolower', (array) $this->value)
+ array_map('strtolower', (array)$this->value)
);
+
}
/**
@@ -268,24 +281,25 @@ class Parameter extends Node
*
* @return string
*/
- public function serialize()
- {
+ function serialize() {
+
$value = $this->getParts();
- if (0 === count($value)) {
- return $this->name.'=';
+ if (count($value) === 0) {
+ return $this->name . '=';
}
- if (Document::VCARD21 === $this->root->getDocumentType() && $this->noName) {
+ if ($this->root->getDocumentType() === Document::VCARD21 && $this->noName) {
+
return implode(';', $value);
+
}
- return $this->name.'='.array_reduce(
+ return $this->name . '=' . array_reduce(
$value,
- function ($out, $item) {
- if (!is_null($out)) {
- $out .= ',';
- }
+ function($out, $item) {
+
+ if (!is_null($out)) $out .= ',';
// If there's no special characters in the string, we'll use the simple
// format.
@@ -304,23 +318,24 @@ class Parameter extends Node
// severaly trips on + characters not being quoted, so we
// added + as well.
if (!preg_match('#(?: [\n":;\^,\+] )#x', $item)) {
- return $out.$item;
+ return $out . $item;
} else {
// Enclosing in double-quotes, and using RFC6868 for encoding any
// special characters
- $out .= '"'.strtr(
+ $out .= '"' . strtr(
$item,
[
- '^' => '^^',
+ '^' => '^^',
"\n" => '^n',
- '"' => '^\'',
+ '"' => '^\'',
]
- ).'"';
-
+ ) . '"';
return $out;
}
+
}
);
+
}
/**
@@ -329,22 +344,26 @@ class Parameter extends Node
*
* @return array
*/
- public function jsonSerialize()
- {
+ function jsonSerialize() {
+
return $this->value;
+
}
/**
* This method serializes the data into XML. This is used to create xCard or
* xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- public function xmlSerialize(Xml\Writer $writer)
- {
+ function xmlSerialize(Xml\Writer $writer) {
+
foreach (explode(',', $this->value) as $value) {
$writer->writeElement('text', $value);
}
+
}
/**
@@ -352,9 +371,10 @@ class Parameter extends Node
*
* @return string
*/
- public function __toString()
- {
- return (string) $this->getValue();
+ function __toString() {
+
+ return (string)$this->getValue();
+
}
/**
@@ -362,12 +382,13 @@ class Parameter extends Node
*
* @return ElementList
*/
- public function getIterator()
- {
- if (!is_null($this->iterator)) {
+ function getIterator() {
+
+ if (!is_null($this->iterator))
return $this->iterator;
- }
- return $this->iterator = new ArrayIterator((array) $this->value);
+ return $this->iterator = new ArrayIterator((array)$this->value);
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/ParseException.php b/vendor/sabre/vobject/lib/ParseException.php
index a8f497b24..d96d20720 100644
--- a/vendor/sabre/vobject/lib/ParseException.php
+++ b/vendor/sabre/vobject/lib/ParseException.php
@@ -9,6 +9,5 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class ParseException extends \Exception
-{
+class ParseException extends \Exception {
}
diff --git a/vendor/sabre/vobject/lib/Parser/Json.php b/vendor/sabre/vobject/lib/Parser/Json.php
index 3fd307e97..a77258a2e 100644
--- a/vendor/sabre/vobject/lib/Parser/Json.php
+++ b/vendor/sabre/vobject/lib/Parser/Json.php
@@ -4,7 +4,6 @@ namespace Sabre\VObject\Parser;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\Component\VCard;
-use Sabre\VObject\Document;
use Sabre\VObject\EofException;
use Sabre\VObject\ParseException;
@@ -17,8 +16,8 @@ use Sabre\VObject\ParseException;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Json extends Parser
-{
+class Json extends Parser {
+
/**
* The input data.
*
@@ -42,12 +41,12 @@ class Json extends Parser
* If either input or options are not supplied, the defaults will be used.
*
* @param resource|string|array|null $input
- * @param int $options
+ * @param int $options
*
- * @return \Sabre\VObject\Document
+ * @return Sabre\VObject\Document
*/
- public function parse($input = null, $options = 0)
- {
+ function parse($input = null, $options = 0) {
+
if (!is_null($input)) {
$this->setInput($input);
}
@@ -60,28 +59,28 @@ class Json extends Parser
}
switch ($this->input[0]) {
- case 'vcalendar':
+ case 'vcalendar' :
$this->root = new VCalendar([], false);
break;
- case 'vcard':
+ case 'vcard' :
$this->root = new VCard([], false);
break;
- default:
+ default :
throw new ParseException('The root component must either be a vcalendar, or a vcard');
+
}
foreach ($this->input[1] as $prop) {
$this->root->add($this->parseProperty($prop));
}
- if (isset($this->input[2])) {
- foreach ($this->input[2] as $comp) {
- $this->root->add($this->parseComponent($comp));
- }
+ if (isset($this->input[2])) foreach ($this->input[2] as $comp) {
+ $this->root->add($this->parseComponent($comp));
}
// Resetting the input so we can throw an feof exception the next time.
$this->input = null;
return $this->root;
+
}
/**
@@ -91,34 +90,35 @@ class Json extends Parser
*
* @return \Sabre\VObject\Component
*/
- public function parseComponent(array $jComp)
- {
+ function parseComponent(array $jComp) {
+
// We can remove $self from PHP 5.4 onward.
$self = $this;
$properties = array_map(
- function ($jProp) use ($self) {
+ function($jProp) use ($self) {
return $self->parseProperty($jProp);
},
$jComp[1]
);
if (isset($jComp[2])) {
+
$components = array_map(
- function ($jComp) use ($self) {
+ function($jComp) use ($self) {
return $self->parseComponent($jComp);
},
$jComp[2]
);
- } else {
- $components = [];
- }
+
+ } else $components = [];
return $this->root->createComponent(
$jComp[0],
array_merge($properties, $components),
$defaults = false
);
+
}
/**
@@ -128,8 +128,8 @@ class Json extends Parser
*
* @return \Sabre\VObject\Property
*/
- public function parseProperty(array $jProp)
- {
+ function parseProperty(array $jProp) {
+
list(
$propertyName,
$parameters,
@@ -142,14 +142,14 @@ class Json extends Parser
// value type. We're using this value later in this function.
$defaultPropertyClass = $this->root->getClassNameForPropertyName($propertyName);
- $parameters = (array) $parameters;
+ $parameters = (array)$parameters;
$value = array_slice($jProp, 3);
$valueType = strtoupper($valueType);
if (isset($parameters['group'])) {
- $propertyName = $parameters['group'].'.'.$propertyName;
+ $propertyName = $parameters['group'] . '.' . $propertyName;
unset($parameters['group']);
}
@@ -160,7 +160,7 @@ class Json extends Parser
// represents TEXT values. We have to normalize these here. In the
// future we can get rid of FlatText once we're allowed to break BC
// again.
- if ('Sabre\VObject\Property\FlatText' === $defaultPropertyClass) {
+ if ($defaultPropertyClass === 'Sabre\VObject\Property\FlatText') {
$defaultPropertyClass = 'Sabre\VObject\Property\Text';
}
@@ -168,19 +168,22 @@ class Json extends Parser
// type for the given property (e.g.: BDAY), we need to add a VALUE=
// parameter.
if ($defaultPropertyClass !== get_class($prop)) {
- $prop['VALUE'] = $valueType;
+ $prop["VALUE"] = $valueType;
}
return $prop;
+
}
/**
* Sets the input data.
*
* @param resource|string|array $input
+ *
+ * @return void
*/
- public function setInput($input)
- {
+ function setInput($input) {
+
if (is_resource($input)) {
$input = stream_get_contents($input);
}
@@ -188,5 +191,7 @@ class Json extends Parser
$input = json_decode($input);
}
$this->input = $input;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Parser/MimeDir.php b/vendor/sabre/vobject/lib/Parser/MimeDir.php
index 10dcec89c..742641236 100644
--- a/vendor/sabre/vobject/lib/Parser/MimeDir.php
+++ b/vendor/sabre/vobject/lib/Parser/MimeDir.php
@@ -7,7 +7,6 @@ use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\Component\VCard;
use Sabre\VObject\Document;
use Sabre\VObject\EofException;
-use Sabre\VObject\Node;
use Sabre\VObject\ParseException;
/**
@@ -23,8 +22,8 @@ use Sabre\VObject\ParseException;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class MimeDir extends Parser
-{
+class MimeDir extends Parser {
+
/**
* The input stream.
*
@@ -71,12 +70,12 @@ class MimeDir extends Parser
* used.
*
* @param string|resource|null $input
- * @param int $options
+ * @param int $options
*
- * @return \Sabre\VObject\Document
+ * @return Sabre\VObject\Document
*/
- public function parse($input = null, $options = 0)
- {
+ function parse($input = null, $options = 0) {
+
$this->root = null;
if (!is_null($input)) {
@@ -90,6 +89,7 @@ class MimeDir extends Parser
$this->parseDocument();
return $this->root;
+
}
/**
@@ -104,21 +104,24 @@ class MimeDir extends Parser
*
* @param string $charset
*/
- public function setCharset($charset)
- {
+ function setCharset($charset) {
+
if (!in_array($charset, self::$SUPPORTED_CHARSETS)) {
- throw new \InvalidArgumentException('Unsupported encoding. (Supported encodings: '.implode(', ', self::$SUPPORTED_CHARSETS).')');
+ throw new \InvalidArgumentException('Unsupported encoding. (Supported encodings: ' . implode(', ', self::$SUPPORTED_CHARSETS) . ')');
}
$this->charset = $charset;
+
}
/**
* Sets the input buffer. Must be a string or stream.
*
* @param resource|string $input
+ *
+ * @return void
*/
- public function setInput($input)
- {
+ function setInput($input) {
+
// Resetting the parser
$this->lineIndex = 0;
$this->startLine = 0;
@@ -134,53 +137,59 @@ class MimeDir extends Parser
} else {
throw new \InvalidArgumentException('This parser can only read from strings or streams.');
}
+
}
/**
* Parses an entire document.
+ *
+ * @return void
*/
- protected function parseDocument()
- {
+ protected function parseDocument() {
+
$line = $this->readLine();
// BOM is ZERO WIDTH NO-BREAK SPACE (U+FEFF).
// It's 0xEF 0xBB 0xBF in UTF-8 hex.
if (3 <= strlen($line)
- && 0xef === ord($line[0])
- && 0xbb === ord($line[1])
- && 0xbf === ord($line[2])) {
+ && ord($line[0]) === 0xef
+ && ord($line[1]) === 0xbb
+ && ord($line[2]) === 0xbf) {
$line = substr($line, 3);
}
switch (strtoupper($line)) {
- case 'BEGIN:VCALENDAR':
+ case 'BEGIN:VCALENDAR' :
$class = VCalendar::$componentMap['VCALENDAR'];
break;
- case 'BEGIN:VCARD':
+ case 'BEGIN:VCARD' :
$class = VCard::$componentMap['VCARD'];
break;
- default:
+ default :
throw new ParseException('This parser only supports VCARD and VCALENDAR files');
}
$this->root = new $class([], false);
while (true) {
+
// Reading until we hit END:
$line = $this->readLine();
- if ('END:' === strtoupper(substr($line, 0, 4))) {
+ if (strtoupper(substr($line, 0, 4)) === 'END:') {
break;
}
$result = $this->parseLine($line);
if ($result) {
$this->root->add($result);
}
+
}
$name = strtoupper(substr($line, 4));
if ($name !== $this->root->name) {
- throw new ParseException('Invalid MimeDir file. expected: "END:'.$this->root->name.'" got: "END:'.$name.'"');
+ throw new ParseException('Invalid MimeDir file. expected: "END:' . $this->root->name . '" got: "END:' . $name . '"');
}
+
}
/**
@@ -191,40 +200,46 @@ class MimeDir extends Parser
*
* @return Node
*/
- protected function parseLine($line)
- {
+ protected function parseLine($line) {
+
// Start of a new component
- if ('BEGIN:' === strtoupper(substr($line, 0, 6))) {
+ if (strtoupper(substr($line, 0, 6)) === 'BEGIN:') {
+
$component = $this->root->createComponent(substr($line, 6), [], false);
while (true) {
+
// Reading until we hit END:
$line = $this->readLine();
- if ('END:' === strtoupper(substr($line, 0, 4))) {
+ if (strtoupper(substr($line, 0, 4)) === 'END:') {
break;
}
$result = $this->parseLine($line);
if ($result) {
$component->add($result);
}
+
}
$name = strtoupper(substr($line, 4));
if ($name !== $component->name) {
- throw new ParseException('Invalid MimeDir file. expected: "END:'.$component->name.'" got: "END:'.$name.'"');
+ throw new ParseException('Invalid MimeDir file. expected: "END:' . $component->name . '" got: "END:' . $name . '"');
}
return $component;
+
} else {
+
// Property reader
$property = $this->readProperty($line);
if (!$property) {
// Ignored line
return false;
}
-
return $property;
+
}
+
}
/**
@@ -233,7 +248,7 @@ class MimeDir extends Parser
*
* If that was not the case, we store it here.
*
- * @var string|null
+ * @var null|string
*/
protected $lineBuffer;
@@ -266,8 +281,8 @@ class MimeDir extends Parser
*
* @return string
*/
- protected function readLine()
- {
+ protected function readLine() {
+
if (!\is_null($this->lineBuffer)) {
$rawLine = $this->lineBuffer;
$this->lineBuffer = null;
@@ -277,15 +292,15 @@ class MimeDir extends Parser
$rawLine = \fgets($this->input);
- if ($eof || (\feof($this->input) && false === $rawLine)) {
+ if ($eof || (\feof($this->input) && $rawLine === false)) {
throw new EofException('End of document reached prematurely');
}
- if (false === $rawLine) {
+ if ($rawLine === false) {
throw new ParseException('Error reading from input stream');
}
$rawLine = \rtrim($rawLine, "\r\n");
- } while ('' === $rawLine); // Skipping empty lines
- ++$this->lineIndex;
+ } while ($rawLine === ''); // Skipping empty lines
+ $this->lineIndex++;
}
$line = $rawLine;
@@ -293,30 +308,34 @@ class MimeDir extends Parser
// Looking ahead for folded lines.
while (true) {
+
$nextLine = \rtrim(\fgets($this->input), "\r\n");
- ++$this->lineIndex;
+ $this->lineIndex++;
if (!$nextLine) {
break;
}
- if ("\t" === $nextLine[0] || ' ' === $nextLine[0]) {
+ if ($nextLine[0] === "\t" || $nextLine[0] === " ") {
$curLine = \substr($nextLine, 1);
$line .= $curLine;
- $rawLine .= "\n ".$curLine;
+ $rawLine .= "\n " . $curLine;
} else {
$this->lineBuffer = $nextLine;
break;
}
+
}
$this->rawLine = $rawLine;
-
return $line;
+
}
/**
* Reads a property or component from a line.
+ *
+ * @return void
*/
- protected function readProperty($line)
- {
+ protected function readProperty($line) {
+
if ($this->options & self::OPTION_FORGIVING) {
$propNameToken = 'A-Z0-9\-\._\\/';
} else {
@@ -341,17 +360,17 @@ class MimeDir extends Parser
/xi";
//echo $regex, "\n"; die();
- preg_match_all($regex, $line, $matches, PREG_SET_ORDER);
+ preg_match_all($regex, $line, $matches, PREG_SET_ORDER);
$property = [
- 'name' => null,
+ 'name' => null,
'parameters' => [],
- 'value' => null,
+ 'value' => null
];
$lastParam = null;
- /*
+ /**
* Looping through all the tokens.
*
* Note that we are looping through them in reverse order, because if a
@@ -359,8 +378,9 @@ class MimeDir extends Parser
* in the result.
*/
foreach ($matches as $match) {
+
if (isset($match['paramValue'])) {
- if ($match['paramValue'] && '"' === $match['paramValue'][0]) {
+ if ($match['paramValue'] && $match['paramValue'][0] === '"') {
$value = substr($match['paramValue'], 1, -1);
} else {
$value = $match['paramValue'];
@@ -369,7 +389,7 @@ class MimeDir extends Parser
$value = $this->unescapeParam($value);
if (is_null($lastParam)) {
- throw new ParseException('Invalid Mimedir file. Line starting at '.$this->startLine.' did not follow iCalendar/vCard conventions');
+ throw new ParseException('Invalid Mimedir file. Line starting at ' . $this->startLine . ' did not follow iCalendar/vCard conventions');
}
if (is_null($property['parameters'][$lastParam])) {
$property['parameters'][$lastParam] = $value;
@@ -378,7 +398,7 @@ class MimeDir extends Parser
} else {
$property['parameters'][$lastParam] = [
$property['parameters'][$lastParam],
- $value,
+ $value
];
}
continue;
@@ -402,6 +422,7 @@ class MimeDir extends Parser
// @codeCoverageIgnoreStart
throw new \LogicException('This code should not be reachable');
// @codeCoverageIgnoreEnd
+
}
if (is_null($property['value'])) {
@@ -411,11 +432,11 @@ class MimeDir extends Parser
if ($this->options & self::OPTION_IGNORE_INVALID_LINES) {
return false;
}
- throw new ParseException('Invalid Mimedir file. Line starting at '.$this->startLine.' did not follow iCalendar/vCard conventions');
+ throw new ParseException('Invalid Mimedir file. Line starting at ' . $this->startLine . ' did not follow iCalendar/vCard conventions');
}
// vCard 2.1 states that parameters may appear without a name, and only
- // a value. We can deduce the value based on its name.
+ // a value. We can deduce the value based on it's name.
//
// Our parser will get those as parameters without a value instead, so
// we're filtering these parameters out first.
@@ -436,30 +457,31 @@ class MimeDir extends Parser
$propObj->add(null, $namelessParameter);
}
- if ('QUOTED-PRINTABLE' === strtoupper($propObj['ENCODING'])) {
+ if (strtoupper($propObj['ENCODING']) === 'QUOTED-PRINTABLE') {
$propObj->setQuotedPrintableValue($this->extractQuotedPrintableValue());
} else {
$charset = $this->charset;
- if (Document::VCARD21 === $this->root->getDocumentType() && isset($propObj['CHARSET'])) {
+ if ($this->root->getDocumentType() === Document::VCARD21 && isset($propObj['CHARSET'])) {
// vCard 2.1 allows the character set to be specified per property.
- $charset = (string) $propObj['CHARSET'];
+ $charset = (string)$propObj['CHARSET'];
}
switch (strtolower($charset)) {
- case 'utf-8':
+ case 'utf-8' :
break;
- case 'iso-8859-1':
+ case 'iso-8859-1' :
$property['value'] = utf8_encode($property['value']);
break;
- case 'windows-1252':
+ case 'windows-1252' :
$property['value'] = mb_convert_encoding($property['value'], 'UTF-8', $charset);
break;
- default:
- throw new ParseException('Unsupported CHARSET: '.$propObj['CHARSET']);
+ default :
+ throw new ParseException('Unsupported CHARSET: ' . $propObj['CHARSET']);
}
$propObj->setRawMimeDirValue($property['value']);
}
return $propObj;
+
}
/**
@@ -524,11 +546,11 @@ class MimeDir extends Parser
*
* @return string|string[]
*/
- public static function unescapeValue($input, $delimiter = ';')
- {
+ static function unescapeValue($input, $delimiter = ';') {
+
$regex = '# (?: (\\\\ (?: \\\\ | N | n | ; | , ) )';
if ($delimiter) {
- $regex .= ' | ('.$delimiter.')';
+ $regex .= ' | (' . $delimiter . ')';
}
$regex .= ') #x';
@@ -538,33 +560,36 @@ class MimeDir extends Parser
$result = '';
foreach ($matches as $match) {
+
switch ($match) {
- case '\\\\':
+ case '\\\\' :
$result .= '\\';
break;
- case '\N':
- case '\n':
+ case '\N' :
+ case '\n' :
$result .= "\n";
break;
- case '\;':
+ case '\;' :
$result .= ';';
break;
- case '\,':
+ case '\,' :
$result .= ',';
break;
- case $delimiter:
+ case $delimiter :
$resultArray[] = $result;
$result = '';
break;
- default:
+ default :
$result .= $match;
break;
+
}
+
}
$resultArray[] = $result;
-
return $delimiter ? $resultArray : $result;
+
}
/**
@@ -598,19 +623,21 @@ class MimeDir extends Parser
* * " is encoded as ^'
*
* @param string $input
+ *
+ * @return void
*/
- private function unescapeParam($input)
- {
+ private function unescapeParam($input) {
+
return
preg_replace_callback(
'#(\^(\^|n|\'))#',
- function ($matches) {
+ function($matches) {
switch ($matches[2]) {
- case 'n':
+ case 'n' :
return "\n";
- case '^':
+ case '^' :
return '^';
- case '\'':
+ case '\'' :
return '"';
// @codeCoverageIgnoreStart
@@ -631,8 +658,8 @@ class MimeDir extends Parser
*
* @return string
*/
- private function extractQuotedPrintableValue()
- {
+ private function extractQuotedPrintableValue() {
+
// We need to parse the raw line again to get the start of the value.
//
// We are basically looking for the first colon (:), but we need to
@@ -655,14 +682,16 @@ class MimeDir extends Parser
// missing a whitespace. So if 'forgiving' is turned on, we will take
// those as well.
if ($this->options & self::OPTION_FORGIVING) {
- while ('=' === substr($value, -1)) {
+ while (substr($value, -1) === '=') {
// Reading the line
$this->readLine();
// Grabbing the raw form
- $value .= "\n".$this->rawLine;
+ $value .= "\n" . $this->rawLine;
}
}
return $value;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Parser/Parser.php b/vendor/sabre/vobject/lib/Parser/Parser.php
index b7b611430..ca8bc0add 100644
--- a/vendor/sabre/vobject/lib/Parser/Parser.php
+++ b/vendor/sabre/vobject/lib/Parser/Parser.php
@@ -11,8 +11,8 @@ namespace Sabre\VObject\Parser;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-abstract class Parser
-{
+abstract class Parser {
+
/**
* Turning on this option makes the parser more forgiving.
*
@@ -41,10 +41,12 @@ abstract class Parser
* Optionally, it's possible to parse the input stream here.
*
* @param mixed $input
- * @param int $options any parser options (OPTION constants)
+ * @param int $options Any parser options (OPTION constants).
+ *
+ * @return void
*/
- public function __construct($input = null, $options = 0)
- {
+ function __construct($input = null, $options = 0) {
+
if (!is_null($input)) {
$this->setInput($input);
}
@@ -60,16 +62,19 @@ abstract class Parser
* If either input or options are not supplied, the defaults will be used.
*
* @param mixed $input
- * @param int $options
+ * @param int $options
*
* @return array
*/
- abstract public function parse($input = null, $options = 0);
+ abstract function parse($input = null, $options = 0);
/**
* Sets the input data.
*
* @param mixed $input
+ *
+ * @return void
*/
- abstract public function setInput($input);
+ abstract function setInput($input);
+
}
diff --git a/vendor/sabre/vobject/lib/Parser/XML.php b/vendor/sabre/vobject/lib/Parser/XML.php
index 90f262d9e..5ac423984 100644
--- a/vendor/sabre/vobject/lib/Parser/XML.php
+++ b/vendor/sabre/vobject/lib/Parser/XML.php
@@ -18,8 +18,8 @@ use Sabre\Xml as SabreXml;
* @author Ivan Enderlin
* @license http://sabre.io/license/ Modified BSD License
*/
-class XML extends Parser
-{
+class XML extends Parser {
+
const XCAL_NAMESPACE = 'urn:ietf:params:xml:ns:icalendar-2.0';
const XCARD_NAMESPACE = 'urn:ietf:params:xml:ns:vcard-4.0';
@@ -40,7 +40,7 @@ class XML extends Parser
/**
* Document, root component.
*
- * @var \Sabre\VObject\Document
+ * @var Sabre\VObject\Document
*/
protected $root;
@@ -50,29 +50,32 @@ class XML extends Parser
* Optionally, it's possible to parse the input stream here.
*
* @param mixed $input
- * @param int $options any parser options (OPTION constants)
+ * @param int $options Any parser options (OPTION constants).
+ *
+ * @return void
*/
- public function __construct($input = null, $options = 0)
- {
+ function __construct($input = null, $options = 0) {
+
if (0 === $options) {
$options = parent::OPTION_FORGIVING;
}
parent::__construct($input, $options);
+
}
/**
* Parse xCal or xCard.
*
* @param resource|string $input
- * @param int $options
+ * @param int $options
*
* @throws \Exception
*
- * @return \Sabre\VObject\Document
+ * @return Sabre\VObject\Document
*/
- public function parse($input = null, $options = 0)
- {
+ function parse($input = null, $options = 0) {
+
if (!is_null($input)) {
$this->setInput($input);
}
@@ -86,25 +89,29 @@ class XML extends Parser
}
switch ($this->input['name']) {
- case '{'.self::XCAL_NAMESPACE.'}icalendar':
+
+ case '{' . self::XCAL_NAMESPACE . '}icalendar':
$this->root = new VCalendar([], false);
$this->pointer = &$this->input['value'][0];
$this->parseVCalendarComponents($this->root);
break;
- case '{'.self::XCARD_NAMESPACE.'}vcards':
+ case '{' . self::XCARD_NAMESPACE . '}vcards':
foreach ($this->input['value'] as &$vCard) {
+
$this->root = new VCard(['version' => '4.0'], false);
$this->pointer = &$vCard;
$this->parseVCardComponents($this->root);
// We just parse the first <vcard /> element.
break;
+
}
break;
default:
throw new ParseException('Unsupported XML standard');
+
}
return $this->root;
@@ -114,11 +121,15 @@ class XML extends Parser
* Parse a xCalendar component.
*
* @param Component $parentComponent
+ *
+ * @return void
*/
- protected function parseVCalendarComponents(Component $parentComponent)
- {
+ protected function parseVCalendarComponents(Component $parentComponent) {
+
foreach ($this->pointer['value'] ?: [] as $children) {
+
switch (static::getTagName($children['name'])) {
+
case 'properties':
$this->pointer = &$children['value'];
$this->parseProperties($parentComponent);
@@ -130,28 +141,35 @@ class XML extends Parser
break;
}
}
+
}
/**
* Parse a xCard component.
*
* @param Component $parentComponent
+ *
+ * @return void
*/
- protected function parseVCardComponents(Component $parentComponent)
- {
+ protected function parseVCardComponents(Component $parentComponent) {
+
$this->pointer = &$this->pointer['value'];
$this->parseProperties($parentComponent);
+
}
/**
* Parse xCalendar and xCard properties.
*
* @param Component $parentComponent
- * @param string $propertyNamePrefix
+ * @param string $propertyNamePrefix
+ *
+ * @return void
*/
- protected function parseProperties(Component $parentComponent, $propertyNamePrefix = '')
- {
+ protected function parseProperties(Component $parentComponent, $propertyNamePrefix = '') {
+
foreach ($this->pointer ?: [] as $xmlProperty) {
+
list($namespace, $tagName) = SabreXml\Service::parseClarkNotation($xmlProperty['name']);
$propertyName = $tagName;
@@ -160,16 +178,17 @@ class XML extends Parser
$propertyType = 'text';
// A property which is not part of the standard.
- if (self::XCAL_NAMESPACE !== $namespace
- && self::XCARD_NAMESPACE !== $namespace) {
+ if ($namespace !== self::XCAL_NAMESPACE
+ && $namespace !== self::XCARD_NAMESPACE) {
+
$propertyName = 'xml';
- $value = '<'.$tagName.' xmlns="'.$namespace.'"';
+ $value = '<' . $tagName . ' xmlns="' . $namespace . '"';
foreach ($xmlProperty['attributes'] as $attributeName => $attributeValue) {
- $value .= ' '.$attributeName.'="'.str_replace('"', '\"', $attributeValue).'"';
+ $value .= ' ' . $attributeName . '="' . str_replace('"', '\"', $attributeValue) . '"';
}
- $value .= '>'.$xmlProperty['value'].'</'.$tagName.'>';
+ $value .= '>' . $xmlProperty['value'] . '</' . $tagName . '>';
$propertyValue = [$value];
@@ -185,7 +204,8 @@ class XML extends Parser
}
// xCard group.
- if ('group' === $propertyName) {
+ if ($propertyName === 'group') {
+
if (!isset($xmlProperty['attributes']['name'])) {
continue;
}
@@ -193,22 +213,24 @@ class XML extends Parser
$this->pointer = &$xmlProperty['value'];
$this->parseProperties(
$parentComponent,
- strtoupper($xmlProperty['attributes']['name']).'.'
+ strtoupper($xmlProperty['attributes']['name']) . '.'
);
continue;
+
}
// Collect parameters.
foreach ($xmlProperty['value'] as $i => $xmlPropertyChild) {
+
if (!is_array($xmlPropertyChild)
- || 'parameters' !== static::getTagName($xmlPropertyChild['name'])) {
+ || 'parameters' !== static::getTagName($xmlPropertyChild['name']))
continue;
- }
$xmlParameters = $xmlPropertyChild['value'];
foreach ($xmlParameters as $xmlParameter) {
+
$propertyParameterValues = [];
foreach ($xmlParameter['value'] as $xmlParameterValues) {
@@ -217,16 +239,19 @@ class XML extends Parser
$propertyParameters[static::getTagName($xmlParameter['name'])]
= implode(',', $propertyParameterValues);
+
}
array_splice($xmlProperty['value'], $i, 1);
+
}
$propertyNameExtended = ($this->root instanceof VCalendar
? 'xcal'
- : 'xcard').':'.$propertyName;
+ : 'xcard') . ':' . $propertyName;
switch ($propertyNameExtended) {
+
case 'xcal:geo':
$propertyType = 'float';
$propertyValue['latitude'] = 0;
@@ -252,7 +277,6 @@ class XML extends Parser
// We don't break because we only want to set
// another property type.
- // no break
case 'xcal:categories':
case 'xcal:resources':
case 'xcal:exdate':
@@ -266,12 +290,16 @@ class XML extends Parser
$propertyType = 'date-time';
foreach ($xmlProperty['value'] as $specialChild) {
+
$tagName = static::getTagName($specialChild['name']);
if ('period' === $tagName) {
+
$propertyParameters['value'] = 'PERIOD';
$propertyValue[] = implode('/', $specialChild['value']);
- } else {
+
+ }
+ else {
$propertyValue[] = $specialChild['value'];
}
}
@@ -292,24 +320,29 @@ class XML extends Parser
$this->createProperty(
$parentComponent,
- $propertyNamePrefix.$propertyName,
+ $propertyNamePrefix . $propertyName,
$propertyParameters,
$propertyType,
$propertyValue
);
+
}
+
}
/**
* Parse a component.
*
* @param Component $parentComponent
+ *
+ * @return void
*/
- protected function parseComponent(Component $parentComponent)
- {
+ protected function parseComponent(Component $parentComponent) {
+
$components = $this->pointer['value'] ?: [];
foreach ($components as $component) {
+
$componentName = static::getTagName($component['name']);
$currentComponent = $this->root->createComponent(
$componentName,
@@ -321,20 +354,24 @@ class XML extends Parser
$this->parseVCalendarComponents($currentComponent);
$parentComponent->add($currentComponent);
+
}
+
}
/**
* Create a property.
*
* @param Component $parentComponent
- * @param string $name
- * @param array $parameters
- * @param string $type
- * @param mixed $value
+ * @param string $name
+ * @param array $parameters
+ * @param string $type
+ * @param mixed $value
+ *
+ * @return void
*/
- protected function createProperty(Component $parentComponent, $name, $parameters, $type, $value)
- {
+ protected function createProperty(Component $parentComponent, $name, $parameters, $type, $value) {
+
$property = $this->root->createProperty(
$name,
null,
@@ -343,30 +380,36 @@ class XML extends Parser
);
$parentComponent->add($property);
$property->setXmlValue($value);
+
}
/**
* Sets the input data.
*
* @param resource|string $input
+ *
+ * @return void
*/
- public function setInput($input)
- {
+ function setInput($input) {
+
if (is_resource($input)) {
$input = stream_get_contents($input);
}
if (is_string($input)) {
+
$reader = new SabreXml\Reader();
- $reader->elementMap['{'.self::XCAL_NAMESPACE.'}period']
+ $reader->elementMap['{' . self::XCAL_NAMESPACE . '}period']
= 'Sabre\VObject\Parser\XML\Element\KeyValue';
- $reader->elementMap['{'.self::XCAL_NAMESPACE.'}recur']
+ $reader->elementMap['{' . self::XCAL_NAMESPACE . '}recur']
= 'Sabre\VObject\Parser\XML\Element\KeyValue';
$reader->xml($input);
$input = $reader->parse();
+
}
$this->input = $input;
+
}
/**
@@ -376,10 +419,10 @@ class XML extends Parser
*
* @return string
*/
- protected static function getTagName($clarkedTagName)
- {
- list(, $tagName) = SabreXml\Service::parseClarkNotation($clarkedTagName);
+ protected static function getTagName($clarkedTagName) {
+ list(, $tagName) = SabreXml\Service::parseClarkNotation($clarkedTagName);
return $tagName;
+
}
}
diff --git a/vendor/sabre/vobject/lib/Parser/XML/Element/KeyValue.php b/vendor/sabre/vobject/lib/Parser/XML/Element/KeyValue.php
index e26540036..14d798433 100644
--- a/vendor/sabre/vobject/lib/Parser/XML/Element/KeyValue.php
+++ b/vendor/sabre/vobject/lib/Parser/XML/Element/KeyValue.php
@@ -13,8 +13,8 @@ use Sabre\Xml as SabreXml;
* @author Ivan Enderlin
* @license http://sabre.io/license/ Modified BSD License
*/
-class KeyValue extends SabreXml\Element\KeyValue
-{
+class KeyValue extends SabreXml\Element\KeyValue {
+
/**
* The deserialize method is called during xml parsing.
*
@@ -37,12 +37,11 @@ class KeyValue extends SabreXml\Element\KeyValue
*
* @return mixed
*/
- public static function xmlDeserialize(SabreXml\Reader $reader)
- {
+ static function xmlDeserialize(SabreXml\Reader $reader) {
+
// If there's no children, we don't do anything.
if ($reader->isEmptyElement) {
$reader->next();
-
return [];
}
@@ -50,16 +49,22 @@ class KeyValue extends SabreXml\Element\KeyValue
$reader->read();
do {
- if (SabreXml\Reader::ELEMENT === $reader->nodeType) {
+
+ if ($reader->nodeType === SabreXml\Reader::ELEMENT) {
+
$name = $reader->localName;
$values[$name] = $reader->parseCurrentElement()['value'];
+
} else {
$reader->read();
}
- } while (SabreXml\Reader::END_ELEMENT !== $reader->nodeType);
+
+ } while ($reader->nodeType !== SabreXml\Reader::END_ELEMENT);
$reader->read();
return $values;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property.php b/vendor/sabre/vobject/lib/Property.php
index 6105cb0f0..3d1775fa2 100644
--- a/vendor/sabre/vobject/lib/Property.php
+++ b/vendor/sabre/vobject/lib/Property.php
@@ -14,8 +14,8 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-abstract class Property extends Node
-{
+abstract class Property extends Node {
+
/**
* Property name.
*
@@ -61,14 +61,16 @@ abstract class Property extends Node
*
* Parameters must be specified in key=>value syntax.
*
- * @param Component $root The root document
- * @param string $name
+ * @param Component $root The root document
+ * @param string $name
* @param string|array|null $value
- * @param array $parameters List of parameters
- * @param string $group The vcard property group
+ * @param array $parameters List of parameters
+ * @param string $group The vcard property group
+ *
+ * @return void
*/
- public function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null)
- {
+ function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null) {
+
$this->name = $name;
$this->group = $group;
@@ -81,6 +83,7 @@ abstract class Property extends Node
if (!is_null($value)) {
$this->setValue($value);
}
+
}
/**
@@ -89,10 +92,13 @@ abstract class Property extends Node
* This may be either a single, or multiple strings in an array.
*
* @param string|array $value
+ *
+ * @return void
*/
- public function setValue($value)
- {
+ function setValue($value) {
+
$this->value = $value;
+
}
/**
@@ -106,12 +112,12 @@ abstract class Property extends Node
*
* @return string
*/
- public function getValue()
- {
+ function getValue() {
+
if (is_array($this->value)) {
- if (0 == count($this->value)) {
+ if (count($this->value) == 0) {
return;
- } elseif (1 === count($this->value)) {
+ } elseif (count($this->value) === 1) {
return $this->value[0];
} else {
return $this->getRawMimeDirValue();
@@ -119,16 +125,20 @@ abstract class Property extends Node
} else {
return $this->value;
}
+
}
/**
* Sets a multi-valued property.
*
* @param array $parts
+ *
+ * @return void
*/
- public function setParts(array $parts)
- {
+ function setParts(array $parts) {
+
$this->value = $parts;
+
}
/**
@@ -139,8 +149,8 @@ abstract class Property extends Node
*
* @return array
*/
- public function getParts()
- {
+ function getParts() {
+
if (is_null($this->value)) {
return [];
} elseif (is_array($this->value)) {
@@ -148,6 +158,7 @@ abstract class Property extends Node
} else {
return [$this->value];
}
+
}
/**
@@ -155,22 +166,22 @@ abstract class Property extends Node
*
* If a parameter with same name already existed, the values will be
* combined.
- * If nameless parameter is added, we try to guess its name.
+ * If nameless parameter is added, we try to guess it's name.
*
- * @param string $name
- * @param string|array|null $value
+ * @param string $name
+ * @param string|null|array $value
*/
- public function add($name, $value = null)
- {
+ function add($name, $value = null) {
$noName = false;
- if (null === $name) {
+ if ($name === null) {
$name = Parameter::guessParameterNameByValue($value);
$noName = true;
}
if (isset($this->parameters[strtoupper($name)])) {
$this->parameters[strtoupper($name)]->addValue($value);
- } else {
+ }
+ else {
$param = new Parameter($this->root, $name, $value);
$param->noName = $noName;
$this->parameters[$param->name] = $param;
@@ -182,9 +193,10 @@ abstract class Property extends Node
*
* @return array
*/
- public function parameters()
- {
+ function parameters() {
+
return $this->parameters;
+
}
/**
@@ -195,7 +207,7 @@ abstract class Property extends Node
*
* @return string
*/
- abstract public function getValueType();
+ abstract function getValueType();
/**
* Sets a raw value coming from a mimedir (iCalendar/vCard) file.
@@ -204,33 +216,35 @@ abstract class Property extends Node
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- abstract public function setRawMimeDirValue($val);
+ abstract function setRawMimeDirValue($val);
/**
* Returns a raw mime-dir representation of the value.
*
* @return string
*/
- abstract public function getRawMimeDirValue();
+ abstract function getRawMimeDirValue();
/**
* Turns the object back into a serialized blob.
*
* @return string
*/
- public function serialize()
- {
+ function serialize() {
+
$str = $this->name;
- if ($this->group) {
- $str = $this->group.'.'.$this->name;
- }
+ if ($this->group) $str = $this->group . '.' . $this->name;
foreach ($this->parameters() as $param) {
- $str .= ';'.$param->serialize();
+
+ $str .= ';' . $param->serialize();
+
}
- $str .= ':'.$this->getRawMimeDirValue();
+ $str .= ':' . $this->getRawMimeDirValue();
$str = \preg_replace(
'/(
@@ -244,6 +258,7 @@ abstract class Property extends Node
// remove single space after last CRLF
return \substr($str, 0, -1);
+
}
/**
@@ -253,9 +268,10 @@ abstract class Property extends Node
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
return $this->getParts();
+
}
/**
@@ -264,14 +280,17 @@ abstract class Property extends Node
* The value must always be an array.
*
* @param array $value
+ *
+ * @return void
*/
- public function setJsonValue(array $value)
- {
- if (1 === count($value)) {
+ function setJsonValue(array $value) {
+
+ if (count($value) === 1) {
$this->setValue(reset($value));
} else {
$this->setValue($value);
}
+
}
/**
@@ -280,12 +299,12 @@ abstract class Property extends Node
*
* @return array
*/
- public function jsonSerialize()
- {
+ function jsonSerialize() {
+
$parameters = [];
foreach ($this->parameters as $parameter) {
- if ('VALUE' === $parameter->name) {
+ if ($parameter->name === 'VALUE') {
continue;
}
$parameters[strtolower($parameter->name)] = $parameter->jsonSerialize();
@@ -299,7 +318,7 @@ abstract class Property extends Node
return array_merge(
[
strtolower($this->name),
- (object) $parameters,
+ (object)$parameters,
strtolower($this->getValueType()),
],
$this->getJsonValue()
@@ -311,63 +330,78 @@ abstract class Property extends Node
* object.
*
* @param array $value
+ *
+ * @return void
*/
- public function setXmlValue(array $value)
- {
+ function setXmlValue(array $value) {
+
$this->setJsonValue($value);
+
}
/**
* This method serializes the data into XML. This is used to create xCard or
* xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- public function xmlSerialize(Xml\Writer $writer)
- {
+ function xmlSerialize(Xml\Writer $writer) {
+
$parameters = [];
foreach ($this->parameters as $parameter) {
- if ('VALUE' === $parameter->name) {
+
+ if ($parameter->name === 'VALUE') {
continue;
}
$parameters[] = $parameter;
+
}
$writer->startElement(strtolower($this->name));
if (!empty($parameters)) {
+
$writer->startElement('parameters');
foreach ($parameters as $parameter) {
+
$writer->startElement(strtolower($parameter->name));
$writer->write($parameter);
$writer->endElement();
+
}
$writer->endElement();
+
}
$this->xmlSerializeValue($writer);
$writer->endElement();
+
}
/**
* This method serializes only the value of a property. This is used to
* create xCard or xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- protected function xmlSerializeValue(Xml\Writer $writer)
- {
+ protected function xmlSerializeValue(Xml\Writer $writer) {
+
$valueType = strtolower($this->getValueType());
foreach ($this->getJsonValue() as $values) {
- foreach ((array) $values as $value) {
+ foreach ((array)$values as $value) {
$writer->writeElement($valueType, $value);
}
}
+
}
/**
@@ -379,9 +413,10 @@ abstract class Property extends Node
*
* @return string
*/
- public function __toString()
- {
- return (string) $this->getValue();
+ function __toString() {
+
+ return (string)$this->getValue();
+
}
/* ArrayAccess interface {{{ */
@@ -393,21 +428,17 @@ abstract class Property extends Node
*
* @return bool
*/
- public function offsetExists($name)
- {
- if (is_int($name)) {
- return parent::offsetExists($name);
- }
+ function offsetExists($name) {
+
+ if (is_int($name)) return parent::offsetExists($name);
$name = strtoupper($name);
foreach ($this->parameters as $parameter) {
- if ($parameter->name == $name) {
- return true;
- }
+ if ($parameter->name == $name) return true;
}
-
return false;
+
}
/**
@@ -419,11 +450,9 @@ abstract class Property extends Node
*
* @return Node
*/
- public function offsetGet($name)
- {
- if (is_int($name)) {
- return parent::offsetGet($name);
- }
+ function offsetGet($name) {
+
+ if (is_int($name)) return parent::offsetGet($name);
$name = strtoupper($name);
if (!isset($this->parameters[$name])) {
@@ -431,16 +460,19 @@ abstract class Property extends Node
}
return $this->parameters[$name];
+
}
/**
* Creates a new parameter.
*
* @param string $name
- * @param mixed $value
+ * @param mixed $value
+ *
+ * @return void
*/
- public function offsetSet($name, $value)
- {
+ function offsetSet($name, $value) {
+
if (is_int($name)) {
parent::offsetSet($name, $value);
// @codeCoverageIgnoreStart
@@ -452,15 +484,18 @@ abstract class Property extends Node
$param = new Parameter($this->root, $name, $value);
$this->parameters[$param->name] = $param;
+
}
/**
* Removes one or more parameters with the specified name.
*
* @param string $name
+ *
+ * @return void
*/
- public function offsetUnset($name)
- {
+ function offsetUnset($name) {
+
if (is_int($name)) {
parent::offsetUnset($name);
// @codeCoverageIgnoreStart
@@ -471,20 +506,23 @@ abstract class Property extends Node
}
unset($this->parameters[strtoupper($name)]);
- }
+ }
/* }}} */
/**
* This method is automatically called when the object is cloned.
* Specifically, this will ensure all child elements are also cloned.
+ *
+ * @return void
*/
- public function __clone()
- {
+ function __clone() {
+
foreach ($this->parameters as $key => $child) {
$this->parameters[$key] = clone $child;
$this->parameters[$key]->parent = $this;
}
+
}
/**
@@ -505,12 +543,13 @@ abstract class Property extends Node
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$warnings = [];
// Checking if our value is UTF-8
if (!StringUtil::isUTF8($this->getRawMimeDirValue())) {
+
$oldValue = $this->getRawMimeDirValue();
$level = 3;
if ($options & self::REPAIR) {
@@ -519,27 +558,29 @@ abstract class Property extends Node
$this->setRawMimeDirValue($newValue);
$level = 1;
}
+
}
+
if (preg_match('%([\x00-\x08\x0B-\x0C\x0E-\x1F\x7F])%', $oldValue, $matches)) {
- $message = 'Property contained a control character (0x'.bin2hex($matches[1]).')';
+ $message = 'Property contained a control character (0x' . bin2hex($matches[1]) . ')';
} else {
- $message = 'Property is not valid UTF-8! '.$oldValue;
+ $message = 'Property is not valid UTF-8! ' . $oldValue;
}
$warnings[] = [
- 'level' => $level,
+ 'level' => $level,
'message' => $message,
- 'node' => $this,
+ 'node' => $this,
];
}
// Checking if the propertyname does not contain any invalid bytes.
if (!preg_match('/^([A-Z0-9-]+)$/', $this->name)) {
$warnings[] = [
- 'level' => $options & self::REPAIR ? 1 : 3,
- 'message' => 'The propertyname: '.$this->name.' contains invalid characters. Only A-Z, 0-9 and - are allowed',
- 'node' => $this,
+ 'level' => $options & self::REPAIR ? 1 : 3,
+ 'message' => 'The propertyname: ' . $this->name . ' contains invalid characters. Only A-Z, 0-9 and - are allowed',
+ 'node' => $this,
];
if ($options & self::REPAIR) {
// Uppercasing and converting underscores to dashes.
@@ -548,52 +589,46 @@ abstract class Property extends Node
);
// Removing every other invalid character
$this->name = preg_replace('/([^A-Z0-9-])/u', '', $this->name);
+
}
+
}
if ($encoding = $this->offsetGet('ENCODING')) {
- if (Document::VCARD40 === $this->root->getDocumentType()) {
+
+ if ($this->root->getDocumentType() === Document::VCARD40) {
$warnings[] = [
- 'level' => 3,
+ 'level' => 3,
'message' => 'ENCODING parameter is not valid in vCard 4.',
- 'node' => $this,
+ 'node' => $this
];
} else {
- $encoding = (string) $encoding;
+
+ $encoding = (string)$encoding;
$allowedEncoding = [];
switch ($this->root->getDocumentType()) {
- case Document::ICALENDAR20:
+ case Document::ICALENDAR20 :
$allowedEncoding = ['8BIT', 'BASE64'];
break;
- case Document::VCARD21:
+ case Document::VCARD21 :
$allowedEncoding = ['QUOTED-PRINTABLE', 'BASE64', '8BIT'];
break;
- case Document::VCARD30:
+ case Document::VCARD30 :
$allowedEncoding = ['B'];
- //Repair vCard30 that use BASE64 encoding
- if ($options & self::REPAIR) {
- if ('BASE64' === strtoupper($encoding)) {
- $encoding = 'B';
- $this['ENCODING'] = $encoding;
- $warnings[] = [
- 'level' => 1,
- 'message' => 'ENCODING=BASE64 has been transformed to ENCODING=B.',
- 'node' => $this,
- ];
- }
- }
break;
+
}
if ($allowedEncoding && !in_array(strtoupper($encoding), $allowedEncoding)) {
$warnings[] = [
- 'level' => 3,
- 'message' => 'ENCODING='.strtoupper($encoding).' is not valid for this document type.',
- 'node' => $this,
+ 'level' => 3,
+ 'message' => 'ENCODING=' . strtoupper($encoding) . ' is not valid for this document type.',
+ 'node' => $this
];
}
}
+
}
// Validating inner parameters
@@ -602,6 +637,7 @@ abstract class Property extends Node
}
return $warnings;
+
}
/**
@@ -609,13 +645,17 @@ abstract class Property extends Node
*
* It's intended to remove all circular references, so PHP can easily clean
* it up.
+ *
+ * @return void
*/
- public function destroy()
- {
+ function destroy() {
+
parent::destroy();
foreach ($this->parameters as $param) {
$param->destroy();
}
$this->parameters = [];
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/Binary.php b/vendor/sabre/vobject/lib/Property/Binary.php
index 830dd9028..d54cae25d 100644
--- a/vendor/sabre/vobject/lib/Property/Binary.php
+++ b/vendor/sabre/vobject/lib/Property/Binary.php
@@ -18,8 +18,8 @@ use Sabre\VObject\Property;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Binary extends Property
-{
+class Binary extends Property {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -34,18 +34,25 @@ class Binary extends Property
* This may be either a single, or multiple strings in an array.
*
* @param string|array $value
+ *
+ * @return void
*/
- public function setValue($value)
- {
+ function setValue($value) {
+
if (is_array($value)) {
- if (1 === count($value)) {
+
+ if (count($value) === 1) {
$this->value = $value[0];
} else {
throw new \InvalidArgumentException('The argument must either be a string or an array with only one child');
}
+
} else {
+
$this->value = $value;
+
}
+
}
/**
@@ -55,10 +62,13 @@ class Binary extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
$this->value = base64_decode($val);
+
}
/**
@@ -66,9 +76,10 @@ class Binary extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return base64_encode($this->value);
+
}
/**
@@ -79,9 +90,10 @@ class Binary extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'BINARY';
+
}
/**
@@ -91,9 +103,10 @@ class Binary extends Property
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
return [base64_encode($this->getValue())];
+
}
/**
@@ -102,10 +115,14 @@ class Binary extends Property
* The value must always be an array.
*
* @param array $value
+ *
+ * @return void
*/
- public function setJsonValue(array $value)
- {
+ function setJsonValue(array $value) {
+
$value = array_map('base64_decode', $value);
parent::setJsonValue($value);
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/Boolean.php b/vendor/sabre/vobject/lib/Property/Boolean.php
index 1b219bb8c..6f5887e25 100644
--- a/vendor/sabre/vobject/lib/Property/Boolean.php
+++ b/vendor/sabre/vobject/lib/Property/Boolean.php
@@ -17,8 +17,8 @@ use
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Boolean extends Property
-{
+class Boolean extends Property {
+
/**
* Sets a raw value coming from a mimedir (iCalendar/vCard) file.
*
@@ -26,11 +26,14 @@ class Boolean extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
- $val = 'TRUE' === strtoupper($val) ? true : false;
+ function setRawMimeDirValue($val) {
+
+ $val = strtoupper($val) === 'TRUE' ? true : false;
$this->setValue($val);
+
}
/**
@@ -38,9 +41,10 @@ class Boolean extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return $this->value ? 'TRUE' : 'FALSE';
+
}
/**
@@ -51,9 +55,10 @@ class Boolean extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'BOOLEAN';
+
}
/**
@@ -61,15 +66,19 @@ class Boolean extends Property
* object.
*
* @param array $value
+ *
+ * @return void
*/
- public function setXmlValue(array $value)
- {
+ function setXmlValue(array $value) {
+
$value = array_map(
- function ($value) {
+ function($value) {
return 'true' === $value;
},
$value
);
parent::setXmlValue($value);
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/FlatText.php b/vendor/sabre/vobject/lib/Property/FlatText.php
index d15cfe051..2c7b43c29 100644
--- a/vendor/sabre/vobject/lib/Property/FlatText.php
+++ b/vendor/sabre/vobject/lib/Property/FlatText.php
@@ -22,8 +22,8 @@ namespace Sabre\VObject\Property;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class FlatText extends Text
-{
+class FlatText extends Text {
+
/**
* Field separator.
*
@@ -37,10 +37,14 @@ class FlatText extends Text
* Overriding this so we're not splitting on a ; delimiter.
*
* @param string $val
+ *
+ * @return void
*/
- public function setQuotedPrintableValue($val)
- {
+ function setQuotedPrintableValue($val) {
+
$val = quoted_printable_decode($val);
$this->setValue($val);
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/FloatValue.php b/vendor/sabre/vobject/lib/Property/FloatValue.php
index 208d74516..15b119549 100644
--- a/vendor/sabre/vobject/lib/Property/FloatValue.php
+++ b/vendor/sabre/vobject/lib/Property/FloatValue.php
@@ -15,8 +15,8 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class FloatValue extends Property
-{
+class FloatValue extends Property {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -32,14 +32,17 @@ class FloatValue extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
$val = explode($this->delimiter, $val);
foreach ($val as &$item) {
- $item = (float) $item;
+ $item = (float)$item;
}
$this->setParts($val);
+
}
/**
@@ -47,12 +50,13 @@ class FloatValue extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return implode(
$this->delimiter,
$this->getParts()
);
+
}
/**
@@ -63,9 +67,10 @@ class FloatValue extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'FLOAT';
+
}
/**
@@ -75,19 +80,20 @@ class FloatValue extends Property
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
$val = array_map('floatval', $this->getParts());
// Special-casing the GEO property.
//
// See:
// http://tools.ietf.org/html/draft-ietf-jcardcal-jcal-04#section-3.4.1.2
- if ('GEO' === $this->name) {
+ if ($this->name === 'GEO') {
return [$val];
}
return $val;
+
}
/**
@@ -95,32 +101,42 @@ class FloatValue extends Property
* object.
*
* @param array $value
+ *
+ * @return void
*/
- public function setXmlValue(array $value)
- {
+ function setXmlValue(array $value) {
+
$value = array_map('floatval', $value);
parent::setXmlValue($value);
+
}
/**
* This method serializes only the value of a property. This is used to
* create xCard or xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- protected function xmlSerializeValue(Xml\Writer $writer)
- {
+ protected function xmlSerializeValue(Xml\Writer $writer) {
+
// Special-casing the GEO property.
//
// See:
// http://tools.ietf.org/html/rfc6321#section-3.4.1.2
- if ('GEO' === $this->name) {
+ if ($this->name === 'GEO') {
+
$value = array_map('floatval', $this->getParts());
$writer->writeElement('latitude', $value[0]);
$writer->writeElement('longitude', $value[1]);
- } else {
+
+ }
+ else {
parent::xmlSerializeValue($writer);
}
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/CalAddress.php b/vendor/sabre/vobject/lib/Property/ICalendar/CalAddress.php
index e89bb31f9..a0c4a9b9a 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/CalAddress.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/CalAddress.php
@@ -14,8 +14,8 @@ use
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class CalAddress extends Text
-{
+class CalAddress extends Text {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -32,9 +32,10 @@ class CalAddress extends Text
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'CAL-ADDRESS';
+
}
/**
@@ -47,14 +48,14 @@ class CalAddress extends Text
*
* @return string
*/
- public function getNormalizedValue()
- {
+ function getNormalizedValue() {
+
$input = $this->getValue();
if (!strpos($input, ':')) {
return $input;
}
list($schema, $everythingElse) = explode(':', $input, 2);
+ return strtolower($schema) . ':' . $everythingElse;
- return strtolower($schema).':'.$everythingElse;
}
}
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Date.php b/vendor/sabre/vobject/lib/Property/ICalendar/Date.php
index d8e86d13e..378a0d60a 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/Date.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/Date.php
@@ -13,6 +13,6 @@ namespace Sabre\VObject\Property\ICalendar;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Date extends DateTime
-{
+class Date extends DateTime {
+
}
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php b/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php
index 7eb3e0bb7..d580d4f68 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php
@@ -24,8 +24,8 @@ use Sabre\VObject\TimeZoneUtil;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class DateTime extends Property
-{
+class DateTime extends Property {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -40,14 +40,17 @@ class DateTime extends Property
* You may also specify DateTime objects here.
*
* @param array $parts
+ *
+ * @return void
*/
- public function setParts(array $parts)
- {
+ function setParts(array $parts) {
+
if (isset($parts[0]) && $parts[0] instanceof DateTimeInterface) {
$this->setDateTimes($parts);
} else {
parent::setParts($parts);
}
+
}
/**
@@ -58,9 +61,11 @@ class DateTime extends Property
* Instead of strings, you may also use DateTime here.
*
* @param string|array|DateTimeInterface $value
+ *
+ * @return void
*/
- public function setValue($value)
- {
+ function setValue($value) {
+
if (is_array($value) && isset($value[0]) && $value[0] instanceof DateTimeInterface) {
$this->setDateTimes($value);
} elseif ($value instanceof DateTimeInterface) {
@@ -68,6 +73,7 @@ class DateTime extends Property
} else {
parent::setValue($value);
}
+
}
/**
@@ -77,10 +83,13 @@ class DateTime extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
$this->setValue(explode($this->delimiter, $val));
+
}
/**
@@ -88,9 +97,10 @@ class DateTime extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return implode($this->delimiter, $this->getParts());
+
}
/**
@@ -98,9 +108,10 @@ class DateTime extends Property
*
* @return bool
*/
- public function hasTime()
- {
- return 'DATE' !== strtoupper((string) $this['VALUE']);
+ function hasTime() {
+
+ return strtoupper((string)$this['VALUE']) !== 'DATE';
+
}
/**
@@ -108,14 +119,15 @@ class DateTime extends Property
*
* Note that DATE is always floating.
*/
- public function isFloating()
- {
+ function isFloating() {
+
return
!$this->hasTime() ||
(
!isset($this['TZID']) &&
- false === strpos($this->getValue(), 'Z')
+ strpos($this->getValue(), 'Z') === false
);
+
}
/**
@@ -131,16 +143,15 @@ class DateTime extends Property
*
* @param DateTimeZone $timeZone
*
- * @return \DateTimeImmutable
+ * @return DateTimeImmutable
*/
- public function getDateTime(DateTimeZone $timeZone = null)
- {
+ function getDateTime(DateTimeZone $timeZone = null) {
+
$dt = $this->getDateTimes($timeZone);
- if (!$dt) {
- return;
- }
+ if (!$dt) return;
return $dt[0];
+
}
/**
@@ -152,35 +163,38 @@ class DateTime extends Property
*
* @param DateTimeZone $timeZone
*
- * @return \DateTimeImmutable[]
+ * @return DateTimeImmutable[]
* @return \DateTime[]
*/
- public function getDateTimes(DateTimeZone $timeZone = null)
- {
+ function getDateTimes(DateTimeZone $timeZone = null) {
+
// Does the property have a TZID?
$tzid = $this['TZID'];
if ($tzid) {
- $timeZone = TimeZoneUtil::getTimeZone((string) $tzid, $this->root);
+ $timeZone = TimeZoneUtil::getTimeZone((string)$tzid, $this->root);
}
$dts = [];
foreach ($this->getParts() as $part) {
$dts[] = DateTimeParser::parse($part, $timeZone);
}
-
return $dts;
+
}
/**
* Sets the property as a DateTime object.
*
* @param DateTimeInterface $dt
- * @param bool isFloating If set to true, timezones will be ignored
+ * @param bool isFloating If set to true, timezones will be ignored.
+ *
+ * @return void
*/
- public function setDateTime(DateTimeInterface $dt, $isFloating = false)
- {
+ function setDateTime(DateTimeInterface $dt, $isFloating = false) {
+
$this->setDateTimes([$dt], $isFloating);
+
}
/**
@@ -190,17 +204,21 @@ class DateTime extends Property
* the otehr values will be adjusted for that timezone
*
* @param DateTimeInterface[] $dt
- * @param bool isFloating If set to true, timezones will be ignored
+ * @param bool isFloating If set to true, timezones will be ignored.
+ *
+ * @return void
*/
- public function setDateTimes(array $dt, $isFloating = false)
- {
+ function setDateTimes(array $dt, $isFloating = false) {
+
$values = [];
if ($this->hasTime()) {
+
$tz = null;
$isUtc = false;
foreach ($dt as $d) {
+
if ($isFloating) {
$values[] = $d->format('Ymd\\THis');
continue;
@@ -220,18 +238,25 @@ class DateTime extends Property
} else {
$values[] = $d->format('Ymd\\THis');
}
+
}
if ($isUtc || $isFloating) {
$this->offsetUnset('TZID');
}
+
} else {
+
foreach ($dt as $d) {
+
$values[] = $d->format('Ymd');
+
}
$this->offsetUnset('TZID');
+
}
$this->value = $values;
+
}
/**
@@ -242,9 +267,10 @@ class DateTime extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return $this->hasTime() ? 'DATE-TIME' : 'DATE';
+
}
/**
@@ -254,8 +280,8 @@ class DateTime extends Property
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
$dts = $this->getDateTimes();
$hasTime = $this->hasTime();
$isFloating = $this->isFloating();
@@ -264,15 +290,18 @@ class DateTime extends Property
$isUtc = $isFloating ? false : in_array($tz->getName(), ['UTC', 'GMT', 'Z']);
return array_map(
- function (DateTimeInterface $dt) use ($hasTime, $isUtc) {
+ function(DateTimeInterface $dt) use ($hasTime, $isUtc) {
+
if ($hasTime) {
- return $dt->format('Y-m-d\\TH:i:s').($isUtc ? 'Z' : '');
+ return $dt->format('Y-m-d\\TH:i:s') . ($isUtc ? 'Z' : '');
} else {
return $dt->format('Y-m-d');
}
+
},
$dts
);
+
}
/**
@@ -281,21 +310,26 @@ class DateTime extends Property
* The value must always be an array.
*
* @param array $value
+ *
+ * @return void
*/
- public function setJsonValue(array $value)
- {
+ function setJsonValue(array $value) {
+
// dates and times in jCal have one difference to dates and times in
// iCalendar. In jCal date-parts are separated by dashes, and
// time-parts are separated by colons. It makes sense to just remove
// those.
$this->setValue(
array_map(
- function ($item) {
+ function($item) {
+
return strtr($item, [':' => '', '-' => '']);
+
},
$value
)
);
+
}
/**
@@ -303,17 +337,20 @@ class DateTime extends Property
* VALUE from DATE-TIME to DATE or vice-versa.
*
* @param string $name
- * @param mixed $value
+ * @param mixed $value
+ *
+ * @return void
*/
- public function offsetSet($name, $value)
- {
+ function offsetSet($name, $value) {
+
parent::offsetSet($name, $value);
- if ('VALUE' !== strtoupper($name)) {
+ if (strtoupper($name) !== 'VALUE') {
return;
}
// This will ensure that dates are correctly encoded.
$this->setDateTimes($this->getDateTimes());
+
}
/**
@@ -338,30 +375,30 @@ class DateTime extends Property
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$messages = parent::validate($options);
$valueType = $this->getValueType();
$values = $this->getParts();
try {
foreach ($values as $value) {
switch ($valueType) {
- case 'DATE':
+ case 'DATE' :
DateTimeParser::parseDate($value);
break;
- case 'DATE-TIME':
+ case 'DATE-TIME' :
DateTimeParser::parseDateTime($value);
break;
}
}
} catch (InvalidDataException $e) {
$messages[] = [
- 'level' => 3,
- 'message' => 'The supplied value ('.$value.') is not a correct '.$valueType,
- 'node' => $this,
+ 'level' => 3,
+ 'message' => 'The supplied value (' . $value . ') is not a correct ' . $valueType,
+ 'node' => $this,
];
}
-
return $messages;
+
}
}
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php b/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php
index 87f008160..7b7e1ce8e 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php
@@ -16,8 +16,8 @@ use Sabre\VObject\Property;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Duration extends Property
-{
+class Duration extends Property {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -33,10 +33,13 @@ class Duration extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
$this->setValue(explode($this->delimiter, $val));
+
}
/**
@@ -44,9 +47,10 @@ class Duration extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return implode($this->delimiter, $this->getParts());
+
}
/**
@@ -57,9 +61,10 @@ class Duration extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'DURATION';
+
}
/**
@@ -69,11 +74,12 @@ class Duration extends Property
*
* @return \DateInterval
*/
- public function getDateInterval()
- {
+ function getDateInterval() {
+
$parts = $this->getParts();
$value = $parts[0];
-
return DateTimeParser::parseDuration($value);
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Period.php b/vendor/sabre/vobject/lib/Property/ICalendar/Period.php
index 17bfa5c5c..d35b425aa 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/Period.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/Period.php
@@ -17,8 +17,8 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Period extends Property
-{
+class Period extends Property {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -34,10 +34,13 @@ class Period extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
$this->setValue(explode($this->delimiter, $val));
+
}
/**
@@ -45,9 +48,10 @@ class Period extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return implode($this->delimiter, $this->getParts());
+
}
/**
@@ -58,9 +62,10 @@ class Period extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'PERIOD';
+
}
/**
@@ -69,16 +74,21 @@ class Period extends Property
* The value must always be an array.
*
* @param array $value
+ *
+ * @return void
*/
- public function setJsonValue(array $value)
- {
+ function setJsonValue(array $value) {
+
$value = array_map(
- function ($item) {
+ function($item) {
+
return strtr(implode('/', $item), [':' => '', '-' => '']);
+
},
$value
);
parent::setJsonValue($value);
+
}
/**
@@ -88,19 +98,20 @@ class Period extends Property
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
$return = [];
foreach ($this->getParts() as $item) {
+
list($start, $end) = explode('/', $item, 2);
$start = DateTimeParser::parseDateTime($start);
// This is a duration value.
- if ('P' === $end[0]) {
+ if ($end[0] === 'P') {
$return[] = [
$start->format('Y-m-d\\TH:i:s'),
- $end,
+ $end
];
} else {
$end = DateTimeParser::parseDateTime($end);
@@ -109,29 +120,36 @@ class Period extends Property
$end->format('Y-m-d\\TH:i:s'),
];
}
+
}
return $return;
+
}
/**
* This method serializes only the value of a property. This is used to
* create xCard or xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- protected function xmlSerializeValue(Xml\Writer $writer)
- {
+ protected function xmlSerializeValue(Xml\Writer $writer) {
+
$writer->startElement(strtolower($this->getValueType()));
$value = $this->getJsonValue();
$writer->writeElement('start', $value[0][0]);
- if ('P' === $value[0][1][0]) {
+ if ($value[0][1][0] === 'P') {
$writer->writeElement('duration', $value[0][1]);
- } else {
+ }
+ else {
$writer->writeElement('end', $value[0][1]);
}
$writer->endElement();
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
index baeda781e..434b77088 100644
--- a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
+++ b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
@@ -22,33 +22,36 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Recur extends Property
-{
+class Recur extends Property {
+
/**
* Updates the current value.
*
* This may be either a single, or multiple strings in an array.
*
* @param string|array $value
+ *
+ * @return void
*/
- public function setValue($value)
- {
+ function setValue($value) {
+
// If we're getting the data from json, we'll be receiving an object
if ($value instanceof \StdClass) {
- $value = (array) $value;
+ $value = (array)$value;
}
if (is_array($value)) {
$newVal = [];
foreach ($value as $k => $v) {
+
if (is_string($v)) {
$v = strtoupper($v);
// The value had multiple sub-values
- if (false !== strpos($v, ',')) {
+ if (strpos($v, ',') !== false) {
$v = explode(',', $v);
}
- if (0 === strcmp($k, 'until')) {
+ if (strcmp($k, 'until') === 0) {
$v = strtr($v, [':' => '', '-' => '']);
}
} elseif (is_array($v)) {
@@ -63,6 +66,7 @@ class Recur extends Property
} else {
throw new \InvalidArgumentException('You must either pass a string, or a key=>value array');
}
+
}
/**
@@ -76,24 +80,26 @@ class Recur extends Property
*
* @return string
*/
- public function getValue()
- {
+ function getValue() {
+
$out = [];
foreach ($this->value as $key => $value) {
- $out[] = $key.'='.(is_array($value) ? implode(',', $value) : $value);
+ $out[] = $key . '=' . (is_array($value) ? implode(',', $value) : $value);
}
-
return strtoupper(implode(';', $out));
+
}
/**
* Sets a multi-valued property.
*
* @param array $parts
+ * @return void
*/
- public function setParts(array $parts)
- {
+ function setParts(array $parts) {
+
$this->setValue($parts);
+
}
/**
@@ -104,9 +110,10 @@ class Recur extends Property
*
* @return array
*/
- public function getParts()
- {
+ function getParts() {
+
return $this->value;
+
}
/**
@@ -116,10 +123,13 @@ class Recur extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
$this->setValue($val);
+
}
/**
@@ -127,9 +137,10 @@ class Recur extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return $this->getValue();
+
}
/**
@@ -140,9 +151,10 @@ class Recur extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'RECUR';
+
}
/**
@@ -152,36 +164,39 @@ class Recur extends Property
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
$values = [];
foreach ($this->getParts() as $k => $v) {
- if (0 === strcmp($k, 'UNTIL')) {
+ if (strcmp($k, 'UNTIL') === 0) {
$date = new DateTime($this->root, null, $v);
$values[strtolower($k)] = $date->getJsonValue()[0];
- } elseif (0 === strcmp($k, 'COUNT')) {
+ } elseif (strcmp($k, 'COUNT') === 0) {
$values[strtolower($k)] = intval($v);
} else {
$values[strtolower($k)] = $v;
}
}
-
return [$values];
+
}
/**
* This method serializes only the value of a property. This is used to
* create xCard or xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- protected function xmlSerializeValue(Xml\Writer $writer)
- {
+ protected function xmlSerializeValue(Xml\Writer $writer) {
+
$valueType = strtolower($this->getValueType());
foreach ($this->getJsonValue() as $value) {
$writer->writeElement($valueType, $value);
}
+
}
/**
@@ -191,11 +206,12 @@ class Recur extends Property
*
* @return array
*/
- public static function stringToArray($value)
- {
+ static function stringToArray($value) {
+
$value = strtoupper($value);
$newValue = [];
foreach (explode(';', $value) as $part) {
+
// Skipping empty parts.
if (empty($part)) {
continue;
@@ -203,10 +219,11 @@ class Recur extends Property
list($partName, $partValue) = explode('=', $part);
// The value itself had multiple values..
- if (false !== strpos($partValue, ',')) {
+ if (strpos($partValue, ',') !== false) {
$partValue = explode(',', $partValue);
}
$newValue[$partName] = $partValue;
+
}
return $newValue;
@@ -234,31 +251,32 @@ class Recur extends Property
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$repair = ($options & self::REPAIR);
$warnings = parent::validate($options);
$values = $this->getParts();
foreach ($values as $key => $value) {
- if ('' === $value) {
+
+ if ($value === '') {
$warnings[] = [
- 'level' => $repair ? 1 : 3,
- 'message' => 'Invalid value for '.$key.' in '.$this->name,
- 'node' => $this,
+ 'level' => $repair ? 1 : 3,
+ 'message' => 'Invalid value for ' . $key . ' in ' . $this->name,
+ 'node' => $this
];
if ($repair) {
unset($values[$key]);
}
- } elseif ('BYMONTH' == $key) {
- $byMonth = (array) $value;
+ } elseif ($key == 'BYMONTH') {
+ $byMonth = (array)$value;
foreach ($byMonth as $i => $v) {
- if (!is_numeric($v) || (int) $v < 1 || (int) $v > 12) {
+ if (!is_numeric($v) || (int)$v < 1 || (int)$v > 12) {
$warnings[] = [
- 'level' => $repair ? 1 : 3,
+ 'level' => $repair ? 1 : 3,
'message' => 'BYMONTH in RRULE must have value(s) between 1 and 12!',
- 'node' => $this,
+ 'node' => $this
];
if ($repair) {
if (is_array($value)) {
@@ -273,14 +291,14 @@ class Recur extends Property
if (is_array($value) && empty($values[$key])) {
unset($values[$key]);
}
- } elseif ('BYWEEKNO' == $key) {
- $byWeekNo = (array) $value;
+ } elseif ($key == 'BYWEEKNO') {
+ $byWeekNo = (array)$value;
foreach ($byWeekNo as $i => $v) {
- if (!is_numeric($v) || (int) $v < -53 || 0 == (int) $v || (int) $v > 53) {
+ if (!is_numeric($v) || (int)$v < -53 || (int)$v == 0 || (int)$v > 53) {
$warnings[] = [
- 'level' => $repair ? 1 : 3,
+ 'level' => $repair ? 1 : 3,
'message' => 'BYWEEKNO in RRULE must have value(s) from -53 to -1, or 1 to 53!',
- 'node' => $this,
+ 'node' => $this
];
if ($repair) {
if (is_array($value)) {
@@ -295,14 +313,14 @@ class Recur extends Property
if (is_array($value) && empty($values[$key])) {
unset($values[$key]);
}
- } elseif ('BYYEARDAY' == $key) {
- $byYearDay = (array) $value;
+ } elseif ($key == 'BYYEARDAY') {
+ $byYearDay = (array)$value;
foreach ($byYearDay as $i => $v) {
- if (!is_numeric($v) || (int) $v < -366 || 0 == (int) $v || (int) $v > 366) {
+ if (!is_numeric($v) || (int)$v < -366 || (int)$v == 0 || (int)$v > 366) {
$warnings[] = [
- 'level' => $repair ? 1 : 3,
+ 'level' => $repair ? 1 : 3,
'message' => 'BYYEARDAY in RRULE must have value(s) from -366 to -1, or 1 to 366!',
- 'node' => $this,
+ 'node' => $this
];
if ($repair) {
if (is_array($value)) {
@@ -318,12 +336,13 @@ class Recur extends Property
unset($values[$key]);
}
}
+
}
if (!isset($values['FREQ'])) {
$warnings[] = [
- 'level' => $repair ? 1 : 3,
- 'message' => 'FREQ is required in '.$this->name,
- 'node' => $this,
+ 'level' => $repair ? 1 : 3,
+ 'message' => 'FREQ is required in ' . $this->name,
+ 'node' => $this
];
if ($repair) {
$this->parent->remove($this);
@@ -334,5 +353,7 @@ class Recur extends Property
}
return $warnings;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/IntegerValue.php b/vendor/sabre/vobject/lib/Property/IntegerValue.php
index ddd71d731..5bd1887fa 100644
--- a/vendor/sabre/vobject/lib/Property/IntegerValue.php
+++ b/vendor/sabre/vobject/lib/Property/IntegerValue.php
@@ -15,8 +15,8 @@ use
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class IntegerValue extends Property
-{
+class IntegerValue extends Property {
+
/**
* Sets a raw value coming from a mimedir (iCalendar/vCard) file.
*
@@ -24,10 +24,13 @@ class IntegerValue extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
- $this->setValue((int) $val);
+ function setRawMimeDirValue($val) {
+
+ $this->setValue((int)$val);
+
}
/**
@@ -35,9 +38,10 @@ class IntegerValue extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return $this->value;
+
}
/**
@@ -48,9 +52,10 @@ class IntegerValue extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'INTEGER';
+
}
/**
@@ -60,9 +65,10 @@ class IntegerValue extends Property
*
* @return array
*/
- public function getJsonValue()
- {
- return [(int) $this->getValue()];
+ function getJsonValue() {
+
+ return [(int)$this->getValue()];
+
}
/**
@@ -70,10 +76,13 @@ class IntegerValue extends Property
* object.
*
* @param array $value
+ *
+ * @return void
*/
- public function setXmlValue(array $value)
- {
+ function setXmlValue(array $value) {
+
$value = array_map('intval', $value);
parent::setXmlValue($value);
+
}
}
diff --git a/vendor/sabre/vobject/lib/Property/Text.php b/vendor/sabre/vobject/lib/Property/Text.php
index 23c945551..47a86ccc9 100644
--- a/vendor/sabre/vobject/lib/Property/Text.php
+++ b/vendor/sabre/vobject/lib/Property/Text.php
@@ -17,8 +17,8 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Text extends Property
-{
+class Text extends Property {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -53,7 +53,7 @@ class Text extends Property
* @var array
*/
protected $minimumPropertyValues = [
- 'N' => 5,
+ 'N' => 5,
'ADR' => 7,
];
@@ -64,14 +64,16 @@ class Text extends Property
* parameters will automatically be created, or you can just pass a list of
* Parameter objects.
*
- * @param Component $root The root document
- * @param string $name
+ * @param Component $root The root document
+ * @param string $name
* @param string|array|null $value
- * @param array $parameters List of parameters
- * @param string $group The vcard property group
+ * @param array $parameters List of parameters
+ * @param string $group The vcard property group
+ *
+ * @return void
*/
- public function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null)
- {
+ function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null) {
+
// There's two types of multi-valued text properties:
// 1. multivalue properties.
// 2. structured value properties
@@ -82,6 +84,7 @@ class Text extends Property
}
parent::__construct($root, $name, $value, $parameters, $group);
+
}
/**
@@ -91,19 +94,24 @@ class Text extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
$this->setValue(MimeDir::unescapeValue($val, $this->delimiter));
+
}
/**
* Sets the value as a quoted-printable encoded string.
*
* @param string $val
+ *
+ * @return void
*/
- public function setQuotedPrintableValue($val)
- {
+ function setQuotedPrintableValue($val) {
+
$val = quoted_printable_decode($val);
// Quoted printable only appears in vCard 2.1, and the only character
@@ -115,6 +123,7 @@ class Text extends Property
$regex = '# (?<!\\\\) ; #x';
$matches = preg_split($regex, $val);
$this->setValue($matches);
+
}
/**
@@ -122,8 +131,8 @@ class Text extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
$val = $this->getParts();
if (isset($this->minimumPropertyValues[$this->name])) {
@@ -131,6 +140,7 @@ class Text extends Property
}
foreach ($val as &$item) {
+
if (!is_array($item)) {
$item = [$item];
}
@@ -140,17 +150,19 @@ class Text extends Property
$subItem,
[
'\\' => '\\\\',
- ';' => '\;',
- ',' => '\,',
+ ';' => '\;',
+ ',' => '\,',
"\n" => '\n',
- "\r" => '',
+ "\r" => "",
]
);
}
$item = implode(',', $item);
+
}
return implode($this->delimiter, $val);
+
}
/**
@@ -160,16 +172,16 @@ class Text extends Property
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
// Structured text values should always be returned as a single
// array-item. Multi-value text should be returned as multiple items in
// the top-array.
if (in_array($this->name, $this->structuredValues)) {
return [$this->getParts()];
}
-
return $this->getParts();
+
}
/**
@@ -180,9 +192,10 @@ class Text extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'TEXT';
+
}
/**
@@ -190,10 +203,10 @@ class Text extends Property
*
* @return string
*/
- public function serialize()
- {
+ function serialize() {
+
// We need to kick in a special type of encoding, if it's a 2.1 vcard.
- if (Document::VCARD21 !== $this->root->getDocumentType()) {
+ if ($this->root->getDocumentType() !== Document::VCARD21) {
return parent::serialize();
}
@@ -215,19 +228,22 @@ class Text extends Property
}
$str = $this->name;
- if ($this->group) {
- $str = $this->group.'.'.$this->name;
- }
+ if ($this->group) $str = $this->group . '.' . $this->name;
foreach ($this->parameters as $param) {
- if ('QUOTED-PRINTABLE' === $param->getValue()) {
+
+ if ($param->getValue() === 'QUOTED-PRINTABLE') {
continue;
}
- $str .= ';'.$param->serialize();
+ $str .= ';' . $param->serialize();
+
}
+
+
// If the resulting value contains a \n, we must encode it as
// quoted-printable.
- if (false !== \strpos($val, "\n")) {
+ if (\strpos($val, "\n") !== false) {
+
$str .= ';ENCODING=QUOTED-PRINTABLE:';
$lastLine = $str;
$out = null;
@@ -236,27 +252,26 @@ class Text extends Property
// encode newlines for us. Specifically, the \r\n sequence must in
// vcards be encoded as =0D=OA and we must insert soft-newlines
// every 75 bytes.
- for ($ii = 0; $ii < \strlen($val); ++$ii) {
+ for ($ii = 0;$ii < \strlen($val);$ii++) {
$ord = \ord($val[$ii]);
// These characters are encoded as themselves.
if ($ord >= 32 && $ord <= 126) {
$lastLine .= $val[$ii];
} else {
- $lastLine .= '='.\strtoupper(\bin2hex($val[$ii]));
+ $lastLine .= '=' . \strtoupper(\bin2hex($val[$ii]));
}
if (\strlen($lastLine) >= 75) {
// Soft line break
- $out .= $lastLine."=\r\n ";
+ $out .= $lastLine . "=\r\n ";
$lastLine = null;
}
- }
- if (!\is_null($lastLine)) {
- $out .= $lastLine."\r\n";
- }
+ }
+ if (!\is_null($lastLine)) $out .= $lastLine . "\r\n";
return $out;
+
} else {
- $str .= ':'.$val;
+ $str .= ':' . $val;
$str = \preg_replace(
'/(
@@ -270,20 +285,24 @@ class Text extends Property
// remove single space after last CRLF
return \substr($str, 0, -1);
+
}
+
}
/**
* This method serializes only the value of a property. This is used to
* create xCard or xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- protected function xmlSerializeValue(Xml\Writer $writer)
- {
+ protected function xmlSerializeValue(Xml\Writer $writer) {
+
$values = $this->getParts();
- $map = function ($items) use ($values, $writer) {
+ $map = function($items) use ($values, $writer) {
foreach ($items as $i => $item) {
$writer->writeElement(
$item,
@@ -293,6 +312,7 @@ class Text extends Property
};
switch ($this->name) {
+
// Special-casing the REQUEST-STATUS property.
//
// See:
@@ -312,14 +332,14 @@ class Text extends Property
'given',
'additional',
'prefix',
- 'suffix',
+ 'suffix'
]);
break;
case 'GENDER':
$map([
'sex',
- 'text',
+ 'text'
]);
break;
@@ -331,20 +351,21 @@ class Text extends Property
'locality',
'region',
'code',
- 'country',
+ 'country'
]);
break;
case 'CLIENTPIDMAP':
$map([
'sourceid',
- 'uri',
+ 'uri'
]);
break;
default:
parent::xmlSerializeValue($writer);
}
+
}
/**
@@ -365,26 +386,28 @@ class Text extends Property
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$warnings = parent::validate($options);
if (isset($this->minimumPropertyValues[$this->name])) {
+
$minimum = $this->minimumPropertyValues[$this->name];
$parts = $this->getParts();
if (count($parts) < $minimum) {
$warnings[] = [
- 'level' => $options & self::REPAIR ? 1 : 3,
- 'message' => 'The '.$this->name.' property must have at least '.$minimum.' values. It only has '.count($parts),
- 'node' => $this,
+ 'level' => $options & self::REPAIR ? 1 : 3,
+ 'message' => 'The ' . $this->name . ' property must have at least ' . $minimum . ' values. It only has ' . count($parts),
+ 'node' => $this,
];
if ($options & self::REPAIR) {
$parts = array_pad($parts, $minimum, '');
$this->setParts($parts);
}
}
- }
+ }
return $warnings;
+
}
}
diff --git a/vendor/sabre/vobject/lib/Property/Time.php b/vendor/sabre/vobject/lib/Property/Time.php
index 7aeafc8d0..dbafc3b85 100644
--- a/vendor/sabre/vobject/lib/Property/Time.php
+++ b/vendor/sabre/vobject/lib/Property/Time.php
@@ -13,8 +13,8 @@ use Sabre\VObject\DateTimeParser;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Time extends Text
-{
+class Time extends Text {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -31,9 +31,10 @@ class Time extends Text
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'TIME';
+
}
/**
@@ -42,9 +43,11 @@ class Time extends Text
* The value must always be an array.
*
* @param array $value
+ *
+ * @return void
*/
- public function setJsonValue(array $value)
- {
+ function setJsonValue(array $value) {
+
// Removing colons from value.
$value = str_replace(
':',
@@ -52,11 +55,12 @@ class Time extends Text
$value
);
- if (1 === count($value)) {
+ if (count($value) === 1) {
$this->setValue(reset($value));
} else {
$this->setValue($value);
}
+
}
/**
@@ -66,8 +70,8 @@ class Time extends Text
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
$parts = DateTimeParser::parseVCardTime($this->getValue());
$timeStr = '';
@@ -105,7 +109,7 @@ class Time extends Text
// Timezone
if (!is_null($parts['timezone'])) {
- if ('Z' === $parts['timezone']) {
+ if ($parts['timezone'] === 'Z') {
$timeStr .= 'Z';
} else {
$timeStr .=
@@ -114,6 +118,7 @@ class Time extends Text
}
return [$timeStr];
+
}
/**
@@ -121,15 +126,19 @@ class Time extends Text
* object.
*
* @param array $value
+ *
+ * @return void
*/
- public function setXmlValue(array $value)
- {
+ function setXmlValue(array $value) {
+
$value = array_map(
- function ($value) {
+ function($value) {
return str_replace(':', '', $value);
},
$value
);
parent::setXmlValue($value);
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/Unknown.php b/vendor/sabre/vobject/lib/Property/Unknown.php
index 6f404c286..7a3373868 100644
--- a/vendor/sabre/vobject/lib/Property/Unknown.php
+++ b/vendor/sabre/vobject/lib/Property/Unknown.php
@@ -12,8 +12,8 @@ namespace Sabre\VObject\Property;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Unknown extends Text
-{
+class Unknown extends Text {
+
/**
* Returns the value, in the format it should be encoded for json.
*
@@ -21,9 +21,10 @@ class Unknown extends Text
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
return [$this->getRawMimeDirValue()];
+
}
/**
@@ -34,8 +35,10 @@ class Unknown extends Text
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'UNKNOWN';
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/Uri.php b/vendor/sabre/vobject/lib/Property/Uri.php
index 3449ba1f2..88fcfaab8 100644
--- a/vendor/sabre/vobject/lib/Property/Uri.php
+++ b/vendor/sabre/vobject/lib/Property/Uri.php
@@ -14,8 +14,8 @@ use Sabre\VObject\Property;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Uri extends Text
-{
+class Uri extends Text {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -32,9 +32,10 @@ class Uri extends Text
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'URI';
+
}
/**
@@ -42,8 +43,8 @@ class Uri extends Text
*
* @return array
*/
- public function parameters()
- {
+ function parameters() {
+
$parameters = parent::parameters();
if (!isset($parameters['VALUE']) && in_array($this->name, ['URL', 'PHOTO'])) {
// If we are encoding a URI value, and this URI value has no
@@ -56,8 +57,8 @@ class Uri extends Text
// See Issue #227 and #235
$parameters['VALUE'] = new Parameter($this->root, 'VALUE', 'URI');
}
-
return $parameters;
+
}
/**
@@ -67,9 +68,11 @@ class Uri extends Text
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
// Normally we don't need to do any type of unescaping for these
// properties, however.. we've noticed that Google Contacts
// specifically escapes the colon (:) with a blackslash. While I have
@@ -78,16 +81,16 @@ class Uri extends Text
//
// Good thing backslashes are not allowed in urls. Makes it easy to
// assume that a backslash is always intended as an escape character.
- if ('URL' === $this->name) {
+ if ($this->name === 'URL') {
$regex = '# (?: (\\\\ (?: \\\\ | : ) ) ) #x';
$matches = preg_split($regex, $val, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$newVal = '';
foreach ($matches as $match) {
switch ($match) {
- case '\:':
+ case '\:' :
$newVal .= ':';
break;
- default:
+ default :
$newVal .= $match;
break;
}
@@ -96,6 +99,7 @@ class Uri extends Text
} else {
$this->value = strtr($val, ['\,' => ',']);
}
+
}
/**
@@ -103,8 +107,8 @@ class Uri extends Text
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
if (is_array($this->value)) {
$value = $this->value[0];
} else {
@@ -112,5 +116,7 @@ class Uri extends Text
}
return strtr($value, [',' => '\,']);
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/UtcOffset.php b/vendor/sabre/vobject/lib/Property/UtcOffset.php
index 732239e23..61895c48e 100644
--- a/vendor/sabre/vobject/lib/Property/UtcOffset.php
+++ b/vendor/sabre/vobject/lib/Property/UtcOffset.php
@@ -11,8 +11,8 @@ namespace Sabre\VObject\Property;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class UtcOffset extends Text
-{
+class UtcOffset extends Text {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -29,9 +29,10 @@ class UtcOffset extends Text
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'UTC-OFFSET';
+
}
/**
@@ -40,16 +41,19 @@ class UtcOffset extends Text
* The value must always be an array.
*
* @param array $value
+ *
+ * @return void
*/
- public function setJsonValue(array $value)
- {
+ function setJsonValue(array $value) {
+
$value = array_map(
- function ($value) {
+ function($value) {
return str_replace(':', '', $value);
},
$value
);
parent::setJsonValue($value);
+
}
/**
@@ -59,14 +63,15 @@ class UtcOffset extends Text
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
return array_map(
- function ($value) {
- return substr($value, 0, -2).':'.
+ function($value) {
+ return substr($value, 0, -2) . ':' .
substr($value, -2);
},
parent::getJsonValue()
);
+
}
}
diff --git a/vendor/sabre/vobject/lib/Property/VCard/Date.php b/vendor/sabre/vobject/lib/Property/VCard/Date.php
index a018ccbb8..1ef6dff34 100644
--- a/vendor/sabre/vobject/lib/Property/VCard/Date.php
+++ b/vendor/sabre/vobject/lib/Property/VCard/Date.php
@@ -11,8 +11,8 @@ namespace Sabre\VObject\Property\VCard;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Date extends DateAndOrTime
-{
+class Date extends DateAndOrTime {
+
/**
* Returns the type of value.
*
@@ -21,18 +21,23 @@ class Date extends DateAndOrTime
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'DATE';
+
}
/**
* Sets the property as a DateTime object.
*
* @param \DateTimeInterface $dt
+ *
+ * @return void
*/
- public function setDateTime(\DateTimeInterface $dt)
- {
+ function setDateTime(\DateTimeInterface $dt) {
+
$this->value = $dt->format('Ymd');
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php b/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php
index b7e17492a..3b4ae3bb5 100644
--- a/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php
+++ b/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php
@@ -19,12 +19,12 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class DateAndOrTime extends Property
-{
+class DateAndOrTime extends Property {
+
/**
* Field separator.
*
- * @var string|null
+ * @var null|string
*/
public $delimiter = null;
@@ -36,9 +36,10 @@ class DateAndOrTime extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'DATE-AND-OR-TIME';
+
}
/**
@@ -47,9 +48,11 @@ class DateAndOrTime extends Property
* You may also specify DateTimeInterface objects here.
*
* @param array $parts
+ *
+ * @return void
*/
- public function setParts(array $parts)
- {
+ function setParts(array $parts) {
+
if (count($parts) > 1) {
throw new \InvalidArgumentException('Only one value allowed');
}
@@ -58,6 +61,7 @@ class DateAndOrTime extends Property
} else {
parent::setParts($parts);
}
+
}
/**
@@ -68,23 +72,28 @@ class DateAndOrTime extends Property
* Instead of strings, you may also use DateTimeInterface here.
*
* @param string|array|DateTimeInterface $value
+ *
+ * @return void
*/
- public function setValue($value)
- {
+ function setValue($value) {
+
if ($value instanceof DateTimeInterface) {
$this->setDateTime($value);
} else {
parent::setValue($value);
}
+
}
/**
* Sets the property as a DateTime object.
*
* @param DateTimeInterface $dt
+ *
+ * @return void
*/
- public function setDateTime(DateTimeInterface $dt)
- {
+ function setDateTime(DateTimeInterface $dt) {
+
$tz = $dt->getTimeZone();
$isUtc = in_array($tz->getName(), ['UTC', 'GMT', 'Z']);
@@ -96,6 +105,7 @@ class DateAndOrTime extends Property
}
$this->value = $value;
+
}
/**
@@ -114,12 +124,12 @@ class DateAndOrTime extends Property
*
* @return DateTimeImmutable
*/
- public function getDateTime()
- {
+ function getDateTime() {
+
$now = new DateTime();
- $tzFormat = 0 === $now->getTimezone()->getOffset($now) ? '\\Z' : 'O';
- $nowParts = DateTimeParser::parseVCardDateTime($now->format('Ymd\\This'.$tzFormat));
+ $tzFormat = $now->getTimezone()->getOffset($now) === 0 ? '\\Z' : 'O';
+ $nowParts = DateTimeParser::parseVCardDateTime($now->format('Ymd\\This' . $tzFormat));
$dateParts = DateTimeParser::parseVCardDateTime($this->getValue());
@@ -131,8 +141,8 @@ class DateAndOrTime extends Property
$dateParts[$k] = $nowParts[$k];
}
}
-
return new DateTimeImmutable("$dateParts[year]-$dateParts[month]-$dateParts[date] $dateParts[hour]:$dateParts[minute]:$dateParts[second] $dateParts[timezone]");
+
}
/**
@@ -142,14 +152,15 @@ class DateAndOrTime extends Property
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
$parts = DateTimeParser::parseVCardDateTime($this->getValue());
$dateStr = '';
// Year
if (!is_null($parts['year'])) {
+
$dateStr .= $parts['year'];
if (!is_null($parts['month'])) {
@@ -157,21 +168,26 @@ class DateAndOrTime extends Property
// dash.
$dateStr .= '-';
}
+
} else {
+
if (!is_null($parts['month']) || !is_null($parts['date'])) {
// Inserting two dashes
$dateStr .= '--';
}
+
}
// Month
if (!is_null($parts['month'])) {
+
$dateStr .= $parts['month'];
if (isset($parts['date'])) {
// If month and date are set, we need the separator dash.
$dateStr .= '-';
}
+
} elseif (isset($parts['date'])) {
// If the month is empty, and a date is set, we need a 'empty
// dash'
@@ -183,6 +199,7 @@ class DateAndOrTime extends Property
$dateStr .= $parts['date'];
}
+
// Early exit if we don't have a time string.
if (is_null($parts['hour']) && is_null($parts['minute']) && is_null($parts['second'])) {
return [$dateStr];
@@ -192,11 +209,13 @@ class DateAndOrTime extends Property
// Hour
if (!is_null($parts['hour'])) {
+
$dateStr .= $parts['hour'];
if (!is_null($parts['minute'])) {
$dateStr .= ':';
}
+
} else {
// We know either minute or second _must_ be set, so we insert a
// dash for an empty value.
@@ -205,11 +224,13 @@ class DateAndOrTime extends Property
// Minute
if (!is_null($parts['minute'])) {
+
$dateStr .= $parts['minute'];
if (!is_null($parts['second'])) {
$dateStr .= ':';
}
+
} elseif (isset($parts['second'])) {
// Dash for empty minute
$dateStr .= '-';
@@ -226,27 +247,30 @@ class DateAndOrTime extends Property
}
return [$dateStr];
+
}
/**
* This method serializes only the value of a property. This is used to
* create xCard or xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- protected function xmlSerializeValue(Xml\Writer $writer)
- {
+ protected function xmlSerializeValue(Xml\Writer $writer) {
+
$valueType = strtolower($this->getValueType());
$parts = DateTimeParser::parseVCardDateAndOrTime($this->getValue());
$value = '';
// $d = defined
- $d = function ($part) use ($parts) {
+ $d = function($part) use ($parts) {
return !is_null($parts[$part]);
};
// $r = read
- $r = function ($part) use ($parts) {
+ $r = function($part) use ($parts) {
return $parts[$part];
};
@@ -258,29 +282,31 @@ class DateAndOrTime extends Property
// }
if (($d('year') || $d('month') || $d('date'))
&& (!$d('hour') && !$d('minute') && !$d('second') && !$d('timezone'))) {
+
if ($d('year') && $d('month') && $d('date')) {
- $value .= $r('year').$r('month').$r('date');
+ $value .= $r('year') . $r('month') . $r('date');
} elseif ($d('year') && $d('month') && !$d('date')) {
- $value .= $r('year').'-'.$r('month');
+ $value .= $r('year') . '-' . $r('month');
} elseif (!$d('year') && $d('month')) {
- $value .= '--'.$r('month').$r('date');
+ $value .= '--' . $r('month') . $r('date');
} elseif (!$d('year') && !$d('month') && $d('date')) {
- $value .= '---'.$r('date');
+ $value .= '---' . $r('date');
}
- // # 4.3.2
+ // # 4.3.2
// value-time = element time {
// xsd:string { pattern = "(\d\d(\d\d(\d\d)?)?|-\d\d(\d\d?)|--\d\d)"
// ~ "(Z|[+\-]\d\d(\d\d)?)?" }
// }
} elseif ((!$d('year') && !$d('month') && !$d('date'))
&& ($d('hour') || $d('minute') || $d('second'))) {
+
if ($d('hour')) {
- $value .= $r('hour').$r('minute').$r('second');
+ $value .= $r('hour') . $r('minute') . $r('second');
} elseif ($d('minute')) {
- $value .= '-'.$r('minute').$r('second');
+ $value .= '-' . $r('minute') . $r('second');
} elseif ($d('second')) {
- $value .= '--'.$r('second');
+ $value .= '--' . $r('second');
}
$value .= $r('timezone');
@@ -291,19 +317,22 @@ class DateAndOrTime extends Property
// ~ "(Z|[+\-]\d\d(\d\d)?)?" }
// }
} elseif ($d('date') && $d('hour')) {
+
if ($d('year') && $d('month') && $d('date')) {
- $value .= $r('year').$r('month').$r('date');
+ $value .= $r('year') . $r('month') . $r('date');
} elseif (!$d('year') && $d('month') && $d('date')) {
- $value .= '--'.$r('month').$r('date');
+ $value .= '--' . $r('month') . $r('date');
} elseif (!$d('year') && !$d('month') && $d('date')) {
- $value .= '---'.$r('date');
+ $value .= '---' . $r('date');
}
- $value .= 'T'.$r('hour').$r('minute').$r('second').
+ $value .= 'T' . $r('hour') . $r('minute') . $r('second') .
$r('timezone');
+
}
$writer->writeElement($valueType, $value);
+
}
/**
@@ -313,10 +342,13 @@ class DateAndOrTime extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
$this->setValue($val);
+
}
/**
@@ -324,9 +356,10 @@ class DateAndOrTime extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return implode($this->delimiter, $this->getParts());
+
}
/**
@@ -351,8 +384,8 @@ class DateAndOrTime extends Property
*
* @return array
*/
- public function validate($options = 0)
- {
+ function validate($options = 0) {
+
$messages = parent::validate($options);
$value = $this->getValue();
@@ -360,12 +393,13 @@ class DateAndOrTime extends Property
DateTimeParser::parseVCardDateTime($value);
} catch (InvalidDataException $e) {
$messages[] = [
- 'level' => 3,
- 'message' => 'The supplied value ('.$value.') is not a correct DATE-AND-OR-TIME property',
- 'node' => $this,
+ 'level' => 3,
+ 'message' => 'The supplied value (' . $value . ') is not a correct DATE-AND-OR-TIME property',
+ 'node' => $this,
];
}
return $messages;
+
}
}
diff --git a/vendor/sabre/vobject/lib/Property/VCard/DateTime.php b/vendor/sabre/vobject/lib/Property/VCard/DateTime.php
index 49c1f3555..e7c804ca7 100644
--- a/vendor/sabre/vobject/lib/Property/VCard/DateTime.php
+++ b/vendor/sabre/vobject/lib/Property/VCard/DateTime.php
@@ -11,8 +11,8 @@ namespace Sabre\VObject\Property\VCard;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class DateTime extends DateAndOrTime
-{
+class DateTime extends DateAndOrTime {
+
/**
* Returns the type of value.
*
@@ -21,8 +21,10 @@ class DateTime extends DateAndOrTime
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'DATE-TIME';
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/VCard/LanguageTag.php b/vendor/sabre/vobject/lib/Property/VCard/LanguageTag.php
index 697273989..aa7e9178d 100644
--- a/vendor/sabre/vobject/lib/Property/VCard/LanguageTag.php
+++ b/vendor/sabre/vobject/lib/Property/VCard/LanguageTag.php
@@ -14,8 +14,8 @@ use
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class LanguageTag extends Property
-{
+class LanguageTag extends Property {
+
/**
* Sets a raw value coming from a mimedir (iCalendar/vCard) file.
*
@@ -23,10 +23,13 @@ class LanguageTag extends Property
* not yet done, but parameters are not included.
*
* @param string $val
+ *
+ * @return void
*/
- public function setRawMimeDirValue($val)
- {
+ function setRawMimeDirValue($val) {
+
$this->setValue($val);
+
}
/**
@@ -34,9 +37,10 @@ class LanguageTag extends Property
*
* @return string
*/
- public function getRawMimeDirValue()
- {
+ function getRawMimeDirValue() {
+
return $this->getValue();
+
}
/**
@@ -47,8 +51,10 @@ class LanguageTag extends Property
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'LANGUAGE-TAG';
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Property/VCard/TimeStamp.php b/vendor/sabre/vobject/lib/Property/VCard/TimeStamp.php
index fccf2d600..9d311f99d 100644
--- a/vendor/sabre/vobject/lib/Property/VCard/TimeStamp.php
+++ b/vendor/sabre/vobject/lib/Property/VCard/TimeStamp.php
@@ -15,8 +15,8 @@ use Sabre\Xml;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class TimeStamp extends Text
-{
+class TimeStamp extends Text {
+
/**
* In case this is a multi-value property. This string will be used as a
* delimiter.
@@ -33,9 +33,10 @@ class TimeStamp extends Text
*
* @return string
*/
- public function getValueType()
- {
+ function getValueType() {
+
return 'TIMESTAMP';
+
}
/**
@@ -45,16 +46,16 @@ class TimeStamp extends Text
*
* @return array
*/
- public function getJsonValue()
- {
+ function getJsonValue() {
+
$parts = DateTimeParser::parseVCardDateTime($this->getValue());
$dateStr =
- $parts['year'].'-'.
- $parts['month'].'-'.
- $parts['date'].'T'.
- $parts['hour'].':'.
- $parts['minute'].':'.
+ $parts['year'] . '-' .
+ $parts['month'] . '-' .
+ $parts['date'] . 'T' .
+ $parts['hour'] . ':' .
+ $parts['minute'] . ':' .
$parts['second'];
// Timezone
@@ -63,19 +64,23 @@ class TimeStamp extends Text
}
return [$dateStr];
+
}
/**
* This method serializes only the value of a property. This is used to
* create xCard or xCal documents.
*
- * @param Xml\Writer $writer XML writer
+ * @param Xml\Writer $writer XML writer.
+ *
+ * @return void
*/
- protected function xmlSerializeValue(Xml\Writer $writer)
- {
+ protected function xmlSerializeValue(Xml\Writer $writer) {
+
// xCard is the only XML and JSON format that has the same date and time
// format than vCard.
$valueType = strtolower($this->getValueType());
$writer->writeElement($valueType, $this->getValue());
+
}
}
diff --git a/vendor/sabre/vobject/lib/Reader.php b/vendor/sabre/vobject/lib/Reader.php
index 055d546a5..709929337 100644
--- a/vendor/sabre/vobject/lib/Reader.php
+++ b/vendor/sabre/vobject/lib/Reader.php
@@ -12,8 +12,8 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Reader
-{
+class Reader {
+
/**
* If this option is passed to the reader, it will be less strict about the
* validity of the lines.
@@ -35,18 +35,18 @@ class Reader
* You can either supply a string, or a readable stream for input.
*
* @param string|resource $data
- * @param int $options
- * @param string $charset
- *
+ * @param int $options
+ * @param string $charset
* @return Document
*/
- public static function read($data, $options = 0, $charset = 'UTF-8')
- {
+ static function read($data, $options = 0, $charset = 'UTF-8') {
+
$parser = new Parser\MimeDir();
$parser->setCharset($charset);
$result = $parser->parse($data, $options);
return $result;
+
}
/**
@@ -55,21 +55,22 @@ class Reader
* The options argument is a bitfield. Pass any of the OPTIONS constant to
* alter the parsers' behaviour.
*
- * You can either a string, a readable stream, or an array for its input.
+ * You can either a string, a readable stream, or an array for it's input.
* Specifying the array is useful if json_decode was already called on the
* input.
*
* @param string|resource|array $data
- * @param int $options
+ * @param int $options
*
* @return Document
*/
- public static function readJson($data, $options = 0)
- {
+ static function readJson($data, $options = 0) {
+
$parser = new Parser\Json();
$result = $parser->parse($data, $options);
return $result;
+
}
/**
@@ -81,15 +82,17 @@ class Reader
* You can either supply a string, or a readable stream for input.
*
* @param string|resource $data
- * @param int $options
+ * @param int $options
*
* @return Document
*/
- public static function readXML($data, $options = 0)
- {
+ static function readXML($data, $options = 0) {
+
$parser = new Parser\XML();
$result = $parser->parse($data, $options);
return $result;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Recur/EventIterator.php b/vendor/sabre/vobject/lib/Recur/EventIterator.php
index 135ecf00e..d313305a0 100644
--- a/vendor/sabre/vobject/lib/Recur/EventIterator.php
+++ b/vendor/sabre/vobject/lib/Recur/EventIterator.php
@@ -58,8 +58,8 @@ use Sabre\VObject\Settings;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class EventIterator implements \Iterator
-{
+class EventIterator implements \Iterator {
+
/**
* Reference timeZone for floating dates and times.
*
@@ -89,12 +89,12 @@ class EventIterator implements \Iterator
* The $uid parameter is only required for the first method.
*
* @param Component|array $input
- * @param string|null $uid
- * @param DateTimeZone $timeZone reference timezone for floating dates and
- * times
+ * @param string|null $uid
+ * @param DateTimeZone $timeZone Reference timezone for floating dates and
+ * times.
*/
- public function __construct($input, $uid = null, DateTimeZone $timeZone = null)
- {
+ function __construct($input, $uid = null, DateTimeZone $timeZone = null) {
+
if (is_null($timeZone)) {
$timeZone = new DateTimeZone('UTC');
}
@@ -107,7 +107,7 @@ class EventIterator implements \Iterator
$events = [$input];
} else {
// Calendar + UID mode.
- $uid = (string) $uid;
+ $uid = (string)$uid;
if (!$uid) {
throw new InvalidArgumentException('The UID argument is required when a VCALENDAR is passed to this constructor');
}
@@ -115,17 +115,24 @@ class EventIterator implements \Iterator
throw new InvalidArgumentException('No events found in this calendar');
}
$events = $input->getByUID($uid);
+
}
foreach ($events as $vevent) {
+
if (!isset($vevent->{'RECURRENCE-ID'})) {
+
$this->masterEvent = $vevent;
+
} else {
+
$this->exceptions[
$vevent->{'RECURRENCE-ID'}->getDateTime($this->timeZone)->getTimeStamp()
] = true;
$this->overriddenEvents[] = $vevent;
+
}
+
}
if (!$this->masterEvent) {
@@ -136,7 +143,7 @@ class EventIterator implements \Iterator
// event and use that instead. This may not always give the
// desired result.
if (!count($this->overriddenEvents)) {
- throw new InvalidArgumentException('This VCALENDAR did not have an event with UID: '.$uid);
+ throw new InvalidArgumentException('This VCALENDAR did not have an event with UID: ' . $uid);
}
$this->masterEvent = array_shift($this->overriddenEvents);
}
@@ -145,11 +152,15 @@ class EventIterator implements \Iterator
$this->allDay = !$this->masterEvent->DTSTART->hasTime();
if (isset($this->masterEvent->EXDATE)) {
+
foreach ($this->masterEvent->EXDATE as $exDate) {
+
foreach ($exDate->getDateTimes($this->timeZone) as $dt) {
$this->exceptions[$dt->getTimeStamp()] = true;
}
+
}
+
}
if (isset($this->masterEvent->DTEND)) {
@@ -180,7 +191,7 @@ class EventIterator implements \Iterator
} else {
$this->recurIterator = new RRuleIterator(
[
- 'FREQ' => 'DAILY',
+ 'FREQ' => 'DAILY',
'COUNT' => 1,
],
$this->startDate
@@ -191,6 +202,7 @@ class EventIterator implements \Iterator
if (!$this->valid()) {
throw new NoInstancesException('This recurrence rule does not generate any valid instances');
}
+
}
/**
@@ -198,11 +210,12 @@ class EventIterator implements \Iterator
*
* @return DateTimeImmutable
*/
- public function current()
- {
+ function current() {
+
if ($this->currentDate) {
return clone $this->currentDate;
}
+
}
/**
@@ -211,11 +224,12 @@ class EventIterator implements \Iterator
*
* @return DateTimeImmutable
*/
- public function getDtStart()
- {
+ function getDtStart() {
+
if ($this->currentDate) {
return clone $this->currentDate;
}
+
}
/**
@@ -224,26 +238,26 @@ class EventIterator implements \Iterator
*
* @return DateTimeImmutable
*/
- public function getDtEnd()
- {
+ function getDtEnd() {
+
if (!$this->valid()) {
return;
}
$end = clone $this->currentDate;
+ return $end->modify('+' . $this->eventDuration . ' seconds');
- return $end->modify('+'.$this->eventDuration.' seconds');
}
/**
* Returns a VEVENT for the current iterations of the event.
*
- * This VEVENT will have a recurrence id, and its DTSTART and DTEND
+ * This VEVENT will have a recurrence id, and it's DTSTART and DTEND
* altered.
*
* @return VEvent
*/
- public function getEventObject()
- {
+ function getEventObject() {
+
if ($this->currentOverriddenEvent) {
return $this->currentOverriddenEvent;
}
@@ -270,8 +284,8 @@ class EventIterator implements \Iterator
$recurid = clone $event->DTSTART;
$recurid->name = 'RECURRENCE-ID';
$event->add($recurid);
-
return $event;
+
}
/**
@@ -281,10 +295,11 @@ class EventIterator implements \Iterator
*
* @return int
*/
- public function key()
- {
+ function key() {
+
// The counter is always 1 ahead.
return $this->counter - 1;
+
}
/**
@@ -293,20 +308,20 @@ class EventIterator implements \Iterator
*
* @return bool
*/
- public function valid()
- {
- if ($this->counter > Settings::$maxRecurrences && -1 !== Settings::$maxRecurrences) {
- throw new MaxInstancesExceededException('Recurring events are only allowed to generate '.Settings::$maxRecurrences);
+ function valid() {
+
+ if ($this->counter > Settings::$maxRecurrences && Settings::$maxRecurrences !== -1) {
+ throw new MaxInstancesExceededException('Recurring events are only allowed to generate ' . Settings::$maxRecurrences);
}
+ return !!$this->currentDate;
- return (bool) $this->currentDate;
}
/**
* Sets the iterator back to the starting point.
*/
- public function rewind()
- {
+ function rewind() {
+
$this->recurIterator->rewind();
// re-creating overridden event index.
$index = [];
@@ -323,15 +338,18 @@ class EventIterator implements \Iterator
$this->currentDate = clone $this->startDate;
$this->next();
+
}
/**
* Advances the iterator with one step.
+ *
+ * @return void
*/
- public function next()
- {
+ function next() {
+
$this->currentOverriddenEvent = null;
- ++$this->counter;
+ $this->counter++;
if ($this->nextDate) {
// We had a stored value.
$nextDate = $this->nextDate;
@@ -348,11 +366,14 @@ class EventIterator implements \Iterator
$nextDate = $this->recurIterator->current();
$this->recurIterator->next();
} while (isset($this->exceptions[$nextDate->getTimeStamp()]));
+
}
+
// $nextDate now contains what rrule thinks is the next one, but an
// overridden event may cut ahead.
if ($this->overriddenEventsIndex) {
+
$offsets = end($this->overriddenEventsIndex);
$timestamp = key($this->overriddenEventsIndex);
$offset = end($offsets);
@@ -372,10 +393,13 @@ class EventIterator implements \Iterator
// Exit point!
return;
+
}
+
}
$this->currentDate = $nextDate;
+
}
/**
@@ -383,11 +407,12 @@ class EventIterator implements \Iterator
*
* @param DateTimeInterface $dateTime
*/
- public function fastForward(DateTimeInterface $dateTime)
- {
+ function fastForward(DateTimeInterface $dateTime) {
+
while ($this->valid() && $this->getDtEnd() <= $dateTime) {
$this->next();
}
+
}
/**
@@ -395,9 +420,10 @@ class EventIterator implements \Iterator
*
* @return bool
*/
- public function isInfinite()
- {
+ function isInfinite() {
+
return $this->recurIterator->isInfinite();
+
}
/**
@@ -478,9 +504,10 @@ class EventIterator implements \Iterator
protected $nextDate;
/**
- * The event that overwrites the current iteration.
+ * The event that overwrites the current iteration
*
* @var VEVENT
*/
protected $currentOverriddenEvent;
+
}
diff --git a/vendor/sabre/vobject/lib/Recur/MaxInstancesExceededException.php b/vendor/sabre/vobject/lib/Recur/MaxInstancesExceededException.php
index cb0835813..264df7d2b 100644
--- a/vendor/sabre/vobject/lib/Recur/MaxInstancesExceededException.php
+++ b/vendor/sabre/vobject/lib/Recur/MaxInstancesExceededException.php
@@ -12,6 +12,5 @@ use Exception;
* @author Evert Pot (http://evertpot.com/)
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
-class MaxInstancesExceededException extends Exception
-{
+class MaxInstancesExceededException extends Exception {
}
diff --git a/vendor/sabre/vobject/lib/Recur/NoInstancesException.php b/vendor/sabre/vobject/lib/Recur/NoInstancesException.php
index b55af567d..8f8bb472b 100644
--- a/vendor/sabre/vobject/lib/Recur/NoInstancesException.php
+++ b/vendor/sabre/vobject/lib/Recur/NoInstancesException.php
@@ -13,6 +13,6 @@ use Exception;
* @author Evert Pot (http://evertpot.com/)
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
-class NoInstancesException extends Exception
-{
+class NoInstancesException extends Exception {
+
}
diff --git a/vendor/sabre/vobject/lib/Recur/RDateIterator.php b/vendor/sabre/vobject/lib/Recur/RDateIterator.php
index 013694b95..f44960e12 100644
--- a/vendor/sabre/vobject/lib/Recur/RDateIterator.php
+++ b/vendor/sabre/vobject/lib/Recur/RDateIterator.php
@@ -19,30 +19,29 @@ use Sabre\VObject\DateTimeParser;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class RDateIterator implements Iterator
-{
+class RDateIterator implements Iterator {
+
/**
* Creates the Iterator.
*
- * @param string|array $rrule
+ * @param string|array $rrule
* @param DateTimeInterface $start
*/
- public function __construct($rrule, DateTimeInterface $start)
- {
+ function __construct($rrule, DateTimeInterface $start) {
+
$this->startDate = $start;
$this->parseRDate($rrule);
$this->currentDate = clone $this->startDate;
+
}
/* Implementation of the Iterator interface {{{ */
- public function current()
- {
- if (!$this->valid()) {
- return;
- }
+ function current() {
+ if (!$this->valid()) return;
return clone $this->currentDate;
+
}
/**
@@ -50,9 +49,10 @@ class RDateIterator implements Iterator
*
* @return int
*/
- public function key()
- {
+ function key() {
+
return $this->counter;
+
}
/**
@@ -61,35 +61,40 @@ class RDateIterator implements Iterator
*
* @return bool
*/
- public function valid()
- {
- return $this->counter <= count($this->dates);
+ function valid() {
+
+ return ($this->counter <= count($this->dates));
+
}
/**
* Resets the iterator.
+ *
+ * @return void
*/
- public function rewind()
- {
+ function rewind() {
+
$this->currentDate = clone $this->startDate;
$this->counter = 0;
+
}
/**
* Goes on to the next iteration.
+ *
+ * @return void
*/
- public function next()
- {
- ++$this->counter;
- if (!$this->valid()) {
- return;
- }
+ function next() {
+
+ $this->counter++;
+ if (!$this->valid()) return;
$this->currentDate =
DateTimeParser::parse(
$this->dates[$this->counter - 1],
$this->startDate->getTimezone()
);
+
}
/* End of Iterator implementation }}} */
@@ -99,9 +104,10 @@ class RDateIterator implements Iterator
*
* @return bool
*/
- public function isInfinite()
- {
+ function isInfinite() {
+
return false;
+
}
/**
@@ -109,12 +115,15 @@ class RDateIterator implements Iterator
* specified date.
*
* @param DateTimeInterface $dt
+ *
+ * @return void
*/
- public function fastForward(DateTimeInterface $dt)
- {
+ function fastForward(DateTimeInterface $dt) {
+
while ($this->valid() && $this->currentDate < $dt) {
$this->next();
}
+
}
/**
@@ -150,20 +159,24 @@ class RDateIterator implements Iterator
* class with all the values.
*
* @param string|array $rrule
+ *
+ * @return void
*/
- protected function parseRDate($rdate)
- {
+ protected function parseRDate($rdate) {
+
if (is_string($rdate)) {
$rdate = explode(',', $rdate);
}
$this->dates = $rdate;
+
}
/**
- * Array with the RRULE dates.
+ * Array with the RRULE dates
*
* @var array
*/
protected $dates = [];
+
}
diff --git a/vendor/sabre/vobject/lib/Recur/RRuleIterator.php b/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
index 554507f19..dbea1155d 100644
--- a/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
+++ b/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
@@ -22,30 +22,29 @@ use Sabre\VObject\Property;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class RRuleIterator implements Iterator
-{
+class RRuleIterator implements Iterator {
+
/**
* Creates the Iterator.
*
- * @param string|array $rrule
+ * @param string|array $rrule
* @param DateTimeInterface $start
*/
- public function __construct($rrule, DateTimeInterface $start)
- {
+ function __construct($rrule, DateTimeInterface $start) {
+
$this->startDate = $start;
$this->parseRRule($rrule);
$this->currentDate = clone $this->startDate;
+
}
/* Implementation of the Iterator interface {{{ */
- public function current()
- {
- if (!$this->valid()) {
- return;
- }
+ function current() {
+ if (!$this->valid()) return;
return clone $this->currentDate;
+
}
/**
@@ -53,9 +52,10 @@ class RRuleIterator implements Iterator
*
* @return int
*/
- public function key()
- {
+ function key() {
+
return $this->counter;
+
}
/**
@@ -65,53 +65,61 @@ class RRuleIterator implements Iterator
*
* @return bool
*/
- public function valid()
- {
+ function valid() {
+
if (!is_null($this->count)) {
return $this->counter < $this->count;
}
-
return is_null($this->until) || $this->currentDate <= $this->until;
+
}
/**
* Resets the iterator.
+ *
+ * @return void
*/
- public function rewind()
- {
+ function rewind() {
+
$this->currentDate = clone $this->startDate;
$this->counter = 0;
+
}
/**
* Goes on to the next iteration.
+ *
+ * @return void
*/
- public function next()
- {
+ function next() {
+
// Otherwise, we find the next event in the normal RRULE
// sequence.
switch ($this->frequency) {
- case 'hourly':
+
+ case 'hourly' :
$this->nextHourly();
break;
- case 'daily':
+ case 'daily' :
$this->nextDaily();
break;
- case 'weekly':
+ case 'weekly' :
$this->nextWeekly();
break;
- case 'monthly':
+ case 'monthly' :
$this->nextMonthly();
break;
- case 'yearly':
+ case 'yearly' :
$this->nextYearly();
break;
+
}
- ++$this->counter;
+ $this->counter++;
+
}
/* End of Iterator implementation }}} */
@@ -121,9 +129,10 @@ class RRuleIterator implements Iterator
*
* @return bool
*/
- public function isInfinite()
- {
+ function isInfinite() {
+
return !$this->count && !$this->until;
+
}
/**
@@ -131,12 +140,15 @@ class RRuleIterator implements Iterator
* specified date.
*
* @param DateTimeInterface $dt
+ *
+ * @return void
*/
- public function fastForward(DateTimeInterface $dt)
- {
+ function fastForward(DateTimeInterface $dt) {
+
while ($this->valid() && $this->currentDate < $dt) {
$this->next();
}
+
}
/**
@@ -305,20 +317,24 @@ class RRuleIterator implements Iterator
/**
* Does the processing for advancing the iterator for hourly frequency.
+ *
+ * @return void
*/
- protected function nextHourly()
- {
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' hours');
+ protected function nextHourly() {
+
+ $this->currentDate = $this->currentDate->modify('+' . $this->interval . ' hours');
+
}
/**
* Does the processing for advancing the iterator for daily frequency.
+ *
+ * @return void
*/
- protected function nextDaily()
- {
- if (!$this->byHour && !$this->byDay) {
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' days');
+ protected function nextDaily() {
+ if (!$this->byHour && !$this->byDay) {
+ $this->currentDate = $this->currentDate->modify('+' . $this->interval . ' days');
return;
}
@@ -336,14 +352,16 @@ class RRuleIterator implements Iterator
do {
if ($this->byHour) {
- if ('23' == $this->currentDate->format('G')) {
+ if ($this->currentDate->format('G') == '23') {
// to obey the interval rule
- $this->currentDate = $this->currentDate->modify('+'.$this->interval - 1 .' days');
+ $this->currentDate = $this->currentDate->modify('+' . $this->interval - 1 . ' days');
}
$this->currentDate = $this->currentDate->modify('+1 hours');
+
} else {
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' days');
+ $this->currentDate = $this->currentDate->modify('+' . $this->interval . ' days');
+
}
// Current month of the year
@@ -354,21 +372,24 @@ class RRuleIterator implements Iterator
// Current hour of the day
$currentHour = $this->currentDate->format('G');
+
} while (
($this->byDay && !in_array($currentDay, $recurrenceDays)) ||
($this->byHour && !in_array($currentHour, $recurrenceHours)) ||
($this->byMonth && !in_array($currentMonth, $recurrenceMonths))
);
+
}
/**
* Does the processing for advancing the iterator for weekly frequency.
+ *
+ * @return void
*/
- protected function nextWeekly()
- {
- if (!$this->byHour && !$this->byDay) {
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' weeks');
+ protected function nextWeekly() {
+ if (!$this->byHour && !$this->byDay) {
+ $this->currentDate = $this->currentDate->modify('+' . $this->interval . ' weeks');
return;
}
@@ -384,6 +405,7 @@ class RRuleIterator implements Iterator
$firstDay = $this->dayMap[$this->weekStart];
do {
+
if ($this->byHour) {
$this->currentDate = $this->currentDate->modify('+1 hours');
} else {
@@ -391,19 +413,19 @@ class RRuleIterator implements Iterator
}
// Current day of the week
- $currentDay = (int) $this->currentDate->format('w');
+ $currentDay = (int)$this->currentDate->format('w');
// Current hour of the day
- $currentHour = (int) $this->currentDate->format('G');
+ $currentHour = (int)$this->currentDate->format('G');
// We need to roll over to the next week
- if ($currentDay === $firstDay && (!$this->byHour || '0' == $currentHour)) {
- $this->currentDate = $this->currentDate->modify('+'.$this->interval - 1 .' weeks');
+ if ($currentDay === $firstDay && (!$this->byHour || $currentHour == '0')) {
+ $this->currentDate = $this->currentDate->modify('+' . $this->interval - 1 . ' weeks');
// We need to go to the first day of this week, but only if we
// are not already on this first day of this week.
if ($this->currentDate->format('w') != $firstDay) {
- $this->currentDate = $this->currentDate->modify('last '.$this->dayNames[$this->dayMap[$this->weekStart]]);
+ $this->currentDate = $this->currentDate->modify('last ' . $this->dayNames[$this->dayMap[$this->weekStart]]);
}
}
@@ -413,38 +435,43 @@ class RRuleIterator implements Iterator
/**
* Does the processing for advancing the iterator for monthly frequency.
+ *
+ * @return void
*/
- protected function nextMonthly()
- {
+ protected function nextMonthly() {
+
$currentDayOfMonth = $this->currentDate->format('j');
if (!$this->byMonthDay && !$this->byDay) {
+
// If the current day is higher than the 28th, rollover can
// occur to the next month. We Must skip these invalid
// entries.
if ($currentDayOfMonth < 29) {
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' months');
+ $this->currentDate = $this->currentDate->modify('+' . $this->interval . ' months');
} else {
$increase = 0;
do {
- ++$increase;
+ $increase++;
$tempDate = clone $this->currentDate;
- $tempDate = $tempDate->modify('+ '.($this->interval * $increase).' months');
+ $tempDate = $tempDate->modify('+ ' . ($this->interval * $increase) . ' months');
} while ($tempDate->format('j') != $currentDayOfMonth);
$this->currentDate = $tempDate;
}
-
return;
}
while (true) {
+
$occurrences = $this->getMonthlyOccurrences();
foreach ($occurrences as $occurrence) {
+
// The first occurrence thats higher than the current
// day of the month wins.
if ($occurrence > $currentDayOfMonth) {
break 2;
}
+
}
// If we made it all the way here, it means there were no
@@ -456,36 +483,42 @@ class RRuleIterator implements Iterator
// $this->currentDate->modify('first day of this month');
$this->currentDate = new DateTimeImmutable($this->currentDate->format('Y-m-1 H:i:s'), $this->currentDate->getTimezone());
// end of workaround
- $this->currentDate = $this->currentDate->modify('+ '.$this->interval.' months');
+ $this->currentDate = $this->currentDate->modify('+ ' . $this->interval . ' months');
// This goes to 0 because we need to start counting at the
// beginning.
$currentDayOfMonth = 0;
+
}
$this->currentDate = $this->currentDate->setDate(
- (int) $this->currentDate->format('Y'),
- (int) $this->currentDate->format('n'),
- (int) $occurrence
+ (int)$this->currentDate->format('Y'),
+ (int)$this->currentDate->format('n'),
+ (int)$occurrence
);
+
}
/**
* Does the processing for advancing the iterator for yearly frequency.
+ *
+ * @return void
*/
- protected function nextYearly()
- {
+ protected function nextYearly() {
+
$currentMonth = $this->currentDate->format('n');
$currentYear = $this->currentDate->format('Y');
$currentDayOfMonth = $this->currentDate->format('j');
// No sub-rules, so we just advance by year
if (empty($this->byMonth)) {
+
// Unless it was a leap day!
- if (2 == $currentMonth && 29 == $currentDayOfMonth) {
+ if ($currentMonth == 2 && $currentDayOfMonth == 29) {
+
$counter = 0;
do {
- ++$counter;
+ $counter++;
// Here we increase the year count by the interval, until
// we hit a date that's also in a leap year.
//
@@ -495,15 +528,16 @@ class RRuleIterator implements Iterator
// 400. (1800, 1900, 2100). So we just rely on the datetime
// functions instead.
$nextDate = clone $this->currentDate;
- $nextDate = $nextDate->modify('+ '.($this->interval * $counter).' years');
- } while (2 != $nextDate->format('n'));
+ $nextDate = $nextDate->modify('+ ' . ($this->interval * $counter) . ' years');
+ } while ($nextDate->format('n') != 2);
$this->currentDate = $nextDate;
return;
+
}
- if (null !== $this->byWeekNo) { // byWeekNo is an array with values from -53 to -1, or 1 to 53
+ if ($this->byWeekNo !== null) { // byWeekNo is an array with values from -53 to -1, or 1 to 53
$dayOffsets = [];
if ($this->byDay) {
foreach ($this->byDay as $byDay) {
@@ -532,7 +566,6 @@ class RRuleIterator implements Iterator
if (count($checkDates) > 0) {
$this->currentDate = min($checkDates);
-
return;
}
@@ -541,14 +574,14 @@ class RRuleIterator implements Iterator
}
}
- if (null !== $this->byYearDay) { // byYearDay is an array with values from -366 to -1, or 1 to 366
+ if ($this->byYearDay !== null) { // byYearDay is an array with values from -366 to -1, or 1 to 366
$dayOffsets = [];
if ($this->byDay) {
foreach ($this->byDay as $byDay) {
$dayOffsets[] = $this->dayMap[$byDay];
}
} else { // default is Monday-Sunday
- $dayOffsets = [1, 2, 3, 4, 5, 6, 7];
+ $dayOffsets = [1,2,3,4,5,6,7];
}
$currentYear = $this->currentDate->format('Y');
@@ -561,9 +594,9 @@ class RRuleIterator implements Iterator
$date = clone $this->currentDate;
$date = $date->setDate($currentYear, 1, 1);
if ($byYearDay > 0) {
- $date = $date->add(new \DateInterval('P'.$byYearDay.'D'));
+ $date = $date->add(new \DateInterval('P' . $byYearDay . 'D'));
} else {
- $date = $date->sub(new \DateInterval('P'.abs($byYearDay).'D'));
+ $date = $date->sub(new \DateInterval('P' . abs($byYearDay) . 'D'));
}
if ($date > $this->currentDate && in_array($date->format('N'), $dayOffsets)) {
@@ -573,7 +606,6 @@ class RRuleIterator implements Iterator
if (count($checkDates) > 0) {
$this->currentDate = min($checkDates);
-
return;
}
@@ -583,9 +615,9 @@ class RRuleIterator implements Iterator
}
// The easiest form
- $this->currentDate = $this->currentDate->modify('+'.$this->interval.' years');
-
+ $this->currentDate = $this->currentDate->modify('+' . $this->interval . ' years');
return;
+
}
$currentMonth = $this->currentDate->format('n');
@@ -597,10 +629,13 @@ class RRuleIterator implements Iterator
// If we got a byDay or getMonthDay filter, we must first expand
// further.
if ($this->byDay || $this->byMonthDay) {
+
while (true) {
+
$occurrences = $this->getMonthlyOccurrences();
foreach ($occurrences as $occurrence) {
+
// The first occurrence that's higher than the current
// day of the month wins.
// If we advanced to the next month or year, the first
@@ -608,6 +643,7 @@ class RRuleIterator implements Iterator
if ($occurrence > $currentDayOfMonth || $advancedToNewMonth) {
break 2;
}
+
}
// If we made it here, it means we need to advance to
@@ -615,7 +651,8 @@ class RRuleIterator implements Iterator
$currentDayOfMonth = 1;
$advancedToNewMonth = true;
do {
- ++$currentMonth;
+
+ $currentMonth++;
if ($currentMonth > 12) {
$currentYear += $this->interval;
$currentMonth = 1;
@@ -623,38 +660,43 @@ class RRuleIterator implements Iterator
} while (!in_array($currentMonth, $this->byMonth));
$this->currentDate = $this->currentDate->setDate(
- (int) $currentYear,
- (int) $currentMonth,
- (int) $currentDayOfMonth
+ (int)$currentYear,
+ (int)$currentMonth,
+ (int)$currentDayOfMonth
);
+
}
// If we made it here, it means we got a valid occurrence
$this->currentDate = $this->currentDate->setDate(
- (int) $currentYear,
- (int) $currentMonth,
- (int) $occurrence
+ (int)$currentYear,
+ (int)$currentMonth,
+ (int)$occurrence
);
-
return;
+
} else {
+
// These are the 'byMonth' rules, if there are no byDay or
// byMonthDay sub-rules.
do {
- ++$currentMonth;
+
+ $currentMonth++;
if ($currentMonth > 12) {
$currentYear += $this->interval;
$currentMonth = 1;
}
} while (!in_array($currentMonth, $this->byMonth));
$this->currentDate = $this->currentDate->setDate(
- (int) $currentYear,
- (int) $currentMonth,
- (int) $currentDayOfMonth
+ (int)$currentYear,
+ (int)$currentMonth,
+ (int)$currentDayOfMonth
);
return;
+
}
+
}
/* }}} */
@@ -664,28 +706,32 @@ class RRuleIterator implements Iterator
* class with all the values.
*
* @param string|array $rrule
+ *
+ * @return void
*/
- protected function parseRRule($rrule)
- {
+ protected function parseRRule($rrule) {
+
if (is_string($rrule)) {
$rrule = Property\ICalendar\Recur::stringToArray($rrule);
}
foreach ($rrule as $key => $value) {
+
$key = strtoupper($key);
switch ($key) {
- case 'FREQ':
+
+ case 'FREQ' :
$value = strtolower($value);
if (!in_array(
$value,
['secondly', 'minutely', 'hourly', 'daily', 'weekly', 'monthly', 'yearly']
)) {
- throw new InvalidDataException('Unknown value for FREQ='.strtoupper($value));
+ throw new InvalidDataException('Unknown value for FREQ=' . strtoupper($value));
}
$this->frequency = $value;
break;
- case 'UNTIL':
+ case 'UNTIL' :
$this->until = DateTimeParser::parse($value, $this->startDate->getTimezone());
// In some cases events are generated with an UNTIL=
@@ -701,82 +747,86 @@ class RRuleIterator implements Iterator
}
break;
- case 'INTERVAL':
+ case 'INTERVAL' :
+ // No break
- case 'COUNT':
- $val = (int) $value;
+ case 'COUNT' :
+ $val = (int)$value;
if ($val < 1) {
- throw new InvalidDataException(strtoupper($key).' in RRULE must be a positive integer!');
+ throw new InvalidDataException(strtoupper($key) . ' in RRULE must be a positive integer!');
}
$key = strtolower($key);
$this->$key = $val;
break;
- case 'BYSECOND':
- $this->bySecond = (array) $value;
+ case 'BYSECOND' :
+ $this->bySecond = (array)$value;
break;
- case 'BYMINUTE':
- $this->byMinute = (array) $value;
+ case 'BYMINUTE' :
+ $this->byMinute = (array)$value;
break;
- case 'BYHOUR':
- $this->byHour = (array) $value;
+ case 'BYHOUR' :
+ $this->byHour = (array)$value;
break;
- case 'BYDAY':
- $value = (array) $value;
+ case 'BYDAY' :
+ $value = (array)$value;
foreach ($value as $part) {
if (!preg_match('#^ (-|\+)? ([1-5])? (MO|TU|WE|TH|FR|SA|SU) $# xi', $part)) {
- throw new InvalidDataException('Invalid part in BYDAY clause: '.$part);
+ throw new InvalidDataException('Invalid part in BYDAY clause: ' . $part);
}
}
$this->byDay = $value;
break;
- case 'BYMONTHDAY':
- $this->byMonthDay = (array) $value;
+ case 'BYMONTHDAY' :
+ $this->byMonthDay = (array)$value;
break;
- case 'BYYEARDAY':
- $this->byYearDay = (array) $value;
+ case 'BYYEARDAY' :
+ $this->byYearDay = (array)$value;
foreach ($this->byYearDay as $byYearDay) {
- if (!is_numeric($byYearDay) || (int) $byYearDay < -366 || 0 == (int) $byYearDay || (int) $byYearDay > 366) {
+ if (!is_numeric($byYearDay) || (int)$byYearDay < -366 || (int)$byYearDay == 0 || (int)$byYearDay > 366) {
throw new InvalidDataException('BYYEARDAY in RRULE must have value(s) from 1 to 366, or -366 to -1!');
}
}
break;
- case 'BYWEEKNO':
- $this->byWeekNo = (array) $value;
+ case 'BYWEEKNO' :
+ $this->byWeekNo = (array)$value;
foreach ($this->byWeekNo as $byWeekNo) {
- if (!is_numeric($byWeekNo) || (int) $byWeekNo < -53 || 0 == (int) $byWeekNo || (int) $byWeekNo > 53) {
+ if (!is_numeric($byWeekNo) || (int)$byWeekNo < -53 || (int)$byWeekNo == 0 || (int)$byWeekNo > 53) {
throw new InvalidDataException('BYWEEKNO in RRULE must have value(s) from 1 to 53, or -53 to -1!');
}
}
break;
- case 'BYMONTH':
- $this->byMonth = (array) $value;
+ case 'BYMONTH' :
+ $this->byMonth = (array)$value;
foreach ($this->byMonth as $byMonth) {
- if (!is_numeric($byMonth) || (int) $byMonth < 1 || (int) $byMonth > 12) {
+ if (!is_numeric($byMonth) || (int)$byMonth < 1 || (int)$byMonth > 12) {
throw new InvalidDataException('BYMONTH in RRULE must have value(s) betweeen 1 and 12!');
}
}
break;
- case 'BYSETPOS':
- $this->bySetPos = (array) $value;
+ case 'BYSETPOS' :
+ $this->bySetPos = (array)$value;
break;
- case 'WKST':
+ case 'WKST' :
$this->weekStart = strtoupper($value);
break;
default:
- throw new InvalidDataException('Not supported: '.strtoupper($key));
+ throw new InvalidDataException('Not supported: ' . strtoupper($key));
+
}
+
}
+
}
/**
@@ -802,75 +852,77 @@ class RRuleIterator implements Iterator
*
* @return array
*/
- protected function getMonthlyOccurrences()
- {
+ protected function getMonthlyOccurrences() {
+
$startDate = clone $this->currentDate;
$byDayResults = [];
// Our strategy is to simply go through the byDays, advance the date to
// that point and add it to the results.
- if ($this->byDay) {
- foreach ($this->byDay as $day) {
- $dayName = $this->dayNames[$this->dayMap[substr($day, -2)]];
-
- // Dayname will be something like 'wednesday'. Now we need to find
- // all wednesdays in this month.
- $dayHits = [];
-
- // workaround for missing 'first day of the month' support in hhvm
- $checkDate = new \DateTime($startDate->format('Y-m-1'));
- // workaround modify always advancing the date even if the current day is a $dayName in hhvm
- if ($checkDate->format('l') !== $dayName) {
- $checkDate = $checkDate->modify($dayName);
- }
+ if ($this->byDay) foreach ($this->byDay as $day) {
- do {
- $dayHits[] = $checkDate->format('j');
- $checkDate = $checkDate->modify('next '.$dayName);
- } while ($checkDate->format('n') === $startDate->format('n'));
-
- // So now we have 'all wednesdays' for month. It is however
- // possible that the user only really wanted the 1st, 2nd or last
- // wednesday.
- if (strlen($day) > 2) {
- $offset = (int) substr($day, 0, -2);
-
- if ($offset > 0) {
- // It is possible that the day does not exist, such as a
- // 5th or 6th wednesday of the month.
- if (isset($dayHits[$offset - 1])) {
- $byDayResults[] = $dayHits[$offset - 1];
- }
- } else {
- // if it was negative we count from the end of the array
- // might not exist, fx. -5th tuesday
- if (isset($dayHits[count($dayHits) + $offset])) {
- $byDayResults[] = $dayHits[count($dayHits) + $offset];
- }
+ $dayName = $this->dayNames[$this->dayMap[substr($day, -2)]];
+
+
+ // Dayname will be something like 'wednesday'. Now we need to find
+ // all wednesdays in this month.
+ $dayHits = [];
+
+ // workaround for missing 'first day of the month' support in hhvm
+ $checkDate = new \DateTime($startDate->format('Y-m-1'));
+ // workaround modify always advancing the date even if the current day is a $dayName in hhvm
+ if ($checkDate->format('l') !== $dayName) {
+ $checkDate = $checkDate->modify($dayName);
+ }
+
+ do {
+ $dayHits[] = $checkDate->format('j');
+ $checkDate = $checkDate->modify('next ' . $dayName);
+ } while ($checkDate->format('n') === $startDate->format('n'));
+
+ // So now we have 'all wednesdays' for month. It is however
+ // possible that the user only really wanted the 1st, 2nd or last
+ // wednesday.
+ if (strlen($day) > 2) {
+ $offset = (int)substr($day, 0, -2);
+
+ if ($offset > 0) {
+ // It is possible that the day does not exist, such as a
+ // 5th or 6th wednesday of the month.
+ if (isset($dayHits[$offset - 1])) {
+ $byDayResults[] = $dayHits[$offset - 1];
}
} else {
- // There was no counter (first, second, last wednesdays), so we
- // just need to add the all to the list).
- $byDayResults = array_merge($byDayResults, $dayHits);
+
+ // if it was negative we count from the end of the array
+ // might not exist, fx. -5th tuesday
+ if (isset($dayHits[count($dayHits) + $offset])) {
+ $byDayResults[] = $dayHits[count($dayHits) + $offset];
+ }
}
+ } else {
+ // There was no counter (first, second, last wednesdays), so we
+ // just need to add the all to the list).
+ $byDayResults = array_merge($byDayResults, $dayHits);
+
}
+
}
$byMonthDayResults = [];
- if ($this->byMonthDay) {
- foreach ($this->byMonthDay as $monthDay) {
- // Removing values that are out of range for this month
- if ($monthDay > $startDate->format('t') ||
+ if ($this->byMonthDay) foreach ($this->byMonthDay as $monthDay) {
+
+ // Removing values that are out of range for this month
+ if ($monthDay > $startDate->format('t') ||
$monthDay < 0 - $startDate->format('t')) {
continue;
- }
- if ($monthDay > 0) {
- $byMonthDayResults[] = $monthDay;
- } else {
- // Negative values
- $byMonthDayResults[] = $startDate->format('t') + 1 + $monthDay;
- }
+ }
+ if ($monthDay > 0) {
+ $byMonthDayResults[] = $monthDay;
+ } else {
+ // Negative values
+ $byMonthDayResults[] = $startDate->format('t') + 1 + $monthDay;
}
}
@@ -895,6 +947,7 @@ class RRuleIterator implements Iterator
$filteredResult = [];
foreach ($this->bySetPos as $setPos) {
+
if ($setPos < 0) {
$setPos = count($result) + ($setPos + 1);
}
@@ -904,8 +957,8 @@ class RRuleIterator implements Iterator
}
sort($filteredResult, SORT_NUMERIC);
-
return $filteredResult;
+
}
/**
@@ -923,8 +976,8 @@ class RRuleIterator implements Iterator
'SA' => 6,
];
- protected function getHours()
- {
+ protected function getHours() {
+
$recurrenceHours = [];
foreach ($this->byHour as $byHour) {
$recurrenceHours[] = $byHour;
@@ -933,21 +986,23 @@ class RRuleIterator implements Iterator
return $recurrenceHours;
}
- protected function getDays()
- {
+ protected function getDays() {
+
$recurrenceDays = [];
foreach ($this->byDay as $byDay) {
+
// The day may be preceeded with a positive (+n) or
// negative (-n) integer. However, this does not make
// sense in 'weekly' so we ignore it here.
$recurrenceDays[] = $this->dayMap[substr($byDay, -2)];
+
}
return $recurrenceDays;
}
- protected function getMonths()
- {
+ protected function getMonths() {
+
$recurrenceMonths = [];
foreach ($this->byMonth as $byMonth) {
$recurrenceMonths[] = $byMonth;
diff --git a/vendor/sabre/vobject/lib/Settings.php b/vendor/sabre/vobject/lib/Settings.php
index afc586b0c..3f274ba8e 100644
--- a/vendor/sabre/vobject/lib/Settings.php
+++ b/vendor/sabre/vobject/lib/Settings.php
@@ -15,8 +15,8 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Settings
-{
+class Settings {
+
/**
* The minimum date we accept for various calculations with dates, such as
* recurrences.
@@ -25,7 +25,7 @@ class Settings
* use-cases. In particular, it covers birthdates for virtually everyone
* alive on earth, which is less than 5 people at the time of writing.
*/
- public static $minDate = '1900-01-01';
+ static $minDate = '1900-01-01';
/**
* The maximum date we accept for various calculations with dates, such as
@@ -34,7 +34,7 @@ class Settings
* The choice of 2100 is pretty arbitrary, but should cover most
* appointments made for many years to come.
*/
- public static $maxDate = '2100-01-01';
+ static $maxDate = '2100-01-01';
/**
* The maximum number of recurrences that will be generated.
@@ -51,5 +51,6 @@ class Settings
*
* Set this value to -1 to disable this control altogether.
*/
- public static $maxRecurrences = 3500;
+ static $maxRecurrences = 3500;
+
}
diff --git a/vendor/sabre/vobject/lib/Splitter/ICalendar.php b/vendor/sabre/vobject/lib/Splitter/ICalendar.php
index d42566194..c0007ba01 100644
--- a/vendor/sabre/vobject/lib/Splitter/ICalendar.php
+++ b/vendor/sabre/vobject/lib/Splitter/ICalendar.php
@@ -19,8 +19,8 @@ use Sabre\VObject\Component\VCalendar;
* @author Armin Hackmann
* @license http://sabre.io/license/ Modified BSD License
*/
-class ICalendar implements SplitterInterface
-{
+class ICalendar implements SplitterInterface {
+
/**
* Timezones.
*
@@ -38,13 +38,13 @@ class ICalendar implements SplitterInterface
/**
* Constructor.
*
- * The splitter should receive an readable file stream as its input.
+ * The splitter should receive an readable file stream as it's input.
*
* @param resource $input
- * @param int $options parser options, see the OPTIONS constants
+ * @param int $options Parser options, see the OPTIONS constants.
*/
- public function __construct($input, $options = 0)
- {
+ function __construct($input, $options = 0) {
+
$data = VObject\Reader::read($input, $options);
if (!$data instanceof VObject\Component\VCalendar) {
@@ -57,16 +57,16 @@ class ICalendar implements SplitterInterface
}
// Get all timezones
- if ('VTIMEZONE' === $component->name) {
- $this->vtimezones[(string) $component->TZID] = $component;
+ if ($component->name === 'VTIMEZONE') {
+ $this->vtimezones[(string)$component->TZID] = $component;
continue;
}
// Get component UID for recurring Events search
if (!$component->UID) {
- $component->UID = sha1(microtime()).'-vobjectimport';
+ $component->UID = sha1(microtime()) . '-vobjectimport';
}
- $uid = (string) $component->UID;
+ $uid = (string)$component->UID;
// Take care of recurring events
if (!array_key_exists($uid, $this->objects)) {
@@ -75,6 +75,7 @@ class ICalendar implements SplitterInterface
$this->objects[$uid]->add(clone $component);
}
+
}
/**
@@ -83,14 +84,15 @@ class ICalendar implements SplitterInterface
*
* When the end is reached, null will be returned.
*
- * @return \Sabre\VObject\Component|null
+ * @return Sabre\VObject\Component|null
*/
- public function getNext()
- {
+ function getNext() {
+
if ($object = array_shift($this->objects)) {
+
// create our baseobject
$object->version = '2.0';
- $object->prodid = '-//Sabre//Sabre VObject '.VObject\Version::VERSION.'//EN';
+ $object->prodid = '-//Sabre//Sabre VObject ' . VObject\Version::VERSION . '//EN';
$object->calscale = 'GREGORIAN';
// add vtimezone information to obj (if we have it)
@@ -99,8 +101,13 @@ class ICalendar implements SplitterInterface
}
return $object;
+
} else {
+
return;
+
}
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/Splitter/SplitterInterface.php b/vendor/sabre/vobject/lib/Splitter/SplitterInterface.php
index c845ac5fc..8f827cc4b 100644
--- a/vendor/sabre/vobject/lib/Splitter/SplitterInterface.php
+++ b/vendor/sabre/vobject/lib/Splitter/SplitterInterface.php
@@ -15,16 +15,16 @@ namespace Sabre\VObject\Splitter;
* @author Dominik Tobschall (http://tobschall.de/)
* @license http://sabre.io/license/ Modified BSD License
*/
-interface SplitterInterface
-{
+interface SplitterInterface {
+
/**
* Constructor.
*
- * The splitter should receive an readable file stream as its input.
+ * The splitter should receive an readable file stream as it's input.
*
* @param resource $input
*/
- public function __construct($input);
+ function __construct($input);
/**
* Every time getNext() is called, a new object will be parsed, until we
@@ -32,7 +32,8 @@ interface SplitterInterface
*
* When the end is reached, null will be returned.
*
- * @return \Sabre\VObject\Component|null
+ * @return Sabre\VObject\Component|null
*/
- public function getNext();
+ function getNext();
+
}
diff --git a/vendor/sabre/vobject/lib/Splitter/VCard.php b/vendor/sabre/vobject/lib/Splitter/VCard.php
index a20f5c2c1..0bb82abe9 100644
--- a/vendor/sabre/vobject/lib/Splitter/VCard.php
+++ b/vendor/sabre/vobject/lib/Splitter/VCard.php
@@ -19,8 +19,8 @@ use Sabre\VObject\Parser\MimeDir;
* @author Armin Hackmann
* @license http://sabre.io/license/ Modified BSD License
*/
-class VCard implements SplitterInterface
-{
+class VCard implements SplitterInterface {
+
/**
* File handle.
*
@@ -38,15 +38,16 @@ class VCard implements SplitterInterface
/**
* Constructor.
*
- * The splitter should receive an readable file stream as its input.
+ * The splitter should receive an readable file stream as it's input.
*
* @param resource $input
- * @param int $options parser options, see the OPTIONS constants
+ * @param int $options Parser options, see the OPTIONS constants.
*/
- public function __construct($input, $options = 0)
- {
+ function __construct($input, $options = 0) {
+
$this->input = $input;
$this->parser = new MimeDir($input, $options);
+
}
/**
@@ -55,20 +56,23 @@ class VCard implements SplitterInterface
*
* When the end is reached, null will be returned.
*
- * @return \Sabre\VObject\Component|null
+ * @return Sabre\VObject\Component|null
*/
- public function getNext()
- {
+ function getNext() {
+
try {
$object = $this->parser->parse();
if (!$object instanceof VObject\Component\VCard) {
throw new VObject\ParseException('The supplied input contained non-VCARD data.');
}
+
} catch (VObject\EofException $e) {
return;
}
return $object;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/StringUtil.php b/vendor/sabre/vobject/lib/StringUtil.php
index 2333d6ab9..b8615f2ba 100644
--- a/vendor/sabre/vobject/lib/StringUtil.php
+++ b/vendor/sabre/vobject/lib/StringUtil.php
@@ -9,8 +9,8 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class StringUtil
-{
+class StringUtil {
+
/**
* Returns true or false depending on if a string is valid UTF-8.
*
@@ -18,14 +18,15 @@ class StringUtil
*
* @return bool
*/
- public static function isUTF8($str)
- {
+ static function isUTF8($str) {
+
// Control characters
if (preg_match('%[\x00-\x08\x0B-\x0C\x0E\x0F]%', $str)) {
return false;
}
- return (bool) preg_match('%%u', $str);
+ return (bool)preg_match('%%u', $str);
+
}
/**
@@ -38,12 +39,12 @@ class StringUtil
*
* @return string
*/
- public static function convertToUTF8($str)
- {
+ static function convertToUTF8($str) {
+
$encoding = mb_detect_encoding($str, ['UTF-8', 'ISO-8859-1', 'WINDOWS-1252'], true);
switch ($encoding) {
- case 'ISO-8859-1':
+ case 'ISO-8859-1' :
$newStr = utf8_encode($str);
break;
/* Unreachable code. Not sure yet how we can improve this
@@ -52,11 +53,14 @@ class StringUtil
$newStr = iconv('cp1252', 'UTF-8', $str);
break;
*/
- default:
+ default :
$newStr = $str;
+
}
// Removing any control characters
- return preg_replace('%(?:[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F])%', '', $newStr);
+ return (preg_replace('%(?:[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F])%', '', $newStr));
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/TimeZoneUtil.php b/vendor/sabre/vobject/lib/TimeZoneUtil.php
index 5b1a775c2..925183e8d 100644
--- a/vendor/sabre/vobject/lib/TimeZoneUtil.php
+++ b/vendor/sabre/vobject/lib/TimeZoneUtil.php
@@ -12,30 +12,30 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class TimeZoneUtil
-{
- public static $map = null;
+class TimeZoneUtil {
+
+ static $map = null;
/**
* List of microsoft exchange timezone ids.
*
* Source: http://msdn.microsoft.com/en-us/library/aa563018(loband).aspx
*/
- public static $microsoftExchangeMap = [
- 0 => 'UTC',
+ static $microsoftExchangeMap = [
+ 0 => 'UTC',
31 => 'Africa/Casablanca',
// Insanely, id #2 is used for both Europe/Lisbon, and Europe/Sarajevo.
// I'm not even kidding.. We handle this special case in the
// getTimeZone method.
- 2 => 'Europe/Lisbon',
- 1 => 'Europe/London',
- 4 => 'Europe/Berlin',
- 6 => 'Europe/Prague',
- 3 => 'Europe/Paris',
+ 2 => 'Europe/Lisbon',
+ 1 => 'Europe/London',
+ 4 => 'Europe/Berlin',
+ 6 => 'Europe/Prague',
+ 3 => 'Europe/Paris',
69 => 'Africa/Luanda', // This was a best guess
- 7 => 'Europe/Athens',
- 5 => 'Europe/Bucharest',
+ 7 => 'Europe/Athens',
+ 5 => 'Europe/Bucharest',
49 => 'Africa/Cairo',
50 => 'Africa/Harare',
59 => 'Europe/Helsinki',
@@ -117,13 +117,13 @@ class TimeZoneUtil
* Alternatively, if $failIfUncertain is set to true, it will throw an
* exception if we cannot accurately determine the timezone.
*
- * @param string $tzid
+ * @param string $tzid
* @param Sabre\VObject\Component $vcalendar
*
- * @return \DateTimeZone
+ * @return DateTimeZone
*/
- public static function getTimeZone($tzid, Component $vcalendar = null, $failIfUncertain = false)
- {
+ static function getTimeZone($tzid, Component $vcalendar = null, $failIfUncertain = false) {
+
// First we will just see if the tzid is a support timezone identifier.
//
// The only exception is if the timezone starts with (. This is to
@@ -135,7 +135,8 @@ class TimeZoneUtil
// Since PHP 5.5.10, the first bit will be used as the timezone and
// this method will return just GMT+01:00. This is wrong, because it
// doesn't take DST into account.
- if ('(' !== $tzid[0]) {
+ if ($tzid[0] !== '(') {
+
// PHP has a bug that logs PHP warnings even it shouldn't:
// https://bugs.php.net/bug.php?id=67881
//
@@ -154,6 +155,7 @@ class TimeZoneUtil
}
} catch (\Exception $e) {
}
+
}
self::loadTzMaps();
@@ -176,40 +178,46 @@ class TimeZoneUtil
// Maybe the author was hyper-lazy and just included an offset. We
// support it, but we aren't happy about it.
if (preg_match('/^GMT(\+|-)([0-9]{4})$/', $tzid, $matches)) {
+
// Note that the path in the source will never be taken from PHP 5.5.10
// onwards. PHP 5.5.10 supports the "GMT+0100" style of format, so it
// already gets returned early in this function. Once we drop support
// for versions under PHP 5.5.10, this bit can be taken out of the
// source.
// @codeCoverageIgnoreStart
- return new \DateTimeZone('Etc/GMT'.$matches[1].ltrim(substr($matches[2], 0, 2), '0'));
+ return new \DateTimeZone('Etc/GMT' . $matches[1] . ltrim(substr($matches[2], 0, 2), '0'));
// @codeCoverageIgnoreEnd
}
if ($vcalendar) {
+
// If that didn't work, we will scan VTIMEZONE objects
foreach ($vcalendar->select('VTIMEZONE') as $vtimezone) {
- if ((string) $vtimezone->TZID === $tzid) {
+
+ if ((string)$vtimezone->TZID === $tzid) {
+
// Some clients add 'X-LIC-LOCATION' with the olson name.
if (isset($vtimezone->{'X-LIC-LOCATION'})) {
- $lic = (string) $vtimezone->{'X-LIC-LOCATION'};
+
+ $lic = (string)$vtimezone->{'X-LIC-LOCATION'};
// Libical generators may specify strings like
// "SystemV/EST5EDT". For those we must remove the
// SystemV part.
- if ('SystemV/' === substr($lic, 0, 8)) {
+ if (substr($lic, 0, 8) === 'SystemV/') {
$lic = substr($lic, 8);
}
return self::getTimeZone($lic, null, $failIfUncertain);
+
}
// Microsoft may add a magic number, which we also have an
// answer for.
if (isset($vtimezone->{'X-MICROSOFT-CDO-TZID'})) {
- $cdoId = (int) $vtimezone->{'X-MICROSOFT-CDO-TZID'}->getValue();
+ $cdoId = (int)$vtimezone->{'X-MICROSOFT-CDO-TZID'}->getValue();
// 2 can mean both Europe/Lisbon and Europe/Sarajevo.
- if (2 === $cdoId && false !== strpos((string) $vtimezone->TZID, 'Sarajevo')) {
+ if ($cdoId === 2 && strpos((string)$vtimezone->TZID, 'Sarajevo') !== false) {
return new \DateTimeZone('Europe/Sarajevo');
}
@@ -217,34 +225,37 @@ class TimeZoneUtil
return new \DateTimeZone(self::$microsoftExchangeMap[$cdoId]);
}
}
+
}
+
}
+
}
if ($failIfUncertain) {
- throw new \InvalidArgumentException('We were unable to determine the correct PHP timezone for tzid: '.$tzid);
+ throw new \InvalidArgumentException('We were unable to determine the correct PHP timezone for tzid: ' . $tzid);
}
// If we got all the way here, we default to UTC.
return new \DateTimeZone(date_default_timezone_get());
+
}
/**
* This method will load in all the tz mapping information, if it's not yet
* done.
*/
- public static function loadTzMaps()
- {
- if (!is_null(self::$map)) {
- return;
- }
+ static function loadTzMaps() {
+
+ if (!is_null(self::$map)) return;
self::$map = array_merge(
- include __DIR__.'/timezonedata/windowszones.php',
- include __DIR__.'/timezonedata/lotuszones.php',
- include __DIR__.'/timezonedata/exchangezones.php',
- include __DIR__.'/timezonedata/php-workaround.php'
+ include __DIR__ . '/timezonedata/windowszones.php',
+ include __DIR__ . '/timezonedata/lotuszones.php',
+ include __DIR__ . '/timezonedata/exchangezones.php',
+ include __DIR__ . '/timezonedata/php-workaround.php'
);
+
}
/**
@@ -258,8 +269,8 @@ class TimeZoneUtil
*
* @return array
*/
- public static function getIdentifiersBC()
- {
- return include __DIR__.'/timezonedata/php-bc.php';
+ static function getIdentifiersBC() {
+ return include __DIR__ . '/timezonedata/php-bc.php';
}
+
}
diff --git a/vendor/sabre/vobject/lib/UUIDUtil.php b/vendor/sabre/vobject/lib/UUIDUtil.php
index 066af624c..24ebe3cf8 100644
--- a/vendor/sabre/vobject/lib/UUIDUtil.php
+++ b/vendor/sabre/vobject/lib/UUIDUtil.php
@@ -13,8 +13,8 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class UUIDUtil
-{
+class UUIDUtil {
+
/**
* Returns a pseudo-random v4 UUID.
*
@@ -24,9 +24,10 @@ class UUIDUtil
*
* @return string
*/
- public static function getUUID()
- {
+ static function getUUID() {
+
return sprintf(
+
'%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
// 32 bits for "time_low"
@@ -56,11 +57,13 @@ class UUIDUtil
*
* @return bool
*/
- public static function validateUUID($uuid)
- {
- return 0 !== preg_match(
+ static function validateUUID($uuid) {
+
+ return preg_match(
'/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i',
$uuid
- );
+ ) !== 0;
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/VCardConverter.php b/vendor/sabre/vobject/lib/VCardConverter.php
index 156b83b4e..1f6d016f1 100644
--- a/vendor/sabre/vobject/lib/VCardConverter.php
+++ b/vendor/sabre/vobject/lib/VCardConverter.php
@@ -9,8 +9,8 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class VCardConverter
-{
+class VCardConverter {
+
/**
* Converts a vCard object to a new version.
*
@@ -27,10 +27,10 @@ class VCardConverter
* If input and output version are identical, a clone is returned.
*
* @param Component\VCard $input
- * @param int $targetVersion
+ * @param int $targetVersion
*/
- public function convert(Component\VCard $input, $targetVersion)
- {
+ function convert(Component\VCard $input, $targetVersion) {
+
$inputVersion = $input->getDocumentType();
if ($inputVersion === $targetVersion) {
return clone $input;
@@ -43,7 +43,7 @@ class VCardConverter
throw new \InvalidArgumentException('You can only use vCard 3.0 or 4.0 for the target version');
}
- $newVersion = Document::VCARD40 === $targetVersion ? '4.0' : '3.0';
+ $newVersion = $targetVersion === Document::VCARD40 ? '4.0' : '3.0';
$output = new Component\VCard([
'VERSION' => $newVersion,
@@ -53,10 +53,13 @@ class VCardConverter
unset($output->UID);
foreach ($input->children() as $property) {
+
$this->convertProperty($input, $output, $property, $targetVersion);
+
}
return $output;
+
}
/**
@@ -64,11 +67,13 @@ class VCardConverter
*
* @param Component\VCard $input
* @param Component\VCard $output
- * @param Property $property
- * @param int $targetVersion
+ * @param Property $property
+ * @param int $targetVersion
+ *
+ * @return void
*/
- protected function convertProperty(Component\VCard $input, Component\VCard $output, Property $property, $targetVersion)
- {
+ protected function convertProperty(Component\VCard $input, Component\VCard $output, Property $property, $targetVersion) {
+
// Skipping these, those are automatically added.
if (in_array($property->name, ['VERSION', 'PRODID'])) {
return;
@@ -90,10 +95,15 @@ class VCardConverter
$valueType
);
- if (Document::VCARD30 === $targetVersion) {
+
+ if ($targetVersion === Document::VCARD30) {
+
if ($property instanceof Property\Uri && in_array($property->name, ['PHOTO', 'LOGO', 'SOUND'])) {
+
$newProperty = $this->convertUriToBinary($output, $newProperty);
+
} elseif ($property instanceof Property\VCard\DateAndOrTime) {
+
// In vCard 4, the birth year may be optional. This is not the
// case for vCard 3. Apple has a workaround for this that
// allows applications that support Apple's extension still
@@ -103,12 +113,12 @@ class VCardConverter
// uses.
$parts = DateTimeParser::parseVCardDateTime($property->getValue());
if (is_null($parts['year'])) {
- $newValue = '1604-'.$parts['month'].'-'.$parts['date'];
+ $newValue = '1604-' . $parts['month'] . '-' . $parts['date'];
$newProperty->setValue($newValue);
$newProperty['X-APPLE-OMIT-YEAR'] = '1604';
}
- if ('ANNIVERSARY' == $newProperty->name) {
+ if ($newProperty->name == 'ANNIVERSARY') {
// Microsoft non-standard anniversary
$newProperty->name = 'X-ANNIVERSARY';
@@ -117,64 +127,74 @@ class VCardConverter
// group, so we first need to find a groupname that doesn't
// exist yet.
$x = 1;
- while ($output->select('ITEM'.$x.'.')) {
- ++$x;
+ while ($output->select('ITEM' . $x . '.')) {
+ $x++;
}
- $output->add('ITEM'.$x.'.X-ABDATE', $newProperty->getValue(), ['VALUE' => 'DATE-AND-OR-TIME']);
- $output->add('ITEM'.$x.'.X-ABLABEL', '_$!<Anniversary>!$_');
+ $output->add('ITEM' . $x . '.X-ABDATE', $newProperty->getValue(), ['VALUE' => 'DATE-AND-OR-TIME']);
+ $output->add('ITEM' . $x . '.X-ABLABEL', '_$!<Anniversary>!$_');
}
- } elseif ('KIND' === $property->name) {
+
+ } elseif ($property->name === 'KIND') {
+
switch (strtolower($property->getValue())) {
- case 'org':
+ case 'org' :
// vCard 3.0 does not have an equivalent to KIND:ORG,
// but apple has an extension that means the same
// thing.
$newProperty = $output->createProperty('X-ABSHOWAS', 'COMPANY');
break;
- case 'individual':
+ case 'individual' :
// Individual is implicit, so we skip it.
return;
- case 'group':
+ case 'group' :
// OS X addressbook property
$newProperty = $output->createProperty('X-ADDRESSBOOKSERVER-KIND', 'GROUP');
break;
}
+
+
}
- } elseif (Document::VCARD40 === $targetVersion) {
+
+ } elseif ($targetVersion === Document::VCARD40) {
+
// These properties were removed in vCard 4.0
if (in_array($property->name, ['NAME', 'MAILER', 'LABEL', 'CLASS'])) {
return;
}
if ($property instanceof Property\Binary) {
+
$newProperty = $this->convertBinaryToUri($output, $newProperty, $parameters);
+
} elseif ($property instanceof Property\VCard\DateAndOrTime && isset($parameters['X-APPLE-OMIT-YEAR'])) {
+
// If a property such as BDAY contained 'X-APPLE-OMIT-YEAR',
// then we're stripping the year from the vcard 4 value.
$parts = DateTimeParser::parseVCardDateTime($property->getValue());
if ($parts['year'] === $property['X-APPLE-OMIT-YEAR']->getValue()) {
- $newValue = '--'.$parts['month'].'-'.$parts['date'];
+ $newValue = '--' . $parts['month'] . '-' . $parts['date'];
$newProperty->setValue($newValue);
}
// Regardless if the year matched or not, we do need to strip
// X-APPLE-OMIT-YEAR.
unset($parameters['X-APPLE-OMIT-YEAR']);
+
}
switch ($property->name) {
- case 'X-ABSHOWAS':
- if ('COMPANY' === strtoupper($property->getValue())) {
+ case 'X-ABSHOWAS' :
+ if (strtoupper($property->getValue()) === 'COMPANY') {
$newProperty = $output->createProperty('KIND', 'ORG');
}
break;
- case 'X-ADDRESSBOOKSERVER-KIND':
- if ('GROUP' === strtoupper($property->getValue())) {
+ case 'X-ADDRESSBOOKSERVER-KIND' :
+ if (strtoupper($property->getValue()) === 'GROUP') {
$newProperty = $output->createProperty('KIND', 'GROUP');
}
break;
- case 'X-ANNIVERSARY':
+ case 'X-ANNIVERSARY' :
$newProperty->name = 'ANNIVERSARY';
// If we already have an anniversary property with the same
// value, ignore.
@@ -184,15 +204,15 @@ class VCardConverter
}
}
break;
- case 'X-ABDATE':
+ case 'X-ABDATE' :
// Find out what the label was, if it exists.
if (!$property->group) {
break;
}
- $label = $input->{$property->group.'.X-ABLABEL'};
+ $label = $input->{$property->group . '.X-ABLABEL'};
// We only support converting anniversaries.
- if (!$label || '_$!<Anniversary>!$_' !== $label->getValue()) {
+ if (!$label || $label->getValue() !== '_$!<Anniversary>!$_') {
break;
}
@@ -206,20 +226,22 @@ class VCardConverter
$newProperty->name = 'ANNIVERSARY';
break;
// Apple's per-property label system.
- case 'X-ABLABEL':
- if ('_$!<Anniversary>!$_' === $newProperty->getValue()) {
+ case 'X-ABLABEL' :
+ if ($newProperty->getValue() === '_$!<Anniversary>!$_') {
// We can safely remove these, as they are converted to
// ANNIVERSARY properties.
return;
}
break;
+
}
+
}
// set property group
$newProperty->group = $property->group;
- if (Document::VCARD40 === $targetVersion) {
+ if ($targetVersion === Document::VCARD40) {
$this->convertParameters40($newProperty, $parameters);
} else {
$this->convertParameters30($newProperty, $parameters);
@@ -235,6 +257,8 @@ class VCardConverter
}
$output->add($newProperty);
+
+
}
/**
@@ -243,14 +267,14 @@ class VCardConverter
* vCard 4.0 no longer supports BINARY properties.
*
* @param Component\VCard $output
- * @param Property\Uri $property the input property
- * @param $parameters list of parameters that will eventually be added to
- * the new property
+ * @param Property\Uri $property The input property.
+ * @param $parameters List of parameters that will eventually be added to
+ * the new property.
*
* @return Property\Uri
*/
- protected function convertBinaryToUri(Component\VCard $output, Property\Binary $newProperty, array &$parameters)
- {
+ protected function convertBinaryToUri(Component\VCard $output, Property\Binary $newProperty, array &$parameters) {
+
$value = $newProperty->getValue();
$newProperty = $output->createProperty(
$newProperty->name,
@@ -263,13 +287,14 @@ class VCardConverter
// See if we can find a better mimetype.
if (isset($parameters['TYPE'])) {
+
$newTypes = [];
foreach ($parameters['TYPE']->getParts() as $typePart) {
if (in_array(
strtoupper($typePart),
['JPEG', 'PNG', 'GIF']
)) {
- $mimeType = 'image/'.strtolower($typePart);
+ $mimeType = 'image/' . strtolower($typePart);
} else {
$newTypes[] = $typePart;
}
@@ -282,11 +307,12 @@ class VCardConverter
} else {
unset($parameters['TYPE']);
}
- }
- $newProperty->setValue('data:'.$mimeType.';base64,'.base64_encode($value));
+ }
+ $newProperty->setValue('data:' . $mimeType . ';base64,' . base64_encode($value));
return $newProperty;
+
}
/**
@@ -297,16 +323,16 @@ class VCardConverter
* possible, to improve compatibility.
*
* @param Component\VCard $output
- * @param Property\Uri $property the input property
+ * @param Property\Uri $property The input property.
*
* @return Property\Binary|null
*/
- protected function convertUriToBinary(Component\VCard $output, Property\Uri $newProperty)
- {
+ protected function convertUriToBinary(Component\VCard $output, Property\Uri $newProperty) {
+
$value = $newProperty->getValue();
// Only converting data: uris
- if ('data:' !== substr($value, 0, 5)) {
+ if (substr($value, 0, 5) !== 'data:') {
return $newProperty;
}
@@ -328,79 +354,92 @@ class VCardConverter
$newProperty['ENCODING'] = 'b';
switch ($mimeType) {
- case 'image/jpeg':
+
+ case 'image/jpeg' :
$newProperty['TYPE'] = 'JPEG';
break;
- case 'image/png':
+ case 'image/png' :
$newProperty['TYPE'] = 'PNG';
break;
- case 'image/gif':
+ case 'image/gif' :
$newProperty['TYPE'] = 'GIF';
break;
+
}
+
return $newProperty;
+
}
/**
* Adds parameters to a new property for vCard 4.0.
*
* @param Property $newProperty
- * @param array $parameters
+ * @param array $parameters
+ *
+ * @return void
*/
- protected function convertParameters40(Property $newProperty, array $parameters)
- {
+ protected function convertParameters40(Property $newProperty, array $parameters) {
+
// Adding all parameters.
foreach ($parameters as $param) {
+
// vCard 2.1 allowed parameters with no name
- if ($param->noName) {
- $param->noName = false;
- }
+ if ($param->noName) $param->noName = false;
switch ($param->name) {
+
// We need to see if there's any TYPE=PREF, because in vCard 4
// that's now PREF=1.
- case 'TYPE':
+ case 'TYPE' :
foreach ($param->getParts() as $paramPart) {
- if ('PREF' === strtoupper($paramPart)) {
+
+ if (strtoupper($paramPart) === 'PREF') {
$newProperty->add('PREF', '1');
} else {
$newProperty->add($param->name, $paramPart);
}
+
}
break;
// These no longer exist in vCard 4
- case 'ENCODING':
- case 'CHARSET':
+ case 'ENCODING' :
+ case 'CHARSET' :
break;
- default:
+ default :
$newProperty->add($param->name, $param->getParts());
break;
+
}
+
}
+
}
/**
* Adds parameters to a new property for vCard 3.0.
*
* @param Property $newProperty
- * @param array $parameters
+ * @param array $parameters
+ *
+ * @return void
*/
- protected function convertParameters30(Property $newProperty, array $parameters)
- {
+ protected function convertParameters30(Property $newProperty, array $parameters) {
+
// Adding all parameters.
foreach ($parameters as $param) {
+
// vCard 2.1 allowed parameters with no name
- if ($param->noName) {
- $param->noName = false;
- }
+ if ($param->noName) $param->noName = false;
switch ($param->name) {
- case 'ENCODING':
+
+ case 'ENCODING' :
// This value only existed in vCard 2.1, and should be
// removed for anything else.
- if ('QUOTED-PRINTABLE' !== strtoupper($param->getValue())) {
+ if (strtoupper($param->getValue()) !== 'QUOTED-PRINTABLE') {
$newProperty->add($param->name, $param->getParts());
}
break;
@@ -410,16 +449,19 @@ class VCardConverter
*
* Any other PREF numbers we'll drop.
*/
- case 'PREF':
- if ('1' == $param->getValue()) {
+ case 'PREF' :
+ if ($param->getValue() == '1') {
$newProperty->add('TYPE', 'PREF');
}
break;
- default:
+ default :
$newProperty->add($param->name, $param->getParts());
break;
+
}
+
}
+
}
}
diff --git a/vendor/sabre/vobject/lib/Version.php b/vendor/sabre/vobject/lib/Version.php
index 257e66a79..074b06c4b 100644
--- a/vendor/sabre/vobject/lib/Version.php
+++ b/vendor/sabre/vobject/lib/Version.php
@@ -9,10 +9,11 @@ namespace Sabre\VObject;
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
-class Version
-{
+class Version {
+
/**
* Full version number.
*/
- const VERSION = '4.2.0';
+ const VERSION = '4.1.6';
+
}
diff --git a/vendor/sabre/vobject/lib/Writer.php b/vendor/sabre/vobject/lib/Writer.php
index c70a6ae4d..f8a58758d 100644
--- a/vendor/sabre/vobject/lib/Writer.php
+++ b/vendor/sabre/vobject/lib/Writer.php
@@ -14,8 +14,8 @@ use Sabre\Xml;
* @author Ivan Enderlin
* @license http://sabre.io/license/ Modified BSD License
*/
-class Writer
-{
+class Writer {
+
/**
* Serializes a vCard or iCalendar object.
*
@@ -23,22 +23,24 @@ class Writer
*
* @return string
*/
- public static function write(Component $component)
- {
+ static function write(Component $component) {
+
return $component->serialize();
+
}
/**
* Serializes a jCal or jCard object.
*
* @param Component $component
- * @param int $options
+ * @param int $options
*
* @return string
*/
- public static function writeJson(Component $component, $options = 0)
- {
+ static function writeJson(Component $component, $options = 0) {
+
return json_encode($component, $options);
+
}
/**
@@ -48,8 +50,8 @@ class Writer
*
* @return string
*/
- public static function writeXml(Component $component)
- {
+ static function writeXml(Component $component) {
+
$writer = new Xml\Writer();
$writer->openMemory();
$writer->setIndent(true);
@@ -57,11 +59,15 @@ class Writer
$writer->startDocument('1.0', 'utf-8');
if ($component instanceof Component\VCalendar) {
+
$writer->startElement('icalendar');
- $writer->writeAttribute('xmlns', Parser\XML::XCAL_NAMESPACE);
+ $writer->writeAttribute('xmlns', Parser\Xml::XCAL_NAMESPACE);
+
} else {
+
$writer->startElement('vcards');
- $writer->writeAttribute('xmlns', Parser\XML::XCARD_NAMESPACE);
+ $writer->writeAttribute('xmlns', Parser\Xml::XCARD_NAMESPACE);
+
}
$component->xmlSerialize($writer);
@@ -69,5 +75,7 @@ class Writer
$writer->endElement();
return $writer->outputMemory();
+
}
+
}
diff --git a/vendor/sabre/vobject/lib/timezonedata/exchangezones.php b/vendor/sabre/vobject/lib/timezonedata/exchangezones.php
index 89bddc27c..edba5b473 100644
--- a/vendor/sabre/vobject/lib/timezonedata/exchangezones.php
+++ b/vendor/sabre/vobject/lib/timezonedata/exchangezones.php
@@ -12,83 +12,83 @@
* @license http://sabre.io/license/ Modified BSD License
*/
return [
- 'Universal Coordinated Time' => 'UTC',
- 'Casablanca, Monrovia' => 'Africa/Casablanca',
- 'Greenwich Mean Time: Dublin, Edinburgh, Lisbon, London' => 'Europe/Lisbon',
- 'Greenwich Mean Time; Dublin, Edinburgh, London' => 'Europe/London',
- 'Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna' => 'Europe/Berlin',
- 'Belgrade, Pozsony, Budapest, Ljubljana, Prague' => 'Europe/Prague',
- 'Brussels, Copenhagen, Madrid, Paris' => 'Europe/Paris',
- 'Paris, Madrid, Brussels, Copenhagen' => 'Europe/Paris',
- 'Prague, Central Europe' => 'Europe/Prague',
- 'Sarajevo, Skopje, Sofija, Vilnius, Warsaw, Zagreb' => 'Europe/Sarajevo',
- 'West Central Africa' => 'Africa/Luanda', // This was a best guess
- 'Athens, Istanbul, Minsk' => 'Europe/Athens',
- 'Bucharest' => 'Europe/Bucharest',
- 'Cairo' => 'Africa/Cairo',
- 'Harare, Pretoria' => 'Africa/Harare',
- 'Helsinki, Riga, Tallinn' => 'Europe/Helsinki',
- 'Israel, Jerusalem Standard Time' => 'Asia/Jerusalem',
- 'Baghdad' => 'Asia/Baghdad',
- 'Arab, Kuwait, Riyadh' => 'Asia/Kuwait',
- 'Moscow, St. Petersburg, Volgograd' => 'Europe/Moscow',
- 'East Africa, Nairobi' => 'Africa/Nairobi',
- 'Tehran' => 'Asia/Tehran',
- 'Abu Dhabi, Muscat' => 'Asia/Muscat', // Best guess
- 'Baku, Tbilisi, Yerevan' => 'Asia/Baku',
- 'Kabul' => 'Asia/Kabul',
- 'Ekaterinburg' => 'Asia/Yekaterinburg',
- 'Islamabad, Karachi, Tashkent' => 'Asia/Karachi',
+ 'Universal Coordinated Time' => 'UTC',
+ 'Casablanca, Monrovia' => 'Africa/Casablanca',
+ 'Greenwich Mean Time: Dublin, Edinburgh, Lisbon, London' => 'Europe/Lisbon',
+ 'Greenwich Mean Time; Dublin, Edinburgh, London' => 'Europe/London',
+ 'Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna' => 'Europe/Berlin',
+ 'Belgrade, Pozsony, Budapest, Ljubljana, Prague' => 'Europe/Prague',
+ 'Brussels, Copenhagen, Madrid, Paris' => 'Europe/Paris',
+ 'Paris, Madrid, Brussels, Copenhagen' => 'Europe/Paris',
+ 'Prague, Central Europe' => 'Europe/Prague',
+ 'Sarajevo, Skopje, Sofija, Vilnius, Warsaw, Zagreb' => 'Europe/Sarajevo',
+ 'West Central Africa' => 'Africa/Luanda', // This was a best guess
+ 'Athens, Istanbul, Minsk' => 'Europe/Athens',
+ 'Bucharest' => 'Europe/Bucharest',
+ 'Cairo' => 'Africa/Cairo',
+ 'Harare, Pretoria' => 'Africa/Harare',
+ 'Helsinki, Riga, Tallinn' => 'Europe/Helsinki',
+ 'Israel, Jerusalem Standard Time' => 'Asia/Jerusalem',
+ 'Baghdad' => 'Asia/Baghdad',
+ 'Arab, Kuwait, Riyadh' => 'Asia/Kuwait',
+ 'Moscow, St. Petersburg, Volgograd' => 'Europe/Moscow',
+ 'East Africa, Nairobi' => 'Africa/Nairobi',
+ 'Tehran' => 'Asia/Tehran',
+ 'Abu Dhabi, Muscat' => 'Asia/Muscat', // Best guess
+ 'Baku, Tbilisi, Yerevan' => 'Asia/Baku',
+ 'Kabul' => 'Asia/Kabul',
+ 'Ekaterinburg' => 'Asia/Yekaterinburg',
+ 'Islamabad, Karachi, Tashkent' => 'Asia/Karachi',
'Kolkata, Chennai, Mumbai, New Delhi, India Standard Time' => 'Asia/Calcutta',
- 'Kathmandu, Nepal' => 'Asia/Kathmandu',
- 'Almaty, Novosibirsk, North Central Asia' => 'Asia/Almaty',
- 'Astana, Dhaka' => 'Asia/Dhaka',
- 'Sri Jayawardenepura, Sri Lanka' => 'Asia/Colombo',
- 'Rangoon' => 'Asia/Rangoon',
- 'Bangkok, Hanoi, Jakarta' => 'Asia/Bangkok',
- 'Krasnoyarsk' => 'Asia/Krasnoyarsk',
- 'Beijing, Chongqing, Hong Kong SAR, Urumqi' => 'Asia/Shanghai',
- 'Irkutsk, Ulaan Bataar' => 'Asia/Irkutsk',
- 'Kuala Lumpur, Singapore' => 'Asia/Singapore',
- 'Perth, Western Australia' => 'Australia/Perth',
- 'Taipei' => 'Asia/Taipei',
- 'Osaka, Sapporo, Tokyo' => 'Asia/Tokyo',
- 'Seoul, Korea Standard time' => 'Asia/Seoul',
- 'Yakutsk' => 'Asia/Yakutsk',
- 'Adelaide, Central Australia' => 'Australia/Adelaide',
- 'Darwin' => 'Australia/Darwin',
- 'Brisbane, East Australia' => 'Australia/Brisbane',
- 'Canberra, Melbourne, Sydney, Hobart (year 2000 only)' => 'Australia/Sydney',
- 'Guam, Port Moresby' => 'Pacific/Guam',
- 'Hobart, Tasmania' => 'Australia/Hobart',
- 'Vladivostok' => 'Asia/Vladivostok',
- 'Magadan, Solomon Is., New Caledonia' => 'Asia/Magadan',
- 'Auckland, Wellington' => 'Pacific/Auckland',
- 'Fiji Islands, Kamchatka, Marshall Is.' => 'Pacific/Fiji',
- 'Nuku\'alofa, Tonga' => 'Pacific/Tongatapu',
- 'Azores' => 'Atlantic/Azores',
- 'Cape Verde Is.' => 'Atlantic/Cape_Verde',
- 'Mid-Atlantic' => 'America/Noronha',
- 'Brasilia' => 'America/Sao_Paulo', // Best guess
- 'Buenos Aires' => 'America/Argentina/Buenos_Aires',
- 'Greenland' => 'America/Godthab',
- 'Newfoundland' => 'America/St_Johns',
- 'Atlantic Time (Canada)' => 'America/Halifax',
- 'Caracas, La Paz' => 'America/Caracas',
- 'Santiago' => 'America/Santiago',
- 'Bogota, Lima, Quito' => 'America/Bogota',
- 'Eastern Time (US & Canada)' => 'America/New_York',
- 'Indiana (East)' => 'America/Indiana/Indianapolis',
- 'Central America' => 'America/Guatemala',
- 'Central Time (US & Canada)' => 'America/Chicago',
- 'Mexico City, Tegucigalpa' => 'America/Mexico_City',
- 'Saskatchewan' => 'America/Edmonton',
- 'Arizona' => 'America/Phoenix',
- 'Mountain Time (US & Canada)' => 'America/Denver', // Best guess
- 'Pacific Time (US & Canada)' => 'America/Los_Angeles', // Best guess
- 'Pacific Time (US & Canada); Tijuana' => 'America/Los_Angeles', // Best guess
- 'Alaska' => 'America/Anchorage',
- 'Hawaii' => 'Pacific/Honolulu',
- 'Midway Island, Samoa' => 'Pacific/Midway',
- 'Eniwetok, Kwajalein, Dateline Time' => 'Pacific/Kwajalein',
+ 'Kathmandu, Nepal' => 'Asia/Kathmandu',
+ 'Almaty, Novosibirsk, North Central Asia' => 'Asia/Almaty',
+ 'Astana, Dhaka' => 'Asia/Dhaka',
+ 'Sri Jayawardenepura, Sri Lanka' => 'Asia/Colombo',
+ 'Rangoon' => 'Asia/Rangoon',
+ 'Bangkok, Hanoi, Jakarta' => 'Asia/Bangkok',
+ 'Krasnoyarsk' => 'Asia/Krasnoyarsk',
+ 'Beijing, Chongqing, Hong Kong SAR, Urumqi' => 'Asia/Shanghai',
+ 'Irkutsk, Ulaan Bataar' => 'Asia/Irkutsk',
+ 'Kuala Lumpur, Singapore' => 'Asia/Singapore',
+ 'Perth, Western Australia' => 'Australia/Perth',
+ 'Taipei' => 'Asia/Taipei',
+ 'Osaka, Sapporo, Tokyo' => 'Asia/Tokyo',
+ 'Seoul, Korea Standard time' => 'Asia/Seoul',
+ 'Yakutsk' => 'Asia/Yakutsk',
+ 'Adelaide, Central Australia' => 'Australia/Adelaide',
+ 'Darwin' => 'Australia/Darwin',
+ 'Brisbane, East Australia' => 'Australia/Brisbane',
+ 'Canberra, Melbourne, Sydney, Hobart (year 2000 only)' => 'Australia/Sydney',
+ 'Guam, Port Moresby' => 'Pacific/Guam',
+ 'Hobart, Tasmania' => 'Australia/Hobart',
+ 'Vladivostok' => 'Asia/Vladivostok',
+ 'Magadan, Solomon Is., New Caledonia' => 'Asia/Magadan',
+ 'Auckland, Wellington' => 'Pacific/Auckland',
+ 'Fiji Islands, Kamchatka, Marshall Is.' => 'Pacific/Fiji',
+ 'Nuku\'alofa, Tonga' => 'Pacific/Tongatapu',
+ 'Azores' => 'Atlantic/Azores',
+ 'Cape Verde Is.' => 'Atlantic/Cape_Verde',
+ 'Mid-Atlantic' => 'America/Noronha',
+ 'Brasilia' => 'America/Sao_Paulo', // Best guess
+ 'Buenos Aires' => 'America/Argentina/Buenos_Aires',
+ 'Greenland' => 'America/Godthab',
+ 'Newfoundland' => 'America/St_Johns',
+ 'Atlantic Time (Canada)' => 'America/Halifax',
+ 'Caracas, La Paz' => 'America/Caracas',
+ 'Santiago' => 'America/Santiago',
+ 'Bogota, Lima, Quito' => 'America/Bogota',
+ 'Eastern Time (US & Canada)' => 'America/New_York',
+ 'Indiana (East)' => 'America/Indiana/Indianapolis',
+ 'Central America' => 'America/Guatemala',
+ 'Central Time (US & Canada)' => 'America/Chicago',
+ 'Mexico City, Tegucigalpa' => 'America/Mexico_City',
+ 'Saskatchewan' => 'America/Edmonton',
+ 'Arizona' => 'America/Phoenix',
+ 'Mountain Time (US & Canada)' => 'America/Denver', // Best guess
+ 'Pacific Time (US & Canada)' => 'America/Los_Angeles', // Best guess
+ 'Pacific Time (US & Canada); Tijuana' => 'America/Los_Angeles', // Best guess
+ 'Alaska' => 'America/Anchorage',
+ 'Hawaii' => 'Pacific/Honolulu',
+ 'Midway Island, Samoa' => 'Pacific/Midway',
+ 'Eniwetok, Kwajalein, Dateline Time' => 'Pacific/Kwajalein',
];
diff --git a/vendor/sabre/vobject/lib/timezonedata/lotuszones.php b/vendor/sabre/vobject/lib/timezonedata/lotuszones.php
index 4b50808f9..79d555a92 100644
--- a/vendor/sabre/vobject/lib/timezonedata/lotuszones.php
+++ b/vendor/sabre/vobject/lib/timezonedata/lotuszones.php
@@ -8,94 +8,94 @@
* @license http://sabre.io/license/ Modified BSD License
*/
return [
- 'Dateline' => 'Etc/GMT-12',
- 'Samoa' => 'Pacific/Apia',
- 'Hawaiian' => 'Pacific/Honolulu',
- 'Alaskan' => 'America/Anchorage',
- 'Pacific' => 'America/Los_Angeles',
- 'Pacific Standard Time' => 'America/Los_Angeles',
+ 'Dateline' => 'Etc/GMT-12',
+ 'Samoa' => 'Pacific/Apia',
+ 'Hawaiian' => 'Pacific/Honolulu',
+ 'Alaskan' => 'America/Anchorage',
+ 'Pacific' => 'America/Los_Angeles',
+ 'Pacific Standard Time' => 'America/Los_Angeles',
'Mexico Standard Time 2' => 'America/Chihuahua',
- 'Mountain' => 'America/Denver',
+ 'Mountain' => 'America/Denver',
// 'Mountain Standard Time' => 'America/Chihuahua', // conflict with windows timezones.
- 'US Mountain' => 'America/Phoenix',
- 'Canada Central' => 'America/Edmonton',
+ 'US Mountain' => 'America/Phoenix',
+ 'Canada Central' => 'America/Edmonton',
'Central America' => 'America/Guatemala',
- 'Central' => 'America/Chicago',
+ 'Central' => 'America/Chicago',
// 'Central Standard Time' => 'America/Mexico_City', // conflict with windows timezones.
- 'Mexico' => 'America/Mexico_City',
- 'Eastern' => 'America/New_York',
- 'SA Pacific' => 'America/Bogota',
- 'US Eastern' => 'America/Indiana/Indianapolis',
- 'Venezuela' => 'America/Caracas',
- 'Atlantic' => 'America/Halifax',
+ 'Mexico' => 'America/Mexico_City',
+ 'Eastern' => 'America/New_York',
+ 'SA Pacific' => 'America/Bogota',
+ 'US Eastern' => 'America/Indiana/Indianapolis',
+ 'Venezuela' => 'America/Caracas',
+ 'Atlantic' => 'America/Halifax',
'Central Brazilian' => 'America/Manaus',
- 'Pacific SA' => 'America/Santiago',
- 'SA Western' => 'America/La_Paz',
- 'Newfoundland' => 'America/St_Johns',
- 'Argentina' => 'America/Argentina/Buenos_Aires',
- 'E. South America' => 'America/Belem',
- 'Greenland' => 'America/Godthab',
- 'Montevideo' => 'America/Montevideo',
- 'SA Eastern' => 'America/Belem',
+ 'Pacific SA' => 'America/Santiago',
+ 'SA Western' => 'America/La_Paz',
+ 'Newfoundland' => 'America/St_Johns',
+ 'Argentina' => 'America/Argentina/Buenos_Aires',
+ 'E. South America' => 'America/Belem',
+ 'Greenland' => 'America/Godthab',
+ 'Montevideo' => 'America/Montevideo',
+ 'SA Eastern' => 'America/Belem',
// 'Mid-Atlantic' => 'Etc/GMT-2', // conflict with windows timezones.
- 'Azores' => 'Atlantic/Azores',
- 'Cape Verde' => 'Atlantic/Cape_Verde',
- 'Greenwich' => 'Atlantic/Reykjavik', // No I'm serious.. Greenwich is not GMT.
- 'Morocco' => 'Africa/Casablanca',
- 'Central Europe' => 'Europe/Prague',
- 'Central European' => 'Europe/Sarajevo',
- 'Romance' => 'Europe/Paris',
+ 'Azores' => 'Atlantic/Azores',
+ 'Cape Verde' => 'Atlantic/Cape_Verde',
+ 'Greenwich' => 'Atlantic/Reykjavik', // No I'm serious.. Greenwich is not GMT.
+ 'Morocco' => 'Africa/Casablanca',
+ 'Central Europe' => 'Europe/Prague',
+ 'Central European' => 'Europe/Sarajevo',
+ 'Romance' => 'Europe/Paris',
'W. Central Africa' => 'Africa/Lagos', // Best guess
- 'W. Europe' => 'Europe/Amsterdam',
- 'E. Europe' => 'Europe/Minsk',
- 'Egypt' => 'Africa/Cairo',
- 'FLE' => 'Europe/Helsinki',
- 'GTB' => 'Europe/Athens',
- 'Israel' => 'Asia/Jerusalem',
- 'Jordan' => 'Asia/Amman',
- 'Middle East' => 'Asia/Beirut',
- 'Namibia' => 'Africa/Windhoek',
- 'South Africa' => 'Africa/Harare',
- 'Arab' => 'Asia/Kuwait',
- 'Arabic' => 'Asia/Baghdad',
- 'E. Africa' => 'Africa/Nairobi',
- 'Georgian' => 'Asia/Tbilisi',
- 'Russian' => 'Europe/Moscow',
- 'Iran' => 'Asia/Tehran',
- 'Arabian' => 'Asia/Muscat',
- 'Armenian' => 'Asia/Yerevan',
- 'Azerbijan' => 'Asia/Baku',
- 'Caucasus' => 'Asia/Yerevan',
- 'Mauritius' => 'Indian/Mauritius',
- 'Afghanistan' => 'Asia/Kabul',
- 'Ekaterinburg' => 'Asia/Yekaterinburg',
- 'Pakistan' => 'Asia/Karachi',
- 'West Asia' => 'Asia/Tashkent',
- 'India' => 'Asia/Calcutta',
- 'Sri Lanka' => 'Asia/Colombo',
- 'Nepal' => 'Asia/Kathmandu',
- 'Central Asia' => 'Asia/Dhaka',
- 'N. Central Asia' => 'Asia/Almaty',
- 'Myanmar' => 'Asia/Rangoon',
- 'North Asia' => 'Asia/Krasnoyarsk',
- 'SE Asia' => 'Asia/Bangkok',
- 'China' => 'Asia/Shanghai',
- 'North Asia East' => 'Asia/Irkutsk',
- 'Singapore' => 'Asia/Singapore',
- 'Taipei' => 'Asia/Taipei',
- 'W. Australia' => 'Australia/Perth',
- 'Korea' => 'Asia/Seoul',
- 'Tokyo' => 'Asia/Tokyo',
- 'Yakutsk' => 'Asia/Yakutsk',
- 'AUS Central' => 'Australia/Darwin',
- 'Cen. Australia' => 'Australia/Adelaide',
- 'AUS Eastern' => 'Australia/Sydney',
- 'E. Australia' => 'Australia/Brisbane',
- 'Tasmania' => 'Australia/Hobart',
- 'Vladivostok' => 'Asia/Vladivostok',
- 'West Pacific' => 'Pacific/Guam',
- 'Central Pacific' => 'Asia/Magadan',
- 'Fiji' => 'Pacific/Fiji',
- 'New Zealand' => 'Pacific/Auckland',
- 'Tonga' => 'Pacific/Tongatapu',
+ 'W. Europe' => 'Europe/Amsterdam',
+ 'E. Europe' => 'Europe/Minsk',
+ 'Egypt' => 'Africa/Cairo',
+ 'FLE' => 'Europe/Helsinki',
+ 'GTB' => 'Europe/Athens',
+ 'Israel' => 'Asia/Jerusalem',
+ 'Jordan' => 'Asia/Amman',
+ 'Middle East' => 'Asia/Beirut',
+ 'Namibia' => 'Africa/Windhoek',
+ 'South Africa' => 'Africa/Harare',
+ 'Arab' => 'Asia/Kuwait',
+ 'Arabic' => 'Asia/Baghdad',
+ 'E. Africa' => 'Africa/Nairobi',
+ 'Georgian' => 'Asia/Tbilisi',
+ 'Russian' => 'Europe/Moscow',
+ 'Iran' => 'Asia/Tehran',
+ 'Arabian' => 'Asia/Muscat',
+ 'Armenian' => 'Asia/Yerevan',
+ 'Azerbijan' => 'Asia/Baku',
+ 'Caucasus' => 'Asia/Yerevan',
+ 'Mauritius' => 'Indian/Mauritius',
+ 'Afghanistan' => 'Asia/Kabul',
+ 'Ekaterinburg' => 'Asia/Yekaterinburg',
+ 'Pakistan' => 'Asia/Karachi',
+ 'West Asia' => 'Asia/Tashkent',
+ 'India' => 'Asia/Calcutta',
+ 'Sri Lanka' => 'Asia/Colombo',
+ 'Nepal' => 'Asia/Kathmandu',
+ 'Central Asia' => 'Asia/Dhaka',
+ 'N. Central Asia' => 'Asia/Almaty',
+ 'Myanmar' => 'Asia/Rangoon',
+ 'North Asia' => 'Asia/Krasnoyarsk',
+ 'SE Asia' => 'Asia/Bangkok',
+ 'China' => 'Asia/Shanghai',
+ 'North Asia East' => 'Asia/Irkutsk',
+ 'Singapore' => 'Asia/Singapore',
+ 'Taipei' => 'Asia/Taipei',
+ 'W. Australia' => 'Australia/Perth',
+ 'Korea' => 'Asia/Seoul',
+ 'Tokyo' => 'Asia/Tokyo',
+ 'Yakutsk' => 'Asia/Yakutsk',
+ 'AUS Central' => 'Australia/Darwin',
+ 'Cen. Australia' => 'Australia/Adelaide',
+ 'AUS Eastern' => 'Australia/Sydney',
+ 'E. Australia' => 'Australia/Brisbane',
+ 'Tasmania' => 'Australia/Hobart',
+ 'Vladivostok' => 'Asia/Vladivostok',
+ 'West Pacific' => 'Pacific/Guam',
+ 'Central Pacific' => 'Asia/Magadan',
+ 'Fiji' => 'Pacific/Fiji',
+ 'New Zealand' => 'Pacific/Auckland',
+ 'Tonga' => 'Pacific/Tongatapu',
];
diff --git a/vendor/sabre/vobject/lib/timezonedata/php-workaround.php b/vendor/sabre/vobject/lib/timezonedata/php-workaround.php
index 13ff4b302..6b9cb6ef7 100644
--- a/vendor/sabre/vobject/lib/timezonedata/php-workaround.php
+++ b/vendor/sabre/vobject/lib/timezonedata/php-workaround.php
@@ -15,32 +15,32 @@
* @license http://sabre.io/license/ Modified BSD License
*/
return [
- 'CST6CDT' => 'America/Chicago',
- 'Cuba' => 'America/Havana',
- 'Egypt' => 'Africa/Cairo',
- 'Eire' => 'Europe/Dublin',
- 'EST5EDT' => 'America/New_York',
- 'Factory' => 'UTC',
- 'GB-Eire' => 'Europe/London',
- 'GMT0' => 'UTC',
+ 'CST6CDT' => 'America/Chicago',
+ 'Cuba' => 'America/Havana',
+ 'Egypt' => 'Africa/Cairo',
+ 'Eire' => 'Europe/Dublin',
+ 'EST5EDT' => 'America/New_York',
+ 'Factory' => 'UTC',
+ 'GB-Eire' => 'Europe/London',
+ 'GMT0' => 'UTC',
'Greenwich' => 'UTC',
- 'Hongkong' => 'Asia/Hong_Kong',
- 'Iceland' => 'Atlantic/Reykjavik',
- 'Iran' => 'Asia/Tehran',
- 'Israel' => 'Asia/Jerusalem',
- 'Jamaica' => 'America/Jamaica',
- 'Japan' => 'Asia/Tokyo',
+ 'Hongkong' => 'Asia/Hong_Kong',
+ 'Iceland' => 'Atlantic/Reykjavik',
+ 'Iran' => 'Asia/Tehran',
+ 'Israel' => 'Asia/Jerusalem',
+ 'Jamaica' => 'America/Jamaica',
+ 'Japan' => 'Asia/Tokyo',
'Kwajalein' => 'Pacific/Kwajalein',
- 'Libya' => 'Africa/Tripoli',
- 'MST7MDT' => 'America/Denver',
- 'Navajo' => 'America/Denver',
- 'NZ-CHAT' => 'Pacific/Chatham',
- 'Poland' => 'Europe/Warsaw',
- 'Portugal' => 'Europe/Lisbon',
- 'PST8PDT' => 'America/Los_Angeles',
+ 'Libya' => 'Africa/Tripoli',
+ 'MST7MDT' => 'America/Denver',
+ 'Navajo' => 'America/Denver',
+ 'NZ-CHAT' => 'Pacific/Chatham',
+ 'Poland' => 'Europe/Warsaw',
+ 'Portugal' => 'Europe/Lisbon',
+ 'PST8PDT' => 'America/Los_Angeles',
'Singapore' => 'Asia/Singapore',
- 'Turkey' => 'Europe/Istanbul',
+ 'Turkey' => 'Europe/Istanbul',
'Universal' => 'UTC',
- 'W-SU' => 'Europe/Moscow',
- 'Zulu' => 'UTC',
+ 'W-SU' => 'Europe/Moscow',
+ 'Zulu' => 'UTC',
];
diff --git a/vendor/sabre/vobject/lib/timezonedata/windowszones.php b/vendor/sabre/vobject/lib/timezonedata/windowszones.php
index af3904b12..29f3a6cb8 100644
--- a/vendor/sabre/vobject/lib/timezonedata/windowszones.php
+++ b/vendor/sabre/vobject/lib/timezonedata/windowszones.php
@@ -1,7 +1,7 @@
<?php
/**
- * Automatically generated timezone file.
+ * Automatically generated timezone file
*
* Last update: 2016-08-24T17:35:38-04:00
* Source: http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml
@@ -11,133 +11,133 @@
*/
return [
- 'AUS Central Standard Time' => 'Australia/Darwin',
- 'AUS Eastern Standard Time' => 'Australia/Sydney',
- 'Afghanistan Standard Time' => 'Asia/Kabul',
- 'Alaskan Standard Time' => 'America/Anchorage',
- 'Aleutian Standard Time' => 'America/Adak',
- 'Altai Standard Time' => 'Asia/Barnaul',
- 'Arab Standard Time' => 'Asia/Riyadh',
- 'Arabian Standard Time' => 'Asia/Dubai',
- 'Arabic Standard Time' => 'Asia/Baghdad',
- 'Argentina Standard Time' => 'America/Buenos_Aires',
- 'Astrakhan Standard Time' => 'Europe/Astrakhan',
- 'Atlantic Standard Time' => 'America/Halifax',
- 'Aus Central W. Standard Time' => 'Australia/Eucla',
- 'Azerbaijan Standard Time' => 'Asia/Baku',
- 'Azores Standard Time' => 'Atlantic/Azores',
- 'Bahia Standard Time' => 'America/Bahia',
- 'Bangladesh Standard Time' => 'Asia/Dhaka',
- 'Belarus Standard Time' => 'Europe/Minsk',
- 'Bougainville Standard Time' => 'Pacific/Bougainville',
- 'Canada Central Standard Time' => 'America/Regina',
- 'Cape Verde Standard Time' => 'Atlantic/Cape_Verde',
- 'Caucasus Standard Time' => 'Asia/Yerevan',
- 'Cen. Australia Standard Time' => 'Australia/Adelaide',
- 'Central America Standard Time' => 'America/Guatemala',
- 'Central Asia Standard Time' => 'Asia/Almaty',
+ 'AUS Central Standard Time' => 'Australia/Darwin',
+ 'AUS Eastern Standard Time' => 'Australia/Sydney',
+ 'Afghanistan Standard Time' => 'Asia/Kabul',
+ 'Alaskan Standard Time' => 'America/Anchorage',
+ 'Aleutian Standard Time' => 'America/Adak',
+ 'Altai Standard Time' => 'Asia/Barnaul',
+ 'Arab Standard Time' => 'Asia/Riyadh',
+ 'Arabian Standard Time' => 'Asia/Dubai',
+ 'Arabic Standard Time' => 'Asia/Baghdad',
+ 'Argentina Standard Time' => 'America/Buenos_Aires',
+ 'Astrakhan Standard Time' => 'Europe/Astrakhan',
+ 'Atlantic Standard Time' => 'America/Halifax',
+ 'Aus Central W. Standard Time' => 'Australia/Eucla',
+ 'Azerbaijan Standard Time' => 'Asia/Baku',
+ 'Azores Standard Time' => 'Atlantic/Azores',
+ 'Bahia Standard Time' => 'America/Bahia',
+ 'Bangladesh Standard Time' => 'Asia/Dhaka',
+ 'Belarus Standard Time' => 'Europe/Minsk',
+ 'Bougainville Standard Time' => 'Pacific/Bougainville',
+ 'Canada Central Standard Time' => 'America/Regina',
+ 'Cape Verde Standard Time' => 'Atlantic/Cape_Verde',
+ 'Caucasus Standard Time' => 'Asia/Yerevan',
+ 'Cen. Australia Standard Time' => 'Australia/Adelaide',
+ 'Central America Standard Time' => 'America/Guatemala',
+ 'Central Asia Standard Time' => 'Asia/Almaty',
'Central Brazilian Standard Time' => 'America/Cuiaba',
- 'Central Europe Standard Time' => 'Europe/Budapest',
- 'Central European Standard Time' => 'Europe/Warsaw',
- 'Central Pacific Standard Time' => 'Pacific/Guadalcanal',
- 'Central Standard Time' => 'America/Chicago',
- 'Central Standard Time (Mexico)' => 'America/Mexico_City',
- 'Chatham Islands Standard Time' => 'Pacific/Chatham',
- 'China Standard Time' => 'Asia/Shanghai',
- 'Cuba Standard Time' => 'America/Havana',
- 'Dateline Standard Time' => 'Etc/GMT+12',
- 'E. Africa Standard Time' => 'Africa/Nairobi',
- 'E. Australia Standard Time' => 'Australia/Brisbane',
- 'E. Europe Standard Time' => 'Europe/Chisinau',
- 'E. South America Standard Time' => 'America/Sao_Paulo',
- 'Easter Island Standard Time' => 'Pacific/Easter',
- 'Eastern Standard Time' => 'America/New_York',
- 'Eastern Standard Time (Mexico)' => 'America/Cancun',
- 'Egypt Standard Time' => 'Africa/Cairo',
- 'Ekaterinburg Standard Time' => 'Asia/Yekaterinburg',
- 'FLE Standard Time' => 'Europe/Kiev',
- 'Fiji Standard Time' => 'Pacific/Fiji',
- 'GMT Standard Time' => 'Europe/London',
- 'GTB Standard Time' => 'Europe/Bucharest',
- 'Georgian Standard Time' => 'Asia/Tbilisi',
- 'Greenland Standard Time' => 'America/Godthab',
- 'Greenwich Standard Time' => 'Atlantic/Reykjavik',
- 'Haiti Standard Time' => 'America/Port-au-Prince',
- 'Hawaiian Standard Time' => 'Pacific/Honolulu',
- 'India Standard Time' => 'Asia/Calcutta',
- 'Iran Standard Time' => 'Asia/Tehran',
- 'Israel Standard Time' => 'Asia/Jerusalem',
- 'Jordan Standard Time' => 'Asia/Amman',
- 'Kaliningrad Standard Time' => 'Europe/Kaliningrad',
- 'Korea Standard Time' => 'Asia/Seoul',
- 'Libya Standard Time' => 'Africa/Tripoli',
- 'Line Islands Standard Time' => 'Pacific/Kiritimati',
- 'Lord Howe Standard Time' => 'Australia/Lord_Howe',
- 'Magadan Standard Time' => 'Asia/Magadan',
- 'Marquesas Standard Time' => 'Pacific/Marquesas',
- 'Mauritius Standard Time' => 'Indian/Mauritius',
- 'Middle East Standard Time' => 'Asia/Beirut',
- 'Montevideo Standard Time' => 'America/Montevideo',
- 'Morocco Standard Time' => 'Africa/Casablanca',
- 'Mountain Standard Time' => 'America/Denver',
+ 'Central Europe Standard Time' => 'Europe/Budapest',
+ 'Central European Standard Time' => 'Europe/Warsaw',
+ 'Central Pacific Standard Time' => 'Pacific/Guadalcanal',
+ 'Central Standard Time' => 'America/Chicago',
+ 'Central Standard Time (Mexico)' => 'America/Mexico_City',
+ 'Chatham Islands Standard Time' => 'Pacific/Chatham',
+ 'China Standard Time' => 'Asia/Shanghai',
+ 'Cuba Standard Time' => 'America/Havana',
+ 'Dateline Standard Time' => 'Etc/GMT+12',
+ 'E. Africa Standard Time' => 'Africa/Nairobi',
+ 'E. Australia Standard Time' => 'Australia/Brisbane',
+ 'E. Europe Standard Time' => 'Europe/Chisinau',
+ 'E. South America Standard Time' => 'America/Sao_Paulo',
+ 'Easter Island Standard Time' => 'Pacific/Easter',
+ 'Eastern Standard Time' => 'America/New_York',
+ 'Eastern Standard Time (Mexico)' => 'America/Cancun',
+ 'Egypt Standard Time' => 'Africa/Cairo',
+ 'Ekaterinburg Standard Time' => 'Asia/Yekaterinburg',
+ 'FLE Standard Time' => 'Europe/Kiev',
+ 'Fiji Standard Time' => 'Pacific/Fiji',
+ 'GMT Standard Time' => 'Europe/London',
+ 'GTB Standard Time' => 'Europe/Bucharest',
+ 'Georgian Standard Time' => 'Asia/Tbilisi',
+ 'Greenland Standard Time' => 'America/Godthab',
+ 'Greenwich Standard Time' => 'Atlantic/Reykjavik',
+ 'Haiti Standard Time' => 'America/Port-au-Prince',
+ 'Hawaiian Standard Time' => 'Pacific/Honolulu',
+ 'India Standard Time' => 'Asia/Calcutta',
+ 'Iran Standard Time' => 'Asia/Tehran',
+ 'Israel Standard Time' => 'Asia/Jerusalem',
+ 'Jordan Standard Time' => 'Asia/Amman',
+ 'Kaliningrad Standard Time' => 'Europe/Kaliningrad',
+ 'Korea Standard Time' => 'Asia/Seoul',
+ 'Libya Standard Time' => 'Africa/Tripoli',
+ 'Line Islands Standard Time' => 'Pacific/Kiritimati',
+ 'Lord Howe Standard Time' => 'Australia/Lord_Howe',
+ 'Magadan Standard Time' => 'Asia/Magadan',
+ 'Marquesas Standard Time' => 'Pacific/Marquesas',
+ 'Mauritius Standard Time' => 'Indian/Mauritius',
+ 'Middle East Standard Time' => 'Asia/Beirut',
+ 'Montevideo Standard Time' => 'America/Montevideo',
+ 'Morocco Standard Time' => 'Africa/Casablanca',
+ 'Mountain Standard Time' => 'America/Denver',
'Mountain Standard Time (Mexico)' => 'America/Chihuahua',
- 'Myanmar Standard Time' => 'Asia/Rangoon',
- 'N. Central Asia Standard Time' => 'Asia/Novosibirsk',
- 'Namibia Standard Time' => 'Africa/Windhoek',
- 'Nepal Standard Time' => 'Asia/Katmandu',
- 'New Zealand Standard Time' => 'Pacific/Auckland',
- 'Newfoundland Standard Time' => 'America/St_Johns',
- 'Norfolk Standard Time' => 'Pacific/Norfolk',
- 'North Asia East Standard Time' => 'Asia/Irkutsk',
- 'North Asia Standard Time' => 'Asia/Krasnoyarsk',
- 'North Korea Standard Time' => 'Asia/Pyongyang',
- 'Pacific SA Standard Time' => 'America/Santiago',
- 'Pacific Standard Time' => 'America/Los_Angeles',
- 'Pacific Standard Time (Mexico)' => 'America/Tijuana',
- 'Pakistan Standard Time' => 'Asia/Karachi',
- 'Paraguay Standard Time' => 'America/Asuncion',
- 'Romance Standard Time' => 'Europe/Paris',
- 'Russia Time Zone 10' => 'Asia/Srednekolymsk',
- 'Russia Time Zone 11' => 'Asia/Kamchatka',
- 'Russia Time Zone 3' => 'Europe/Samara',
- 'Russian Standard Time' => 'Europe/Moscow',
- 'SA Eastern Standard Time' => 'America/Cayenne',
- 'SA Pacific Standard Time' => 'America/Bogota',
- 'SA Western Standard Time' => 'America/La_Paz',
- 'SE Asia Standard Time' => 'Asia/Bangkok',
- 'Saint Pierre Standard Time' => 'America/Miquelon',
- 'Sakhalin Standard Time' => 'Asia/Sakhalin',
- 'Samoa Standard Time' => 'Pacific/Apia',
- 'Singapore Standard Time' => 'Asia/Singapore',
- 'South Africa Standard Time' => 'Africa/Johannesburg',
- 'Sri Lanka Standard Time' => 'Asia/Colombo',
- 'Syria Standard Time' => 'Asia/Damascus',
- 'Taipei Standard Time' => 'Asia/Taipei',
- 'Tasmania Standard Time' => 'Australia/Hobart',
- 'Tocantins Standard Time' => 'America/Araguaina',
- 'Tokyo Standard Time' => 'Asia/Tokyo',
- 'Tomsk Standard Time' => 'Asia/Tomsk',
- 'Tonga Standard Time' => 'Pacific/Tongatapu',
- 'Transbaikal Standard Time' => 'Asia/Chita',
- 'Turkey Standard Time' => 'Europe/Istanbul',
- 'Turks And Caicos Standard Time' => 'America/Grand_Turk',
- 'US Eastern Standard Time' => 'America/Indianapolis',
- 'US Mountain Standard Time' => 'America/Phoenix',
- 'UTC' => 'Etc/GMT',
- 'UTC+12' => 'Etc/GMT-12',
- 'UTC-02' => 'Etc/GMT+2',
- 'UTC-08' => 'Etc/GMT+8',
- 'UTC-09' => 'Etc/GMT+9',
- 'UTC-11' => 'Etc/GMT+11',
- 'Ulaanbaatar Standard Time' => 'Asia/Ulaanbaatar',
- 'Venezuela Standard Time' => 'America/Caracas',
- 'Vladivostok Standard Time' => 'Asia/Vladivostok',
- 'W. Australia Standard Time' => 'Australia/Perth',
+ 'Myanmar Standard Time' => 'Asia/Rangoon',
+ 'N. Central Asia Standard Time' => 'Asia/Novosibirsk',
+ 'Namibia Standard Time' => 'Africa/Windhoek',
+ 'Nepal Standard Time' => 'Asia/Katmandu',
+ 'New Zealand Standard Time' => 'Pacific/Auckland',
+ 'Newfoundland Standard Time' => 'America/St_Johns',
+ 'Norfolk Standard Time' => 'Pacific/Norfolk',
+ 'North Asia East Standard Time' => 'Asia/Irkutsk',
+ 'North Asia Standard Time' => 'Asia/Krasnoyarsk',
+ 'North Korea Standard Time' => 'Asia/Pyongyang',
+ 'Pacific SA Standard Time' => 'America/Santiago',
+ 'Pacific Standard Time' => 'America/Los_Angeles',
+ 'Pacific Standard Time (Mexico)' => 'America/Tijuana',
+ 'Pakistan Standard Time' => 'Asia/Karachi',
+ 'Paraguay Standard Time' => 'America/Asuncion',
+ 'Romance Standard Time' => 'Europe/Paris',
+ 'Russia Time Zone 10' => 'Asia/Srednekolymsk',
+ 'Russia Time Zone 11' => 'Asia/Kamchatka',
+ 'Russia Time Zone 3' => 'Europe/Samara',
+ 'Russian Standard Time' => 'Europe/Moscow',
+ 'SA Eastern Standard Time' => 'America/Cayenne',
+ 'SA Pacific Standard Time' => 'America/Bogota',
+ 'SA Western Standard Time' => 'America/La_Paz',
+ 'SE Asia Standard Time' => 'Asia/Bangkok',
+ 'Saint Pierre Standard Time' => 'America/Miquelon',
+ 'Sakhalin Standard Time' => 'Asia/Sakhalin',
+ 'Samoa Standard Time' => 'Pacific/Apia',
+ 'Singapore Standard Time' => 'Asia/Singapore',
+ 'South Africa Standard Time' => 'Africa/Johannesburg',
+ 'Sri Lanka Standard Time' => 'Asia/Colombo',
+ 'Syria Standard Time' => 'Asia/Damascus',
+ 'Taipei Standard Time' => 'Asia/Taipei',
+ 'Tasmania Standard Time' => 'Australia/Hobart',
+ 'Tocantins Standard Time' => 'America/Araguaina',
+ 'Tokyo Standard Time' => 'Asia/Tokyo',
+ 'Tomsk Standard Time' => 'Asia/Tomsk',
+ 'Tonga Standard Time' => 'Pacific/Tongatapu',
+ 'Transbaikal Standard Time' => 'Asia/Chita',
+ 'Turkey Standard Time' => 'Europe/Istanbul',
+ 'Turks And Caicos Standard Time' => 'America/Grand_Turk',
+ 'US Eastern Standard Time' => 'America/Indianapolis',
+ 'US Mountain Standard Time' => 'America/Phoenix',
+ 'UTC' => 'Etc/GMT',
+ 'UTC+12' => 'Etc/GMT-12',
+ 'UTC-02' => 'Etc/GMT+2',
+ 'UTC-08' => 'Etc/GMT+8',
+ 'UTC-09' => 'Etc/GMT+9',
+ 'UTC-11' => 'Etc/GMT+11',
+ 'Ulaanbaatar Standard Time' => 'Asia/Ulaanbaatar',
+ 'Venezuela Standard Time' => 'America/Caracas',
+ 'Vladivostok Standard Time' => 'Asia/Vladivostok',
+ 'W. Australia Standard Time' => 'Australia/Perth',
'W. Central Africa Standard Time' => 'Africa/Lagos',
- 'W. Europe Standard Time' => 'Europe/Berlin',
- 'W. Mongolia Standard Time' => 'Asia/Hovd',
- 'West Asia Standard Time' => 'Asia/Tashkent',
- 'West Bank Standard Time' => 'Asia/Hebron',
- 'West Pacific Standard Time' => 'Pacific/Port_Moresby',
- 'Yakutsk Standard Time' => 'Asia/Yakutsk',
+ 'W. Europe Standard Time' => 'Europe/Berlin',
+ 'W. Mongolia Standard Time' => 'Asia/Hovd',
+ 'West Asia Standard Time' => 'Asia/Tashkent',
+ 'West Bank Standard Time' => 'Asia/Hebron',
+ 'West Pacific Standard Time' => 'Pacific/Port_Moresby',
+ 'Yakutsk Standard Time' => 'Asia/Yakutsk',
];