|
|
|
@ -848,24 +848,24 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription |
|
|
|
|
* @return void |
|
|
|
|
*/ |
|
|
|
|
public function updateCalendar($calendarId, PropPatch $propPatch) { |
|
|
|
|
$this->atomic(function () use ($calendarId, $propPatch) { |
|
|
|
|
$supportedProperties = array_keys($this->propertyMap); |
|
|
|
|
$supportedProperties[] = '{' . Plugin::NS_CALDAV . '}schedule-calendar-transp'; |
|
|
|
|
|
|
|
|
|
$propPatch->handle($supportedProperties, function ($mutations) use ($calendarId) { |
|
|
|
|
$newValues = []; |
|
|
|
|
foreach ($mutations as $propertyName => $propertyValue) { |
|
|
|
|
switch ($propertyName) { |
|
|
|
|
case '{' . Plugin::NS_CALDAV . '}schedule-calendar-transp': |
|
|
|
|
$fieldName = 'transparent'; |
|
|
|
|
$newValues[$fieldName] = (int) ($propertyValue->getValue() === 'transparent'); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
$fieldName = $this->propertyMap[$propertyName][0]; |
|
|
|
|
$newValues[$fieldName] = $propertyValue; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
$supportedProperties = array_keys($this->propertyMap); |
|
|
|
|
$supportedProperties[] = '{' . Plugin::NS_CALDAV . '}schedule-calendar-transp'; |
|
|
|
|
|
|
|
|
|
$propPatch->handle($supportedProperties, function ($mutations) use ($calendarId) { |
|
|
|
|
$newValues = []; |
|
|
|
|
foreach ($mutations as $propertyName => $propertyValue) { |
|
|
|
|
switch ($propertyName) { |
|
|
|
|
case '{' . Plugin::NS_CALDAV . '}schedule-calendar-transp': |
|
|
|
|
$fieldName = 'transparent'; |
|
|
|
|
$newValues[$fieldName] = (int) ($propertyValue->getValue() === 'transparent'); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
$fieldName = $this->propertyMap[$propertyName][0]; |
|
|
|
|
$newValues[$fieldName] = $propertyValue; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[$calendarData, $shares] = $this->atomic(function () use ($calendarId, $newValues) { |
|
|
|
|
$query = $this->db->getQueryBuilder(); |
|
|
|
|
$query->update('calendars'); |
|
|
|
|
foreach ($newValues as $fieldName => $value) { |
|
|
|
@ -878,11 +878,13 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription |
|
|
|
|
|
|
|
|
|
$calendarData = $this->getCalendarById($calendarId); |
|
|
|
|
$shares = $this->getShares($calendarId); |
|
|
|
|
$this->dispatcher->dispatchTyped(new CalendarUpdatedEvent($calendarId, $calendarData, $shares, $mutations)); |
|
|
|
|
return [$calendarData, $shares]; |
|
|
|
|
}, $this->db); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
}); |
|
|
|
|
}, $this->db); |
|
|
|
|
$this->dispatcher->dispatchTyped(new CalendarUpdatedEvent($calendarId, $calendarData, $shares, $mutations)); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -2570,22 +2572,22 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription |
|
|
|
|
* @return void |
|
|
|
|
*/ |
|
|
|
|
public function updateSubscription($subscriptionId, PropPatch $propPatch) { |
|
|
|
|
$this->atomic(function () use ($subscriptionId, $propPatch) { |
|
|
|
|
$supportedProperties = array_keys($this->subscriptionPropertyMap); |
|
|
|
|
$supportedProperties[] = '{http://calendarserver.org/ns/}source'; |
|
|
|
|
|
|
|
|
|
$propPatch->handle($supportedProperties, function ($mutations) use ($subscriptionId) { |
|
|
|
|
$newValues = []; |
|
|
|
|
|
|
|
|
|
foreach ($mutations as $propertyName => $propertyValue) { |
|
|
|
|
if ($propertyName === '{http://calendarserver.org/ns/}source') { |
|
|
|
|
$newValues['source'] = $propertyValue->getHref(); |
|
|
|
|
} else { |
|
|
|
|
$fieldName = $this->subscriptionPropertyMap[$propertyName][0]; |
|
|
|
|
$newValues[$fieldName] = $propertyValue; |
|
|
|
|
} |
|
|
|
|
$supportedProperties = array_keys($this->subscriptionPropertyMap); |
|
|
|
|
$supportedProperties[] = '{http://calendarserver.org/ns/}source'; |
|
|
|
|
|
|
|
|
|
$propPatch->handle($supportedProperties, function ($mutations) use ($subscriptionId) { |
|
|
|
|
$newValues = []; |
|
|
|
|
|
|
|
|
|
foreach ($mutations as $propertyName => $propertyValue) { |
|
|
|
|
if ($propertyName === '{http://calendarserver.org/ns/}source') { |
|
|
|
|
$newValues['source'] = $propertyValue->getHref(); |
|
|
|
|
} else { |
|
|
|
|
$fieldName = $this->subscriptionPropertyMap[$propertyName][0]; |
|
|
|
|
$newValues[$fieldName] = $propertyValue; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$subscriptionRow = $this->atomic(function () use ($subscriptionId, $newValues) { |
|
|
|
|
$query = $this->db->getQueryBuilder(); |
|
|
|
|
$query->update('calendarsubscriptions') |
|
|
|
|
->set('lastmodified', $query->createNamedParameter(time())); |
|
|
|
@ -2595,12 +2597,13 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription |
|
|
|
|
$query->where($query->expr()->eq('id', $query->createNamedParameter($subscriptionId))) |
|
|
|
|
->executeStatement(); |
|
|
|
|
|
|
|
|
|
$subscriptionRow = $this->getSubscriptionById($subscriptionId); |
|
|
|
|
$this->dispatcher->dispatchTyped(new SubscriptionUpdatedEvent((int)$subscriptionId, $subscriptionRow, [], $mutations)); |
|
|
|
|
return $this->getSubscriptionById($subscriptionId); |
|
|
|
|
}, $this->db); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
}); |
|
|
|
|
}, $this->db); |
|
|
|
|
$this->dispatcher->dispatchTyped(new SubscriptionUpdatedEvent((int)$subscriptionId, $subscriptionRow, [], $mutations)); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|