Я пытаюсь написать собственный бэкэнд для Sabre Dav CardDav. На данный момент я в основном написал vcard в исходный код, чтобы опробовать его. Поэтому я расширил класс AbstractBackend в Sabre \ CardDAV \ Backend и переписал некоторые функции.
function getCards($addressbookId)
{
$vcard = new VCard(
[
'FN' => "Max",
'N' => ["Max",
"Luther"],
"NICKNAME" => "nick",
]
);
$data = $vcard->serialize();
return [["carddata" => $data,"uri"=> "nick","lastmodified"=> 101]];
}
И здесь
function getCard($addressBookId, $cardUri)
{
$vcard = new VCard(
[
'FN' => "Max",
'N' => ["Max",
"Luther"],
"NICKNAME" => "nick",
]
);
$data = $vcard->serialize();
return ["carddata" => $data,"uri"=> "nick","lastmodified"=> 101];
}
Теперь я могу получить адресную книгу с Thunderbird и увидеть контакты на вкладке CardBook. Затем я меняю имя визитки. Например Лютер Фу. Я также обновляю последний измененный номер до 102.
Теперь я нажимаю кнопку синхронизации в Thunderbird и ожидаю обновленный контакт с новым именем. Вместо этого теперь у меня есть два контакта. Один с новым и один с новым именем.
Я думаю, что неправильно понимаю некоторые части системы cardDAV.
Кто-нибудь может мне помочь
Задача ещё не решена.
Других решений пока нет …