From b0b631545ec2d08e43d162a147308e8a58e0954e Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Thu, 14 Apr 2022 14:40:59 -0100 Subject: [PATCH] update displayName Signed-off-by: Maxence Lange --- lib/FederatedItems/CircleEdit.php | 8 +++++++ lib/Listeners/DeprecatedListener.php | 5 ++++ lib/Service/MaintenanceService.php | 36 ++++++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/lib/FederatedItems/CircleEdit.php b/lib/FederatedItems/CircleEdit.php index d41b59e8a..cd45d969b 100644 --- a/lib/FederatedItems/CircleEdit.php +++ b/lib/FederatedItems/CircleEdit.php @@ -33,6 +33,7 @@ use OCA\Circles\Tools\Traits\TDeserialize; use OCA\Circles\Db\CircleRequest; +use OCA\Circles\Db\MemberRequest; use OCA\Circles\Exceptions\CircleNameTooShortException; use OCA\Circles\Exceptions\RequestBuilderException; use OCA\Circles\IFederatedItem; @@ -53,6 +54,9 @@ class CircleEdit implements IFederatedItem { /** @var CircleRequest */ private $circleRequest; + /** @var MemberRequest */ + private $memberRequest; + /** @var CircleService */ private $circleService; @@ -64,15 +68,18 @@ class CircleEdit implements IFederatedItem { * CircleEdit constructor. * * @param CircleRequest $circleRequest + * @param MemberRequest $memberRequest * @param CircleService $circleService * @param EventService $eventService */ public function __construct( CircleRequest $circleRequest, + MemberRequest $memberRequest, CircleService $circleService, EventService $eventService ) { $this->circleRequest = $circleRequest; + $this->memberRequest = $memberRequest; $this->circleService = $circleService; $this->eventService = $eventService; } @@ -134,6 +141,7 @@ public function manage(FederatedEvent $event): void { } $this->circleRequest->edit($circle); + $this->memberRequest->updateDisplayName($circle->getSingleId(), $circle->getDisplayName()); $this->eventService->circleEditing($event); } diff --git a/lib/Listeners/DeprecatedListener.php b/lib/Listeners/DeprecatedListener.php index 241df229e..94860f179 100644 --- a/lib/Listeners/DeprecatedListener.php +++ b/lib/Listeners/DeprecatedListener.php @@ -119,6 +119,11 @@ public function userAccountUpdated(IUser $user) { $circles = $this->circleService->getCircles($probe); foreach ($circles as $circle) { + // we are only interested in direct membership + if ($circle->getInitiator()->getSingleId() !== $federatedUser->getSingleId()) { + continue; + } + $event = new FederatedEvent(MemberDisplayName::class); $event->setCircle($circle); $event->getParams()->s('displayName', $user->getDisplayName()); diff --git a/lib/Service/MaintenanceService.php b/lib/Service/MaintenanceService.php index 81474ba01..645beba61 100644 --- a/lib/Service/MaintenanceService.php +++ b/lib/Service/MaintenanceService.php @@ -43,6 +43,7 @@ use OCA\Circles\Model\Probes\CircleProbe; use OCA\Circles\Model\ShareWrapper; use OCA\Circles\Tools\Traits\TNCLogger; +use OCP\IGroupManager; use OCP\IUserManager; use Symfony\Component\Console\Output\OutputInterface; @@ -61,6 +62,9 @@ class MaintenanceService { /** @var IUserManager */ private $userManager; + /** @var IGroupManager */ + private $groupManager; + /** @var CircleRequest */ private $circleRequest; @@ -109,6 +113,7 @@ class MaintenanceService { */ public function __construct( IUserManager $userManager, + IGroupManager $groupManager, CircleRequest $circleRequest, MemberRequest $memberRequest, ShareWrapperRequest $shareWrapperRequest, @@ -120,6 +125,7 @@ public function __construct( ConfigService $configService ) { $this->userManager = $userManager; + $this->groupManager = $groupManager; $this->circleRequest = $circleRequest; $this->memberRequest = $memberRequest; $this->shareWrapperRequest = $shareWrapperRequest; @@ -272,8 +278,6 @@ private function runMaintenance5(): void { // try { // $this->output('refresh displayNames older than 7d'); -// // $this->refreshOldDisplayNames(); -// $this->output('refresh DisplayNames'); // $this->refreshDisplayName(); // } catch (Exception $e) { // } @@ -284,6 +288,13 @@ private function runMaintenance5(): void { $this->removeOrphanShares(); } catch (Exception $e) { } + + try { + // Can be removed in NC27. + $this->output('fix sub-circle display name'); + $this->fixSubCirclesDisplayName(); + } catch (Exception $e) { + } } @@ -389,6 +400,10 @@ private function refreshDisplayName(): void { foreach ($circles as $circle) { $owner = $circle->getOwner(); + if ($owner->getDisplayUpdate() > (time() - 604800)) { + continue; + } + if ($owner->getUserType() === Member::TYPE_USER) { $user = $this->userManager->get($owner->getUserId()); $this->memberRequest->updateDisplayName($owner->getSingleId(), $user->getDisplayName()); @@ -397,6 +412,23 @@ private function refreshDisplayName(): void { } } + + /** + * @throws RequestBuilderException + * @throws InitiatorNotFoundException + */ + private function fixSubCirclesDisplayName(): void { + $probe = new CircleProbe(); + $probe->includeSingleCircles(); + + $circles = $this->circleService->getCircles($probe); + + foreach ($circles as $circle) { + $this->memberRequest->updateDisplayName($circle->getSingleId(), $circle->getDisplayName()); + } + } + + /** * @param string $message */