mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
Merge pull request #38969 from nextcloud/enh/38944/add-profile-url-to-sab
enh(sab): Add profileUrl to SAB
This commit is contained in:
commit
c3dcd70b91
2 changed files with 28 additions and 4 deletions
|
|
@ -29,6 +29,7 @@ namespace OCA\DAV\CardDAV;
|
|||
|
||||
use Exception;
|
||||
use OCP\Accounts\IAccountManager;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\IImage;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserManager;
|
||||
|
|
@ -36,14 +37,17 @@ use Sabre\VObject\Component\VCard;
|
|||
use Sabre\VObject\Property\Text;
|
||||
|
||||
class Converter {
|
||||
/** @var IURLGenerator */
|
||||
private $urlGenerator;
|
||||
/** @var IAccountManager */
|
||||
private $accountManager;
|
||||
private IUserManager $userManager;
|
||||
|
||||
public function __construct(IAccountManager $accountManager,
|
||||
IUserManager $userManager) {
|
||||
IUserManager $userManager, IURLGenerator $urlGenerator) {
|
||||
$this->accountManager = $accountManager;
|
||||
$this->userManager = $userManager;
|
||||
$this->urlGenerator = $urlGenerator;
|
||||
}
|
||||
|
||||
public function createCardFromUser(IUser $user): ?VCard {
|
||||
|
|
@ -88,6 +92,21 @@ class Converter {
|
|||
case IAccountManager::PROPERTY_WEBSITE:
|
||||
$vCard->add(new Text($vCard, 'URL', $property->getValue(), ['X-NC-SCOPE' => $scope]));
|
||||
break;
|
||||
case IAccountManager::PROPERTY_PROFILE_ENABLED:
|
||||
if ($property->getValue()) {
|
||||
$vCard->add(
|
||||
new Text(
|
||||
$vCard,
|
||||
'X-SOCIALPROFILE',
|
||||
$this->urlGenerator->linkToRouteAbsolute('core.ProfilePage.index', ['targetUserId' => $user->getUID()]),
|
||||
[
|
||||
'TYPE' => 'NEXTCLOUD',
|
||||
'X-NC-SCOPE' => IAccountManager::SCOPE_PUBLISHED
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
break;
|
||||
case IAccountManager::PROPERTY_PHONE:
|
||||
$vCard->add(new Text($vCard, 'TEL', $property->getValue(), ['TYPE' => 'VOICE', 'X-NC-SCOPE' => $scope]));
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ use OCA\DAV\CardDAV\Converter;
|
|||
use OCP\Accounts\IAccount;
|
||||
use OCP\Accounts\IAccountManager;
|
||||
use OCP\Accounts\IAccountProperty;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\IImage;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserManager;
|
||||
|
|
@ -47,11 +48,15 @@ class ConverterTest extends TestCase {
|
|||
/** @var IUserManager|(IUserManager&MockObject)|MockObject */
|
||||
private IUserManager|MockObject $userManager;
|
||||
|
||||
/** @var IURLGenerator */
|
||||
private $urlGenerator;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
|
||||
$this->accountManager = $this->createMock(IAccountManager::class);
|
||||
$this->userManager = $this->createMock(IUserManager::class);
|
||||
$this->urlGenerator = $this->createMock(IURLGenerator::class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -103,7 +108,7 @@ class ConverterTest extends TestCase {
|
|||
$user = $this->getUserMock((string)$displayName, $eMailAddress, $cloudId);
|
||||
$accountManager = $this->getAccountManager($user);
|
||||
|
||||
$converter = new Converter($accountManager, $this->userManager);
|
||||
$converter = new Converter($accountManager, $this->userManager, $this->urlGenerator);
|
||||
$vCard = $converter->createCardFromUser($user);
|
||||
if ($expectedVCard !== null) {
|
||||
$this->assertInstanceOf('Sabre\VObject\Component\VCard', $vCard);
|
||||
|
|
@ -124,7 +129,7 @@ class ConverterTest extends TestCase {
|
|||
->willReturn('Manager');
|
||||
$accountManager = $this->getAccountManager($user);
|
||||
|
||||
$converter = new Converter($accountManager, $this->userManager);
|
||||
$converter = new Converter($accountManager, $this->userManager, $this->urlGenerator);
|
||||
$vCard = $converter->createCardFromUser($user);
|
||||
|
||||
$this->compareData(
|
||||
|
|
@ -212,7 +217,7 @@ class ConverterTest extends TestCase {
|
|||
* @param $fullName
|
||||
*/
|
||||
public function testNameSplitter($expected, $fullName): void {
|
||||
$converter = new Converter($this->accountManager, $this->userManager);
|
||||
$converter = new Converter($this->accountManager, $this->userManager, $this->urlGenerator);
|
||||
$r = $converter->splitFullName($fullName);
|
||||
$r = implode(';', $r);
|
||||
$this->assertEquals($expected, $r);
|
||||
|
|
|
|||
Loading…
Reference in a new issue