* {@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;
/**
$this->twig = $twig;
//Get main request
- $this->request = $this->stack->getMainRequest();
+ $this->request = $this->stack->getCurrentRequest();
//Get current locale
$this->locale = $this->request->getLocale();
//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 ???
//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,
'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',
]
],
'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']),
'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
];
}
//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
}
}
+ //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
'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();
- }
}