Wrap multiple inserts inside a transation

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
pull/30863/head
Carl Schwan 4 years ago
parent eef973e85b
commit e71db40492
  1. 34
      apps/dav/lib/CardDAV/CardDavBackend.php

@ -1271,21 +1271,29 @@ class CardDavBackend implements BackendInterface, SyncSupport {
]
);
foreach ($vCard->children() as $property) {
if (!in_array($property->name, self::$indexProperties)) {
continue;
}
$preferred = 0;
foreach ($property->parameters as $parameter) {
if ($parameter->name === 'TYPE' && strtoupper($parameter->getValue()) === 'PREF') {
$preferred = 1;
break;
$this->db->beginTransaction();
try {
foreach ($vCard->children() as $property) {
if (!in_array($property->name, self::$indexProperties)) {
continue;
}
$preferred = 0;
foreach ($property->parameters as $parameter) {
if ($parameter->name === 'TYPE' && strtoupper($parameter->getValue()) === 'PREF') {
$preferred = 1;
break;
}
}
$query->setParameter('name', $property->name);
$query->setParameter('value', mb_strcut($property->getValue(), 0, 254));
$query->setParameter('preferred', $preferred);
$query->execute();
}
$query->setParameter('name', $property->name);
$query->setParameter('value', mb_strcut($property->getValue(), 0, 254));
$query->setParameter('preferred', $preferred);
$query->execute();
$this->db->commit();
} catch (\Exception $e) {
$this->db->rollBack();
}
}

Loading…
Cancel
Save