summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/CardDAV
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2016-08-18 15:14:04 +0200
committerRoeland Jago Douma <roeland@famdouma.nl>2016-08-24 08:50:25 +0200
commit3fbb5de74fcdc5cefc88b05a11a8efc66ea2f565 (patch)
tree7cac5241f71944dfeb434c2eb7e4169575982d1d /apps/dav/lib/CardDAV
parent53182fb780dbec9ac98f1e6f137201c6348a99cc (diff)
downloadnextcloud-server-3fbb5de74fcdc5cefc88b05a11a8efc66ea2f565.tar.gz
nextcloud-server-3fbb5de74fcdc5cefc88b05a11a8efc66ea2f565.zip
Better displaynames for shared address books
Diffstat (limited to 'apps/dav/lib/CardDAV')
-rw-r--r--apps/dav/lib/CardDAV/CardDavBackend.php29
1 files changed, 28 insertions, 1 deletions
diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php
index f8552f1323e..f6d80dfe701 100644
--- a/apps/dav/lib/CardDAV/CardDavBackend.php
+++ b/apps/dav/lib/CardDAV/CardDavBackend.php
@@ -33,6 +33,8 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
use OCA\DAV\DAV\Sharing\Backend;
use OCA\DAV\DAV\Sharing\IShareable;
use OCP\IDBConnection;
+use OCP\IUser;
+use OCP\IUserManager;
use PDO;
use Sabre\CardDAV\Backend\BackendInterface;
use Sabre\CardDAV\Backend\SyncSupport;
@@ -66,6 +68,14 @@ class CardDavBackend implements BackendInterface, SyncSupport {
'BDAY', 'UID', 'N', 'FN', 'TITLE', 'ROLE', 'NOTE', 'NICKNAME',
'ORG', 'CATEGORIES', 'EMAIL', 'TEL', 'IMPP', 'ADR', 'URL', 'GEO', 'CLOUD');
+ /**
+ * @var string[] Map of uid => display name
+ */
+ protected $userDisplayNames;
+
+ /** @var IUserManager */
+ private $userManager;
+
/** @var EventDispatcherInterface */
private $dispatcher;
@@ -74,13 +84,16 @@ class CardDavBackend implements BackendInterface, SyncSupport {
*
* @param IDBConnection $db
* @param Principal $principalBackend
+ * @param IUserManager $userManager
* @param EventDispatcherInterface $dispatcher
*/
public function __construct(IDBConnection $db,
Principal $principalBackend,
+ IUserManager $userManager,
EventDispatcherInterface $dispatcher = null) {
$this->db = $db;
$this->principalBackend = $principalBackend;
+ $this->userManager = $userManager;
$this->dispatcher = $dispatcher;
$this->sharingBackend = new Backend($this->db, $principalBackend, 'addressbook');
}
@@ -143,7 +156,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
while($row = $result->fetch()) {
list(, $name) = URLUtil::splitPath($row['principaluri']);
$uri = $row['uri'] . '_shared_by_' . $name;
- $displayName = $row['displayname'] . "($name)";
+ $displayName = $row['displayname'] . ' (' . $this->getUserDisplayName($name) . ')';
if (!isset($addressBooks[$row['id']])) {
$addressBooks[$row['id']] = [
'id' => $row['id'],
@@ -163,6 +176,20 @@ class CardDavBackend implements BackendInterface, SyncSupport {
return array_values($addressBooks);
}
+ private function getUserDisplayName($uid) {
+ if (!isset($this->userDisplayNames[$uid])) {
+ $user = $this->userManager->get($uid);
+
+ if ($user instanceof IUser) {
+ $this->userDisplayNames[$uid] = $user->getDisplayName();
+ } else {
+ $this->userDisplayNames[$uid] = $uid;
+ }
+ }
+
+ return $this->userDisplayNames[$uid];
+ }
+
/**
* @param int $addressBookId
*/