X-Git-Url: https://git.rapsys.eu/blogbundle/blobdiff_plain/6c2b62a0b0b611ab592ec9d74fe550d9b88fd130..d9a542802b8ccf815f9d11fafc62245dab88a1eb:/Controller/AbstractController.php diff --git a/Controller/AbstractController.php b/Controller/AbstractController.php index e4c9d15..10353cb 100644 --- a/Controller/AbstractController.php +++ b/Controller/AbstractController.php @@ -50,73 +50,129 @@ use Rapsys\PackBundle\Util\SluggerUtil; * {@inheritdoc} */ abstract class AbstractController extends BaseAbstractController implements ServiceSubscriberInterface { - ///AuthorizationCheckerInterface instance - protected AuthorizationCheckerInterface $checker; - - ///Config array + /** + * Config array + */ protected array $config; - ///Context array + /** + * Count integer + */ + protected int $count; + + /** + * Context array + */ protected array $context; - ///AccessDecisionManagerInterface instance + /** + * Limit integer + */ + protected int $limit; + + /** + * Locale string + */ + protected string $locale; + + /** + * Modified DateTime + */ + protected \DateTime $modified; + + /** + * Page integer + */ + protected int $page; + + /** + * Route string + */ + protected string $route; + + /** + * Route params array + */ + protected array $routeParams; + + /** + * AuthorizationCheckerInterface instance + */ + protected AuthorizationCheckerInterface $checker; + + /** + * AccessDecisionManagerInterface instance + */ protected AccessDecisionManagerInterface $decision; - ///ManagerRegistry instance + /** + * ManagerRegistry instance + */ protected ManagerRegistry $doctrine; - ///FacebookUtil instance + /** + * FacebookUtil instance + */ protected FacebookUtil $facebook; - ///FormFactoryInterface instance + /** + * FormFactoryInterface instance + */ protected FormFactoryInterface $factory; - ///Image util instance + /** + * Image util instance + */ protected ImageUtil $image; - ///Limit integer - protected int $limit; - - ///Locale string - protected string $locale; - - ///MailerInterface instance + /** + * MailerInterface instance + */ protected MailerInterface $mailer; - ///EntityManagerInterface instance + /** + * EntityManagerInterface instance + */ protected EntityManagerInterface $manager; - ///Modified DateTime - protected \DateTime $modified; - - ///PackageInterface instance + /** + * PackageInterface instance + */ protected PackageInterface $package; - ///Request instance + /** + * Request instance + */ protected Request $request; - ///Route string - protected string $route; - - ///Route params array - protected array $routeParams; - - ///Router instance + /** + * Router instance + */ protected RouterInterface $router; - ///Slugger util instance + /** + * Slugger util instance + */ protected SluggerUtil $slugger; - ///Security instance + /** + * Security instance + */ protected Security $security; - ///RequestStack instance + /** + * RequestStack instance + */ protected RequestStack $stack; - ///Translator instance + /** + * Translator instance + */ protected TranslatorInterface $translator; - ///Twig\Environment instance + /** + * Twig\Environment instance + */ protected Environment $twig; /** @@ -199,7 +255,7 @@ abstract class AbstractController extends BaseAbstractController implements Serv $this->twig = $twig; //Get main request - $this->request = $this->stack->getMainRequest(); + $this->request = $this->stack->getCurrentRequest(); //Get current locale $this->locale = $this->request->getLocale(); @@ -210,6 +266,14 @@ abstract class AbstractController extends BaseAbstractController implements Serv //Set alternates $alternates = []; + //Get current page + $this->page = (int) $this->request->query->get('page'); + + //With negative page + if ($this->page < 0) { + $this->page = 0; + } + //Set route //TODO: default to not found route ??? //TODO: when url not found, this attribute is not defined, how do we handle it ??? @@ -230,13 +294,6 @@ abstract class AbstractController extends BaseAbstractController implements Serv //Set the context $this->context = [ - //TODO: review the structure - #'title' => $this->translator->trans($this->config['title']), - #'og:site_name' => $this->translator->trans($this->config['title']), - #'site' => [ - # 'donate' => $this->config['donate'], - # 'title' => $title = $this->translator->trans($this->config['site']['title']), - #], 'head' => [ 'alternates' => $alternates, 'canonical' => $canonical, @@ -249,6 +306,7 @@ abstract class AbstractController extends BaseAbstractController implements Serv 'alt' => $this->translator->trans($this->config['logo']['alt']) ], 'root' => $this->config['root'], + 'site' => $this->translator->trans($this->config['title']), 'title' => null, 'facebook' => [ 'og:type' => 'article', @@ -267,8 +325,8 @@ abstract class AbstractController extends BaseAbstractController implements Serv ] ], 'contact' => [ - 'name' => $this->translator->trans($this->config['contact']['name']), - 'mail' => $this->config['contact']['mail'] + 'address' => $this->config['contact']['address'], + 'name' => $this->translator->trans($this->config['contact']['name']) ], 'copy' => [ 'by' => $this->translator->trans($this->config['copy']['by']), @@ -278,20 +336,9 @@ abstract class AbstractController extends BaseAbstractController implements Serv 'title' => $this->config['copy']['title'] ], 'forms' => [], - 'title' => null, 'description' => null, 'section' => null, - 'site' => [ - 'icon' => $this->config['icon'], - 'logo' => [ - 'png' => $this->config['logo']['png'], - 'svg' => $this->config['logo']['svg'], - 'alt' => $this->translator->trans($this->config['logo']['alt']) - ], - 'path' => $this->config['path'], - 'root' => $this->config['root'], - 'title' => $this->translator->trans($this->config['title']) - ] + 'title' => null ]; } @@ -370,11 +417,11 @@ abstract class AbstractController extends BaseAbstractController implements Serv //With empty head title and section if (empty($parameters['head']['title']) && !empty($parameters['section'])) { //Set head title - $parameters['head']['title'] = implode(' - ', [$parameters['title'], $parameters['section'], $this->translator->trans($this->config['title'])]); + $parameters['head']['title'] = implode(' - ', [$parameters['title'], $parameters['section'], $parameters['head']['site']]); //With empty head title } elseif (empty($parameters['head']['title'])) { //Set head title - $parameters['head']['title'] = implode(' - ', [$parameters['title'], $this->translator->trans($this->config['title'])]); + $parameters['head']['title'] = implode(' - ', [$parameters['title'], $parameters['head']['site']]); } //With empty head description and description @@ -414,6 +461,21 @@ abstract class AbstractController extends BaseAbstractController implements Serv } } + //With count + if (!empty($this->count)) { + //With prev link + if ($this->page > 0) { + //Set head prev + $parameters['head']['prev'] = $this->generateUrl($this->request->get('_route'), ['page' => $this->page - 1]+$this->request->get('_route_params')); + } + + //With next link + if ($this->count > ($this->page + 1) * $this->limit) { + //Set head next + $parameters['head']['next'] = $this->generateUrl($this->request->get('_route'), ['page' => $this->page + 1]+$this->request->get('_route_params')); + } + } + //Without facebook image defined and texts if (empty($parameters['head']['facebook']['og:image']) && !empty($this->request) && !empty($parameters['head']['fbimage']['texts']) && !empty($this->modified)) { //Get facebook image @@ -466,23 +528,4 @@ abstract class AbstractController extends BaseAbstractController implements Serv 'twig' => Environment::class, ]; } - - /** - * Get a user from the Security Helper. - * - * @throws \LogicException If SecurityBundle is not available - * - * @see TokenInterface::getUser() - * @see https://github.com/symfony/symfony/issues/44735 - * @see vendor/symfony/framework-bundle/Controller/AbstractController.php - */ - protected function getUser(): ?UserInterface { - //Without token - if (null === ($token = $this->security->getToken())) { - return null; - } - - //With token - return $token->getUser(); - } }