diff options
Diffstat (limited to 'vendor/sabre/vobject/lib/Component.php')
-rw-r--r-- | vendor/sabre/vobject/lib/Component.php | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/vendor/sabre/vobject/lib/Component.php b/vendor/sabre/vobject/lib/Component.php index 9a10ed3f8..ac87a10ec 100644 --- a/vendor/sabre/vobject/lib/Component.php +++ b/vendor/sabre/vobject/lib/Component.php @@ -662,8 +662,23 @@ class Component extends Node { break; case '?' : if (isset($propertyCounters[$propName]) && $propertyCounters[$propName] > 1) { + $level = 3; + + // We try to repair the same property appearing multiple times with the exact same value + // by removing the duplicates and keeping only one property + if ($options & self::REPAIR) { + $properties = array_unique($this->select($propName), SORT_REGULAR); + + if (count($properties) === 1) { + $this->remove($propName); + $this->add($properties[0]); + + $level = 1; + } + } + $messages[] = [ - 'level' => 3, + 'level' => $level, 'message' => $propName . ' MUST NOT appear more than once in a ' . $this->name . ' component', 'node' => $this, ]; |