Add the user's cloud id to the vCard

remotes/origin/share-copy-source-mounts
Thomas Müller 9 years ago
parent 7c8a84e7ac
commit df6fc6cc70
  1. 6
      apps/dav/command/syncsystemaddressbook.php
  2. 16
      apps/files_sharing/lib/helper.php
  3. 4
      apps/files_sharing/settings-personal.php
  4. 67
      lib/private/user/user.php
  5. 8
      lib/public/iuser.php
  6. 3
      tests/lib/contacts/localadressbook.php

@ -49,6 +49,10 @@ class SyncSystemAddressBook extends Command {
->setDescription('Synchronizes users to the system addressbook'); ->setDescription('Synchronizes users to the system addressbook');
} }
/**
* @param InputInterface $input
* @param OutputInterface $output
*/
protected function execute(InputInterface $input, OutputInterface $output) { protected function execute(InputInterface $input, OutputInterface $output) {
$principalBackend = new Principal( $principalBackend = new Principal(
$this->config, $this->config,
@ -72,6 +76,7 @@ class SyncSystemAddressBook extends Command {
$userId = $user->getUID(); $userId = $user->getUID();
$displayName = $user->getDisplayName(); $displayName = $user->getDisplayName();
$emailAddress = $user->getEMailAddress(); $emailAddress = $user->getEMailAddress();
$cloudId = $user->getCloudId();
$image = $user->getAvatarImage(-1); $image = $user->getAvatarImage(-1);
$cardId = "$name:$userId.vcf"; $cardId = "$name:$userId.vcf";
@ -81,6 +86,7 @@ class SyncSystemAddressBook extends Command {
$vCard->add(new Text($vCard, 'UID', $userId)); $vCard->add(new Text($vCard, 'UID', $userId));
$vCard->add(new Text($vCard, 'FN', $displayName)); $vCard->add(new Text($vCard, 'FN', $displayName));
$vCard->add(new Text($vCard, 'EMAIL', $emailAddress)); $vCard->add(new Text($vCard, 'EMAIL', $emailAddress));
$vCard->add(new Text($vCard, 'CLOUD', $cloudId));
if ($image) { if ($image) {
$vCard->add('PHOTO', $image->data(), ['ENCODING' => 'b', 'TYPE' => $image->mimeType()]); $vCard->add('PHOTO', $image->data(), ['ENCODING' => 'b', 'TYPE' => $image->mimeType()]);
} }

@ -310,20 +310,4 @@ class Helper {
\OC::$server->getConfig()->setSystemValue('share_folder', $shareFolder); \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;
}
} }

@ -32,9 +32,7 @@ if (count($matches) > 0 && $matches[1] <= 9) {
$isIE8 = true; $isIE8 = true;
} }
$uid = \OC::$server->getUserSession()->getUser()->getUID(); $cloudID = \OC::$server->getUserSession()->getUser()->getCloudId();
$server = \OC::$server->getURLGenerator()->getAbsoluteURL('/');
$cloudID = $uid . '@' . rtrim(\OCA\Files_Sharing\Helper::removeProtocolFromUrl($server), '/');
$url = 'https://owncloud.org/federation#' . $cloudID; $url = 'https://owncloud.org/federation#' . $cloudID;
$ownCloudLogoPath = \OC::$server->getURLGenerator()->imagePath('core', 'logo-icon.svg'); $ownCloudLogoPath = \OC::$server->getURLGenerator()->imagePath('core', 'logo-icon.svg');

@ -32,60 +32,48 @@ namespace OC\User;
use OC\Hooks\Emitter; use OC\Hooks\Emitter;
use OCP\IAvatarManager; use OCP\IAvatarManager;
use OCP\IImage; use OCP\IImage;
use OCP\IURLGenerator;
use OCP\IUser; use OCP\IUser;
use OCP\IConfig; use OCP\IConfig;
class User implements IUser { class User implements IUser {
/** /** @var string $uid */
* @var string $uid
*/
private $uid; private $uid;
/** /** @var string $displayName */
* @var string $displayName
*/
private $displayName; private $displayName;
/** /** @var \OC_User_Interface $backend */
* @var \OC_User_Interface $backend
*/
private $backend; private $backend;
/** /** @var bool $enabled */
* @var bool $enabled
*/
private $enabled; private $enabled;
/** /** @var Emitter|Manager $emitter */
* @var Emitter|Manager $emitter
*/
private $emitter; private $emitter;
/** /** @var string $home */
* @var string $home
*/
private $home; private $home;
/** /** @var int $lastLogin */
* @var int $lastLogin
*/
private $lastLogin; private $lastLogin;
/** /** @var \OCP\IConfig $config */
* @var \OCP\IConfig $config
*/
private $config; private $config;
/** @var IAvatarManager */ /** @var IAvatarManager */
private $avatarManager; private $avatarManager;
/** @var IURLGenerator */
private $urlGenerator;
/** /**
* @param string $uid * @param string $uid
* @param \OC_User_Interface $backend * @param \OC_User_Interface $backend
* @param \OC\Hooks\Emitter $emitter * @param \OC\Hooks\Emitter $emitter
* @param \OCP\IConfig $config * @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->uid = $uid;
$this->backend = $backend; $this->backend = $backend;
$this->emitter = $emitter; $this->emitter = $emitter;
@ -102,6 +90,9 @@ class User implements IUser {
if (is_null($this->avatarManager)) { if (is_null($this->avatarManager)) {
$this->avatarManager = \OC::$server->getAvatarManager(); $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; 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;
}
} }

@ -161,4 +161,12 @@ interface IUser {
* @since 9.0.0 * @since 9.0.0
*/ */
public function getAvatarImage($size); public function getAvatarImage($size);
/**
* get the federation cloud id
*
* @return string
* @since 9.0.0
*/
public function getCloudId();
} }

@ -102,4 +102,7 @@ class SimpleUserForTesting implements IUser {
public function getAvatarImage($size) { public function getAvatarImage($size) {
} }
public function getCloudId() {
}
} }

Loading…
Cancel
Save