summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/command/syncsystemaddressbook.php6
-rw-r--r--apps/files_sharing/lib/helper.php16
-rw-r--r--apps/files_sharing/settings-personal.php4
-rw-r--r--lib/private/user/user.php67
-rw-r--r--lib/public/iuser.php8
-rw-r--r--tests/lib/contacts/localadressbook.php3
6 files changed, 60 insertions, 44 deletions
diff --git a/apps/dav/command/syncsystemaddressbook.php b/apps/dav/command/syncsystemaddressbook.php
index acf9e869d09..74d8295e77b 100644
--- a/apps/dav/command/syncsystemaddressbook.php
+++ b/apps/dav/command/syncsystemaddressbook.php
@@ -49,6 +49,10 @@ class SyncSystemAddressBook extends Command {
->setDescription('Synchronizes users to the system addressbook');
}
+ /**
+ * @param InputInterface $input
+ * @param OutputInterface $output
+ */
protected function execute(InputInterface $input, OutputInterface $output) {
$principalBackend = new Principal(
$this->config,
@@ -72,6 +76,7 @@ class SyncSystemAddressBook extends Command {
$userId = $user->getUID();
$displayName = $user->getDisplayName();
$emailAddress = $user->getEMailAddress();
+ $cloudId = $user->getCloudId();
$image = $user->getAvatarImage(-1);
$cardId = "$name:$userId.vcf";
@@ -81,6 +86,7 @@ class SyncSystemAddressBook extends Command {
$vCard->add(new Text($vCard, 'UID', $userId));
$vCard->add(new Text($vCard, 'FN', $displayName));
$vCard->add(new Text($vCard, 'EMAIL', $emailAddress));
+ $vCard->add(new Text($vCard, 'CLOUD', $cloudId));
if ($image) {
$vCard->add('PHOTO', $image->data(), ['ENCODING' => 'b', 'TYPE' => $image->mimeType()]);
}
diff --git a/apps/files_sharing/lib/helper.php b/apps/files_sharing/lib/helper.php
index a804737c490..391b491e1ff 100644
--- a/apps/files_sharing/lib/helper.php
+++ b/apps/files_sharing/lib/helper.php
@@ -310,20 +310,4 @@ class Helper {
\OC::$server->getConfig()->setSystemValue('share_folder', $shareFolder);
}
- /**
- * remove protocol from URL
- *
- * @param string $url
- * @return string
- */
- public static function removeProtocolFromUrl($url) {
- if (strpos($url, 'https://') === 0) {
- return substr($url, strlen('https://'));
- } else if (strpos($url, 'http://') === 0) {
- return substr($url, strlen('http://'));
- }
-
- return $url;
- }
-
}
diff --git a/apps/files_sharing/settings-personal.php b/apps/files_sharing/settings-personal.php
index deaa7b92ac7..85fad9c3eaf 100644
--- a/apps/files_sharing/settings-personal.php
+++ b/apps/files_sharing/settings-personal.php
@@ -32,9 +32,7 @@ if (count($matches) > 0 && $matches[1] <= 9) {
$isIE8 = true;
}
-$uid = \OC::$server->getUserSession()->getUser()->getUID();
-$server = \OC::$server->getURLGenerator()->getAbsoluteURL('/');
-$cloudID = $uid . '@' . rtrim(\OCA\Files_Sharing\Helper::removeProtocolFromUrl($server), '/');
+$cloudID = \OC::$server->getUserSession()->getUser()->getCloudId();
$url = 'https://owncloud.org/federation#' . $cloudID;
$ownCloudLogoPath = \OC::$server->getURLGenerator()->imagePath('core', 'logo-icon.svg');
diff --git a/lib/private/user/user.php b/lib/private/user/user.php
index 023fc5f5a32..ca79f12469c 100644
--- a/lib/private/user/user.php
+++ b/lib/private/user/user.php
@@ -32,60 +32,48 @@ namespace OC\User;
use OC\Hooks\Emitter;
use OCP\IAvatarManager;
use OCP\IImage;
+use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IConfig;
class User implements IUser {
- /**
- * @var string $uid
- */
+ /** @var string $uid */
private $uid;
- /**
- * @var string $displayName
- */
+ /** @var string $displayName */
private $displayName;
- /**
- * @var \OC_User_Interface $backend
- */
+ /** @var \OC_User_Interface $backend */
private $backend;
- /**
- * @var bool $enabled
- */
+ /** @var bool $enabled */
private $enabled;
- /**
- * @var Emitter|Manager $emitter
- */
+ /** @var Emitter|Manager $emitter */
private $emitter;
- /**
- * @var string $home
- */
+ /** @var string $home */
private $home;
- /**
- * @var int $lastLogin
- */
+ /** @var int $lastLogin */
private $lastLogin;
- /**
- * @var \OCP\IConfig $config
- */
+ /** @var \OCP\IConfig $config */
private $config;
/** @var IAvatarManager */
private $avatarManager;
+ /** @var IURLGenerator */
+ private $urlGenerator;
+
/**
* @param string $uid
* @param \OC_User_Interface $backend
* @param \OC\Hooks\Emitter $emitter
* @param \OCP\IConfig $config
*/
- public function __construct($uid, $backend, $emitter = null, IConfig $config = null, $avatarManager = null) {
+ public function __construct($uid, $backend, $emitter = null, IConfig $config = null, $avatarManager = null, $urlGenerator = null) {
$this->uid = $uid;
$this->backend = $backend;
$this->emitter = $emitter;
@@ -102,6 +90,9 @@ class User implements IUser {
if (is_null($this->avatarManager)) {
$this->avatarManager = \OC::$server->getAvatarManager();
}
+ if (is_null($this->urlGenerator)) {
+ $this->urlGenerator = \OC::$server->getURLGenerator();
+ }
}
/**
@@ -342,4 +333,30 @@ class User implements IUser {
return null;
}
+
+ /**
+ * get the federation cloud id
+ *
+ * @return string
+ * @since 9.0.0
+ */
+ public function getCloudId() {
+ $uid = $this->getUID();
+ $server = $this->urlGenerator->getAbsoluteURL('/');
+ return $uid . '@' . rtrim( $this->removeProtocolFromUrl($server), '/');
+ }
+
+ /**
+ * @param string $url
+ * @return string
+ */
+ private function removeProtocolFromUrl($url) {
+ if (strpos($url, 'https://') === 0) {
+ return substr($url, strlen('https://'));
+ } else if (strpos($url, 'http://') === 0) {
+ return substr($url, strlen('http://'));
+ }
+
+ return $url;
+ }
}
diff --git a/lib/public/iuser.php b/lib/public/iuser.php
index f6caef2ba1b..67e2b107e0b 100644
--- a/lib/public/iuser.php
+++ b/lib/public/iuser.php
@@ -161,4 +161,12 @@ interface IUser {
* @since 9.0.0
*/
public function getAvatarImage($size);
+
+ /**
+ * get the federation cloud id
+ *
+ * @return string
+ * @since 9.0.0
+ */
+ public function getCloudId();
}
diff --git a/tests/lib/contacts/localadressbook.php b/tests/lib/contacts/localadressbook.php
index 54168324538..e5c43460835 100644
--- a/tests/lib/contacts/localadressbook.php
+++ b/tests/lib/contacts/localadressbook.php
@@ -102,4 +102,7 @@ class SimpleUserForTesting implements IUser {
public function getAvatarImage($size) {
}
+
+ public function getCloudId() {
+ }
}