Merge pull request #22201 from cweiske/20492-move-contacts-with-birthday
Delete old birthday calendar object when moving contact to another ad…
This commit is contained in:
commit
fbbcf26099
|
@ -381,12 +381,26 @@ class BirthdayService {
|
||||||
$objectUri = $book['uri'] . '-' . $cardUri . $type['postfix'] . '.ics';
|
$objectUri = $book['uri'] . '-' . $cardUri . $type['postfix'] . '.ics';
|
||||||
$calendarData = $this->buildDateFromContact($cardData, $type['field'], $type['postfix']);
|
$calendarData = $this->buildDateFromContact($cardData, $type['field'], $type['postfix']);
|
||||||
$existing = $this->calDavBackEnd->getCalendarObject($calendarId, $objectUri);
|
$existing = $this->calDavBackEnd->getCalendarObject($calendarId, $objectUri);
|
||||||
if (is_null($calendarData)) {
|
if ($calendarData === null) {
|
||||||
if (!is_null($existing)) {
|
if ($existing !== null) {
|
||||||
$this->calDavBackEnd->deleteCalendarObject($calendarId, $objectUri);
|
$this->calDavBackEnd->deleteCalendarObject($calendarId, $objectUri);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (is_null($existing)) {
|
if ($existing === null) {
|
||||||
|
// not found by URI, but maybe by UID
|
||||||
|
// happens when a contact with birthday is moved to a different address book
|
||||||
|
$calendarInfo = $this->calDavBackEnd->getCalendarById($calendarId);
|
||||||
|
$extraData = $this->calDavBackEnd->getDenormalizedData($calendarData->serialize());
|
||||||
|
|
||||||
|
if ($calendarInfo && array_key_exists('principaluri', $calendarInfo)) {
|
||||||
|
$existing2path = $this->calDavBackEnd->getCalendarObjectByUID($calendarInfo['principaluri'], $extraData['uid']);
|
||||||
|
if ($existing2path !== null && array_key_exists('uri', $calendarInfo)) {
|
||||||
|
// delete the old birthday entry first so that we do not get duplicate UIDs
|
||||||
|
$existing2objectUri = substr($existing2path, strlen($calendarInfo['uri']) + 1);
|
||||||
|
$this->calDavBackEnd->deleteCalendarObject($calendarId, $existing2objectUri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$this->calDavBackEnd->createCalendarObject($calendarId, $objectUri, $calendarData->serialize());
|
$this->calDavBackEnd->createCalendarObject($calendarId, $objectUri, $calendarData->serialize());
|
||||||
} else {
|
} else {
|
||||||
if ($this->birthdayEvenChanged($existing['calendardata'], $calendarData)) {
|
if ($this->birthdayEvenChanged($existing['calendardata'], $calendarData)) {
|
||||||
|
|
Loading…
Reference in New Issue