summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/carddav
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-01-20 21:08:23 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-02-08 10:52:30 +0100
commitcca2ade199f09c2e4c2c00c86e776dcc3b51d60f (patch)
tree048d4f64d0de92a12565d1a8111fc1817f7db8cc /apps/dav/lib/carddav
parent9eef38c5937cf8c8a848a0b78afe8123fb922712 (diff)
downloadnextcloud-server-cca2ade199f09c2e4c2c00c86e776dcc3b51d60f.tar.gz
nextcloud-server-cca2ade199f09c2e4c2c00c86e776dcc3b51d60f.zip
Adding pre oc 9.0 CardDAV endpoint for migration of old clients
Diffstat (limited to 'apps/dav/lib/carddav')
-rw-r--r--apps/dav/lib/carddav/addressbookroot.php3
-rw-r--r--apps/dav/lib/carddav/carddavbackend.php17
2 files changed, 17 insertions, 3 deletions
diff --git a/apps/dav/lib/carddav/addressbookroot.php b/apps/dav/lib/carddav/addressbookroot.php
index 2680135dec2..99c36c2e767 100644
--- a/apps/dav/lib/carddav/addressbookroot.php
+++ b/apps/dav/lib/carddav/addressbookroot.php
@@ -40,6 +40,9 @@ class AddressBookRoot extends \Sabre\CardDAV\AddressBookRoot {
function getName() {
+ if ($this->principalPrefix === 'principals') {
+ return parent::getName();
+ }
// Grabbing all the components of the principal path.
$parts = explode('/', $this->principalPrefix);
diff --git a/apps/dav/lib/carddav/carddavbackend.php b/apps/dav/lib/carddav/carddavbackend.php
index 9ca166c22a2..b2a54adc49d 100644
--- a/apps/dav/lib/carddav/carddavbackend.php
+++ b/apps/dav/lib/carddav/carddavbackend.php
@@ -93,11 +93,11 @@ class CardDavBackend implements BackendInterface, SyncSupport {
* @return array
*/
function getAddressBooksForUser($principalUri) {
+ $principalUri = $this->convertPrincipal($principalUri, true);
$query = $this->db->getQueryBuilder();
$query->select(['id', 'uri', 'displayname', 'principaluri', 'description', 'synctoken'])
->from('addressbooks')
- ->where($query->expr()->eq('principaluri', $query->createParameter('principaluri')))
- ->setParameter('principaluri', $principalUri);
+ ->where($query->expr()->eq('principaluri', $query->createNamedParameter($principalUri)));
$addressBooks = [];
@@ -106,7 +106,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
$addressBooks[$row['id']] = [
'id' => $row['id'],
'uri' => $row['uri'],
- 'principaluri' => $row['principaluri'],
+ 'principaluri' => $this->convertPrincipal($row['principaluri'], false),
'{DAV:}displayname' => $row['displayname'],
'{' . Plugin::NS_CARDDAV . '}addressbook-description' => $row['description'],
'{http://calendarserver.org/ns/}getctag' => $row['synctoken'],
@@ -919,4 +919,15 @@ class CardDavBackend implements BackendInterface, SyncSupport {
public function applyShareAcl($addressBookId, $acl) {
return $this->sharingBackend->applyShareAcl($addressBookId, $acl);
}
+
+ private function convertPrincipal($principalUri, $toV2) {
+ if ($this->principalBackend->getPrincipalPrefix() === 'principals') {
+ list(, $name) = URLUtil::splitPath($principalUri);
+ if ($toV2 === true) {
+ return "principals/users/$name";
+ }
+ return "principals/$name";
+ }
+ return $principalUri;
+ }
}