|
|
|
@ -45,6 +45,7 @@ use OCA\DAV\Events\AddressBookUpdatedEvent;
|
|
|
|
|
use OCA\DAV\Events\CardCreatedEvent;
|
|
|
|
|
use OCA\DAV\Events\CardDeletedEvent;
|
|
|
|
|
use OCA\DAV\Events\CardUpdatedEvent;
|
|
|
|
|
use OCP\AppFramework\Db\TTransactional;
|
|
|
|
|
use OCP\DB\QueryBuilder\IQueryBuilder;
|
|
|
|
|
use OCP\EventDispatcher\IEventDispatcher;
|
|
|
|
|
use OCP\IDBConnection;
|
|
|
|
@ -60,6 +61,9 @@ use Sabre\VObject\Component\VCard;
|
|
|
|
|
use Sabre\VObject\Reader;
|
|
|
|
|
|
|
|
|
|
class CardDavBackend implements BackendInterface, SyncSupport {
|
|
|
|
|
|
|
|
|
|
use TTransactional;
|
|
|
|
|
|
|
|
|
|
public const PERSONAL_ADDRESSBOOK_URI = 'contacts';
|
|
|
|
|
public const PERSONAL_ADDRESSBOOK_NAME = 'Contacts';
|
|
|
|
|
|
|
|
|
@ -420,20 +424,26 @@ class CardDavBackend implements BackendInterface, SyncSupport {
|
|
|
|
|
$values['displayname'] = $url;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = $this->db->getQueryBuilder();
|
|
|
|
|
$query->insert('addressbooks')
|
|
|
|
|
->values([
|
|
|
|
|
'uri' => $query->createParameter('uri'),
|
|
|
|
|
'displayname' => $query->createParameter('displayname'),
|
|
|
|
|
'description' => $query->createParameter('description'),
|
|
|
|
|
'principaluri' => $query->createParameter('principaluri'),
|
|
|
|
|
'synctoken' => $query->createParameter('synctoken'),
|
|
|
|
|
])
|
|
|
|
|
->setParameters($values)
|
|
|
|
|
->execute();
|
|
|
|
|
[$addressBookId, $addressBookRow] = $this->atomic(function() use ($values) {
|
|
|
|
|
$query = $this->db->getQueryBuilder();
|
|
|
|
|
$query->insert('addressbooks')
|
|
|
|
|
->values([
|
|
|
|
|
'uri' => $query->createParameter('uri'),
|
|
|
|
|
'displayname' => $query->createParameter('displayname'),
|
|
|
|
|
'description' => $query->createParameter('description'),
|
|
|
|
|
'principaluri' => $query->createParameter('principaluri'),
|
|
|
|
|
'synctoken' => $query->createParameter('synctoken'),
|
|
|
|
|
])
|
|
|
|
|
->setParameters($values)
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$addressBookId = $query->getLastInsertId();
|
|
|
|
|
return [
|
|
|
|
|
$addressBookId,
|
|
|
|
|
$this->getAddressBookById($addressBookId),
|
|
|
|
|
];
|
|
|
|
|
}, $this->db);
|
|
|
|
|
|
|
|
|
|
$addressBookId = $query->getLastInsertId();
|
|
|
|
|
$addressBookRow = $this->getAddressBookById($addressBookId);
|
|
|
|
|
$this->dispatcher->dispatchTyped(new AddressBookCreatedEvent($addressBookId, $addressBookRow));
|
|
|
|
|
|
|
|
|
|
return $addressBookId;
|
|
|
|
|