Skip to content

Commit 74acf6f

Browse files
author
roadiz-ci
committed
refactor(thumbnail): replace ManagerRegistry with specific repositories
1 parent 1c5b8a0 commit 74acf6f

4 files changed

Lines changed: 28 additions & 35 deletions

File tree

src/EntityThumbnail/Provider/DocumentThumbnailProvider.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ public function supports(string $entityClass, int|string $identifier): bool
2828
return $this->isClassSupported($entityClass, Document::class);
2929
}
3030

31-
public function getDocumentUrl(BaseDocumentInterface $document): ?string
31+
public function getDocumentUrl(BaseDocumentInterface $document, int $size = 64): ?string
3232
{
3333
$url = $this->documentUrlGenerator
3434
->setDocument($document)
3535
->setOptions([
36-
'width' => 64,
37-
'height' => 64,
36+
'width' => $size,
37+
'height' => $size,
3838
'crop' => '1:1',
3939
'quality' => 80,
4040
'sharpen' => 3,
@@ -70,12 +70,14 @@ public function getThumbnail(string $entityClass, int|string $identifier): ?Enti
7070
);
7171
}
7272

73+
$size = 64;
74+
7375
return new EntityThumbnail(
74-
url: $this->getDocumentUrl($document),
76+
url: $this->getDocumentUrl($document, $size),
7577
alt: $document->getAlternativeText() ?? '',
7678
title: $document->getFilename(),
77-
width: 64,
78-
height: 64,
79+
width: $size,
80+
height: $size,
7981
);
8082
}
8183
}

src/EntityThumbnail/Provider/NodeThumbnailProvider.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
namespace RZ\Roadiz\RozierBundle\EntityThumbnail\Provider;
66

7-
use Doctrine\Persistence\ManagerRegistry;
87
use RZ\Roadiz\Core\AbstractEntities\NodeInterface;
98
use RZ\Roadiz\CoreBundle\Entity\Node;
109
use RZ\Roadiz\CoreBundle\Entity\NodesSources;
10+
use RZ\Roadiz\CoreBundle\Repository\NotPublishedNodeRepository;
1111
use RZ\Roadiz\RozierBundle\EntityThumbnail\AbstractEntityThumbnailProvider;
1212
use RZ\Roadiz\RozierBundle\EntityThumbnail\EntityThumbnail;
1313

@@ -17,7 +17,7 @@
1717
final readonly class NodeThumbnailProvider extends AbstractEntityThumbnailProvider
1818
{
1919
public function __construct(
20-
private ManagerRegistry $managerRegistry,
20+
private NotPublishedNodeRepository $nodeRepository,
2121
private NodesSourcesThumbnailProvider $nodesSourcesThumbnailProvider,
2222
) {
2323
}
@@ -35,8 +35,7 @@ public function getThumbnail(string $entityClass, int|string $identifier): ?Enti
3535
return null;
3636
}
3737

38-
$repository = $this->managerRegistry->getRepository($entityClass);
39-
$node = $repository->find($identifier);
38+
$node = $this->nodeRepository->find($identifier);
4039

4140
if (!$node instanceof Node) {
4241
return null;

src/EntityThumbnail/Provider/NodesSourcesThumbnailProvider.php

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace RZ\Roadiz\RozierBundle\EntityThumbnail\Provider;
66

7-
use Doctrine\Persistence\ManagerRegistry;
8-
use RZ\Roadiz\CoreBundle\Entity\Document;
97
use RZ\Roadiz\CoreBundle\Entity\NodesSources;
8+
use RZ\Roadiz\CoreBundle\Repository\DocumentRepository;
9+
use RZ\Roadiz\CoreBundle\Repository\NotPublishedNodesSourcesRepository;
1010
use RZ\Roadiz\CoreBundle\Security\Authorization\Voter\NodeVoter;
1111
use RZ\Roadiz\RozierBundle\EntityThumbnail\AbstractEntityThumbnailProvider;
1212
use RZ\Roadiz\RozierBundle\EntityThumbnail\EntityThumbnail;
@@ -18,7 +18,8 @@
1818
final readonly class NodesSourcesThumbnailProvider extends AbstractEntityThumbnailProvider
1919
{
2020
public function __construct(
21-
private ManagerRegistry $managerRegistry,
21+
private NotPublishedNodesSourcesRepository $nodesSourcesRepository,
22+
private DocumentRepository $documentRepository,
2223
private DocumentThumbnailProvider $documentThumbnailProvider,
2324
private Security $security,
2425
) {
@@ -37,8 +38,7 @@ public function getThumbnail(string $entityClass, int|string $identifier): ?Enti
3738
return null;
3839
}
3940

40-
$repository = $this->managerRegistry->getRepository($entityClass);
41-
$nodeSource = $repository->find($identifier);
41+
$nodeSource = $this->nodesSourcesRepository->find($identifier);
4242

4343
if (!$nodeSource instanceof NodesSources) {
4444
return null;
@@ -51,23 +51,18 @@ public function getThumbnail(string $entityClass, int|string $identifier): ?Enti
5151
$title = $nodeSource->getTitle() ?? 'Node';
5252

5353
// Get the first displayable document associated with this NodesSources
54-
$documentDto = $this->managerRegistry
55-
->getRepository(Document::class)
56-
->findOneDisplayableDtoByNodeSource($nodeSource);
54+
$documentDto = $this->documentRepository->findOneDisplayableDtoByNodeSource($nodeSource);
5755

58-
if (null === $documentDto || $documentDto->isPrivate()) {
59-
return new EntityThumbnail(
60-
title: $title,
61-
);
62-
}
63-
64-
$url = null;
65-
if ($documentDto->isImage() || $documentDto->isSvg()) {
66-
$url = $this->documentThumbnailProvider->getDocumentUrl($documentDto);
56+
if (
57+
null === $documentDto
58+
|| $documentDto->isPrivate()
59+
|| !($documentDto->isImage() || $documentDto->isSvg())
60+
) {
61+
return null;
6762
}
6863

6964
return new EntityThumbnail(
70-
url: $url,
65+
url: $this->documentThumbnailProvider->getDocumentUrl($documentDto),
7166
alt: $title,
7267
title: $title,
7368
width: 64,

src/EntityThumbnail/Provider/UserThumbnailProvider.php

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
namespace RZ\Roadiz\RozierBundle\EntityThumbnail\Provider;
66

7-
use Doctrine\Persistence\ManagerRegistry;
87
use RZ\Roadiz\CoreBundle\Entity\User;
8+
use RZ\Roadiz\CoreBundle\Repository\UserRepository;
99
use RZ\Roadiz\RozierBundle\EntityThumbnail\AbstractEntityThumbnailProvider;
1010
use RZ\Roadiz\RozierBundle\EntityThumbnail\EntityThumbnail;
1111

@@ -16,7 +16,7 @@
1616
final readonly class UserThumbnailProvider extends AbstractEntityThumbnailProvider
1717
{
1818
public function __construct(
19-
private ManagerRegistry $managerRegistry,
19+
private UserRepository $userRepository,
2020
) {
2121
}
2222

@@ -33,15 +33,12 @@ public function getThumbnail(string $entityClass, int|string $identifier): ?Enti
3333
return null;
3434
}
3535

36-
// Try to fetch user by ID or email
37-
$repository = $this->managerRegistry->getRepository($entityClass);
38-
3936
// If identifier is numeric, try by ID first
4037
if (is_numeric($identifier)) {
41-
$user = $repository->find((int) $identifier);
38+
$user = $this->userRepository->find((int) $identifier);
4239
} else {
4340
// Otherwise try by email
44-
$user = $repository->findOneBy(['email' => $identifier]);
41+
$user = $this->userRepository->findOneBy(['email' => $identifier]);
4542
}
4643

4744
if (!$user instanceof User) {

0 commit comments

Comments
 (0)