]> source.dussan.org Git - nextcloud-server.git/commitdiff
show correct display name if we have the user in one of our address books
authorBjoern Schiessle <bjoern@schiessle.org>
Tue, 25 Oct 2016 14:24:24 +0000 (16:24 +0200)
committerBjoern Schiessle <bjoern@schiessle.org>
Tue, 1 Nov 2016 18:54:40 +0000 (19:54 +0100)
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
apps/files_sharing/lib/Controller/ShareAPIController.php

index 0f4173f87636679e175edd5c1064fd808b970b53..186f314a1c8e4269252e5b38897d4a03ede55f9d 100644 (file)
@@ -23,7 +23,6 @@
  */
 namespace OCA\Files_Sharing\Controller;
 
-use OC\Share20\Exception\ProviderException;
 use OCP\AppFramework\Http\DataResponse;
 use OCP\AppFramework\OCS\OCSBadRequestException;
 use OCP\AppFramework\OCS\OCSException;
@@ -37,7 +36,6 @@ use OCP\IL10N;
 use OCP\IUserManager;
 use OCP\IRequest;
 use OCP\IURLGenerator;
-use OCP\IUser;
 use OCP\Files\IRootFolder;
 use OCP\Lock\LockedException;
 use OCP\Share\IManager;
@@ -187,11 +185,11 @@ class ShareAPIController extends OCSController {
 
                } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE) {
                        $result['share_with'] = $share->getSharedWith();
-                       $result['share_with_displayname'] = $share->getSharedWith();
+                       $result['share_with_displayname'] = $this->getDisplayNameFromAddressBook($share->getSharedWith(), 'CLOUD');
                        $result['token'] = $share->getToken();
                } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
                        $result['share_with'] = $share->getSharedWith();
-                       $result['share_with_displayname'] = $share->getSharedWith();
+                       $result['share_with_displayname'] = $this->getDisplayNameFromAddressBook($share->getSharedWith(), 'EMAIL');
                        $result['token'] = $share->getToken();
                }
 
@@ -200,6 +198,28 @@ class ShareAPIController extends OCSController {
                return $result;
        }
 
+       /**
+        * Check if one of the users address books knows the exact property, if
+        * yes we return the full name.
+        *
+        * @param string $query
+        * @param string $property
+        * @return string
+        */
+       private function getDisplayNameFromAddressBook($query, $property) {
+               // FIXME: If we inject the contacts manager it gets initialized bofore any address books are registered
+               $result = \OC::$server->getContactsManager()->search($query, [$property]);
+               foreach ($result as $r) {
+                       foreach($r[$property] as $value) {
+                               if ($value === $query) {
+                                       return $r['FN'];
+                               }
+                       }
+               }
+
+               return $query;
+       }
+
        /**
         * Get a specific share by id
         *