Skip to content

Commit 71065f5

Browse files
Merge pull request #33615 from nextcloud/perf/noid/user-displayname-cache-for-activity-providers
Use user name cache in activity providers
2 parents 7d7f7ab + 7e11778 commit 71065f5

11 files changed

Lines changed: 19 additions & 196 deletions

File tree

apps/comments/lib/Activity/Provider.php

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ class Provider implements IProvider {
4343
protected ICommentsManager $commentsManager;
4444
protected IUserManager $userManager;
4545
protected IManager $activityManager;
46-
/** @var string[] */
47-
protected array $displayNames = [];
4846

4947
public function __construct(IFactory $languageFactory, IURLGenerator $url, ICommentsManager $commentsManager, IUserManager $userManager, IManager $activityManager) {
5048
$this->languageFactory = $languageFactory;
@@ -213,22 +211,10 @@ protected function generateFileParameter(int $id, string $path): array {
213211
}
214212

215213
protected function generateUserParameter(string $uid): array {
216-
if (!isset($this->displayNames[$uid])) {
217-
$this->displayNames[$uid] = $this->getDisplayName($uid);
218-
}
219-
220214
return [
221215
'type' => 'user',
222216
'id' => $uid,
223-
'name' => $this->displayNames[$uid],
217+
'name' => $this->userManager->getDisplayName($uid) ?? $uid,
224218
];
225219
}
226-
227-
protected function getDisplayName(string $uid): string {
228-
$user = $this->userManager->get($uid);
229-
if ($user instanceof IUser) {
230-
return $user->getDisplayName();
231-
}
232-
return $uid;
233-
}
234220
}

apps/dav/lib/CalDAV/Activity/Provider/Base.php

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -112,34 +112,14 @@ protected function generateLegacyCalendarParameter($id, $name) {
112112
];
113113
}
114114

115-
/**
116-
* @param string $uid
117-
* @return array
118-
*/
119-
protected function generateUserParameter($uid) {
120-
if (!isset($this->userDisplayNames[$uid])) {
121-
$this->userDisplayNames[$uid] = $this->getUserDisplayName($uid);
122-
}
123-
115+
protected function generateUserParameter(string $uid): array {
124116
return [
125117
'type' => 'user',
126118
'id' => $uid,
127-
'name' => $this->userDisplayNames[$uid],
119+
'name' => $this->userManager->getDisplayName($uid) ?? $uid,
128120
];
129121
}
130122

131-
/**
132-
* @param string $uid
133-
* @return string
134-
*/
135-
protected function getUserDisplayName($uid) {
136-
$user = $this->userManager->get($uid);
137-
if ($user instanceof IUser) {
138-
return $user->getDisplayName();
139-
}
140-
return $uid;
141-
}
142-
143123
/**
144124
* @param string $gid
145125
* @return array

apps/dav/lib/CardDAV/Activity/Provider/Base.php

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -98,34 +98,14 @@ protected function generateAddressbookParameter(array $data, IL10N $l): array {
9898
];
9999
}
100100

101-
/**
102-
* @param string $uid
103-
* @return array
104-
*/
105101
protected function generateUserParameter(string $uid): array {
106-
if (!isset($this->userDisplayNames[$uid])) {
107-
$this->userDisplayNames[$uid] = $this->getUserDisplayName($uid);
108-
}
109-
110102
return [
111103
'type' => 'user',
112104
'id' => $uid,
113-
'name' => $this->userDisplayNames[$uid],
105+
'name' => $this->userManager->getDisplayName($uid) ?? $uid,
114106
];
115107
}
116108

117-
/**
118-
* @param string $uid
119-
* @return string
120-
*/
121-
protected function getUserDisplayName(string $uid): string {
122-
$user = $this->userManager->get($uid);
123-
if ($user instanceof IUser) {
124-
return $user->getDisplayName();
125-
}
126-
return $uid;
127-
}
128-
129109
/**
130110
* @param string $gid
131111
* @return array

apps/dav/tests/unit/CalDAV/Activity/Provider/BaseTest.php

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -160,41 +160,4 @@ public function testGenerateGroupParameter(string $gid) {
160160
'name' => $gid,
161161
], $this->invokePrivate($this->provider, 'generateGroupParameter', [$gid]));
162162
}
163-
164-
public function dataGenerateUserParameter() {
165-
$u1 = $this->createMock(IUser::class);
166-
$u1->expects($this->any())
167-
->method('getDisplayName')
168-
->willReturn('User 1');
169-
return [
170-
['u1', 'User 1', $u1],
171-
['u2', 'u2', null],
172-
];
173-
}
174-
175-
/**
176-
* @dataProvider dataGenerateUserParameter
177-
* @param string $uid
178-
* @param string $displayName
179-
* @param IUser|null $user
180-
*/
181-
public function testGenerateUserParameter(string $uid, string $displayName, ?IUser $user) {
182-
$this->userManager->expects($this->once())
183-
->method('get')
184-
->with($uid)
185-
->willReturn($user);
186-
187-
$this->assertEquals([
188-
'type' => 'user',
189-
'id' => $uid,
190-
'name' => $displayName,
191-
], $this->invokePrivate($this->provider, 'generateUserParameter', [$uid]));
192-
193-
// Test caching (only 1 user manager invocation allowed)
194-
$this->assertEquals([
195-
'type' => 'user',
196-
'id' => $uid,
197-
'name' => $displayName,
198-
], $this->invokePrivate($this->provider, 'generateUserParameter', [$uid]));
199-
}
200163
}

apps/files/lib/Activity/Provider.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -527,12 +527,12 @@ protected function getParentEndToEndEncryptionContainer(Folder $userFolder, Node
527527
*/
528528
protected function getUser($uid) {
529529
// First try local user
530-
$user = $this->userManager->get($uid);
531-
if ($user instanceof IUser) {
530+
$displayName = $this->userManager->getDisplayName($uid);
531+
if ($displayName !== null) {
532532
return [
533533
'type' => 'user',
534-
'id' => $user->getUID(),
535-
'name' => $user->getDisplayName(),
534+
'id' => $uid,
535+
'name' => $displayName,
536536
];
537537
}
538538

apps/files/tests/Activity/ProviderTest.php

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -177,17 +177,10 @@ public function testGetUser(string $uid, ?string $userDisplayName, ?array $cloud
177177
$provider = $this->getProvider();
178178

179179
if ($userDisplayName !== null) {
180-
$user = $this->createMock(IUser::class);
181-
$user->expects($this->once())
182-
->method('getUID')
183-
->willReturn($uid);
184-
$user->expects($this->once())
185-
->method('getDisplayName')
186-
->willReturn($userDisplayName);
187180
$this->userManager->expects($this->once())
188-
->method('get')
181+
->method('getDisplayName')
189182
->with($uid)
190-
->willReturn($user);
183+
->willReturn($userDisplayName);
191184
}
192185
if ($cloudIdData !== null) {
193186
$this->cloudIdManager->expects($this->once())

apps/files_sharing/lib/Activity/Providers/Base.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,12 +177,12 @@ protected function getFile($parameter, IEvent $event = null) {
177177
*/
178178
protected function getUser($uid) {
179179
// First try local user
180-
$user = $this->userManager->get($uid);
181-
if ($user instanceof IUser) {
180+
$displayName = $this->userManager->getDisplayName($uid);
181+
if ($displayName !== null) {
182182
return [
183183
'type' => 'user',
184-
'id' => $user->getUID(),
185-
'name' => $user->getDisplayName(),
184+
'id' => $uid,
185+
'name' => $displayName,
186186
];
187187
}
188188

apps/settings/lib/Activity/GroupProvider.php

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ class GroupProvider implements IProvider {
5151

5252
/** @var string[] */
5353
protected $groupDisplayNames = [];
54-
/** @var string[] */
55-
protected $userDisplayNames = [];
5654

5755

5856
public function __construct(L10nFactory $l10n,
@@ -169,32 +167,11 @@ protected function getGroupDisplayName(string $gid): string {
169167
return $gid;
170168
}
171169

172-
/**
173-
* @param string $uid
174-
* @return array
175-
*/
176170
protected function generateUserParameter(string $uid): array {
177-
if (!isset($this->displayNames[$uid])) {
178-
$this->userDisplayNames[$uid] = $this->getDisplayName($uid);
179-
}
180-
181171
return [
182172
'type' => 'user',
183173
'id' => $uid,
184-
'name' => $this->userDisplayNames[$uid],
174+
'name' => $this->userManager->getDisplayName($uid) ?? $uid,
185175
];
186176
}
187-
188-
/**
189-
* @param string $uid
190-
* @return string
191-
*/
192-
protected function getDisplayName(string $uid): string {
193-
$user = $this->userManager->get($uid);
194-
if ($user instanceof IUser) {
195-
return $user->getDisplayName();
196-
} else {
197-
return $uid;
198-
}
199-
}
200177
}

apps/settings/lib/Activity/Provider.php

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,6 @@ class Provider implements IProvider {
6666
/** @var IManager */
6767
private $activityManager;
6868

69-
/** @var string[] cached displayNames - key is the UID and value the displayname */
70-
protected $displayNames = [];
71-
7269
public function __construct(IFactory $languageFactory,
7370
IURLGenerator $url,
7471
IUserManager $userManager,
@@ -206,23 +203,10 @@ protected function setSubjects(IEvent $event, string $subject, array $parameters
206203
}
207204

208205
protected function generateUserParameter(string $uid): array {
209-
if (!isset($this->displayNames[$uid])) {
210-
$this->displayNames[$uid] = $this->getDisplayName($uid);
211-
}
212-
213206
return [
214207
'type' => 'user',
215208
'id' => $uid,
216-
'name' => $this->displayNames[$uid],
209+
'name' => $this->userManager->getDisplayName($uid) ?? $uid,
217210
];
218211
}
219-
220-
protected function getDisplayName(string $uid): string {
221-
$user = $this->userManager->get($uid);
222-
if ($user instanceof IUser) {
223-
return $user->getDisplayName();
224-
}
225-
226-
return $uid;
227-
}
228212
}

apps/sharebymail/lib/Activity.php

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@ class Activity implements IProvider {
5454
/** @var IContactsManager */
5555
protected $contactsManager;
5656

57-
/** @var array */
58-
protected $displayNames = [];
59-
6057
/** @var array */
6158
protected $contactNames = [];
6259

@@ -346,14 +343,10 @@ protected function generateEmailParameter($email) {
346343
* @return array
347344
*/
348345
protected function generateUserParameter($uid) {
349-
if (!isset($this->displayNames[$uid])) {
350-
$this->displayNames[$uid] = $this->getDisplayName($uid);
351-
}
352-
353346
return [
354347
'type' => 'user',
355348
'id' => $uid,
356-
'name' => $this->displayNames[$uid],
349+
'name' => $this->userManager->getDisplayName($uid) ?? $uid,
357350
];
358351
}
359352

@@ -381,17 +374,4 @@ protected function getContactName($email) {
381374

382375
return $email;
383376
}
384-
385-
/**
386-
* @param string $uid
387-
* @return string
388-
*/
389-
protected function getDisplayName($uid) {
390-
$user = $this->userManager->get($uid);
391-
if ($user instanceof IUser) {
392-
return $user->getDisplayName();
393-
} else {
394-
return $uid;
395-
}
396-
}
397377
}

0 commit comments

Comments
 (0)