mirror of
https://github.com/doctrine/doctrine-website.git
synced 2026-03-23 22:32:11 +01:00
Maintaining a standalone static website generator project that is not reused outside our website adds maintenance overhead. For instance, support for using `phpdocumentor/guides` was implemented in the website repo rather than the standalone generator package, which was still using the `doctrine/rst-parser` package that we want to abandon.
52 lines
1.9 KiB
PHP
52 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Doctrine\Website\Controllers;
|
|
|
|
use Doctrine\Website\Model\BlogPost;
|
|
use Doctrine\Website\Model\DoctrineUser;
|
|
use Doctrine\Website\Model\Partner;
|
|
use Doctrine\Website\Model\Project;
|
|
use Doctrine\Website\Projects\GetTotalDownloads;
|
|
use Doctrine\Website\Repositories\BlogPostRepository;
|
|
use Doctrine\Website\Repositories\DoctrineUserRepository;
|
|
use Doctrine\Website\Repositories\PartnerRepository;
|
|
use Doctrine\Website\Repositories\ProjectRepository;
|
|
use Doctrine\Website\StaticGenerator\Controller\Response;
|
|
|
|
final readonly class HomepageController
|
|
{
|
|
/**
|
|
* @param BlogPostRepository<BlogPost> $blogPostRepository
|
|
* @param ProjectRepository<Project> $projectRepository
|
|
* @param DoctrineUserRepository<DoctrineUser> $doctrineUserRepository
|
|
* @param PartnerRepository<Partner> $partnerRepository
|
|
*/
|
|
public function __construct(
|
|
private BlogPostRepository $blogPostRepository,
|
|
private ProjectRepository $projectRepository,
|
|
private DoctrineUserRepository $doctrineUserRepository,
|
|
private PartnerRepository $partnerRepository,
|
|
private GetTotalDownloads $getTotalDownloads,
|
|
) {
|
|
}
|
|
|
|
public function index(): Response
|
|
{
|
|
$blogPosts = $this->blogPostRepository->findPaginated(1, 10);
|
|
$primaryProjects = $this->projectRepository->findPrimaryProjects();
|
|
$doctrineUsers = $this->doctrineUserRepository->findAll();
|
|
$featuredPartner = $this->partnerRepository->findFeaturedPartner();
|
|
$totalDownloads = $this->getTotalDownloads->__invoke();
|
|
|
|
return new Response([
|
|
'blogPosts' => $blogPosts,
|
|
'primaryProjects' => $primaryProjects,
|
|
'doctrineUsers' => $doctrineUsers,
|
|
'featuredPartner' => $featuredPartner,
|
|
'totalDownloads' => $totalDownloads,
|
|
]);
|
|
}
|
|
}
|