Skip to content

Commit 830122d

Browse files
committed
Wrap multiple inserts inside a transation
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
1 parent 6ae91d6 commit 830122d

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

apps/dav/lib/CardDAV/CardDavBackend.php

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1268,21 +1268,29 @@ protected function updateProperties($addressBookId, $cardUri, $vCardSerialized)
12681268
]
12691269
);
12701270

1271-
foreach ($vCard->children() as $property) {
1272-
if (!in_array($property->name, self::$indexProperties)) {
1273-
continue;
1274-
}
1275-
$preferred = 0;
1276-
foreach ($property->parameters as $parameter) {
1277-
if ($parameter->name === 'TYPE' && strtoupper($parameter->getValue()) === 'PREF') {
1278-
$preferred = 1;
1279-
break;
1271+
1272+
$this->db->beginTransaction();
1273+
1274+
try {
1275+
foreach ($vCard->children() as $property) {
1276+
if (!in_array($property->name, self::$indexProperties)) {
1277+
continue;
1278+
}
1279+
$preferred = 0;
1280+
foreach ($property->parameters as $parameter) {
1281+
if ($parameter->name === 'TYPE' && strtoupper($parameter->getValue()) === 'PREF') {
1282+
$preferred = 1;
1283+
break;
1284+
}
12801285
}
1286+
$query->setParameter('name', $property->name);
1287+
$query->setParameter('value', mb_strcut($property->getValue(), 0, 254));
1288+
$query->setParameter('preferred', $preferred);
1289+
$query->execute();
12811290
}
1282-
$query->setParameter('name', $property->name);
1283-
$query->setParameter('value', mb_strcut($property->getValue(), 0, 254));
1284-
$query->setParameter('preferred', $preferred);
1285-
$query->execute();
1291+
$this->db->commit();
1292+
} catch (\Exception $e) {
1293+
$this->db->rollBack();
12861294
}
12871295
}
12881296

0 commit comments

Comments
 (0)