diff options
author | Mario Vavti <mario@mariovavti.com> | 2019-04-25 11:47:18 +0200 |
---|---|---|
committer | Mario Vavti <mario@mariovavti.com> | 2019-04-25 11:47:18 +0200 |
commit | a60c2f38c689f254bd8bb8e7ea9af78bf21c1f84 (patch) | |
tree | 65d1d73918ccb1d4ccc36184d70af2e8dd91f28e /vendor/sabre/vobject/lib | |
parent | f1c07977809ce3221286d53e99f0d91145b1166f (diff) | |
download | volse-hubzilla-a60c2f38c689f254bd8bb8e7ea9af78bf21c1f84.tar.gz volse-hubzilla-a60c2f38c689f254bd8bb8e7ea9af78bf21c1f84.tar.bz2 volse-hubzilla-a60c2f38c689f254bd8bb8e7ea9af78bf21c1f84.zip |
update sabre/vobject
Diffstat (limited to 'vendor/sabre/vobject/lib')
75 files changed, 2676 insertions, 3587 deletions
diff --git a/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php b/vendor/sabre/vobject/lib/BirthdayCalendarGenerator.php index 553912249..fade50e16 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,12 +41,11 @@ class BirthdayCalendarGenerator { * * @param mixed $objects */ - function __construct($objects = null) { - + public function __construct($objects = null) + { if ($objects) { $this->setObjects($objects); } - } /** @@ -56,52 +55,38 @@ class BirthdayCalendarGenerator { * It's also possible to supply an array of strings or objects. * * @param mixed $objects - * - * @return void */ - function setObjects($objects) { - + public 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 */ - function setFormat($format) { - + public function setFormat($format) + { $this->format = $format; - } /** @@ -109,12 +94,11 @@ class BirthdayCalendarGenerator { * * @return Component/VCalendar */ - function getResult() { - + public function getResult() + { $calendar = new VCalendar(); foreach ($this->objects as $object) { - // Skip if there is no BDAY property. if (!$object->select('BDAY')) { continue; @@ -152,7 +136,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; } @@ -161,8 +145,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 @@ -172,20 +156,17 @@ 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 df7ac22f3..70b5e8d6e 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 */ - function main(array $argv) { - + public function main(array $argv) + { // @codeCoverageIgnoreStart // We cannot easily test this, so we'll skip it. Pretty basic anyway. @@ -113,103 +113,96 @@ 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 (count($positional) === 0) { + if (0 === count($positional)) { $this->showHelp(); + return 1; } - if (count($positional) === 1) { + if (1 === count($positional)) { throw new InvalidArgumentException('Inputfile is a required argument'); } @@ -218,12 +211,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; } @@ -232,76 +225,71 @@ 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 (substr($this->inputPath, -5) === '.json') { + if ('.json' === substr($this->inputPath, -5)) { $this->inputFormat = 'json'; } else { $this->inputFormat = 'mimedir'; } } if (!$this->format) { - if (substr($this->outputPath, -5) === '.json') { + if ('.json' === substr($this->outputPath, -5)) { $this->format = 'json'; } else { $this->format = 'mimedir'; } } - $realCode = 0; try { - while ($input = $this->readInput()) { - $returnCode = $this->$command($input); - if ($returnCode !== 0) $realCode = $returnCode; - + if (0 !== $returnCode) { + $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 @@ -319,7 +307,6 @@ HELP $this->log(' vobject color calendar.ics'); $this->log(''); $this->log('https://github.com/fruux/sabre-vobject', 'purple'); - } /** @@ -329,24 +316,23 @@ 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', @@ -354,19 +340,15 @@ 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; - } /** @@ -376,24 +358,23 @@ 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', @@ -401,20 +382,16 @@ 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; - } /** @@ -424,47 +401,46 @@ 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 ($vObj->name === 'VCARD') { + if ('VCARD' === $vObj->name) { $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); @@ -480,7 +456,6 @@ HELP } return 0; - } /** @@ -490,10 +465,9 @@ HELP * * @return int */ - protected function color($vObj) { - + protected function color($vObj) + { fwrite($this->stdout, $this->serializeComponent($vObj)); - } /** @@ -503,19 +477,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'; } /** @@ -523,20 +497,17 @@ 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. @@ -548,52 +519,51 @@ 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 ($array[$key]->name === 'VTIMEZONE') { + if ('VTIMEZONE' === $array[$key]->name) { $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 ($array[$key]->name === 'VERSION') { + if ('VERSION' === $array[$key]->name) { $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; - } ); @@ -607,19 +577,16 @@ 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', '.'); @@ -628,19 +595,14 @@ 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 @@ -652,7 +614,7 @@ HELP } $first2 = true; // Looping through property sub-values - foreach ((array)$part as $subPart) { + foreach ((array) $part as $subPart) { if ($first2) { $first2 = false; } else { @@ -664,42 +626,39 @@ 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 ($ii === 0) continue; + if (0 === $ii) { + 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; @@ -707,22 +666,17 @@ 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; @@ -732,14 +686,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 ($this->inputFormat === 'mimedir') { + if ('mimedir' === $this->inputFormat) { $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)); @@ -747,25 +701,20 @@ 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 ($color !== 'default') { + if ('default' !== $color) { $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 ac87a10ec..a33b7d577 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,14 +44,12 @@ 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 - * - * @return void + * @param string $name such as VCALENDAR, VEVENT + * @param array $children + * @param bool $defaults */ - function __construct(Document $root, $name, array $children = [], $defaults = true) { - + public function __construct(Document $root, $name, array $children = [], $defaults = true) + { $this->name = strtoupper($name); $this->root = $root; @@ -84,13 +82,11 @@ class Component extends Node { // Component or Property $this->add($child); } else { - // Property key=>value $this->add($k, $child); } } } - } /** @@ -106,8 +102,8 @@ class Component extends Node { * * @return Node */ - function add() { - + public function add() + { $arguments = func_get_args(); if ($arguments[0] instanceof Node) { @@ -116,15 +112,10 @@ 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; @@ -133,8 +124,8 @@ class Component extends Node { } else { $this->children[$name] = [$newNode]; } - return $newNode; + return $newNode; } /** @@ -146,36 +137,34 @@ class Component extends Node { * exact item will be removed. * * @param string|Property|Component $item - * @return void */ - function remove($item) { - + public 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 (strpos($item, '.') === false) { + if (false === strpos($item, '.')) { 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'); - } /** @@ -184,14 +173,14 @@ class Component extends Node { * * @return array */ - function children() { - + public function children() + { $result = []; foreach ($this->children as $childGroup) { $result = array_merge($result, $childGroup); } - return $result; + return $result; } /** @@ -200,8 +189,8 @@ class Component extends Node { * * @return array */ - function getComponents() { - + public function getComponents() + { $result = []; foreach ($this->children as $childGroup) { @@ -211,8 +200,8 @@ class Component extends Node { } } } - return $result; + return $result; } /** @@ -226,19 +215,21 @@ class Component extends Node { * has not been assigned a group, specify ".EMAIL". * * @param string $name + * * @return array */ - function select($name) { - + public function select($name) + { $group = null; $name = strtoupper($name); - if (strpos($name, '.') !== false) { + if (false !== strpos($name, '.')) { 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)) { @@ -248,32 +239,25 @@ 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; + return $result; } /** @@ -281,9 +265,9 @@ class Component extends Node { * * @return string */ - function serialize() { - - $str = "BEGIN:" . $this->name . "\r\n"; + public function serialize() + { + $str = 'BEGIN:'.$this->name."\r\n"; /** * Gives a component a 'score' for sorting purposes. @@ -295,60 +279,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 ($array[$key]->name === 'VTIMEZONE') { + if ('VTIMEZONE' === $array[$key]->name) { $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 ($array[$key]->name === 'VERSION') { + if ('VERSION' === $array[$key]->name) { $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; - } /** @@ -357,8 +341,8 @@ class Component extends Node { * * @return array */ - function jsonSerialize() { - + public function jsonSerialize() + { $components = []; $properties = []; @@ -375,21 +359,18 @@ 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - function xmlSerialize(Xml\Writer $writer) { - + public function xmlSerialize(Xml\Writer $writer) + { $components = []; $properties = []; @@ -406,7 +387,6 @@ class Component extends Node { $writer->startElement(strtolower($this->name)); if (!empty($properties)) { - $writer->startElement('properties'); foreach ($properties as $property) { @@ -414,11 +394,9 @@ class Component extends Node { } $writer->endElement(); - } if (!empty($components)) { - $writer->startElement('components'); foreach ($components as $component) { @@ -429,7 +407,6 @@ class Component extends Node { } $writer->endElement(); - } /** @@ -437,10 +414,9 @@ class Component extends Node { * * @return array */ - protected function getDefaults() { - + protected function getDefaults() + { return []; - } /* Magic property accessors {{{ */ @@ -459,24 +435,22 @@ class Component extends Node { * * @return Property */ - function __get($name) { - - if ($name === 'children') { - + public function __get($name) + { + if ('children' === $name) { 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 (count($matches) === 0) { + if (0 === count($matches)) { return; } else { $firstMatch = current($matches); - /** @var $firstMatch Property */ + /* @var $firstMatch Property */ $firstMatch->setIterator(new ElementList(array_values($matches))); + return $firstMatch; } - } /** @@ -486,11 +460,11 @@ class Component extends Node { * * @return bool */ - function __isset($name) { - + public function __isset($name) + { $matches = $this->select($name); - return count($matches) > 0; + return count($matches) > 0; } /** @@ -503,12 +477,10 @@ class Component extends Node { * a new item with the same name, always use the add() method. * * @param string $name - * @param mixed $value - * - * @return void + * @param mixed $value */ - function __set($name, $value) { - + public function __set($name, $value) + { $name = strtoupper($name); $this->remove($name); if ($value instanceof self || $value instanceof Property) { @@ -523,13 +495,10 @@ class Component extends Node { * specified name. * * @param string $name - * - * @return void */ - function __unset($name) { - + public function __unset($name) + { $this->remove($name); - } /* }}} */ @@ -537,11 +506,9 @@ 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 */ - function __clone() { - + public function __clone() + { foreach ($this->children as $childName => $childGroup) { foreach ($childGroup as $key => $child) { $clonedChild = clone $child; @@ -550,7 +517,6 @@ class Component extends Node { $this->children[$childName][$key] = $clonedChild; } } - } /** @@ -574,10 +540,9 @@ class Component extends Node { * * @var array */ - function getValidationRules() { - + public function getValidationRules() + { return []; - } /** @@ -604,8 +569,8 @@ class Component extends Node { * * @return array */ - function validate($options = 0) { - + public function validate($options = 0) + { $rules = $this->getValidationRules(); $defaults = $this->getDefaults(); @@ -618,49 +583,48 @@ 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]) || $propertyCounters[$propName] !== 1) { + case '1': + if (!isset($propertyCounters[$propName]) || 1 !== $propertyCounters[$propName]) { $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; @@ -669,7 +633,7 @@ class Component extends Node { if ($options & self::REPAIR) { $properties = array_unique($this->select($propName), SORT_REGULAR); - if (count($properties) === 1) { + if (1 === count($properties)) { $this->remove($propName); $this->add($properties[0]); @@ -678,18 +642,16 @@ 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; + return $messages; } /** @@ -697,11 +659,9 @@ class Component extends Node { * * It's intended to remove all circular references, so PHP can easily clean * it up. - * - * @return void */ - function destroy() { - + public function destroy() + { parent::destroy(); foreach ($this->children as $childGroup) { foreach ($childGroup as $child) { @@ -709,7 +669,5 @@ 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 b3aaf08af..5510b9e0a 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 */ - function getEffectiveStartEnd() { - + public function getEffectiveStartEnd() + { $effectiveStart = $this->DTSTART->getDateTime(); if (isset($this->DTEND)) { $effectiveEnd = $this->DTEND->getDateTime(); @@ -38,7 +38,6 @@ class Available extends VObject\Component { } return [$effectiveStart, $effectiveEnd]; - } /** @@ -56,32 +55,31 @@ class Available extends VObject\Component { * * @var array */ - function getValidationRules() { - + public 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' => '*', ]; - } /** @@ -108,19 +106,18 @@ class Available extends VObject\Component { * * @return array */ - function validate($options = 0) { - + public 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 faa8a5e74..bd00eb600 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,17 +25,16 @@ class VAlarm extends VObject\Component { * * @return DateTimeImmutable */ - function getEffectiveTriggerTime() { - + public function getEffectiveTriggerTime() + { $trigger = $this->TRIGGER; - if (!isset($trigger['VALUE']) || strtoupper($trigger['VALUE']) === 'DURATION') { + if (!isset($trigger['VALUE']) || 'DURATION' === strtoupper($trigger['VALUE'])) { $triggerDuration = VObject\DateTimeParser::parseDuration($this->TRIGGER); - $related = (isset($trigger['RELATED']) && strtoupper($trigger['RELATED']) == 'END') ? 'END' : 'START'; + $related = (isset($trigger['RELATED']) && 'END' == strtoupper($trigger['RELATED'])) ? 'END' : 'START'; $parentComponent = $this->parent; - if ($related === 'START') { - - if ($parentComponent->name === 'VTODO') { + if ('START' === $related) { + if ('VTODO' === $parentComponent->name) { $propName = 'DUE'; } else { $propName = 'DTSTART'; @@ -44,9 +43,9 @@ class VAlarm extends VObject\Component { $effectiveTrigger = $parentComponent->$propName->getDateTime(); $effectiveTrigger = $effectiveTrigger->add($triggerDuration); } else { - if ($parentComponent->name === 'VTODO') { + if ('VTODO' === $parentComponent->name) { $endProp = 'DUE'; - } elseif ($parentComponent->name === 'VEVENT') { + } elseif ('VEVENT' === $parentComponent->name) { $endProp = 'DTEND'; } else { throw new InvalidDataException('time-range filters on VALARM components are only supported when they are a child of VTODO or VEVENT'); @@ -68,8 +67,8 @@ class VAlarm extends VObject\Component { } else { $effectiveTrigger = $trigger->getDateTime(); } - return $effectiveTrigger; + return $effectiveTrigger; } /** @@ -84,30 +83,29 @@ class VAlarm extends VObject\Component { * * @return bool */ - function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) { - + public 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; } - } /** @@ -125,18 +123,16 @@ class VAlarm extends VObject\Component { * * @var array */ - function getValidationRules() { - + public 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 66b3310c5..6f3e7f13c 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 */ - function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) { - + public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) + { list($effectiveStart, $effectiveEnd) = $this->getEffectiveStartEnd(); - return ( + + return (is_null($effectiveStart) || $start < $effectiveEnd) && (is_null($effectiveEnd) || $end > $effectiveStart) - ); - + ; } /** @@ -53,8 +53,8 @@ class VAvailability extends VObject\Component { * * @return array */ - function getEffectiveStartEnd() { - + public function getEffectiveStartEnd() + { $effectiveStart = null; $effectiveEnd = null; @@ -68,10 +68,8 @@ class VAvailability extends VObject\Component { } return [$effectiveStart, $effectiveEnd]; - } - /** * A simple list of validation rules. * @@ -87,31 +85,30 @@ class VAvailability extends VObject\Component { * * @var array */ - function getValidationRules() { - + public 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' => '*', ]; - } /** @@ -138,19 +135,18 @@ class VAvailability extends VObject\Component { * * @return array */ - function validate($options = 0) { - + public 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 1b3137d38..4687a092b 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 */ - static $defaultName = 'VCALENDAR'; + public static $defaultName = 'VCALENDAR'; /** * This is a list of components, and which classes they should map to. * * @var array */ - static $componentMap = [ - 'VCALENDAR' => 'Sabre\\VObject\\Component\\VCalendar', - 'VALARM' => 'Sabre\\VObject\\Component\\VAlarm', - 'VEVENT' => 'Sabre\\VObject\\Component\\VEvent', - 'VFREEBUSY' => 'Sabre\\VObject\\Component\\VFreeBusy', + public 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 */ - static $valueMap = [ - 'BINARY' => 'Sabre\\VObject\\Property\\Binary', - 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean', + public 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,81 +76,80 @@ class VCalendar extends VObject\Document { * * @var array */ - static $propertyMap = [ + public 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', - ]; /** @@ -158,10 +157,9 @@ class VCalendar extends VObject\Document { * * @return int */ - function getDocumentType() { - + public function getDocumentType() + { return self::ICALENDAR20; - } /** @@ -175,21 +173,20 @@ class VCalendar extends VObject\Document { * * @return VObject\Component[] */ - function getBaseComponents($componentName = null) { - - $isBaseComponent = function($component) { - + public function getBaseComponents($componentName = null) + { + $isBaseComponent = function ($component) { if (!$component instanceof VObject\Component) { return false; } - if ($component->name === 'VTIMEZONE') { + if ('VTIMEZONE' === $component->name) { return false; } if (isset($component->{'RECURRENCE-ID'})) { return false; } - return true; + return true; }; if ($componentName) { @@ -202,9 +199,7 @@ 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. @@ -213,12 +208,10 @@ class VCalendar extends VObject\Document { if ($isBaseComponent($child)) { $components[] = $child; } - } - } - return $components; + return $components; } /** @@ -231,21 +224,20 @@ class VCalendar extends VObject\Document { * * @return VObject\Component|null */ - function getBaseComponent($componentName = null) { - - $isBaseComponent = function($component) { - + public function getBaseComponent($componentName = null) + { + $isBaseComponent = function ($component) { if (!$component instanceof VObject\Component) { return false; } - if ($component->name === 'VTIMEZONE') { + if ('VTIMEZONE' === $component->name) { return false; } if (isset($component->{'RECURRENCE-ID'})) { return false; } - return true; + return true; }; if ($componentName) { @@ -254,6 +246,7 @@ class VCalendar extends VObject\Document { return $child; } } + return null; } @@ -264,10 +257,9 @@ class VCalendar extends VObject\Document { return $child; } } - } - return null; + return null; } /** @@ -277,7 +269,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 it's recurrence information, and only + * Each event will be stripped from its recurrence information, and only * the instances of the event in the specified timerange will be left * alone. * @@ -286,12 +278,13 @@ 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 */ - function expand(DateTimeInterface $start, DateTimeInterface $end, DateTimeZone $timeZone = null) { - + public function expand(DateTimeInterface $start, DateTimeInterface $end, DateTimeZone $timeZone = null) + { $newChildren = []; $recurringEvents = []; @@ -299,11 +292,9 @@ 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 @@ -313,25 +304,22 @@ class VCalendar extends VObject\Document { } elseif ($componentChild instanceof Component) { $stripTimezones($componentChild); } - } - return $component; + return $component; }; foreach ($this->children() as $child) { - - if ($child instanceof Property && $child->name !== 'PRODID') { + if ($child instanceof Property && 'PRODID' !== $child->name) { // We explictly want to ignore PRODID, because we want to // overwrite it with our own. $newChildren[] = clone $child; - } elseif ($child instanceof Component && $child->name !== 'VTIMEZONE') { - + } elseif ($child instanceof Component && 'VTIMEZONE' !== $child->name) { // We're also stripping all VTIMEZONE objects because we're // converting everything to UTC. - if ($child->name === 'VEVENT' && (isset($child->{'RECURRENCE-ID'}) || isset($child->RRULE) || isset($child->RDATE))) { + if ('VEVENT' === $child->name && (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'); } @@ -340,19 +328,15 @@ class VCalendar extends VObject\Document { } else { $recurringEvents[$uid] = [clone $child]; } - } elseif ($child->name === 'VEVENT' && $child->isInTimeRange($start, $end)) { + } elseif ('VEVENT' === $child->name && $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 @@ -362,20 +346,14 @@ 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); - } /** @@ -383,14 +361,13 @@ 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', ]; - } /** @@ -408,16 +385,15 @@ class VCalendar extends VObject\Document { * * @var array */ - function getValidationRules() { - + public function getValidationRules() + { return [ - 'PRODID' => 1, + 'PRODID' => 1, 'VERSION' => 1, 'CALSCALE' => '?', - 'METHOD' => '?', + 'METHOD' => '?', ]; - } /** @@ -444,19 +420,18 @@ class VCalendar extends VObject\Document { * * @return array */ - function validate($options = 0) { - + public function validate($options = 0) + { $warnings = parent::validate($options); if ($ver = $this->VERSION) { - if ((string)$ver !== '2.0') { + if ('2.0' !== (string) $ver) { $warnings[] = [ - 'level' => 3, + 'level' => 3, 'message' => 'Only iCalendar version 2.0 as defined in rfc5545 is supported.', - 'node' => $this, + 'node' => $this, ]; } - } $uidList = []; @@ -465,77 +440,75 @@ 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 ($componentsFound === 0) { + if (0 === $componentsFound) { $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 (count($componentTypes) === 0) { + if (0 === count($componentTypes)) { $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; - } /** @@ -543,19 +516,15 @@ class VCalendar extends VObject\Document { * * @return array */ - function getByUID($uid) { - - return array_filter($this->getComponents(), function($item) use ($uid) { - + public 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; + return $uid === $itemUid; }); - } - - } diff --git a/vendor/sabre/vobject/lib/Component/VCard.php b/vendor/sabre/vobject/lib/Component/VCard.php index bca623d5e..860e45ffa 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 */ - static $defaultName = 'VCARD'; + public static $defaultName = 'VCARD'; /** * Caching the version number. @@ -38,7 +38,7 @@ class VCard extends VObject\Document { * * @var array */ - static $componentMap = [ + public static $componentMap = [ 'VCARD' => 'Sabre\\VObject\\Component\\VCard', ]; @@ -47,23 +47,23 @@ class VCard extends VObject\Document { * * @var array */ - 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', + 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', '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,72 +71,70 @@ class VCard extends VObject\Document { * * @var array */ - static $propertyMap = [ - + public 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', - ]; /** @@ -144,23 +142,22 @@ class VCard extends VObject\Document { * * @return int */ - function getDocumentType() { - + public 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; @@ -168,7 +165,6 @@ class VCard extends VObject\Document { } return $this->version; - } /** @@ -185,11 +181,11 @@ class VCard extends VObject\Document { * * @return VCard */ - function convert($target) { - + public function convert($target) + { $converter = new VObject\VCardConverter(); - return $converter->convert($this, $target); + return $converter->convert($this, $target); } /** @@ -221,8 +217,8 @@ class VCard extends VObject\Document { * * @return array */ - function validate($options = 0) { - + public function validate($options = 0) + { $warnings = []; $versionMap = [ @@ -232,29 +228,28 @@ class VCard extends VObject\Document { ]; $version = $this->select('VERSION'); - if (count($version) === 1) { - $version = (string)$this->VERSION; - if ($version !== '2.1' && $version !== '3.0' && $version !== '4.0') { + if (1 === count($version)) { + $version = (string) $this->VERSION; + if ('2.1' !== $version && '3.0' !== $version && '4.0' !== $version) { $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 ($version === '2.1' && ($options & self::PROFILE_CARDDAV)) { + if ('2.1' === $version && ($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 (count($uid) === 0) { + if (0 === count($uid)) { if ($options & self::PROFILE_CARDDAV) { // Required for CardDAV $warningLevel = 3; @@ -269,23 +264,22 @@ class VCard extends VObject\Document { $warningLevel = 1; } $warnings[] = [ - 'level' => $warningLevel, + 'level' => $warningLevel, 'message' => $message, - 'node' => $this, + 'node' => $this, ]; } $fn = $this->select('FN'); - if (count($fn) !== 1) { - + if (1 !== count($fn)) { $repaired = false; - if (($options & self::REPAIR) && count($fn) === 0) { + if (($options & self::REPAIR) && 0 === count($fn)) { // 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]; } @@ -293,20 +287,19 @@ 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, ]; } @@ -314,7 +307,6 @@ class VCard extends VObject\Document { parent::validate($options), $warnings ); - } /** @@ -332,50 +324,49 @@ class VCard extends VObject\Document { * * @var array */ - function getValidationRules() { - + public 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' => '?', ]; - } /** @@ -392,12 +383,11 @@ class VCard extends VObject\Document { * * @return VObject\Property|null */ - function preferred($propertyName) { - + public 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; @@ -409,10 +399,9 @@ class VCard extends VObject\Document { $preferred = $field; $lastPref = $pref; } - } - return $preferred; + return $preferred; } /** @@ -426,7 +415,8 @@ class VCard extends VObject\Document { * * @return VObject\Property|null */ - function getByType($propertyName, $type) { + public function getByType($propertyName, $type) + { foreach ($this->select($propertyName) as $field) { if (isset($field['TYPE']) && $field['TYPE']->has($type)) { return $field; @@ -439,14 +429,13 @@ 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(), ]; - } /** @@ -455,8 +444,8 @@ class VCard extends VObject\Document { * * @return array */ - function jsonSerialize() { - + public function jsonSerialize() + { // A vcard does not have sub-components, so we're overriding this // method to remove that array element. $properties = []; @@ -469,23 +458,19 @@ 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - function xmlSerialize(Xml\Writer $writer) { - + public function xmlSerialize(Xml\Writer $writer) + { $propertiesByGroup = []; foreach ($this->children() as $property) { - $group = $property->group; if (!isset($propertiesByGroup[$group])) { @@ -493,25 +478,20 @@ 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': - continue; + break; case 'XML': $value = $property->getParts(); @@ -522,18 +502,15 @@ class VCard extends VObject\Document { default: $property->xmlSerialize($writer); break; - } } if (!empty($group)) { $writer->endElement(); } - } $writer->endElement(); - } /** @@ -543,16 +520,15 @@ class VCard extends VObject\Document { * * @return string */ - function getClassNameForPropertyName($propertyName) { - + public function getClassNameForPropertyName($propertyName) + { $className = parent::getClassNameForPropertyName($propertyName); // In vCard 4, BINARY no longer exists, and we need URI instead. - if ($className == 'Sabre\\VObject\\Property\\Binary' && $this->getDocumentType() === self::VCARD40) { + if ('Sabre\\VObject\\Property\\Binary' == $className && self::VCARD40 === $this->getDocumentType()) { return 'Sabre\\VObject\\Property\\Uri'; } - return $className; + return $className; } - } diff --git a/vendor/sabre/vobject/lib/Component/VEvent.php b/vendor/sabre/vobject/lib/Component/VEvent.php index 7f6861190..09f37033c 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,20 +30,15 @@ class VEvent extends VObject\Component { * * @return bool */ - function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) { - + public 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); @@ -54,13 +49,11 @@ 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. @@ -68,7 +61,6 @@ 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()) { @@ -76,10 +68,10 @@ class VEvent extends VObject\Component { } else { $effectiveEnd = $effectiveStart; } - return ( - ($start < $effectiveEnd) && ($end > $effectiveStart) - ); + return + ($start < $effectiveEnd) && ($end > $effectiveStart) + ; } /** @@ -87,13 +79,12 @@ class VEvent extends VObject\Component { * * @return array */ - protected function getDefaults() { - + protected function getDefaults() + { return [ - 'UID' => 'sabre-vobject-' . VObject\UUIDUtil::getUUID(), - 'DTSTAMP' => date('Ymd\\THis\\Z'), + 'UID' => 'sabre-vobject-'.VObject\UUIDUtil::getUUID(), + 'DTSTAMP' => gmdate('Ymd\\THis\\Z'), ]; - } /** @@ -111,43 +102,42 @@ class VEvent extends VObject\Component { * * @var array */ - function getValidationRules() { - + public 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 72294cc9f..558a85233 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,19 +26,18 @@ class VFreeBusy extends VObject\Component { * * @return bool */ - function isFree(DateTimeInterface $start, DatetimeInterface $end) { - + public 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']) && strtoupper(substr((string)$freebusy['FBTYPE'], 0, 4)) !== 'BUSY') { + if (isset($freebusy['FBTYPE']) && 'BUSY' !== strtoupper(substr((string) $freebusy['FBTYPE'], 0, 4))) { 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 @@ -55,13 +54,10 @@ class VFreeBusy extends VObject\Component { if ($start < $busyEnd && $end > $busyStart) { return false; } - } - } return true; - } /** @@ -79,24 +75,22 @@ class VFreeBusy extends VObject\Component { * * @var array */ - function getValidationRules() { - + public 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 a1b1a863d..9bd336776 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 */ - function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) { - + public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) + { $dtstart = isset($this->DTSTART) ? $this->DTSTART->getDateTime() : null; if ($dtstart) { $effectiveEnd = $dtstart; @@ -37,11 +37,10 @@ class VJournal extends VObject\Component { $effectiveEnd = $effectiveEnd->modify('+1 day'); } - return ($start <= $effectiveEnd && $end > $dtstart); - + return $start <= $effectiveEnd && $end > $dtstart; } - return false; + return false; } /** @@ -59,36 +58,35 @@ class VJournal extends VObject\Component { * * @var array */ - function getValidationRules() { - + public 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' => '*', ]; - } /** @@ -96,12 +94,11 @@ class VJournal extends VObject\Component { * * @return array */ - protected function getDefaults() { - + protected function getDefaults() + { return [ - 'UID' => 'sabre-vobject-' . VObject\UUIDUtil::getUUID(), - 'DTSTAMP' => date('Ymd\\THis\\Z'), + 'UID' => 'sabre-vobject-'.VObject\UUIDUtil::getUUID(), + 'DTSTAMP' => gmdate('Ymd\\THis\\Z'), ]; - } } diff --git a/vendor/sabre/vobject/lib/Component/VTimeZone.php b/vendor/sabre/vobject/lib/Component/VTimeZone.php index f6eb6cba1..21c062377 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,10 +24,9 @@ class VTimeZone extends VObject\Component { * * @return \DateTimeZone */ - function getTimeZone() { - - return VObject\TimeZoneUtil::getTimeZone((string)$this->TZID, $this->root); - + public function getTimeZone() + { + return VObject\TimeZoneUtil::getTimeZone((string) $this->TZID, $this->root); } /** @@ -45,13 +44,13 @@ class VTimeZone extends VObject\Component { * * @var array */ - function getValidationRules() { - + public function getValidationRules() + { return [ 'TZID' => 1, 'LAST-MODIFIED' => '?', - 'TZURL' => '?', + 'TZURL' => '?', // At least 1 STANDARD or DAYLIGHT must appear. // @@ -60,7 +59,5 @@ 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 144ced694..9de77e841 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 */ - function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) { - + public 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,6 +39,7 @@ class VTodo extends VObject\Component { if ($dtstart) { if ($duration) { $effectiveEnd = $dtstart->add($duration); + return $start <= $effectiveEnd && $end > $dtstart; } elseif ($due) { return @@ -49,7 +50,7 @@ class VTodo extends VObject\Component { } } if ($due) { - return ($start < $due && $end >= $due); + return $start < $due && $end >= $due; } if ($completed && $created) { return @@ -57,13 +58,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; + return true; } /** @@ -81,45 +82,44 @@ class VTodo extends VObject\Component { * * @var array */ - function getValidationRules() { - + public 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,36 +144,29 @@ class VTodo extends VObject\Component { * * @return array */ - function validate($options = 0) { - + public 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; - } /** @@ -181,13 +174,11 @@ 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 f9a802d25..1c253437a 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,49 +26,48 @@ 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 */ - static function parseDateTime($dt, DateTimeZone $tz = null) { - + public 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 ($matches[7] === 'Z' || is_null($tz)) { + if ('Z' === $matches[7] || 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 */ - static function parseDate($date, DateTimeZone $tz = null) { - + public 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)) { @@ -76,13 +75,12 @@ 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; - } /** @@ -92,22 +90,21 @@ class DateTimeParser { * suitable for strtotime or DateTime::modify. * * @param string $duration - * @param bool $asString + * @param bool $asString * * @return DateInterval|string */ - static function parseDuration($duration, $asString = false) { - + public 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; } @@ -120,7 +117,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 @@ -133,28 +130,26 @@ 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 ($duration === 'P') { + if ('P' === $duration) { $duration = 'PT0S'; } @@ -165,7 +160,6 @@ class DateTimeParser { } return $iv; - } $parts = [ @@ -180,38 +174,36 @@ 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 */ - static function parse($date, $referenceTz = null) { - - if ($date[0] === 'P' || ($date[0] === '-' && $date[1] === 'P')) { + public static function parse($date, $referenceTz = null) + { + if ('P' === $date[0] || ('-' === $date[0] && 'P' === $date[1])) { return self::parseDuration($date); - } elseif (strlen($date) === 8) { + } elseif (8 === strlen($date)) { return self::parseDate($date, $referenceTz); } else { return self::parseDateTime($date, $referenceTz); } - } /** @@ -270,8 +262,8 @@ class DateTimeParser { * * @return array */ - static function parseVCardDateTime($date) { - + public static function parseVCardDateTime($date) + { $regex = '/^ (?: # date part (?: @@ -296,7 +288,6 @@ class DateTimeParser { $/x'; if (!preg_match($regex, $date, $matches)) { - // Attempting to parse the extended format. $regex = '/^ (?: # date part @@ -321,9 +312,8 @@ 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', @@ -332,24 +322,21 @@ 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; - } /** @@ -394,8 +381,8 @@ class DateTimeParser { * * @return array */ - static function parseVCardTime($date) { - + public static function parseVCardTime($date) + { $regex = '/^ (?<hour> [0-9]{2} | -) (?<minute> [0-9]{2} | -)? @@ -409,9 +396,7 @@ class DateTimeParser { )? $/x'; - if (!preg_match($regex, $date, $matches)) { - // Attempting to parse the extended format. $regex = '/^ (?: (?<hour> [0-9]{2}) : | -) @@ -427,32 +412,28 @@ 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; - } /** @@ -506,32 +487,32 @@ class DateTimeParser { * * @return array */ - static function parseVCardDateAndOrTime($date) { - + public 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 @@ -540,17 +521,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. @@ -575,6 +556,5 @@ class DateTimeParser { unset($parts['year0']); return $parts; - } } diff --git a/vendor/sabre/vobject/lib/Document.php b/vendor/sabre/vobject/lib/Document.php index 03252ab06..0cb2e0978 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 */ - static $defaultName; + public static $defaultName; /** * List of properties, and which classes they map to. * * @var array */ - static $propertyMap = []; + public static $propertyMap = []; /** * List of components, along with which classes they map to. * * @var array */ - static $componentMap = []; + public static $componentMap = []; /** * List of value-types, and which classes they map to. * * @var array */ - static $valueMap = []; + public 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 */ - function __construct() { - + public function __construct() + { $args = func_get_args(); - if (count($args) === 0 || is_array($args[0])) { - array_unshift($args, $this, static::$defaultName); - call_user_func_array(['parent', '__construct'], $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; } else { - array_unshift($args, $this); - call_user_func_array(['parent', '__construct'], $args); + $name = $args[0]; + $children = isset($args[1]) ? $args[1] : []; + $defaults = isset($args[2]) ? $args[2] : true; } - + parent::__construct($this, $name, $children, $defaults); } /** @@ -112,10 +112,9 @@ abstract class Document extends Component { * * @return int */ - function getDocumentType() { - + public function getDocumentType() + { return self::UNKNOWN; - } /** @@ -129,18 +128,13 @@ abstract class Document extends Component { * * @return mixed */ - function create($name) { - + public 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()); - } - } /** @@ -158,22 +152,24 @@ 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 */ - function createComponent($name, array $children = null, $defaults = true) { - + public 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 = []; - return new $class($this, $name, $children, $defaults); + if (is_null($children)) { + $children = []; + } + return new $class($this, $name, $children, $defaults); } /** @@ -187,16 +183,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 */ - function createProperty($name, $value = null, array $parameters = null, $valueType = null) { - + public 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 (($i = strpos($name, '.')) !== false) { + if (false !== ($i = strpos($name, '.'))) { $group = substr($name, 0, $i); $name = strtoupper(substr($name, $i + 1)); } else { @@ -217,17 +213,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); - } /** @@ -239,15 +235,15 @@ abstract class Document extends Component { * This method returns null if we don't have a specialized class. * * @param string $valueParam + * * @return string|null */ - function getClassNameForPropertyValue($valueParam) { - + public function getClassNameForPropertyValue($valueParam) + { $valueParam = strtoupper($valueParam); if (isset(static::$valueMap[$valueParam])) { return static::$valueMap[$valueParam]; } - } /** @@ -257,14 +253,12 @@ abstract class Document extends Component { * * @return string */ - function getClassNameForPropertyName($propertyName) { - + public 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 959249247..56058cbd5 100644 --- a/vendor/sabre/vobject/lib/ElementList.php +++ b/vendor/sabre/vobject/lib/ElementList.php @@ -15,23 +15,19 @@ 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 */ - function offsetSet($offset, $value) { - + public function offsetSet($offset, $value) + { throw new LogicException('You can not add new objects to an ElementList'); - } /** @@ -40,15 +36,11 @@ class ElementList extends ArrayIterator { * This method just forwards the request to the inner iterator * * @param int $offset - * - * @return void */ - function offsetUnset($offset) { - + public 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 e9bd55878..837af7eb7 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 0a6c72bb2..d05dfc799 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,35 +32,31 @@ class FreeBusyData { */ protected $data; - function __construct($start, $end) { - + public 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 - * @return void + * @param int $start + * @param int $end + * @param string $type FREE, BUSY, BUSY-UNAVAILABLE or BUSY-TENTATIVE */ - function add($start, $end, $type) { - + public function add($start, $end, $type) + { if ($start > $this->end || $end < $this->start) { - // This new data is outside our timerange. return; - } if ($start < $this->start) { @@ -75,7 +71,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 @@ -84,14 +80,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 @@ -105,32 +101,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 ($itemsToDelete === -1) { + if (-1 === $itemsToDelete) { $itemsToDelete = 0; if ($newItem['end'] < $preceedingItem['end']) { $newItems[] = [ 'start' => $newItem['end'] + 1, - 'end' => $preceedingItem['end'], - 'type' => $preceedingItem['type'] + 'end' => $preceedingItem['end'], + 'type' => $preceedingItem['type'], ]; } } @@ -155,8 +151,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']; } } @@ -168,10 +164,9 @@ 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( @@ -181,13 +176,10 @@ class FreeBusyData { [$mergeItem] ); } - } - function getData() { - + public function getData() + { return $this->data; - } - } diff --git a/vendor/sabre/vobject/lib/FreeBusyGenerator.php b/vendor/sabre/vobject/lib/FreeBusyGenerator.php index e30b136c4..adb214c08 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, it's information will be included when calculating + * If this is set, its 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 */ - function __construct(DateTimeInterface $start = null, DateTimeInterface $end = null, $objects = null, DateTimeZone $timeZone = null) { - + public function __construct(DateTimeInterface $start = null, DateTimeInterface $end = null, $objects = null, DateTimeZone $timeZone = null) + { $this->setTimeRange($start, $end); if ($objects) { @@ -100,7 +100,6 @@ class FreeBusyGenerator { $timeZone = new DateTimeZone('UTC'); } $this->setTimeZone($timeZone); - } /** @@ -112,24 +111,20 @@ class FreeBusyGenerator { * The VFREEBUSY object will be automatically added though. * * @param Document $vcalendar - * @return void */ - function setBaseObject(Document $vcalendar) { - + public function setBaseObject(Document $vcalendar) + { $this->baseObject = $vcalendar; - } /** * Sets a VAVAILABILITY document. * * @param Document $vcalendar - * @return void */ - function setVAvailability(Document $vcalendar) { - + public function setVAvailability(Document $vcalendar) + { $this->vavailability = $vcalendar; - } /** @@ -140,18 +135,15 @@ class FreeBusyGenerator { * It's also possible to specify multiple objects as an array. * * @param mixed $objects - * - * @return void */ - function setObjects($objects) { - + public 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) { @@ -159,9 +151,7 @@ class FreeBusyGenerator { } else { throw new \InvalidArgumentException('You can only pass strings or \\Sabre\\VObject\\Component arguments to setObjects'); } - } - } /** @@ -171,11 +161,9 @@ class FreeBusyGenerator { * * @param DateTimeInterface $start * @param DateTimeInterface $end - * - * @return void */ - function setTimeRange(DateTimeInterface $start = null, DateTimeInterface $end = null) { - + public function setTimeRange(DateTimeInterface $start = null, DateTimeInterface $end = null) + { if (!$start) { $start = new DateTimeImmutable(Settings::$minDate); } @@ -184,20 +172,16 @@ class FreeBusyGenerator { } $this->start = $start; $this->end = $end; - } /** * Sets the reference timezone for floating times. * * @param DateTimeZone $timeZone - * - * @return void */ - function setTimeZone(DateTimeZone $timeZone) { - + public function setTimeZone(DateTimeZone $timeZone) + { $this->timeZone = $timeZone; - } /** @@ -206,23 +190,19 @@ class FreeBusyGenerator { * * @return Component */ - function getResult() { - + public 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); - - } /** @@ -230,29 +210,30 @@ class FreeBusyGenerator { * available times. * * @param FreeBusyData $fbData - * @param VCalendar $vavailability - * @return void + * @param VCalendar $vavailability */ - 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 ($priorityA === 0) $priorityA = 10; - if ($priorityB === 0) $priorityB = 10; + if (0 === $priorityA) { + $priorityA = 10; + } + if (0 === $priorityB) { + $priorityB = 10; + } return $priorityA - $priorityB; - } ); @@ -267,7 +248,6 @@ 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 @@ -288,24 +268,19 @@ 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 @@ -314,7 +289,6 @@ 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(); @@ -336,57 +310,53 @@ 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()) { + while ($rruleIterator->valid()) { + $recurStart = $rruleIterator->current(); + $recurEnd = $recurStart->add($startEndDiff); - $recurStart = $rruleIterator->current(); - $recurEnd = $recurStart->add($startEndDiff); - - if ($recurStart > $vavailEnd) { - // We're beyond the legal timerange. - break; - } + if ($recurStart > $vavailEnd) { + // We're beyond the legal timerange. + break; + } - if ($recurEnd > $vavailEnd) { - // Truncating the end if it exceeds the - // VAVAILABILITY end. - $recurEnd = $vavailEnd; - } + if ($recurEnd > $vavailEnd) { + // Truncating the end if it exceeds the + // VAVAILABILITY end. + $recurEnd = $vavailEnd; + } - $fbData->add( + $fbData->add( $recurStart->getTimeStamp(), $recurEnd->getTimeStamp(), 'FREE' ); - $rruleIterator->next(); - + $rruleIterator->next(); + } } } - } - } - } /** @@ -394,28 +364,25 @@ 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) && (strtoupper($component->TRANSP) === 'TRANSPARENT')) { + if (isset($component->TRANSP) && ('TRANSPARENT' === strtoupper($component->TRANSP))) { break; } if (isset($component->STATUS)) { $status = strtoupper($component->STATUS); - if ($status === 'CANCELLED') { + if ('CANCELLED' === $status) { break; } - if ($status === 'TENTATIVE') { + if ('TENTATIVE' === $status) { $FBTYPE = 'BUSY-TENTATIVE'; } } @@ -424,13 +391,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]); - continue; + break; } if ($this->start) { @@ -440,7 +407,6 @@ class FreeBusyGenerator { $maxRecurrences = Settings::$maxRecurrences; while ($iterator->valid() && --$maxRecurrences) { - $startTime = $iterator->getDTStart(); if ($this->end && $startTime > $this->end) { break; @@ -451,11 +417,8 @@ class FreeBusyGenerator { ]; $iterator->next(); - } - } else { - $startTime = $component->DTSTART->getDateTime($this->timeZone); if ($this->end && $startTime > $this->end) { break; @@ -464,7 +427,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()) { @@ -476,13 +439,15 @@ 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(), @@ -492,21 +457,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 ($fbType === 'FREE') + if ('FREE' === $fbType) { continue; + } $values = explode(',', $freebusy); foreach ($values as $value) { list($startTime, $endTime) = explode('/', $value); $startTime = DateTimeParser::parseDateTime($startTime); - if (substr($endTime, 0, 1) === 'P' || substr($endTime, 0, 2) === '-P') { + if ('P' === substr($endTime, 0, 1) || '-P' === substr($endTime, 0, 2)) { $duration = DateTimeParser::parseDuration($endTime); $endTime = clone $startTime; $endTime = $endTime->add($duration); @@ -514,27 +479,23 @@ 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; - } - - } - } - } /** @@ -543,8 +504,8 @@ class FreeBusyGenerator { * * @return VCalendar */ - protected function generateFreeBusyCalendar(FreeBusyData $fbData) { - + protected function generateFreeBusyCalendar(FreeBusyData $fbData) + { if ($this->baseObject) { $calendar = $this->baseObject; } else { @@ -571,34 +532,29 @@ 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 ($busyType === 'FREE') { + if ('FREE' === $busyType) { 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 ($busyType !== 'BUSY') { + if ('BUSY' !== $busyType) { $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 b954cdc8d..b1cfee367 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,37 +104,34 @@ 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 */ - function processMessage(Message $itipMessage, VCalendar $existingObject = null) { - + public function processMessage(Message $itipMessage, VCalendar $existingObject = null) + { // We only support events at the moment. - if ($itipMessage->component !== 'VEVENT') { + if ('VEVENT' !== $itipMessage->component) { 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; - } /** @@ -161,13 +158,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 */ - function parseEvent($calendar = null, $userHref, $oldCalendar = null) { - + public function parseEvent($calendar = null, $userHref, $oldCalendar = null) + { if ($oldCalendar) { if (is_string($oldCalendar)) { $oldCalendar = Reader::read($oldCalendar); @@ -180,16 +177,15 @@ 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); } @@ -217,7 +213,6 @@ 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. @@ -233,19 +228,17 @@ 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)) { @@ -260,8 +253,8 @@ class Broker { } } } - return []; + return []; } /** @@ -271,13 +264,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. @@ -296,8 +289,8 @@ class Broker { $existingObject->add(clone $component); } } - return $existingObject; + return $existingObject; } /** @@ -307,13 +300,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. @@ -323,8 +316,8 @@ class Broker { $vevent->SEQUENCE = $itipMessage->sequence; } } - return $existingObject; + return $existingObject; } /** @@ -333,13 +326,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) { @@ -364,7 +357,7 @@ class Broker { $masterObject = null; foreach ($existingObject->VEVENT as $vevent) { $recurId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->getValue() : 'master'; - if ($recurId === 'master') { + if ('master' === $recurId) { $masterObject = $vevent; } if (isset($instances[$recurId])) { @@ -386,9 +379,11 @@ 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]); } @@ -401,24 +396,23 @@ 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, @@ -438,17 +432,16 @@ 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; + return $existingObject; } /** @@ -460,22 +453,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) { @@ -485,11 +478,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'], ]; } } @@ -497,7 +490,6 @@ 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']) { @@ -514,7 +506,6 @@ 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. @@ -523,8 +514,13 @@ 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)) { @@ -537,14 +533,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'; @@ -565,15 +561,13 @@ class Broker { // difference in instances that the attendee is invited to. $message->significantChange = - $attendee['forceSend'] === 'REQUEST' || + 'REQUEST' === $attendee['forceSend'] || array_keys($attendee['oldInstances']) != array_keys($attendee['newInstances']) || $oldEventInfo['significantChangeHash'] !== $eventInfo['significantChangeHash']; foreach ($attendee['newInstances'] as $instanceId => $instanceInfo) { - $currentEvent = clone $eventInfo['instances'][$instanceId]; - if ($instanceId === 'master') { - + if ('master' === $instanceId) { // We need to find a list of events that the attendee // is not a part of to add to the list of exceptions. $exceptions = []; @@ -610,24 +604,18 @@ class Broker { if (!isset($attendee['PARTSTAT'])) { $attendee['PARTSTAT'] = 'NEEDS-ACTION'; } - } - } $icalMsg->add($currentEvent); - } - } $message->message = $icalMsg; $messages[] = $message; - } return $messages; - } /** @@ -636,21 +624,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 && $eventInfo['organizerScheduleAgent'] === 'CLIENT') { + protected function parseEventForAttendee(VCalendar $calendar, array $eventInfo, array $oldEventInfo, $attendee) + { + if ($this->scheduleAgentServerRules && 'CLIENT' === $eventInfo['organizerScheduleAgent']) { return []; } // Don't bother generating messages for events that have already been // cancelled. - if ($eventInfo['status'] === 'CANCELLED') { + if ('CANCELLED' === $eventInfo['status']) { return []; } @@ -660,26 +648,22 @@ 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 @@ -687,33 +671,29 @@ 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']) && $instances['master']['newstatus'] !== 'DECLINED') { + if (isset($instances['master']) && 'DECLINED' !== $instances['master']['newstatus']) { 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(); @@ -732,14 +712,13 @@ class Broker { $hasReply = false; foreach ($instances as $instance) { - - if ($instance['oldstatus'] == $instance['newstatus'] && $eventInfo['organizerForceSend'] !== 'REPLY') { + if ($instance['oldstatus'] == $instance['newstatus'] && 'REPLY' !== $eventInfo['organizerForceSend']) { // Skip continue; } $event = $icalMsg->add('VEVENT', [ - 'UID' => $message->uid, + 'UID' => $message->uid, 'SEQUENCE' => $message->sequence, ]); $summary = isset($calendar->VEVENT->SUMMARY) ? $calendar->VEVENT->SUMMARY->getValue() : ''; @@ -773,7 +752,7 @@ class Broker { $event->add('SUMMARY', $summary); } } - if ($instance['id'] !== 'master') { + if ('master' !== $instance['id']) { $dt = DateTimeParser::parse($instance['id'], $eventInfo['timezone']); // Treat is as a DATE field if (strlen($instance['id']) <= 8) { @@ -787,22 +766,21 @@ 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 []; } - } /** @@ -824,12 +802,13 @@ 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; @@ -868,7 +847,7 @@ class Broker { $organizer = $vevent->ORGANIZER->getNormalizedValue(); $organizerName = isset($vevent->ORGANIZER['CN']) ? $vevent->ORGANIZER['CN'] : null; } else { - if ($organizer !== $vevent->ORGANIZER->getNormalizedValue()) { + if (strtoupper($organizer) !== strtoupper($vevent->ORGANIZER->getNormalizedValue())) { throw new SameOrganizerForAllComponentsException('Every instance of the event must have the same organizer.'); } } @@ -878,7 +857,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)) { @@ -894,7 +873,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 ($key === 'INTERVAL' && $val == 1) { + if ('INTERVAL' === $key && 1 == $val) { continue; } if (is_array($val)) { @@ -911,7 +890,7 @@ class Broker { $recurId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->getValue() : 'master'; if (is_null($timezone)) { - if ($recurId === 'master') { + if ('master' === $recurId) { $timezone = $vevent->DTSTART->getDateTime()->getTimeZone(); } else { $timezone = $vevent->{'RECURRENCE-ID'}->getDateTime()->getTimeZone(); @@ -919,10 +898,9 @@ class Broker { } if (isset($vevent->ATTENDEE)) { foreach ($vevent->ATTENDEE as $attendee) { - if ($this->scheduleAgentServerRules && isset($attendee['SCHEDULE-AGENT']) && - strtoupper($attendee['SCHEDULE-AGENT']->getValue()) === 'CLIENT' + 'CLIENT' === strtoupper($attendee['SCHEDULE-AGENT']->getValue()) ) { continue; } @@ -936,45 +914,42 @@ 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 ($prop === 'EXDATE') { - $significantChangeHash .= implode(',', $exdate) . ';'; - } elseif ($prop === 'RRULE') { - $significantChangeHash .= implode(',', $rrule) . ';'; + if ('EXDATE' === $prop) { + $significantChangeHash .= implode(',', $exdate).';'; + } elseif ('RRULE' === $prop) { + $significantChangeHash .= implode(',', $rrule).';'; } else { foreach ($propertyValues as $val) { - $significantChangeHash .= $val->getValue() . ';'; + $significantChangeHash .= $val->getValue().';'; } } } @@ -996,7 +971,5 @@ class Broker { 'significantChangeHash', 'status' ); - } - } diff --git a/vendor/sabre/vobject/lib/ITip/ITipException.php b/vendor/sabre/vobject/lib/ITip/ITipException.php index ad5e53ab4..949563614 100644 --- a/vendor/sabre/vobject/lib/ITip/ITipException.php +++ b/vendor/sabre/vobject/lib/ITip/ITipException.php @@ -11,5 +11,6 @@ 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 bebe2e4fc..43536f172 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,19 +123,14 @@ class Message { * * @return mixed bool|string */ - function getScheduleStatus() { - + public function getScheduleStatus() + { if (!$this->scheduleStatus) { - return false; - } else { - list($scheduleStatus) = explode(';', $this->scheduleStatus); - return $scheduleStatus; + return $scheduleStatus; } - } - } diff --git a/vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php b/vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php index 423b39831..4c48625be 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 50ebc0f49..1d8b67583 100644 --- a/vendor/sabre/vobject/lib/InvalidDataException.php +++ b/vendor/sabre/vobject/lib/InvalidDataException.php @@ -10,5 +10,6 @@ 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 e2845da75..154a7fac5 100644 --- a/vendor/sabre/vobject/lib/Node.php +++ b/vendor/sabre/vobject/lib/Node.php @@ -11,13 +11,8 @@ 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. * @@ -70,7 +65,7 @@ abstract class Node * * @return string */ - abstract function serialize(); + abstract public function serialize(); /** * This method returns an array, with the representation as it should be @@ -78,31 +73,26 @@ abstract class Node * * @return array */ - abstract function jsonSerialize(); + abstract public function jsonSerialize(); /** * This method serializes the data into XML. This is used to create xCard or * xCal documents. * - * @param Xml\Writer $writer XML writer. - * - * @return void + * @param Xml\Writer $writer XML writer */ - abstract function xmlSerialize(Xml\Writer $writer); + abstract public 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 */ - function destroy() { - + public function destroy() + { $this->parent = null; $this->root = null; - } /* {{{ IteratorAggregator interface */ @@ -112,14 +102,13 @@ abstract class Node * * @return ElementList */ - function getIterator() { - + public function getIterator() + { if (!is_null($this->iterator)) { return $this->iterator; } return new ElementList([$this]); - } /** @@ -128,13 +117,10 @@ abstract class Node * Note that this is not actually part of the iterator interface * * @param ElementList $iterator - * - * @return void */ - function setIterator(ElementList $iterator) { - + public function setIterator(ElementList $iterator) + { $this->iterator = $iterator; - } /** @@ -159,10 +145,9 @@ abstract class Node * * @return array */ - function validate($options = 0) { - + public function validate($options = 0) + { return []; - } /* }}} */ @@ -174,18 +159,17 @@ abstract class Node * * @return int */ - function count() { - + public function count() + { $it = $this->getIterator(); - return $it->count(); + return $it->count(); } /* }}} */ /* {{{ ArrayAccess Interface */ - /** * Checks if an item exists through ArrayAccess. * @@ -195,11 +179,11 @@ abstract class Node * * @return bool */ - function offsetExists($offset) { - + public function offsetExists($offset) + { $iterator = $this->getIterator(); - return $iterator->offsetExists($offset); + return $iterator->offsetExists($offset); } /** @@ -211,11 +195,11 @@ abstract class Node * * @return mixed */ - function offsetGet($offset) { - + public function offsetGet($offset) + { $iterator = $this->getIterator(); - return $iterator->offsetGet($offset); + return $iterator->offsetGet($offset); } /** @@ -223,21 +207,20 @@ abstract class Node * * This method just forwards the request to the inner iterator * - * @param int $offset + * @param int $offset * @param mixed $value - * - * @return void */ - function offsetSet($offset, $value) { - + public 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 /** @@ -246,19 +229,18 @@ abstract class Node * This method just forwards the request to the inner iterator * * @param int $offset - * - * @return void */ - function offsetUnset($offset) { - + public 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 87ec75e8f..d77e4b1ed 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,13 +30,12 @@ trait PHPUnitAssertions { * * @param resource|string|Component $expected * @param resource|string|Component $actual - * @param string $message + * @param string $message */ - function assertVObjectEqualsVObject($expected, $actual, $message = '') { - + public 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); } @@ -47,11 +46,11 @@ trait PHPUnitAssertions { $this->fail('Input must be a string, stream or VObject component'); } unset($input->PRODID); - if ($input instanceof Component\VCalendar && (string)$input->CALSCALE === 'GREGORIAN') { + if ($input instanceof Component\VCalendar && 'GREGORIAN' === (string) $input->CALSCALE) { unset($input->CALSCALE); } - return $input; + return $input; }; $expected = $getObj($expected)->serialize(); @@ -61,13 +60,11 @@ 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( @@ -75,8 +72,5 @@ trait PHPUnitAssertions { $actual, $message ); - } - - } diff --git a/vendor/sabre/vobject/lib/Parameter.php b/vendor/sabre/vobject/lib/Parameter.php index a99a33eec..2c9a8e7fd 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 it's value. + * We can deduce the parameter name based on its value. * * @var bool */ @@ -50,8 +50,8 @@ class Parameter extends Node { * @param string $name * @param string $value */ - function __construct(Document $root, $name, $value = null) { - + public function __construct(Document $root, $name, $value = null) + { $this->name = strtoupper($name); $this->root = $root; if (is_null($name)) { @@ -62,13 +62,12 @@ 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); } - } /** @@ -82,85 +81,85 @@ class Parameter extends Node { * * @return string */ - static function guessParameterNameByValue($value) { + public 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; @@ -177,13 +176,10 @@ class Parameter extends Node { * This may be either a single, or multiple strings in an array. * * @param string|array $value - * - * @return void */ - function setValue($value) { - + public function setValue($value) + { $this->value = $value; - } /** @@ -194,27 +190,23 @@ class Parameter extends Node { * * @return string|null */ - function getValue() { - + public 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 */ - function setParts(array $value) { - + public function setParts(array $value) + { $this->value = $value; - } /** @@ -224,8 +216,8 @@ class Parameter extends Node { * * @return array */ - function getParts() { - + public function getParts() + { if (is_array($this->value)) { return $this->value; } elseif (is_null($this->value)) { @@ -233,7 +225,6 @@ class Parameter extends Node { } else { return [$this->value]; } - } /** @@ -243,17 +234,14 @@ class Parameter extends Node { * parameter value list. * * @param string|array $part - * - * @return void */ - function addValue($part) { - + public 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); } - } /** @@ -267,13 +255,12 @@ class Parameter extends Node { * * @return bool */ - function has($value) { - + public function has($value) + { return in_array( strtolower($value), - array_map('strtolower', (array)$this->value) + array_map('strtolower', (array) $this->value) ); - } /** @@ -281,25 +268,24 @@ class Parameter extends Node { * * @return string */ - function serialize() { - + public function serialize() + { $value = $this->getParts(); - if (count($value) === 0) { - return $this->name . '='; + if (0 === count($value)) { + return $this->name.'='; } - if ($this->root->getDocumentType() === Document::VCARD21 && $this->noName) { - + if (Document::VCARD21 === $this->root->getDocumentType() && $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. @@ -318,24 +304,23 @@ 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; } - } ); - } /** @@ -344,26 +329,22 @@ class Parameter extends Node { * * @return array */ - function jsonSerialize() { - + public 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - function xmlSerialize(Xml\Writer $writer) { - + public function xmlSerialize(Xml\Writer $writer) + { foreach (explode(',', $this->value) as $value) { $writer->writeElement('text', $value); } - } /** @@ -371,10 +352,9 @@ class Parameter extends Node { * * @return string */ - function __toString() { - - return (string)$this->getValue(); - + public function __toString() + { + return (string) $this->getValue(); } /** @@ -382,13 +362,12 @@ class Parameter extends Node { * * @return ElementList */ - function getIterator() { - - if (!is_null($this->iterator)) + public 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 d96d20720..a8f497b24 100644 --- a/vendor/sabre/vobject/lib/ParseException.php +++ b/vendor/sabre/vobject/lib/ParseException.php @@ -9,5 +9,6 @@ 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 a77258a2e..3fd307e97 100644 --- a/vendor/sabre/vobject/lib/Parser/Json.php +++ b/vendor/sabre/vobject/lib/Parser/Json.php @@ -4,6 +4,7 @@ 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; @@ -16,8 +17,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. * @@ -41,12 +42,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 */ - function parse($input = null, $options = 0) { - + public function parse($input = null, $options = 0) + { if (!is_null($input)) { $this->setInput($input); } @@ -59,28 +60,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; - } /** @@ -90,35 +91,34 @@ class Json extends Parser { * * @return \Sabre\VObject\Component */ - function parseComponent(array $jComp) { - + public 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 */ - function parseProperty(array $jProp) { - + public 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 ($defaultPropertyClass === 'Sabre\VObject\Property\FlatText') { + if ('Sabre\VObject\Property\FlatText' === $defaultPropertyClass) { $defaultPropertyClass = 'Sabre\VObject\Property\Text'; } @@ -168,22 +168,19 @@ 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 */ - function setInput($input) { - + public function setInput($input) + { if (is_resource($input)) { $input = stream_get_contents($input); } @@ -191,7 +188,5 @@ 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 742641236..10dcec89c 100644 --- a/vendor/sabre/vobject/lib/Parser/MimeDir.php +++ b/vendor/sabre/vobject/lib/Parser/MimeDir.php @@ -7,6 +7,7 @@ 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; /** @@ -22,8 +23,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. * @@ -70,12 +71,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 */ - function parse($input = null, $options = 0) { - + public function parse($input = null, $options = 0) + { $this->root = null; if (!is_null($input)) { @@ -89,7 +90,6 @@ class MimeDir extends Parser { $this->parseDocument(); return $this->root; - } /** @@ -104,24 +104,21 @@ class MimeDir extends Parser { * * @param string $charset */ - function setCharset($charset) { - + public 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 */ - function setInput($input) { - + public function setInput($input) + { // Resetting the parser $this->lineIndex = 0; $this->startLine = 0; @@ -137,59 +134,53 @@ 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) - && ord($line[0]) === 0xef - && ord($line[1]) === 0xbb - && ord($line[2]) === 0xbf) { + && 0xef === ord($line[0]) + && 0xbb === ord($line[1]) + && 0xbf === ord($line[2])) { $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 (strtoupper(substr($line, 0, 4)) === 'END:') { + if ('END:' === strtoupper(substr($line, 0, 4))) { 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.'"'); } - } /** @@ -200,46 +191,40 @@ class MimeDir extends Parser { * * @return Node */ - protected function parseLine($line) { - + protected function parseLine($line) + { // Start of a new component - if (strtoupper(substr($line, 0, 6)) === 'BEGIN:') { - + if ('BEGIN:' === strtoupper(substr($line, 0, 6))) { $component = $this->root->createComponent(substr($line, 6), [], false); while (true) { - // Reading until we hit END: $line = $this->readLine(); - if (strtoupper(substr($line, 0, 4)) === 'END:') { + if ('END:' === strtoupper(substr($line, 0, 4))) { 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; + return $property; } - } /** @@ -248,7 +233,7 @@ class MimeDir extends Parser { * * If that was not the case, we store it here. * - * @var null|string + * @var string|null */ protected $lineBuffer; @@ -281,8 +266,8 @@ class MimeDir extends Parser { * * @return string */ - protected function readLine() { - + protected function readLine() + { if (!\is_null($this->lineBuffer)) { $rawLine = $this->lineBuffer; $this->lineBuffer = null; @@ -292,15 +277,15 @@ class MimeDir extends Parser { $rawLine = \fgets($this->input); - if ($eof || (\feof($this->input) && $rawLine === false)) { + if ($eof || (\feof($this->input) && false === $rawLine)) { throw new EofException('End of document reached prematurely'); } - if ($rawLine === false) { + if (false === $rawLine) { 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; @@ -308,34 +293,30 @@ 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 ($nextLine[0] === "\t" || $nextLine[0] === " ") { + if ("\t" === $nextLine[0] || ' ' === $nextLine[0]) { $curLine = \substr($nextLine, 1); $line .= $curLine; - $rawLine .= "\n " . $curLine; + $rawLine .= "\n ".$curLine; } else { $this->lineBuffer = $nextLine; break; } - } $this->rawLine = $rawLine; - return $line; + 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 { @@ -360,17 +341,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 @@ -378,9 +359,8 @@ 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']; @@ -389,7 +369,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; @@ -398,7 +378,7 @@ class MimeDir extends Parser { } else { $property['parameters'][$lastParam] = [ $property['parameters'][$lastParam], - $value + $value, ]; } continue; @@ -422,7 +402,6 @@ class MimeDir extends Parser { // @codeCoverageIgnoreStart throw new \LogicException('This code should not be reachable'); // @codeCoverageIgnoreEnd - } if (is_null($property['value'])) { @@ -432,11 +411,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 it's name. + // a value. We can deduce the value based on its name. // // Our parser will get those as parameters without a value instead, so // we're filtering these parameters out first. @@ -457,31 +436,30 @@ class MimeDir extends Parser { $propObj->add(null, $namelessParameter); } - if (strtoupper($propObj['ENCODING']) === 'QUOTED-PRINTABLE') { + if ('QUOTED-PRINTABLE' === strtoupper($propObj['ENCODING'])) { $propObj->setQuotedPrintableValue($this->extractQuotedPrintableValue()); } else { $charset = $this->charset; - if ($this->root->getDocumentType() === Document::VCARD21 && isset($propObj['CHARSET'])) { + if (Document::VCARD21 === $this->root->getDocumentType() && 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; - } /** @@ -546,11 +524,11 @@ class MimeDir extends Parser { * * @return string|string[] */ - static function unescapeValue($input, $delimiter = ';') { - + public static function unescapeValue($input, $delimiter = ';') + { $regex = '# (?: (\\\\ (?: \\\\ | N | n | ; | , ) )'; if ($delimiter) { - $regex .= ' | (' . $delimiter . ')'; + $regex .= ' | ('.$delimiter.')'; } $regex .= ') #x'; @@ -560,36 +538,33 @@ 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; + return $delimiter ? $resultArray : $result; } /** @@ -623,21 +598,19 @@ 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 @@ -658,8 +631,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 @@ -682,16 +655,14 @@ 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 ca8bc0add..b7b611430 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,12 +41,10 @@ abstract class Parser { * Optionally, it's possible to parse the input stream here. * * @param mixed $input - * @param int $options Any parser options (OPTION constants). - * - * @return void + * @param int $options any parser options (OPTION constants) */ - function __construct($input = null, $options = 0) { - + public function __construct($input = null, $options = 0) + { if (!is_null($input)) { $this->setInput($input); } @@ -62,19 +60,16 @@ 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 function parse($input = null, $options = 0); + abstract public function parse($input = null, $options = 0); /** * Sets the input data. * * @param mixed $input - * - * @return void */ - abstract function setInput($input); - + abstract public function setInput($input); } diff --git a/vendor/sabre/vobject/lib/Parser/XML.php b/vendor/sabre/vobject/lib/Parser/XML.php index 5ac423984..90f262d9e 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,32 +50,29 @@ 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). - * - * @return void + * @param int $options any parser options (OPTION constants) */ - function __construct($input = null, $options = 0) { - + public 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 */ - function parse($input = null, $options = 0) { - + public function parse($input = null, $options = 0) + { if (!is_null($input)) { $this->setInput($input); } @@ -89,29 +86,25 @@ 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; @@ -121,15 +114,11 @@ 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); @@ -141,35 +130,28 @@ 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 - * - * @return void + * @param string $propertyNamePrefix */ - 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; @@ -178,17 +160,16 @@ class XML extends Parser { $propertyType = 'text'; // A property which is not part of the standard. - if ($namespace !== self::XCAL_NAMESPACE - && $namespace !== self::XCARD_NAMESPACE) { - + if (self::XCAL_NAMESPACE !== $namespace + && self::XCARD_NAMESPACE !== $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]; @@ -204,8 +185,7 @@ class XML extends Parser { } // xCard group. - if ($propertyName === 'group') { - + if ('group' === $propertyName) { if (!isset($xmlProperty['attributes']['name'])) { continue; } @@ -213,24 +193,22 @@ 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) { @@ -239,19 +217,16 @@ 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; @@ -277,6 +252,7 @@ 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': @@ -290,16 +266,12 @@ 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']; } } @@ -320,29 +292,24 @@ 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, @@ -354,24 +321,20 @@ 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 - * - * @return void + * @param string $name + * @param array $parameters + * @param string $type + * @param mixed $value */ - protected function createProperty(Component $parentComponent, $name, $parameters, $type, $value) { - + protected function createProperty(Component $parentComponent, $name, $parameters, $type, $value) + { $property = $this->root->createProperty( $name, null, @@ -380,36 +343,30 @@ class XML extends Parser { ); $parentComponent->add($property); $property->setXmlValue($value); - } /** * Sets the input data. * * @param resource|string $input - * - * @return void */ - function setInput($input) { - + public 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; - } /** @@ -419,10 +376,10 @@ class XML extends Parser { * * @return string */ - protected static function getTagName($clarkedTagName) { - + protected static function getTagName($clarkedTagName) + { list(, $tagName) = SabreXml\Service::parseClarkNotation($clarkedTagName); - return $tagName; + 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 14d798433..e26540036 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,11 +37,12 @@ class KeyValue extends SabreXml\Element\KeyValue { * * @return mixed */ - static function xmlDeserialize(SabreXml\Reader $reader) { - + public static function xmlDeserialize(SabreXml\Reader $reader) + { // If there's no children, we don't do anything. if ($reader->isEmptyElement) { $reader->next(); + return []; } @@ -49,22 +50,16 @@ class KeyValue extends SabreXml\Element\KeyValue { $reader->read(); do { - - if ($reader->nodeType === SabreXml\Reader::ELEMENT) { - + if (SabreXml\Reader::ELEMENT === $reader->nodeType) { $name = $reader->localName; $values[$name] = $reader->parseCurrentElement()['value']; - } else { $reader->read(); } - - } while ($reader->nodeType !== SabreXml\Reader::END_ELEMENT); + } while (SabreXml\Reader::END_ELEMENT !== $reader->nodeType); $reader->read(); return $values; - } - } diff --git a/vendor/sabre/vobject/lib/Property.php b/vendor/sabre/vobject/lib/Property.php index 3d1775fa2..6105cb0f0 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,16 +61,14 @@ 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 - * - * @return void + * @param array $parameters List of parameters + * @param string $group The vcard property group */ - function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null) { - + public function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null) + { $this->name = $name; $this->group = $group; @@ -83,7 +81,6 @@ abstract class Property extends Node { if (!is_null($value)) { $this->setValue($value); } - } /** @@ -92,13 +89,10 @@ abstract class Property extends Node { * This may be either a single, or multiple strings in an array. * * @param string|array $value - * - * @return void */ - function setValue($value) { - + public function setValue($value) + { $this->value = $value; - } /** @@ -112,12 +106,12 @@ abstract class Property extends Node { * * @return string */ - function getValue() { - + public function getValue() + { if (is_array($this->value)) { - if (count($this->value) == 0) { + if (0 == count($this->value)) { return; - } elseif (count($this->value) === 1) { + } elseif (1 === count($this->value)) { return $this->value[0]; } else { return $this->getRawMimeDirValue(); @@ -125,20 +119,16 @@ abstract class Property extends Node { } else { return $this->value; } - } /** * Sets a multi-valued property. * * @param array $parts - * - * @return void */ - function setParts(array $parts) { - + public function setParts(array $parts) + { $this->value = $parts; - } /** @@ -149,8 +139,8 @@ abstract class Property extends Node { * * @return array */ - function getParts() { - + public function getParts() + { if (is_null($this->value)) { return []; } elseif (is_array($this->value)) { @@ -158,7 +148,6 @@ abstract class Property extends Node { } else { return [$this->value]; } - } /** @@ -166,22 +155,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 it's name. + * If nameless parameter is added, we try to guess its name. * - * @param string $name - * @param string|null|array $value + * @param string $name + * @param string|array|null $value */ - function add($name, $value = null) { + public function add($name, $value = null) + { $noName = false; - if ($name === null) { + if (null === $name) { $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; @@ -193,10 +182,9 @@ abstract class Property extends Node { * * @return array */ - function parameters() { - + public function parameters() + { return $this->parameters; - } /** @@ -207,7 +195,7 @@ abstract class Property extends Node { * * @return string */ - abstract function getValueType(); + abstract public function getValueType(); /** * Sets a raw value coming from a mimedir (iCalendar/vCard) file. @@ -216,35 +204,33 @@ abstract class Property extends Node { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - abstract function setRawMimeDirValue($val); + abstract public function setRawMimeDirValue($val); /** * Returns a raw mime-dir representation of the value. * * @return string */ - abstract function getRawMimeDirValue(); + abstract public function getRawMimeDirValue(); /** * Turns the object back into a serialized blob. * * @return string */ - function serialize() { - + public 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( '/( @@ -258,7 +244,6 @@ abstract class Property extends Node { // remove single space after last CRLF return \substr($str, 0, -1); - } /** @@ -268,10 +253,9 @@ abstract class Property extends Node { * * @return array */ - function getJsonValue() { - + public function getJsonValue() + { return $this->getParts(); - } /** @@ -280,17 +264,14 @@ abstract class Property extends Node { * The value must always be an array. * * @param array $value - * - * @return void */ - function setJsonValue(array $value) { - - if (count($value) === 1) { + public function setJsonValue(array $value) + { + if (1 === count($value)) { $this->setValue(reset($value)); } else { $this->setValue($value); } - } /** @@ -299,12 +280,12 @@ abstract class Property extends Node { * * @return array */ - function jsonSerialize() { - + public function jsonSerialize() + { $parameters = []; foreach ($this->parameters as $parameter) { - if ($parameter->name === 'VALUE') { + if ('VALUE' === $parameter->name) { continue; } $parameters[strtolower($parameter->name)] = $parameter->jsonSerialize(); @@ -318,7 +299,7 @@ abstract class Property extends Node { return array_merge( [ strtolower($this->name), - (object)$parameters, + (object) $parameters, strtolower($this->getValueType()), ], $this->getJsonValue() @@ -330,78 +311,63 @@ abstract class Property extends Node { * object. * * @param array $value - * - * @return void */ - function setXmlValue(array $value) { - + public 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - function xmlSerialize(Xml\Writer $writer) { - + public function xmlSerialize(Xml\Writer $writer) + { $parameters = []; foreach ($this->parameters as $parameter) { - - if ($parameter->name === 'VALUE') { + if ('VALUE' === $parameter->name) { 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - 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); } } - } /** @@ -413,10 +379,9 @@ abstract class Property extends Node { * * @return string */ - function __toString() { - - return (string)$this->getValue(); - + public function __toString() + { + return (string) $this->getValue(); } /* ArrayAccess interface {{{ */ @@ -428,17 +393,21 @@ abstract class Property extends Node { * * @return bool */ - function offsetExists($name) { - - if (is_int($name)) return parent::offsetExists($name); + public 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; + return false; } /** @@ -450,9 +419,11 @@ abstract class Property extends Node { * * @return Node */ - function offsetGet($name) { - - if (is_int($name)) return parent::offsetGet($name); + public function offsetGet($name) + { + if (is_int($name)) { + return parent::offsetGet($name); + } $name = strtoupper($name); if (!isset($this->parameters[$name])) { @@ -460,19 +431,16 @@ abstract class Property extends Node { } return $this->parameters[$name]; - } /** * Creates a new parameter. * * @param string $name - * @param mixed $value - * - * @return void + * @param mixed $value */ - function offsetSet($name, $value) { - + public function offsetSet($name, $value) + { if (is_int($name)) { parent::offsetSet($name, $value); // @codeCoverageIgnoreStart @@ -484,18 +452,15 @@ 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 */ - function offsetUnset($name) { - + public function offsetUnset($name) + { if (is_int($name)) { parent::offsetUnset($name); // @codeCoverageIgnoreStart @@ -506,23 +471,20 @@ 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 */ - function __clone() { - + public function __clone() + { foreach ($this->parameters as $key => $child) { $this->parameters[$key] = clone $child; $this->parameters[$key]->parent = $this; } - } /** @@ -543,13 +505,12 @@ abstract class Property extends Node { * * @return array */ - function validate($options = 0) { - + public 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) { @@ -558,29 +519,27 @@ 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. @@ -589,46 +548,52 @@ 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 ($this->root->getDocumentType() === Document::VCARD40) { + if (Document::VCARD40 === $this->root->getDocumentType()) { $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 @@ -637,7 +602,6 @@ abstract class Property extends Node { } return $warnings; - } /** @@ -645,17 +609,13 @@ abstract class Property extends Node { * * It's intended to remove all circular references, so PHP can easily clean * it up. - * - * @return void */ - function destroy() { - + public 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 d54cae25d..830dd9028 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,25 +34,18 @@ class Binary extends Property { * This may be either a single, or multiple strings in an array. * * @param string|array $value - * - * @return void */ - function setValue($value) { - + public function setValue($value) + { if (is_array($value)) { - - if (count($value) === 1) { + if (1 === count($value)) { $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; - } - } /** @@ -62,13 +55,10 @@ class Binary extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public function setRawMimeDirValue($val) + { $this->value = base64_decode($val); - } /** @@ -76,10 +66,9 @@ class Binary extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return base64_encode($this->value); - } /** @@ -90,10 +79,9 @@ class Binary extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'BINARY'; - } /** @@ -103,10 +91,9 @@ class Binary extends Property { * * @return array */ - function getJsonValue() { - + public function getJsonValue() + { return [base64_encode($this->getValue())]; - } /** @@ -115,14 +102,10 @@ class Binary extends Property { * The value must always be an array. * * @param array $value - * - * @return void */ - function setJsonValue(array $value) { - + public 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 6f5887e25..1b219bb8c 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,14 +26,11 @@ class Boolean extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - - $val = strtoupper($val) === 'TRUE' ? true : false; + public function setRawMimeDirValue($val) + { + $val = 'TRUE' === strtoupper($val) ? true : false; $this->setValue($val); - } /** @@ -41,10 +38,9 @@ class Boolean extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return $this->value ? 'TRUE' : 'FALSE'; - } /** @@ -55,10 +51,9 @@ class Boolean extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'BOOLEAN'; - } /** @@ -66,19 +61,15 @@ class Boolean extends Property { * object. * * @param array $value - * - * @return void */ - function setXmlValue(array $value) { - + public 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 2c7b43c29..d15cfe051 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,14 +37,10 @@ class FlatText extends Text { * Overriding this so we're not splitting on a ; delimiter. * * @param string $val - * - * @return void */ - function setQuotedPrintableValue($val) { - + public 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 15b119549..208d74516 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,17 +32,14 @@ class FloatValue extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public function setRawMimeDirValue($val) + { $val = explode($this->delimiter, $val); foreach ($val as &$item) { - $item = (float)$item; + $item = (float) $item; } $this->setParts($val); - } /** @@ -50,13 +47,12 @@ class FloatValue extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return implode( $this->delimiter, $this->getParts() ); - } /** @@ -67,10 +63,9 @@ class FloatValue extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'FLOAT'; - } /** @@ -80,20 +75,19 @@ class FloatValue extends Property { * * @return array */ - function getJsonValue() { - + public 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 ($this->name === 'GEO') { + if ('GEO' === $this->name) { return [$val]; } return $val; - } /** @@ -101,42 +95,32 @@ class FloatValue extends Property { * object. * * @param array $value - * - * @return void */ - function setXmlValue(array $value) { - + public 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - 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 ($this->name === 'GEO') { - + if ('GEO' === $this->name) { $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 a0c4a9b9a..e89bb31f9 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,10 +32,9 @@ class CalAddress extends Text { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'CAL-ADDRESS'; - } /** @@ -48,14 +47,14 @@ class CalAddress extends Text { * * @return string */ - function getNormalizedValue() { - + public 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 378a0d60a..d8e86d13e 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 d580d4f68..7eb3e0bb7 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,17 +40,14 @@ class DateTime extends Property { * You may also specify DateTime objects here. * * @param array $parts - * - * @return void */ - function setParts(array $parts) { - + public function setParts(array $parts) + { if (isset($parts[0]) && $parts[0] instanceof DateTimeInterface) { $this->setDateTimes($parts); } else { parent::setParts($parts); } - } /** @@ -61,11 +58,9 @@ class DateTime extends Property { * Instead of strings, you may also use DateTime here. * * @param string|array|DateTimeInterface $value - * - * @return void */ - function setValue($value) { - + public function setValue($value) + { if (is_array($value) && isset($value[0]) && $value[0] instanceof DateTimeInterface) { $this->setDateTimes($value); } elseif ($value instanceof DateTimeInterface) { @@ -73,7 +68,6 @@ class DateTime extends Property { } else { parent::setValue($value); } - } /** @@ -83,13 +77,10 @@ class DateTime extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public function setRawMimeDirValue($val) + { $this->setValue(explode($this->delimiter, $val)); - } /** @@ -97,10 +88,9 @@ class DateTime extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return implode($this->delimiter, $this->getParts()); - } /** @@ -108,10 +98,9 @@ class DateTime extends Property { * * @return bool */ - function hasTime() { - - return strtoupper((string)$this['VALUE']) !== 'DATE'; - + public function hasTime() + { + return 'DATE' !== strtoupper((string) $this['VALUE']); } /** @@ -119,15 +108,14 @@ class DateTime extends Property { * * Note that DATE is always floating. */ - function isFloating() { - + public function isFloating() + { return !$this->hasTime() || ( !isset($this['TZID']) && - strpos($this->getValue(), 'Z') === false + false === strpos($this->getValue(), 'Z') ); - } /** @@ -143,15 +131,16 @@ class DateTime extends Property { * * @param DateTimeZone $timeZone * - * @return DateTimeImmutable + * @return \DateTimeImmutable */ - function getDateTime(DateTimeZone $timeZone = null) { - + public function getDateTime(DateTimeZone $timeZone = null) + { $dt = $this->getDateTimes($timeZone); - if (!$dt) return; + if (!$dt) { + return; + } return $dt[0]; - } /** @@ -163,38 +152,35 @@ class DateTime extends Property { * * @param DateTimeZone $timeZone * - * @return DateTimeImmutable[] + * @return \DateTimeImmutable[] * @return \DateTime[] */ - function getDateTimes(DateTimeZone $timeZone = null) { - + public 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; + return $dts; } /** * Sets the property as a DateTime object. * * @param DateTimeInterface $dt - * @param bool isFloating If set to true, timezones will be ignored. - * - * @return void + * @param bool isFloating If set to true, timezones will be ignored */ - function setDateTime(DateTimeInterface $dt, $isFloating = false) { - + public function setDateTime(DateTimeInterface $dt, $isFloating = false) + { $this->setDateTimes([$dt], $isFloating); - } /** @@ -204,21 +190,17 @@ 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. - * - * @return void + * @param bool isFloating If set to true, timezones will be ignored */ - function setDateTimes(array $dt, $isFloating = false) { - + public 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; @@ -238,25 +220,18 @@ 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; - } /** @@ -267,10 +242,9 @@ class DateTime extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return $this->hasTime() ? 'DATE-TIME' : 'DATE'; - } /** @@ -280,8 +254,8 @@ class DateTime extends Property { * * @return array */ - function getJsonValue() { - + public function getJsonValue() + { $dts = $this->getDateTimes(); $hasTime = $this->hasTime(); $isFloating = $this->isFloating(); @@ -290,18 +264,15 @@ 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 ); - } /** @@ -310,26 +281,21 @@ class DateTime extends Property { * The value must always be an array. * * @param array $value - * - * @return void */ - function setJsonValue(array $value) { - + public 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 ) ); - } /** @@ -337,20 +303,17 @@ class DateTime extends Property { * VALUE from DATE-TIME to DATE or vice-versa. * * @param string $name - * @param mixed $value - * - * @return void + * @param mixed $value */ - function offsetSet($name, $value) { - + public function offsetSet($name, $value) + { parent::offsetSet($name, $value); - if (strtoupper($name) !== 'VALUE') { + if ('VALUE' !== strtoupper($name)) { return; } // This will ensure that dates are correctly encoded. $this->setDateTimes($this->getDateTimes()); - } /** @@ -375,30 +338,30 @@ class DateTime extends Property { * * @return array */ - function validate($options = 0) { - + public 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; + return $messages; } } diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php b/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php index 7b7e1ce8e..87f008160 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,13 +33,10 @@ class Duration extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public function setRawMimeDirValue($val) + { $this->setValue(explode($this->delimiter, $val)); - } /** @@ -47,10 +44,9 @@ class Duration extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return implode($this->delimiter, $this->getParts()); - } /** @@ -61,10 +57,9 @@ class Duration extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'DURATION'; - } /** @@ -74,12 +69,11 @@ class Duration extends Property { * * @return \DateInterval */ - function getDateInterval() { - + public function getDateInterval() + { $parts = $this->getParts(); $value = $parts[0]; - return DateTimeParser::parseDuration($value); + 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 d35b425aa..17bfa5c5c 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,13 +34,10 @@ class Period extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public function setRawMimeDirValue($val) + { $this->setValue(explode($this->delimiter, $val)); - } /** @@ -48,10 +45,9 @@ class Period extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return implode($this->delimiter, $this->getParts()); - } /** @@ -62,10 +58,9 @@ class Period extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'PERIOD'; - } /** @@ -74,21 +69,16 @@ class Period extends Property { * The value must always be an array. * * @param array $value - * - * @return void */ - function setJsonValue(array $value) { - + public function setJsonValue(array $value) + { $value = array_map( - function($item) { - + function ($item) { return strtr(implode('/', $item), [':' => '', '-' => '']); - }, $value ); parent::setJsonValue($value); - } /** @@ -98,20 +88,19 @@ class Period extends Property { * * @return array */ - function getJsonValue() { - + public function getJsonValue() + { $return = []; foreach ($this->getParts() as $item) { - list($start, $end) = explode('/', $item, 2); $start = DateTimeParser::parseDateTime($start); // This is a duration value. - if ($end[0] === 'P') { + if ('P' === $end[0]) { $return[] = [ $start->format('Y-m-d\\TH:i:s'), - $end + $end, ]; } else { $end = DateTimeParser::parseDateTime($end); @@ -120,36 +109,29 @@ 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - 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 ($value[0][1][0] === 'P') { + if ('P' === $value[0][1][0]) { $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 434b77088..baeda781e 100644 --- a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php +++ b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php @@ -22,36 +22,33 @@ 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 */ - function setValue($value) { - + public 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 (strpos($v, ',') !== false) { + if (false !== strpos($v, ',')) { $v = explode(',', $v); } - if (strcmp($k, 'until') === 0) { + if (0 === strcmp($k, 'until')) { $v = strtr($v, [':' => '', '-' => '']); } } elseif (is_array($v)) { @@ -66,7 +63,6 @@ class Recur extends Property { } else { throw new \InvalidArgumentException('You must either pass a string, or a key=>value array'); } - } /** @@ -80,26 +76,24 @@ class Recur extends Property { * * @return string */ - function getValue() { - + public 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)); + return strtoupper(implode(';', $out)); } /** * Sets a multi-valued property. * * @param array $parts - * @return void */ - function setParts(array $parts) { - + public function setParts(array $parts) + { $this->setValue($parts); - } /** @@ -110,10 +104,9 @@ class Recur extends Property { * * @return array */ - function getParts() { - + public function getParts() + { return $this->value; - } /** @@ -123,13 +116,10 @@ class Recur extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public function setRawMimeDirValue($val) + { $this->setValue($val); - } /** @@ -137,10 +127,9 @@ class Recur extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return $this->getValue(); - } /** @@ -151,10 +140,9 @@ class Recur extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'RECUR'; - } /** @@ -164,39 +152,36 @@ class Recur extends Property { * * @return array */ - function getJsonValue() { - + public function getJsonValue() + { $values = []; foreach ($this->getParts() as $k => $v) { - if (strcmp($k, 'UNTIL') === 0) { + if (0 === strcmp($k, 'UNTIL')) { $date = new DateTime($this->root, null, $v); $values[strtolower($k)] = $date->getJsonValue()[0]; - } elseif (strcmp($k, 'COUNT') === 0) { + } elseif (0 === strcmp($k, 'COUNT')) { $values[strtolower($k)] = intval($v); } else { $values[strtolower($k)] = $v; } } - return [$values]; + 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - 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); } - } /** @@ -206,12 +191,11 @@ class Recur extends Property { * * @return array */ - static function stringToArray($value) { - + public static function stringToArray($value) + { $value = strtoupper($value); $newValue = []; foreach (explode(';', $value) as $part) { - // Skipping empty parts. if (empty($part)) { continue; @@ -219,11 +203,10 @@ class Recur extends Property { list($partName, $partValue) = explode('=', $part); // The value itself had multiple values.. - if (strpos($partValue, ',') !== false) { + if (false !== strpos($partValue, ',')) { $partValue = explode(',', $partValue); } $newValue[$partName] = $partValue; - } return $newValue; @@ -251,32 +234,31 @@ class Recur extends Property { * * @return array */ - function validate($options = 0) { - + public 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 ($key == 'BYMONTH') { - $byMonth = (array)$value; + } elseif ('BYMONTH' == $key) { + $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)) { @@ -291,14 +273,14 @@ class Recur extends Property { if (is_array($value) && empty($values[$key])) { unset($values[$key]); } - } elseif ($key == 'BYWEEKNO') { - $byWeekNo = (array)$value; + } elseif ('BYWEEKNO' == $key) { + $byWeekNo = (array) $value; foreach ($byWeekNo as $i => $v) { - if (!is_numeric($v) || (int)$v < -53 || (int)$v == 0 || (int)$v > 53) { + if (!is_numeric($v) || (int) $v < -53 || 0 == (int) $v || (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)) { @@ -313,14 +295,14 @@ class Recur extends Property { if (is_array($value) && empty($values[$key])) { unset($values[$key]); } - } elseif ($key == 'BYYEARDAY') { - $byYearDay = (array)$value; + } elseif ('BYYEARDAY' == $key) { + $byYearDay = (array) $value; foreach ($byYearDay as $i => $v) { - if (!is_numeric($v) || (int)$v < -366 || (int)$v == 0 || (int)$v > 366) { + if (!is_numeric($v) || (int) $v < -366 || 0 == (int) $v || (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)) { @@ -336,13 +318,12 @@ 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); @@ -353,7 +334,5 @@ 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 5bd1887fa..ddd71d731 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,13 +24,10 @@ class IntegerValue extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - - $this->setValue((int)$val); - + public function setRawMimeDirValue($val) + { + $this->setValue((int) $val); } /** @@ -38,10 +35,9 @@ class IntegerValue extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return $this->value; - } /** @@ -52,10 +48,9 @@ class IntegerValue extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'INTEGER'; - } /** @@ -65,10 +60,9 @@ class IntegerValue extends Property { * * @return array */ - function getJsonValue() { - - return [(int)$this->getValue()]; - + public function getJsonValue() + { + return [(int) $this->getValue()]; } /** @@ -76,13 +70,10 @@ class IntegerValue extends Property { * object. * * @param array $value - * - * @return void */ - function setXmlValue(array $value) { - + public 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 47a86ccc9..23c945551 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,16 +64,14 @@ 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 - * - * @return void + * @param array $parameters List of parameters + * @param string $group The vcard property group */ - function __construct(Component $root, $name, $value = null, array $parameters = [], $group = null) { - + public 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 @@ -84,7 +82,6 @@ class Text extends Property { } parent::__construct($root, $name, $value, $parameters, $group); - } /** @@ -94,24 +91,19 @@ class Text extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public function setRawMimeDirValue($val) + { $this->setValue(MimeDir::unescapeValue($val, $this->delimiter)); - } /** * Sets the value as a quoted-printable encoded string. * * @param string $val - * - * @return void */ - function setQuotedPrintableValue($val) { - + public function setQuotedPrintableValue($val) + { $val = quoted_printable_decode($val); // Quoted printable only appears in vCard 2.1, and the only character @@ -123,7 +115,6 @@ class Text extends Property { $regex = '# (?<!\\\\) ; #x'; $matches = preg_split($regex, $val); $this->setValue($matches); - } /** @@ -131,8 +122,8 @@ class Text extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { $val = $this->getParts(); if (isset($this->minimumPropertyValues[$this->name])) { @@ -140,7 +131,6 @@ class Text extends Property { } foreach ($val as &$item) { - if (!is_array($item)) { $item = [$item]; } @@ -150,19 +140,17 @@ class Text extends Property { $subItem, [ '\\' => '\\\\', - ';' => '\;', - ',' => '\,', + ';' => '\;', + ',' => '\,', "\n" => '\n', - "\r" => "", + "\r" => '', ] ); } $item = implode(',', $item); - } return implode($this->delimiter, $val); - } /** @@ -172,16 +160,16 @@ class Text extends Property { * * @return array */ - function getJsonValue() { - + public 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(); + return $this->getParts(); } /** @@ -192,10 +180,9 @@ class Text extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'TEXT'; - } /** @@ -203,10 +190,10 @@ class Text extends Property { * * @return string */ - function serialize() { - + public function serialize() + { // We need to kick in a special type of encoding, if it's a 2.1 vcard. - if ($this->root->getDocumentType() !== Document::VCARD21) { + if (Document::VCARD21 !== $this->root->getDocumentType()) { return parent::serialize(); } @@ -228,22 +215,19 @@ 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 ($param->getValue() === 'QUOTED-PRINTABLE') { + if ('QUOTED-PRINTABLE' === $param->getValue()) { continue; } - $str .= ';' . $param->serialize(); - + $str .= ';'.$param->serialize(); } - - // If the resulting value contains a \n, we must encode it as // quoted-printable. - if (\strpos($val, "\n") !== false) { - + if (false !== \strpos($val, "\n")) { $str .= ';ENCODING=QUOTED-PRINTABLE:'; $lastLine = $str; $out = null; @@ -252,26 +236,27 @@ 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"; - return $out; + if (!\is_null($lastLine)) { + $out .= $lastLine."\r\n"; + } + return $out; } else { - $str .= ':' . $val; + $str .= ':'.$val; $str = \preg_replace( '/( @@ -285,24 +270,20 @@ 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - 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, @@ -312,7 +293,6 @@ class Text extends Property { }; switch ($this->name) { - // Special-casing the REQUEST-STATUS property. // // See: @@ -332,14 +312,14 @@ class Text extends Property { 'given', 'additional', 'prefix', - 'suffix' + 'suffix', ]); break; case 'GENDER': $map([ 'sex', - 'text' + 'text', ]); break; @@ -351,21 +331,20 @@ class Text extends Property { 'locality', 'region', 'code', - 'country' + 'country', ]); break; case 'CLIENTPIDMAP': $map([ 'sourceid', - 'uri' + 'uri', ]); break; default: parent::xmlSerializeValue($writer); } - } /** @@ -386,28 +365,26 @@ class Text extends Property { * * @return array */ - function validate($options = 0) { - + public 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; + return $warnings; } } diff --git a/vendor/sabre/vobject/lib/Property/Time.php b/vendor/sabre/vobject/lib/Property/Time.php index dbafc3b85..7aeafc8d0 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,10 +31,9 @@ class Time extends Text { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'TIME'; - } /** @@ -43,11 +42,9 @@ class Time extends Text { * The value must always be an array. * * @param array $value - * - * @return void */ - function setJsonValue(array $value) { - + public function setJsonValue(array $value) + { // Removing colons from value. $value = str_replace( ':', @@ -55,12 +52,11 @@ class Time extends Text { $value ); - if (count($value) === 1) { + if (1 === count($value)) { $this->setValue(reset($value)); } else { $this->setValue($value); } - } /** @@ -70,8 +66,8 @@ class Time extends Text { * * @return array */ - function getJsonValue() { - + public function getJsonValue() + { $parts = DateTimeParser::parseVCardTime($this->getValue()); $timeStr = ''; @@ -109,7 +105,7 @@ class Time extends Text { // Timezone if (!is_null($parts['timezone'])) { - if ($parts['timezone'] === 'Z') { + if ('Z' === $parts['timezone']) { $timeStr .= 'Z'; } else { $timeStr .= @@ -118,7 +114,6 @@ class Time extends Text { } return [$timeStr]; - } /** @@ -126,19 +121,15 @@ class Time extends Text { * object. * * @param array $value - * - * @return void */ - function setXmlValue(array $value) { - + public 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 7a3373868..6f404c286 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,10 +21,9 @@ class Unknown extends Text { * * @return array */ - function getJsonValue() { - + public function getJsonValue() + { return [$this->getRawMimeDirValue()]; - } /** @@ -35,10 +34,8 @@ class Unknown extends Text { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'UNKNOWN'; - } - } diff --git a/vendor/sabre/vobject/lib/Property/Uri.php b/vendor/sabre/vobject/lib/Property/Uri.php index 88fcfaab8..3449ba1f2 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,10 +32,9 @@ class Uri extends Text { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'URI'; - } /** @@ -43,8 +42,8 @@ class Uri extends Text { * * @return array */ - function parameters() { - + public 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 @@ -57,8 +56,8 @@ class Uri extends Text { // See Issue #227 and #235 $parameters['VALUE'] = new Parameter($this->root, 'VALUE', 'URI'); } - return $parameters; + return $parameters; } /** @@ -68,11 +67,9 @@ class Uri extends Text { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public 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 @@ -81,16 +78,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 ($this->name === 'URL') { + if ('URL' === $this->name) { $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; } @@ -99,7 +96,6 @@ class Uri extends Text { } else { $this->value = strtr($val, ['\,' => ',']); } - } /** @@ -107,8 +103,8 @@ class Uri extends Text { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { if (is_array($this->value)) { $value = $this->value[0]; } else { @@ -116,7 +112,5 @@ 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 61895c48e..732239e23 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,10 +29,9 @@ class UtcOffset extends Text { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'UTC-OFFSET'; - } /** @@ -41,19 +40,16 @@ class UtcOffset extends Text { * The value must always be an array. * * @param array $value - * - * @return void */ - function setJsonValue(array $value) { - + public function setJsonValue(array $value) + { $value = array_map( - function($value) { + function ($value) { return str_replace(':', '', $value); }, $value ); parent::setJsonValue($value); - } /** @@ -63,15 +59,14 @@ class UtcOffset extends Text { * * @return array */ - function getJsonValue() { - + public 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 1ef6dff34..a018ccbb8 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,23 +21,18 @@ class Date extends DateAndOrTime { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'DATE'; - } /** * Sets the property as a DateTime object. * * @param \DateTimeInterface $dt - * - * @return void */ - function setDateTime(\DateTimeInterface $dt) { - + public 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 3b4ae3bb5..b7e17492a 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 null|string + * @var string|null */ public $delimiter = null; @@ -36,10 +36,9 @@ class DateAndOrTime extends Property { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'DATE-AND-OR-TIME'; - } /** @@ -48,11 +47,9 @@ class DateAndOrTime extends Property { * You may also specify DateTimeInterface objects here. * * @param array $parts - * - * @return void */ - function setParts(array $parts) { - + public function setParts(array $parts) + { if (count($parts) > 1) { throw new \InvalidArgumentException('Only one value allowed'); } @@ -61,7 +58,6 @@ class DateAndOrTime extends Property { } else { parent::setParts($parts); } - } /** @@ -72,28 +68,23 @@ class DateAndOrTime extends Property { * Instead of strings, you may also use DateTimeInterface here. * * @param string|array|DateTimeInterface $value - * - * @return void */ - function setValue($value) { - + public 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 */ - function setDateTime(DateTimeInterface $dt) { - + public function setDateTime(DateTimeInterface $dt) + { $tz = $dt->getTimeZone(); $isUtc = in_array($tz->getName(), ['UTC', 'GMT', 'Z']); @@ -105,7 +96,6 @@ class DateAndOrTime extends Property { } $this->value = $value; - } /** @@ -124,12 +114,12 @@ class DateAndOrTime extends Property { * * @return DateTimeImmutable */ - function getDateTime() { - + public function getDateTime() + { $now = new DateTime(); - $tzFormat = $now->getTimezone()->getOffset($now) === 0 ? '\\Z' : 'O'; - $nowParts = DateTimeParser::parseVCardDateTime($now->format('Ymd\\This' . $tzFormat)); + $tzFormat = 0 === $now->getTimezone()->getOffset($now) ? '\\Z' : 'O'; + $nowParts = DateTimeParser::parseVCardDateTime($now->format('Ymd\\This'.$tzFormat)); $dateParts = DateTimeParser::parseVCardDateTime($this->getValue()); @@ -141,8 +131,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]"); + return new DateTimeImmutable("$dateParts[year]-$dateParts[month]-$dateParts[date] $dateParts[hour]:$dateParts[minute]:$dateParts[second] $dateParts[timezone]"); } /** @@ -152,15 +142,14 @@ class DateAndOrTime extends Property { * * @return array */ - function getJsonValue() { - + public function getJsonValue() + { $parts = DateTimeParser::parseVCardDateTime($this->getValue()); $dateStr = ''; // Year if (!is_null($parts['year'])) { - $dateStr .= $parts['year']; if (!is_null($parts['month'])) { @@ -168,26 +157,21 @@ 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' @@ -199,7 +183,6 @@ 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]; @@ -209,13 +192,11 @@ 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. @@ -224,13 +205,11 @@ 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 .= '-'; @@ -247,30 +226,27 @@ 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - 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]; }; @@ -282,31 +258,29 @@ 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'); @@ -317,22 +291,19 @@ 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); - } /** @@ -342,13 +313,10 @@ class DateAndOrTime extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public function setRawMimeDirValue($val) + { $this->setValue($val); - } /** @@ -356,10 +324,9 @@ class DateAndOrTime extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return implode($this->delimiter, $this->getParts()); - } /** @@ -384,8 +351,8 @@ class DateAndOrTime extends Property { * * @return array */ - function validate($options = 0) { - + public function validate($options = 0) + { $messages = parent::validate($options); $value = $this->getValue(); @@ -393,13 +360,12 @@ 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 e7c804ca7..49c1f3555 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,10 +21,8 @@ class DateTime extends DateAndOrTime { * * @return string */ - function getValueType() { - + public 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 aa7e9178d..697273989 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,13 +23,10 @@ class LanguageTag extends Property { * not yet done, but parameters are not included. * * @param string $val - * - * @return void */ - function setRawMimeDirValue($val) { - + public function setRawMimeDirValue($val) + { $this->setValue($val); - } /** @@ -37,10 +34,9 @@ class LanguageTag extends Property { * * @return string */ - function getRawMimeDirValue() { - + public function getRawMimeDirValue() + { return $this->getValue(); - } /** @@ -51,10 +47,8 @@ class LanguageTag extends Property { * * @return string */ - function getValueType() { - + public 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 9d311f99d..fccf2d600 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,10 +33,9 @@ class TimeStamp extends Text { * * @return string */ - function getValueType() { - + public function getValueType() + { return 'TIMESTAMP'; - } /** @@ -46,16 +45,16 @@ class TimeStamp extends Text { * * @return array */ - function getJsonValue() { - + public 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 @@ -64,23 +63,19 @@ 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. - * - * @return void + * @param Xml\Writer $writer XML writer */ - 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 709929337..055d546a5 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 */ - static function read($data, $options = 0, $charset = 'UTF-8') { - + public static function read($data, $options = 0, $charset = 'UTF-8') + { $parser = new Parser\MimeDir(); $parser->setCharset($charset); $result = $parser->parse($data, $options); return $result; - } /** @@ -55,22 +55,21 @@ 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 it's input. + * You can either a string, a readable stream, or an array for its 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 */ - static function readJson($data, $options = 0) { - + public static function readJson($data, $options = 0) + { $parser = new Parser\Json(); $result = $parser->parse($data, $options); return $result; - } /** @@ -82,17 +81,15 @@ 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 */ - static function readXML($data, $options = 0) { - + public 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 d313305a0..135ecf00e 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 */ - function __construct($input, $uid = null, DateTimeZone $timeZone = null) { - + public 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,24 +115,17 @@ 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) { @@ -143,7 +136,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); } @@ -152,15 +145,11 @@ 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)) { @@ -191,7 +180,7 @@ class EventIterator implements \Iterator { } else { $this->recurIterator = new RRuleIterator( [ - 'FREQ' => 'DAILY', + 'FREQ' => 'DAILY', 'COUNT' => 1, ], $this->startDate @@ -202,7 +191,6 @@ class EventIterator implements \Iterator { if (!$this->valid()) { throw new NoInstancesException('This recurrence rule does not generate any valid instances'); } - } /** @@ -210,12 +198,11 @@ class EventIterator implements \Iterator { * * @return DateTimeImmutable */ - function current() { - + public function current() + { if ($this->currentDate) { return clone $this->currentDate; } - } /** @@ -224,12 +211,11 @@ class EventIterator implements \Iterator { * * @return DateTimeImmutable */ - function getDtStart() { - + public function getDtStart() + { if ($this->currentDate) { return clone $this->currentDate; } - } /** @@ -238,26 +224,26 @@ class EventIterator implements \Iterator { * * @return DateTimeImmutable */ - function getDtEnd() { - + public 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 it's DTSTART and DTEND + * This VEVENT will have a recurrence id, and its DTSTART and DTEND * altered. * * @return VEvent */ - function getEventObject() { - + public function getEventObject() + { if ($this->currentOverriddenEvent) { return $this->currentOverriddenEvent; } @@ -284,8 +270,8 @@ class EventIterator implements \Iterator { $recurid = clone $event->DTSTART; $recurid->name = 'RECURRENCE-ID'; $event->add($recurid); - return $event; + return $event; } /** @@ -295,11 +281,10 @@ class EventIterator implements \Iterator { * * @return int */ - function key() { - + public function key() + { // The counter is always 1 ahead. return $this->counter - 1; - } /** @@ -308,20 +293,20 @@ class EventIterator implements \Iterator { * * @return bool */ - function valid() { - - if ($this->counter > Settings::$maxRecurrences && Settings::$maxRecurrences !== -1) { - throw new MaxInstancesExceededException('Recurring events are only allowed to generate ' . Settings::$maxRecurrences); + public function valid() + { + if ($this->counter > Settings::$maxRecurrences && -1 !== Settings::$maxRecurrences) { + 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. */ - function rewind() { - + public function rewind() + { $this->recurIterator->rewind(); // re-creating overridden event index. $index = []; @@ -338,18 +323,15 @@ class EventIterator implements \Iterator { $this->currentDate = clone $this->startDate; $this->next(); - } /** * Advances the iterator with one step. - * - * @return void */ - function next() { - + public function next() + { $this->currentOverriddenEvent = null; - $this->counter++; + ++$this->counter; if ($this->nextDate) { // We had a stored value. $nextDate = $this->nextDate; @@ -366,14 +348,11 @@ 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); @@ -393,13 +372,10 @@ class EventIterator implements \Iterator { // Exit point! return; - } - } $this->currentDate = $nextDate; - } /** @@ -407,12 +383,11 @@ class EventIterator implements \Iterator { * * @param DateTimeInterface $dateTime */ - function fastForward(DateTimeInterface $dateTime) { - + public function fastForward(DateTimeInterface $dateTime) + { while ($this->valid() && $this->getDtEnd() <= $dateTime) { $this->next(); } - } /** @@ -420,10 +395,9 @@ class EventIterator implements \Iterator { * * @return bool */ - function isInfinite() { - + public function isInfinite() + { return $this->recurIterator->isInfinite(); - } /** @@ -504,10 +478,9 @@ 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 264df7d2b..cb0835813 100644 --- a/vendor/sabre/vobject/lib/Recur/MaxInstancesExceededException.php +++ b/vendor/sabre/vobject/lib/Recur/MaxInstancesExceededException.php @@ -12,5 +12,6 @@ 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 8f8bb472b..b55af567d 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 f44960e12..013694b95 100644 --- a/vendor/sabre/vobject/lib/Recur/RDateIterator.php +++ b/vendor/sabre/vobject/lib/Recur/RDateIterator.php @@ -19,29 +19,30 @@ 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 */ - function __construct($rrule, DateTimeInterface $start) { - + public function __construct($rrule, DateTimeInterface $start) + { $this->startDate = $start; $this->parseRDate($rrule); $this->currentDate = clone $this->startDate; - } /* Implementation of the Iterator interface {{{ */ - function current() { + public function current() + { + if (!$this->valid()) { + return; + } - if (!$this->valid()) return; return clone $this->currentDate; - } /** @@ -49,10 +50,9 @@ class RDateIterator implements Iterator { * * @return int */ - function key() { - + public function key() + { return $this->counter; - } /** @@ -61,40 +61,35 @@ class RDateIterator implements Iterator { * * @return bool */ - function valid() { - - return ($this->counter <= count($this->dates)); - + public function valid() + { + return $this->counter <= count($this->dates); } /** * Resets the iterator. - * - * @return void */ - function rewind() { - + public function rewind() + { $this->currentDate = clone $this->startDate; $this->counter = 0; - } /** * Goes on to the next iteration. - * - * @return void */ - function next() { - - $this->counter++; - if (!$this->valid()) return; + public function next() + { + ++$this->counter; + if (!$this->valid()) { + return; + } $this->currentDate = DateTimeParser::parse( $this->dates[$this->counter - 1], $this->startDate->getTimezone() ); - } /* End of Iterator implementation }}} */ @@ -104,10 +99,9 @@ class RDateIterator implements Iterator { * * @return bool */ - function isInfinite() { - + public function isInfinite() + { return false; - } /** @@ -115,15 +109,12 @@ class RDateIterator implements Iterator { * specified date. * * @param DateTimeInterface $dt - * - * @return void */ - function fastForward(DateTimeInterface $dt) { - + public function fastForward(DateTimeInterface $dt) + { while ($this->valid() && $this->currentDate < $dt) { $this->next(); } - } /** @@ -159,24 +150,20 @@ 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 dbea1155d..554507f19 100644 --- a/vendor/sabre/vobject/lib/Recur/RRuleIterator.php +++ b/vendor/sabre/vobject/lib/Recur/RRuleIterator.php @@ -22,29 +22,30 @@ 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 */ - function __construct($rrule, DateTimeInterface $start) { - + public function __construct($rrule, DateTimeInterface $start) + { $this->startDate = $start; $this->parseRRule($rrule); $this->currentDate = clone $this->startDate; - } /* Implementation of the Iterator interface {{{ */ - function current() { + public function current() + { + if (!$this->valid()) { + return; + } - if (!$this->valid()) return; return clone $this->currentDate; - } /** @@ -52,10 +53,9 @@ class RRuleIterator implements Iterator { * * @return int */ - function key() { - + public function key() + { return $this->counter; - } /** @@ -65,61 +65,53 @@ class RRuleIterator implements Iterator { * * @return bool */ - function valid() { - + public function valid() + { if (!is_null($this->count)) { return $this->counter < $this->count; } - return is_null($this->until) || $this->currentDate <= $this->until; + return is_null($this->until) || $this->currentDate <= $this->until; } /** * Resets the iterator. - * - * @return void */ - function rewind() { - + public function rewind() + { $this->currentDate = clone $this->startDate; $this->counter = 0; - } /** * Goes on to the next iteration. - * - * @return void */ - function next() { - + public 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 }}} */ @@ -129,10 +121,9 @@ class RRuleIterator implements Iterator { * * @return bool */ - function isInfinite() { - + public function isInfinite() + { return !$this->count && !$this->until; - } /** @@ -140,15 +131,12 @@ class RRuleIterator implements Iterator { * specified date. * * @param DateTimeInterface $dt - * - * @return void */ - function fastForward(DateTimeInterface $dt) { - + public function fastForward(DateTimeInterface $dt) + { while ($this->valid() && $this->currentDate < $dt) { $this->next(); } - } /** @@ -317,24 +305,20 @@ 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() { - + protected function nextDaily() + { if (!$this->byHour && !$this->byDay) { - $this->currentDate = $this->currentDate->modify('+' . $this->interval . ' days'); + $this->currentDate = $this->currentDate->modify('+'.$this->interval.' days'); + return; } @@ -352,16 +336,14 @@ class RRuleIterator implements Iterator { do { if ($this->byHour) { - if ($this->currentDate->format('G') == '23') { + if ('23' == $this->currentDate->format('G')) { // 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 @@ -372,24 +354,21 @@ 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() { - + protected function nextWeekly() + { if (!$this->byHour && !$this->byDay) { - $this->currentDate = $this->currentDate->modify('+' . $this->interval . ' weeks'); + $this->currentDate = $this->currentDate->modify('+'.$this->interval.' weeks'); + return; } @@ -405,7 +384,6 @@ class RRuleIterator implements Iterator { $firstDay = $this->dayMap[$this->weekStart]; do { - if ($this->byHour) { $this->currentDate = $this->currentDate->modify('+1 hours'); } else { @@ -413,19 +391,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 || $currentHour == '0')) { - $this->currentDate = $this->currentDate->modify('+' . $this->interval - 1 . ' weeks'); + if ($currentDay === $firstDay && (!$this->byHour || '0' == $currentHour)) { + $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]]); } } @@ -435,43 +413,38 @@ 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 @@ -483,42 +456,36 @@ 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 ($currentMonth == 2 && $currentDayOfMonth == 29) { - + if (2 == $currentMonth && 29 == $currentDayOfMonth) { $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. // @@ -528,16 +495,15 @@ 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 ($nextDate->format('n') != 2); + $nextDate = $nextDate->modify('+ '.($this->interval * $counter).' years'); + } while (2 != $nextDate->format('n')); $this->currentDate = $nextDate; return; - } - if ($this->byWeekNo !== null) { // byWeekNo is an array with values from -53 to -1, or 1 to 53 + if (null !== $this->byWeekNo) { // byWeekNo is an array with values from -53 to -1, or 1 to 53 $dayOffsets = []; if ($this->byDay) { foreach ($this->byDay as $byDay) { @@ -566,6 +532,7 @@ class RRuleIterator implements Iterator { if (count($checkDates) > 0) { $this->currentDate = min($checkDates); + return; } @@ -574,14 +541,14 @@ class RRuleIterator implements Iterator { } } - if ($this->byYearDay !== null) { // byYearDay is an array with values from -366 to -1, or 1 to 366 + if (null !== $this->byYearDay) { // 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'); @@ -594,9 +561,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)) { @@ -606,6 +573,7 @@ class RRuleIterator implements Iterator { if (count($checkDates) > 0) { $this->currentDate = min($checkDates); + return; } @@ -615,9 +583,9 @@ class RRuleIterator implements Iterator { } // The easiest form - $this->currentDate = $this->currentDate->modify('+' . $this->interval . ' years'); - return; + $this->currentDate = $this->currentDate->modify('+'.$this->interval.' years'); + return; } $currentMonth = $this->currentDate->format('n'); @@ -629,13 +597,10 @@ 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 @@ -643,7 +608,6 @@ class RRuleIterator implements Iterator { if ($occurrence > $currentDayOfMonth || $advancedToNewMonth) { break 2; } - } // If we made it here, it means we need to advance to @@ -651,8 +615,7 @@ class RRuleIterator implements Iterator { $currentDayOfMonth = 1; $advancedToNewMonth = true; do { - - $currentMonth++; + ++$currentMonth; if ($currentMonth > 12) { $currentYear += $this->interval; $currentMonth = 1; @@ -660,43 +623,38 @@ 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; + 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; - } - } /* }}} */ @@ -706,32 +664,28 @@ 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= @@ -747,86 +701,82 @@ class RRuleIterator implements Iterator { } break; - case 'INTERVAL' : - // No break + case 'INTERVAL': - 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 || (int)$byYearDay == 0 || (int)$byYearDay > 366) { + if (!is_numeric($byYearDay) || (int) $byYearDay < -366 || 0 == (int) $byYearDay || (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 || (int)$byWeekNo == 0 || (int)$byWeekNo > 53) { + if (!is_numeric($byWeekNo) || (int) $byWeekNo < -53 || 0 == (int) $byWeekNo || (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)); } - } - } /** @@ -852,77 +802,75 @@ 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) { + $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]; + 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]; + } } } 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]; - } + // There was no counter (first, second, last wednesdays), so we + // just need to add the all to the list). + $byDayResults = array_merge($byDayResults, $dayHits); } - } 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; + } } } @@ -947,7 +895,6 @@ class RRuleIterator implements Iterator { $filteredResult = []; foreach ($this->bySetPos as $setPos) { - if ($setPos < 0) { $setPos = count($result) + ($setPos + 1); } @@ -957,8 +904,8 @@ class RRuleIterator implements Iterator { } sort($filteredResult, SORT_NUMERIC); - return $filteredResult; + return $filteredResult; } /** @@ -976,8 +923,8 @@ class RRuleIterator implements Iterator { 'SA' => 6, ]; - protected function getHours() { - + protected function getHours() + { $recurrenceHours = []; foreach ($this->byHour as $byHour) { $recurrenceHours[] = $byHour; @@ -986,23 +933,21 @@ 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 3f274ba8e..afc586b0c 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. */ - static $minDate = '1900-01-01'; + public 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. */ - static $maxDate = '2100-01-01'; + public static $maxDate = '2100-01-01'; /** * The maximum number of recurrences that will be generated. @@ -51,6 +51,5 @@ class Settings { * * Set this value to -1 to disable this control altogether. */ - static $maxRecurrences = 3500; - + public static $maxRecurrences = 3500; } diff --git a/vendor/sabre/vobject/lib/Splitter/ICalendar.php b/vendor/sabre/vobject/lib/Splitter/ICalendar.php index c0007ba01..d42566194 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 it's input. + * The splitter should receive an readable file stream as its input. * * @param resource $input - * @param int $options Parser options, see the OPTIONS constants. + * @param int $options parser options, see the OPTIONS constants */ - function __construct($input, $options = 0) { - + public 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 ($component->name === 'VTIMEZONE') { - $this->vtimezones[(string)$component->TZID] = $component; + if ('VTIMEZONE' === $component->name) { + $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,7 +75,6 @@ class ICalendar implements SplitterInterface { $this->objects[$uid]->add(clone $component); } - } /** @@ -84,15 +83,14 @@ class ICalendar implements SplitterInterface { * * When the end is reached, null will be returned. * - * @return Sabre\VObject\Component|null + * @return \Sabre\VObject\Component|null */ - function getNext() { - + public 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) @@ -101,13 +99,8 @@ 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 8f827cc4b..c845ac5fc 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 it's input. + * The splitter should receive an readable file stream as its input. * * @param resource $input */ - function __construct($input); + public function __construct($input); /** * Every time getNext() is called, a new object will be parsed, until we @@ -32,8 +32,7 @@ interface SplitterInterface { * * When the end is reached, null will be returned. * - * @return Sabre\VObject\Component|null + * @return \Sabre\VObject\Component|null */ - function getNext(); - + public function getNext(); } diff --git a/vendor/sabre/vobject/lib/Splitter/VCard.php b/vendor/sabre/vobject/lib/Splitter/VCard.php index 0bb82abe9..a20f5c2c1 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,16 +38,15 @@ class VCard implements SplitterInterface { /** * Constructor. * - * The splitter should receive an readable file stream as it's input. + * The splitter should receive an readable file stream as its input. * * @param resource $input - * @param int $options Parser options, see the OPTIONS constants. + * @param int $options parser options, see the OPTIONS constants */ - function __construct($input, $options = 0) { - + public function __construct($input, $options = 0) + { $this->input = $input; $this->parser = new MimeDir($input, $options); - } /** @@ -56,23 +55,20 @@ class VCard implements SplitterInterface { * * When the end is reached, null will be returned. * - * @return Sabre\VObject\Component|null + * @return \Sabre\VObject\Component|null */ - function getNext() { - + public 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 b8615f2ba..2333d6ab9 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,15 +18,14 @@ class StringUtil { * * @return bool */ - static function isUTF8($str) { - + public 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); } /** @@ -39,12 +38,12 @@ class StringUtil { * * @return string */ - static function convertToUTF8($str) { - + public 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 @@ -53,14 +52,11 @@ 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 925183e8d..5b1a775c2 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 { - - static $map = null; +class TimeZoneUtil +{ + public static $map = null; /** * List of microsoft exchange timezone ids. * * Source: http://msdn.microsoft.com/en-us/library/aa563018(loband).aspx */ - static $microsoftExchangeMap = [ - 0 => 'UTC', + public 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 */ - static function getTimeZone($tzid, Component $vcalendar = null, $failIfUncertain = false) { - + public 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,8 +135,7 @@ 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 // @@ -155,7 +154,6 @@ class TimeZoneUtil { } } catch (\Exception $e) { } - } self::loadTzMaps(); @@ -178,46 +176,40 @@ 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 (substr($lic, 0, 8) === 'SystemV/') { + if ('SystemV/' === substr($lic, 0, 8)) { $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 ($cdoId === 2 && strpos((string)$vtimezone->TZID, 'Sarajevo') !== false) { + if (2 === $cdoId && false !== strpos((string) $vtimezone->TZID, 'Sarajevo')) { return new \DateTimeZone('Europe/Sarajevo'); } @@ -225,37 +217,34 @@ 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. */ - static function loadTzMaps() { - - if (!is_null(self::$map)) return; + public 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' ); - } /** @@ -269,8 +258,8 @@ class TimeZoneUtil { * * @return array */ - static function getIdentifiersBC() { - return include __DIR__ . '/timezonedata/php-bc.php'; + public 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 24ebe3cf8..066af624c 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,10 +24,9 @@ class UUIDUtil { * * @return string */ - static function getUUID() { - + public static function getUUID() + { return sprintf( - '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', // 32 bits for "time_low" @@ -57,13 +56,11 @@ class UUIDUtil { * * @return bool */ - static function validateUUID($uuid) { - - return preg_match( + public static function validateUUID($uuid) + { + return 0 !== 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 1f6d016f1..156b83b4e 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 */ - function convert(Component\VCard $input, $targetVersion) { - + public 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 = $targetVersion === Document::VCARD40 ? '4.0' : '3.0'; + $newVersion = Document::VCARD40 === $targetVersion ? '4.0' : '3.0'; $output = new Component\VCard([ 'VERSION' => $newVersion, @@ -53,13 +53,10 @@ class VCardConverter { unset($output->UID); foreach ($input->children() as $property) { - $this->convertProperty($input, $output, $property, $targetVersion); - } return $output; - } /** @@ -67,13 +64,11 @@ class VCardConverter { * * @param Component\VCard $input * @param Component\VCard $output - * @param Property $property - * @param int $targetVersion - * - * @return void + * @param Property $property + * @param int $targetVersion */ - 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; @@ -95,15 +90,10 @@ class VCardConverter { $valueType ); - - if ($targetVersion === Document::VCARD30) { - + if (Document::VCARD30 === $targetVersion) { 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 @@ -113,12 +103,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 ($newProperty->name == 'ANNIVERSARY') { + if ('ANNIVERSARY' == $newProperty->name) { // Microsoft non-standard anniversary $newProperty->name = 'X-ANNIVERSARY'; @@ -127,74 +117,64 @@ 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 ($property->name === 'KIND') { - + } elseif ('KIND' === $property->name) { 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 ($targetVersion === Document::VCARD40) { - + } elseif (Document::VCARD40 === $targetVersion) { // 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 (strtoupper($property->getValue()) === 'COMPANY') { + case 'X-ABSHOWAS': + if ('COMPANY' === strtoupper($property->getValue())) { $newProperty = $output->createProperty('KIND', 'ORG'); } break; - case 'X-ADDRESSBOOKSERVER-KIND' : - if (strtoupper($property->getValue()) === 'GROUP') { + case 'X-ADDRESSBOOKSERVER-KIND': + if ('GROUP' === strtoupper($property->getValue())) { $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. @@ -204,15 +184,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 || $label->getValue() !== '_$!<Anniversary>!$_') { + if (!$label || '_$!<Anniversary>!$_' !== $label->getValue()) { break; } @@ -226,22 +206,20 @@ class VCardConverter { $newProperty->name = 'ANNIVERSARY'; break; // Apple's per-property label system. - case 'X-ABLABEL' : - if ($newProperty->getValue() === '_$!<Anniversary>!$_') { + case 'X-ABLABEL': + if ('_$!<Anniversary>!$_' === $newProperty->getValue()) { // We can safely remove these, as they are converted to // ANNIVERSARY properties. return; } break; - } - } // set property group $newProperty->group = $property->group; - if ($targetVersion === Document::VCARD40) { + if (Document::VCARD40 === $targetVersion) { $this->convertParameters40($newProperty, $parameters); } else { $this->convertParameters30($newProperty, $parameters); @@ -257,8 +235,6 @@ class VCardConverter { } $output->add($newProperty); - - } /** @@ -267,14 +243,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, @@ -287,14 +263,13 @@ 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; } @@ -307,12 +282,11 @@ class VCardConverter { } else { unset($parameters['TYPE']); } - } - $newProperty->setValue('data:' . $mimeType . ';base64,' . base64_encode($value)); - return $newProperty; + $newProperty->setValue('data:'.$mimeType.';base64,'.base64_encode($value)); + return $newProperty; } /** @@ -323,16 +297,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 (substr($value, 0, 5) !== 'data:') { + if ('data:' !== substr($value, 0, 5)) { return $newProperty; } @@ -354,92 +328,79 @@ 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 - * - * @return void + * @param array $parameters */ - 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 (strtoupper($paramPart) === 'PREF') { + if ('PREF' === strtoupper($paramPart)) { $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 - * - * @return void + * @param array $parameters */ - 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 (strtoupper($param->getValue()) !== 'QUOTED-PRINTABLE') { + if ('QUOTED-PRINTABLE' !== strtoupper($param->getValue())) { $newProperty->add($param->name, $param->getParts()); } break; @@ -449,19 +410,16 @@ class VCardConverter { * * Any other PREF numbers we'll drop. */ - case 'PREF' : - if ($param->getValue() == '1') { + case 'PREF': + if ('1' == $param->getValue()) { $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 074b06c4b..257e66a79 100644 --- a/vendor/sabre/vobject/lib/Version.php +++ b/vendor/sabre/vobject/lib/Version.php @@ -9,11 +9,10 @@ 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.1.6'; - + const VERSION = '4.2.0'; } diff --git a/vendor/sabre/vobject/lib/Writer.php b/vendor/sabre/vobject/lib/Writer.php index f8a58758d..c70a6ae4d 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,24 +23,22 @@ class Writer { * * @return string */ - static function write(Component $component) { - + public 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 */ - static function writeJson(Component $component, $options = 0) { - + public static function writeJson(Component $component, $options = 0) + { return json_encode($component, $options); - } /** @@ -50,8 +48,8 @@ class Writer { * * @return string */ - static function writeXml(Component $component) { - + public static function writeXml(Component $component) + { $writer = new Xml\Writer(); $writer->openMemory(); $writer->setIndent(true); @@ -59,15 +57,11 @@ 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); @@ -75,7 +69,5 @@ 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 edba5b473..89bddc27c 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 79d555a92..4b50808f9 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 6b9cb6ef7..13ff4b302 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 29f3a6cb8..af3904b12 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', ]; |