aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/vobject/lib/Component.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/vobject/lib/Component.php')
-rw-r--r--vendor/sabre/vobject/lib/Component.php17
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,
];