Skip to content

Commit

Permalink
Use subscribed services
Browse files Browse the repository at this point in the history
  • Loading branch information
aschempp committed Jul 10, 2020
1 parent c4b004b commit a806b39
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 34 deletions.
43 changes: 14 additions & 29 deletions core-bundle/src/Controller/Page/RootPageController.php
Expand Up @@ -14,40 +14,26 @@

use Contao\CoreBundle\Controller\AbstractController;
use Contao\CoreBundle\Exception\NoActivePageFoundException;
use Contao\CoreBundle\Framework\ContaoFramework;
use Contao\CoreBundle\Monolog\ContaoContext;
use Contao\CoreBundle\Routing\Page\CompositionAwareInterface;
use Contao\CoreBundle\Routing\Page\PageRoute;
use Contao\CoreBundle\Routing\Page\PageRouteEnhancerInterface;
use Contao\PageModel;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\FetchMode;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Route;

class RootPageController extends AbstractController implements PageRouteEnhancerInterface, CompositionAwareInterface
{
/**
* @var ContaoFramework
*/
private $framework;

/**
* @var Connection
*/
private $connection;

/**
* @var LoggerInterface|null
*/
private $logger;

public function __construct(ContaoFramework $framework, Connection $connection, LoggerInterface $logger = null)
public function __construct(Connection $connection)
{
$this->framework = $framework;
$this->connection = $connection;
$this->logger = $logger;
}

public function __invoke(PageModel $pageModel): Response
Expand All @@ -56,7 +42,7 @@ public function __invoke(PageModel $pageModel): Response
throw new \InvalidArgumentException('Invalid page type');
}

return $this->redirectToContent($this->getNextPage($pageModel->id));
return $this->redirectToContent($this->getNextPage((int) $pageModel->id), [], 303);
}

public function enhancePageRoute(PageRoute $route): Route
Expand All @@ -77,27 +63,26 @@ public function supportsContentComposition(PageModel $pageModel): bool
return false;
}

private function getNextPage($rootPageId): PageModel
private function getNextPage(int $rootPageId): PageModel
{
$this->framework->initialize();
$this->initializeContaoFramework();

/** @var PageModel $pageAdapter */
$pageAdapter = $this->framework->getAdapter(PageModel::class);
$pageAdapter = $this->get('contao.framework')->getAdapter(PageModel::class);

$nextPage = $pageAdapter->findFirstPublishedByPid($rootPageId);

// No published pages yet
if (null === $nextPage) {
if (null !== $this->logger) {
$this->logger->error(
'No active page found under root page "'.$rootPageId.'"',
['contao' => new ContaoContext(__METHOD__)]
);
}
if (null !== $nextPage) {
return $nextPage;
}

throw new NoActivePageFoundException('No active page found under root page.');
if (null !== ($logger = $this->get('logger'))) {
$logger->error(
'No active page found under root page "'.$rootPageId.'"',
['contao' => new ContaoContext(__METHOD__, ContaoContext::ERROR)]
);
}

return $nextPage;
throw new NoActivePageFoundException('No active page found under root page.');
}
}
2 changes: 0 additions & 2 deletions core-bundle/src/Resources/config/controller.yml
Expand Up @@ -5,9 +5,7 @@ services:

Contao\CoreBundle\Controller\Page\RootPageController:
arguments:
- '@contao.framework'
- '@database_connection'
- '@?logger'
tags:
- { name: contao.page }
- { name: monolog.logger, channel: contao }
10 changes: 7 additions & 3 deletions core-bundle/tests/Controller/Page/RootPageControllerTest.php
Expand Up @@ -61,11 +61,15 @@ protected function setUp(): void
$container = $this->createMock(ContainerInterface::class);
$container
->method('get')
->with('router')
->willReturn($this->router)
->willReturnMap(
[
['router', $this->router],
['contao.framework', $framework],
]
)
;

$this->controller = new RootPageController($framework, $this->connection);
$this->controller = new RootPageController($this->connection);
$this->controller->setContainer($container);
}

Expand Down

0 comments on commit a806b39

Please sign in to comment.