mirror of
https://github.com/doctrine/doctrine-website.git
synced 2026-03-23 22:32:11 +01:00
49 lines
1.7 KiB
PHP
49 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Doctrine\Website\Controllers;
|
|
|
|
use Doctrine\StaticWebsiteGenerator\Controller\Response;
|
|
use Doctrine\Website\Repositories\ProjectContributorRepository;
|
|
use Doctrine\Website\Repositories\ProjectRepository;
|
|
|
|
class ProjectController
|
|
{
|
|
/** @var ProjectRepository */
|
|
private $projectRepository;
|
|
|
|
/** @var ProjectContributorRepository */
|
|
private $projectContributorRepository;
|
|
|
|
public function __construct(
|
|
ProjectRepository $projectRepository,
|
|
ProjectContributorRepository $projectContributorRepository
|
|
) {
|
|
$this->projectRepository = $projectRepository;
|
|
$this->projectContributorRepository = $projectContributorRepository;
|
|
}
|
|
|
|
public function index() : Response
|
|
{
|
|
return new Response([
|
|
'primaryProjects' => $this->projectRepository->findPrimaryProjects(),
|
|
'inactiveProjects' => $this->projectRepository->findInactiveProjects(),
|
|
'archivedProjects' => $this->projectRepository->findArchivedProjects(),
|
|
'integrationProjects' => $this->projectRepository->findIntegrationProjects(),
|
|
]);
|
|
}
|
|
|
|
public function view(string $docsSlug) : Response
|
|
{
|
|
$project = $this->projectRepository->findOneByDocsSlug($docsSlug);
|
|
|
|
return new Response([
|
|
'project' => $project,
|
|
'integrationProjects' => $this->projectRepository->findProjectIntegrations($project),
|
|
'maintainers' => $this->projectContributorRepository->findMaintainersByProject($project),
|
|
'contributors' => $this->projectContributorRepository->findContributorsByProject($project),
|
|
]);
|
|
}
|
|
}
|