summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-02-08 11:58:09 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-02-08 11:58:09 +0100
commit97b2e19c786e037acd99e31aabbf193c805617dd (patch)
treee99619568c9e5edf7ce19f79499e74706e02466b
parent9eef38c5937cf8c8a848a0b78afe8123fb922712 (diff)
parent7199ea2f5e63c029d27a5a3eec55f20a6f031f8c (diff)
downloadnextcloud-server-97b2e19c786e037acd99e31aabbf193c805617dd.tar.gz
nextcloud-server-97b2e19c786e037acd99e31aabbf193c805617dd.zip
Merge pull request #22168 from owncloud/fix-some-dav-sharing-ux
Fix some dav sharing ux
-rw-r--r--apps/dav/lib/caldav/caldavbackend.php10
-rw-r--r--apps/dav/lib/carddav/carddavbackend.php26
-rw-r--r--apps/dav/lib/dav/sharing/backend.php19
3 files changed, 33 insertions, 22 deletions
diff --git a/apps/dav/lib/caldav/caldavbackend.php b/apps/dav/lib/caldav/caldavbackend.php
index 3aa493e5087..52b4812b05b 100644
--- a/apps/dav/lib/caldav/caldavbackend.php
+++ b/apps/dav/lib/caldav/caldavbackend.php
@@ -106,7 +106,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
public function __construct(\OCP\IDBConnection $db, Principal $principalBackend) {
$this->db = $db;
$this->principalBackend = $principalBackend;
- $this->sharingBackend = new Backend($this->db, 'calendar');
+ $this->sharingBackend = new Backend($this->db, $principalBackend, 'calendar');
}
/**
@@ -172,7 +172,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendar[$xmlName] = $row[$dbName];
}
- $calendars[$calendar['id']] = $calendar;
+ if (!isset($calendars[$calendar['id']])) {
+ $calendars[$calendar['id']] = $calendar;
+ }
}
$stmt->closeCursor();
@@ -221,7 +223,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$calendar[$xmlName] = $row[$dbName];
}
- $calendars[$calendar['id']] = $calendar;
+ if (!isset($calendars[$calendar['id']])) {
+ $calendars[$calendar['id']] = $calendar;
+ }
}
$result->closeCursor();
diff --git a/apps/dav/lib/carddav/carddavbackend.php b/apps/dav/lib/carddav/carddavbackend.php
index 9ca166c22a2..2c1960fbb9d 100644
--- a/apps/dav/lib/carddav/carddavbackend.php
+++ b/apps/dav/lib/carddav/carddavbackend.php
@@ -72,7 +72,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
public function __construct(IDBConnection $db, Principal $principalBackend) {
$this->db = $db;
$this->principalBackend = $principalBackend;
- $this->sharingBackend = new Backend($this->db, 'addressbook');
+ $this->sharingBackend = new Backend($this->db, $principalBackend, 'addressbook');
}
/**
@@ -133,17 +133,19 @@ class CardDavBackend implements BackendInterface, SyncSupport {
list(, $name) = URLUtil::splitPath($row['principaluri']);
$uri = $row['uri'] . '_shared_by_' . $name;
$displayName = $row['displayname'] . "($name)";
- $addressBooks[$row['id']] = [
- 'id' => $row['id'],
- 'uri' => $uri,
- 'principaluri' => $principalUri,
- '{DAV:}displayname' => $displayName,
- '{' . Plugin::NS_CARDDAV . '}addressbook-description' => $row['description'],
- '{http://calendarserver.org/ns/}getctag' => $row['synctoken'],
- '{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
- '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $row['principaluri'],
- '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only' => $row['access'] === self::ACCESS_READ,
- ];
+ if (!isset($addressBooks[$row['id']])) {
+ $addressBooks[$row['id']] = [
+ 'id' => $row['id'],
+ 'uri' => $uri,
+ 'principaluri' => $principalUri,
+ '{DAV:}displayname' => $displayName,
+ '{' . Plugin::NS_CARDDAV . '}addressbook-description' => $row['description'],
+ '{http://calendarserver.org/ns/}getctag' => $row['synctoken'],
+ '{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
+ '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $row['principaluri'],
+ '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only' => $row['access'] === self::ACCESS_READ,
+ ];
+ }
}
$result->closeCursor();
diff --git a/apps/dav/lib/dav/sharing/backend.php b/apps/dav/lib/dav/sharing/backend.php
index 0b28891fbc4..7556706b6d0 100644
--- a/apps/dav/lib/dav/sharing/backend.php
+++ b/apps/dav/lib/dav/sharing/backend.php
@@ -24,27 +24,30 @@
namespace OCA\DAV\DAV\Sharing;
+use OCA\DAV\Connector\Sabre\Principal;
use OCP\IDBConnection;
class Backend {
/** @var IDBConnection */
private $db;
+ /** @var Principal */
+ private $principalBackend;
+ /** @var string */
+ private $resourceType;
const ACCESS_OWNER = 1;
const ACCESS_READ_WRITE = 2;
const ACCESS_READ = 3;
- /** @var string */
- private $resourceType;
-
/**
- * CardDavBackend constructor.
- *
* @param IDBConnection $db
+ * @param Principal $principalBackend
+ * @param string $resourceType
*/
- public function __construct(IDBConnection $db, $resourceType) {
+ public function __construct(IDBConnection $db, Principal $principalBackend, $resourceType) {
$this->db = $db;
+ $this->principalBackend = $principalBackend;
$this->resourceType = $resourceType;
}
@@ -141,6 +144,7 @@ class Backend {
* * readOnly - boolean
* * summary - Optional, a description for the share
*
+ * @param int $resourceId
* @return array
*/
public function getShares($resourceId) {
@@ -153,9 +157,10 @@ class Backend {
$shares = [];
while($row = $result->fetch()) {
+ $p = $this->principalBackend->getPrincipalByPath($row['principaluri']);
$shares[]= [
'href' => "principal:${row['principaluri']}",
-// 'commonName' => isset($p['{DAV:}displayname']) ? $p['{DAV:}displayname'] : '',
+ 'commonName' => isset($p['{DAV:}displayname']) ? $p['{DAV:}displayname'] : '',
'status' => 1,
'readOnly' => ($row['access'] == self::ACCESS_READ),
'{'.\OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD.'}principal' => $row['principaluri']