PSR 2 compliance

This commit is contained in:
Simon Vieille 2021-05-12 11:56:48 +02:00
parent cf6bb84bfb
commit 775d4562bd
19 changed files with 62 additions and 72 deletions

View file

@ -3,8 +3,8 @@
namespace App\Core\Controller\Admin; namespace App\Core\Controller\Admin;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\Response;
abstract class AdminController extends AbstractController abstract class AdminController extends AbstractController
{ {

View file

@ -18,10 +18,10 @@ use Symfony\Component\HttpFoundation\Session\Session;
*/ */
abstract class CrudController extends AdminController abstract class CrudController extends AdminController
{ {
abstract protected function getConfiguration(): CrudConfiguration;
protected array $filters = []; protected array $filters = [];
abstract protected function getConfiguration(): CrudConfiguration;
protected function doIndex(int $page = 1, RepositoryQuery $query, Request $request, Session $session): Response protected function doIndex(int $page = 1, RepositoryQuery $query, Request $request, Session $session): Response
{ {
$configuration = $this->getConfiguration(); $configuration = $this->getConfiguration();
@ -37,7 +37,7 @@ abstract class CrudController extends AdminController
'configuration' => $configuration, 'configuration' => $configuration,
'pager' => $pager, 'pager' => $pager,
'filters' => [ 'filters' => [
'show' => $configuration->getForm('filter') !== null, 'show' => null !== $configuration->getForm('filter'),
'isEmpty' => empty($this->filters), 'isEmpty' => empty($this->filters),
], ],
]); ]);

View file

@ -6,6 +6,7 @@ use App\Core\Event\Account\PasswordRequestEvent;
use App\Core\Manager\EntityManager; use App\Core\Manager\EntityManager;
use App\Repository\UserRepository; use App\Repository\UserRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
@ -14,7 +15,6 @@ use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface; use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use ZxcvbnPhp\Zxcvbn; use ZxcvbnPhp\Zxcvbn;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
class AuthController extends AbstractController class AuthController extends AbstractController
{ {

View file

@ -5,7 +5,6 @@ namespace App\Core\Controller\Setting;
use App\Core\Controller\Admin\AdminController; use App\Core\Controller\Admin\AdminController;
use App\Core\Entity\Setting as Entity; use App\Core\Entity\Setting as Entity;
use App\Core\Event\Setting\SettingEvent; use App\Core\Event\Setting\SettingEvent;
use App\Core\Factory\SettingFactory as EntityFactory;
use App\Core\Manager\EntityManager; use App\Core\Manager\EntityManager;
use App\Core\Repository\SettingRepositoryQuery as RepositoryQuery; use App\Core\Repository\SettingRepositoryQuery as RepositoryQuery;
use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface;
@ -47,8 +46,7 @@ class SettingAdminController extends AdminController
EntityManager $entityManager, EntityManager $entityManager,
EventDispatcherInterface $eventDispatcher, EventDispatcherInterface $eventDispatcher,
Request $request Request $request
): Response ): Response {
{
$builder = $this->createFormBuilder($entity); $builder = $this->createFormBuilder($entity);
$eventDispatcher->dispatch(new SettingEvent([ $eventDispatcher->dispatch(new SettingEvent([

View file

@ -24,7 +24,8 @@ class NavigationAdminController extends AdminController
{ {
$pager = $query $pager = $query
->orderBy('.label, .domain') ->orderBy('.label, .domain')
->paginate($page); ->paginate($page)
;
return $this->render('@Core/site/navigation_admin/index.html.twig', [ return $this->render('@Core/site/navigation_admin/index.html.twig', [
'pager' => $pager, 'pager' => $pager,

View file

@ -5,17 +5,15 @@ namespace App\Core\Controller\Site;
use App\Core\Controller\Admin\AdminController; use App\Core\Controller\Admin\AdminController;
use App\Core\Entity\Site\Page\Page as Entity; use App\Core\Entity\Site\Page\Page as Entity;
use App\Core\Factory\Site\Page\PageFactory as EntityFactory; use App\Core\Factory\Site\Page\PageFactory as EntityFactory;
use App\Core\Form\Site\Page\PageType as EntityType;
use App\Core\Form\Site\Page\Filter\PageFilterType as FilterType; use App\Core\Form\Site\Page\Filter\PageFilterType as FilterType;
use App\Core\Form\Site\Page\PageType as EntityType;
use App\Core\Manager\EntityManager; use App\Core\Manager\EntityManager;
use App\Core\Page\FooPage;
use App\Core\Page\SimplePage;
use App\Core\Repository\Site\Page\PageRepositoryQuery as RepositoryQuery; use App\Core\Repository\Site\Page\PageRepositoryQuery as RepositoryQuery;
use App\Core\Site\PageLocator; use App\Core\Site\PageLocator;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Routing\Annotation\Route;
/** /**
* @Route("/admin/site/page") * @Route("/admin/site/page")
@ -31,7 +29,8 @@ class PageAdminController extends AdminController
$pager = $query $pager = $query
->useFilters($this->filters) ->useFilters($this->filters)
->paginate($page); ->paginate($page)
;
return $this->render('@Core/site/page_admin/index.html.twig', [ return $this->render('@Core/site/page_admin/index.html.twig', [
'pager' => $pager, 'pager' => $pager,
@ -104,6 +103,11 @@ class PageAdminController extends AdminController
]); ]);
} }
public function getSection(): string
{
return 'site_page';
}
protected function updateFilters(Request $request, Session $session) protected function updateFilters(Request $request, Session $session)
{ {
if ($request->query->has('page_filter')) { if ($request->query->has('page_filter')) {
@ -129,9 +133,4 @@ class PageAdminController extends AdminController
$session->set('page_filter', $filters); $session->set('page_filter', $filters);
} }
} }
public function getSection(): string
{
return 'site_page';
}
} }

View file

@ -5,7 +5,6 @@ namespace App\Core\Controller\Site;
use App\Core\Site\SiteRequest; use App\Core\Site\SiteRequest;
use App\Core\Site\SiteStore; use App\Core\Site\SiteStore;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
class PageController extends AbstractController class PageController extends AbstractController

View file

@ -56,7 +56,8 @@ class TreeAdminController extends AdminController
): Response { ): Response {
$navigations = $navigationQuery->create() $navigations = $navigationQuery->create()
->orderBy('.label, .domain') ->orderBy('.label, .domain')
->find(); ->find()
;
$session->set('site_tree_last_navigation', $navigation->getId()); $session->set('site_tree_last_navigation', $navigation->getId());

View file

@ -13,7 +13,6 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
/** /**
* @Route("/admin/user") * @Route("/admin/user")

View file

@ -12,7 +12,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
*/ */
abstract class EntityManagerEventSubscriber implements EventSubscriberInterface abstract class EntityManagerEventSubscriber implements EventSubscriberInterface
{ {
static protected int $priority = 0; protected static int $priority = 0;
public static function getSubscribedEvents() public static function getSubscribedEvents()
{ {

View file

@ -2,6 +2,7 @@
namespace App\Core\EventSuscriber\Site; namespace App\Core\EventSuscriber\Site;
use App\Core\Cache\SymfonyCacheManager;
use App\Core\Entity\EntityInterface; use App\Core\Entity\EntityInterface;
use App\Core\Entity\Site\Menu; use App\Core\Entity\Site\Menu;
use App\Core\Event\EntityManager\EntityManagerEvent; use App\Core\Event\EntityManager\EntityManagerEvent;
@ -10,7 +11,6 @@ use App\Core\Factory\Site\NodeFactory;
use App\Core\Manager\EntityManager; use App\Core\Manager\EntityManager;
use App\Core\Repository\Site\NodeRepository; use App\Core\Repository\Site\NodeRepository;
use App\Core\Slugify\CodeSlugify; use App\Core\Slugify\CodeSlugify;
use App\Core\Cache\SymfonyCacheManager;
/** /**
* class MenuEventSubscriber. * class MenuEventSubscriber.

View file

@ -2,15 +2,14 @@
namespace App\Core\EventSuscriber\Site; namespace App\Core\EventSuscriber\Site;
use App\Core\Cache\SymfonyCacheManager;
use App\Core\Entity\EntityInterface; use App\Core\Entity\EntityInterface;
use App\Core\Entity\Site\Menu; use App\Core\Entity\Site\Menu;
use App\Core\Entity\Site\Navigation; use App\Core\Entity\Site\Navigation;
use App\Core\Entity\Site\Node; use App\Core\Entity\Site\Node;
use App\Core\Event\EntityManager\EntityManagerEvent; use App\Core\Event\EntityManager\EntityManagerEvent;
use App\Core\EventSuscriber\EntityManagerEventSubscriber; use App\Core\EventSuscriber\EntityManagerEventSubscriber;
use Symfony\Component\Finder\Finder;
use Symfony\Component\HttpKernel\KernelInterface; use Symfony\Component\HttpKernel\KernelInterface;
use App\Core\Cache\SymfonyCacheManager;
/** /**
* class SiteEventSubscriber. * class SiteEventSubscriber.

View file

@ -7,8 +7,8 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Length; use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
class NavigationType extends AbstractType class NavigationType extends AbstractType
{ {

View file

@ -2,18 +2,13 @@
namespace App\Core\Form\Site\Page\Filter; namespace App\Core\Form\Site\Page\Filter;
use App\Core\Entity\Site\Page\Page; use App\Core\Entity\Site\Navigation;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Image;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use App\Core\Entity\Site\Navigation;
use Doctrine\ORM\EntityRepository;
class PageFilterType extends AbstractType class PageFilterType extends AbstractType
{ {

View file

@ -74,6 +74,27 @@ abstract class RepositoryQuery
return $this->repository; return $this->repository;
} }
public function useFilters(array $filters)
{
foreach ($filters as $name => $value) {
if (null === $value) {
continue;
}
if (is_int($value) || is_bool($value)) {
$this->andWhere('.'.$name.' = :'.$name);
$this->setParameter(':'.$name, $value);
} elseif (is_string($value)) {
$this->andWhere('.'.$name.' LIKE :'.$name);
$this->setParameter(':'.$name, '%'.$value.'%');
} else {
$this->filterHandler($name, $value);
}
}
return $this;
}
protected function populateDqlId(&$data) protected function populateDqlId(&$data)
{ {
if (is_string($data)) { if (is_string($data)) {
@ -98,25 +119,4 @@ abstract class RepositoryQuery
protected function filterHandler(string $name, $value) protected function filterHandler(string $name, $value)
{ {
} }
public function useFilters(array $filters)
{
foreach ($filters as $name => $value) {
if (null === $value) {
continue;
}
if (is_int($value) || is_bool($value)) {
$this->andWhere('.'.$name.' = :'.$name);
$this->setParameter(':'.$name, $value);
} elseif (is_string($value)) {
$this->andWhere('.'.$name.' LIKE :'.$name);
$this->setParameter(':'.$name, '%'.$value.'%');
} else {
$this->filterHandler($name, $value);
}
}
return $this;
}
} }

View file

@ -2,9 +2,9 @@
namespace App\Core\Repository\Site\Page; namespace App\Core\Repository\Site\Page;
use App\Core\Entity\Site\Navigation;
use App\Core\Repository\RepositoryQuery; use App\Core\Repository\RepositoryQuery;
use Knp\Component\Pager\PaginatorInterface; use Knp\Component\Pager\PaginatorInterface;
use App\Core\Entity\Site\Navigation;
/** /**
* class PageRepositoryQuery. * class PageRepositoryQuery.
@ -18,15 +18,6 @@ class PageRepositoryQuery extends RepositoryQuery
parent::__construct($repository, 'p', $paginator); parent::__construct($repository, 'p', $paginator);
} }
protected function filterHandler(string $name, $value)
{
if ($name === 'navigation') {
return $this->filterByNavigation($value);
} else {
return parent::filterHandler($name, $value);
}
}
public function filterByNavigation(Navigation $navigation) public function filterByNavigation(Navigation $navigation)
{ {
return $this return $this
@ -34,7 +25,8 @@ class PageRepositoryQuery extends RepositoryQuery
->leftJoin('node.menu', 'menu') ->leftJoin('node.menu', 'menu')
->leftJoin('menu.navigation', 'navigation') ->leftJoin('menu.navigation', 'navigation')
->where('navigation.id = :navigationId') ->where('navigation.id = :navigationId')
->setParameter(':navigationId', $navigation->getId()); ->setParameter(':navigationId', $navigation->getId())
;
} }
public function filterById($id) public function filterById($id)
@ -46,4 +38,13 @@ class PageRepositoryQuery extends RepositoryQuery
return $this; return $this;
} }
protected function filterHandler(string $name, $value)
{
if ('navigation' === $name) {
return $this->filterByNavigation($value);
}
return parent::filterHandler($name, $value);
}
} }

View file

@ -2,10 +2,10 @@
namespace App\Core\Setting; namespace App\Core\Setting;
use App\Core\Entity\Setting;
use App\Core\Factory\SettingFactory; use App\Core\Factory\SettingFactory;
use App\Core\Manager\EntityManager; use App\Core\Manager\EntityManager;
use App\Core\Repository\SettingRepositoryQuery; use App\Core\Repository\SettingRepositoryQuery;
use App\Core\Entity\Setting;
/** /**
* class SettingManager. * class SettingManager.

View file

@ -2,12 +2,12 @@
namespace App\Core\Twig\Extension; namespace App\Core\Twig\Extension;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\PropertyAccess\PropertyAccess; use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\PropertyAccess\PropertyAccessor; use Symfony\Component\PropertyAccess\PropertyAccessor;
use Twig\Environment; use Twig\Environment;
use Twig\Extension\AbstractExtension; use Twig\Extension\AbstractExtension;
use Twig\TwigFunction; use Twig\TwigFunction;
use Symfony\Component\OptionsResolver\OptionsResolver;
class CrudExtension extends AbstractExtension class CrudExtension extends AbstractExtension
{ {
@ -36,7 +36,7 @@ class CrudExtension extends AbstractExtension
public function renderField($entity, array $config): string public function renderField($entity, array $config): string
{ {
$field = $config['field']; $field = $config['field'];
$instance = new $field; $instance = new $field();
$resolver = $instance->configureOptions(new OptionsResolver()); $resolver = $instance->configureOptions(new OptionsResolver());
return $instance->buildView($this->twig, $entity, $resolver->resolve($config['options'])); return $instance->buildView($this->twig, $entity, $resolver->resolve($config['options']));

View file

@ -5,8 +5,6 @@ namespace App\Entity;
use App\Core\Doctrine\Timestampable; use App\Core\Doctrine\Timestampable;
use App\Core\Entity\EntityInterface; use App\Core\Entity\EntityInterface;
use App\Repository\UserRepository; use App\Repository\UserRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Scheb\TwoFactorBundle\Model\Google\TwoFactorInterface; use Scheb\TwoFactorBundle\Model\Google\TwoFactorInterface;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;