From 1a5ca7417249a991aaea4b36ab61e088cc827993 Mon Sep 17 00:00:00 2001 From: Marco Nassabain Date: Fri, 19 Mar 2021 20:11:49 +0100 Subject: =?UTF-8?q?=E2=9C=A8=20Add=20sharer=20display=20name=20into=20shar?= =?UTF-8?q?ed=20items=20-=20Add=20mapSharedByDisplayNames=20in=20ShareServ?= =?UTF-8?q?ice=20-=20Update=20ItemController=20to=20call=20function=20on?= =?UTF-8?q?=20items?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marco Nassabain --- lib/Controller/ItemController.php | 6 ++++-- lib/Service/ShareService.php | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/Controller/ItemController.php b/lib/Controller/ItemController.php index cf4fe2237..4d2050e63 100644 --- a/lib/Controller/ItemController.php +++ b/lib/Controller/ItemController.php @@ -176,7 +176,8 @@ class ItemController extends Controller ); break; } - $return['items'] = $items; + // Map sharer display names onto shared items + $return['items'] = $this->shareService->mapSharedByDisplayNames($items); // this gets thrown if there are no items // in that case just return an empty array @@ -236,7 +237,8 @@ class ItemController extends Controller $return['newestItemId'] = $this->itemService->newest($this->getUserId())->getId(); $return['feeds'] = $this->feedService->findAllForUser($this->getUserId()); $return['starred'] = count($this->itemService->starred($this->getUserId())); - $return['items'] = $items; + // Map sharer display names onto shared items + $return['items'] = $this->shareService->mapSharedByDisplayNames($items); // this gets thrown if there are no items // in that case just return an empty array diff --git a/lib/Service/ShareService.php b/lib/Service/ShareService.php index 2b4edafac..429ec46b0 100644 --- a/lib/Service/ShareService.php +++ b/lib/Service/ShareService.php @@ -15,6 +15,7 @@ use \OCA\News\Db\Feed; use \Psr\Log\LoggerInterface; use OCP\IURLGenerator; +use OCP\IUserManager; use \OCP\IL10N; use OCA\News\Service\Exceptions\ServiceNotFoundException; @@ -40,7 +41,7 @@ class ShareService * @var FeedServiceV2 */ protected $feedService; - + /** * @var LoggerInterface */ @@ -51,6 +52,11 @@ class ShareService */ private $urlGenerator; + /** + * @var IUserManager + */ + private $userManager; + /** * @var IL10N */ @@ -69,12 +75,14 @@ class ShareService FeedServiceV2 $feedService, ItemServiceV2 $itemService, IURLGenerator $urlGenerator, + IUserManager $userManager, IL10N $l, LoggerInterface $logger ) { $this->itemService = $itemService; $this->feedService = $feedService; $this->urlGenerator = $urlGenerator; + $this->userManager = $userManager; $this->l = $l; $this->logger = $logger; } @@ -127,4 +135,28 @@ class ShareService return $this->itemService->insertOrUpdate($sharedItem); } + + /** + * Map sharers display name to shared items. + * + * Loops through an array of news items. For all shared items, the function + * fetches the sharers display name and adds it into the item. + * + * @param Item[] Array containing items that are shared or not + * @return Item[] + */ + public function mapSharedByDisplayNames(array $items): array + { + foreach ($items as $item) { + $sharedBy = $item->getSharedBy(); + if (!is_null($sharedBy)) { + $user = $this->userManager->get($sharedBy); + if (!is_null($user)) { + $item->setSharedByDisplayName($user->getDisplayName()); + } + } + } + + return $items; + } } -- cgit v1.2.3