diff --git a/sources/AppBundle/Controller/Admin/Planete/FeedAddAction.php b/sources/AppBundle/Controller/Admin/Planete/FeedAddAction.php index 0a05c15e6..87870a5ca 100644 --- a/sources/AppBundle/Controller/Admin/Planete/FeedAddAction.php +++ b/sources/AppBundle/Controller/Admin/Planete/FeedAddAction.php @@ -7,6 +7,7 @@ use AppBundle\AuditLog\Audit; use AppBundle\Planete\FeedFormData; use AppBundle\Planete\FeedFormType; +use Exception; use PlanetePHP\FeedRepository; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; @@ -25,21 +26,22 @@ public function __invoke(Request $request): Response $form = $this->createForm(FeedFormType::class, $data); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $ok = $this->feedRepository->insert( - $data->name, - $data->url, - $data->feed, - $data->status, - $data->userId, - ); - - if ($ok) { + try { + $this->feedRepository->insert( + $data->name, + $data->url, + $data->feed, + $data->status, + $data->userId, + ); + $this->audit->log('Ajout du flux ' . $data->name); $this->addFlash('notice', 'Le flux a été ajouté'); return $this->redirectToRoute('admin_planete_feed_list'); + } catch (Exception $e) { + $this->addFlash('error', "Une erreur est survenue lors de l'ajout du flux :\n" . $e->getMessage()); } - $this->addFlash('error', 'Une erreur est survenue lors de l\'ajout du flux'); } return $this->render('admin/planete/feed_add.html.twig', [ diff --git a/sources/AppBundle/Controller/Admin/Planete/FeedDeleteAction.php b/sources/AppBundle/Controller/Admin/Planete/FeedDeleteAction.php index 48b480907..342cae5eb 100644 --- a/sources/AppBundle/Controller/Admin/Planete/FeedDeleteAction.php +++ b/sources/AppBundle/Controller/Admin/Planete/FeedDeleteAction.php @@ -20,11 +20,14 @@ public function __construct( public function __invoke(Request $request): RedirectResponse { $id = $request->query->getInt('id'); - if ($this->feedRepository->delete($id)) { + + try { + $this->feedRepository->delete($id); + $this->audit->log('Suppression du flux ' . $id); $this->addFlash('notice', 'Le flux a été supprimé'); - } else { - $this->addFlash('error', 'Une erreur est survenue lors de la suppression du flux'); + } catch (\Exception $e) { + $this->addFlash('error', "Une erreur est survenue lors de la suppression du flux :\n" . $e->getMessage()); } return $this->redirectToRoute('admin_planete_feed_list'); diff --git a/sources/AppBundle/Controller/Admin/Planete/FeedEditAction.php b/sources/AppBundle/Controller/Admin/Planete/FeedEditAction.php index 810545937..dcb1effeb 100644 --- a/sources/AppBundle/Controller/Admin/Planete/FeedEditAction.php +++ b/sources/AppBundle/Controller/Admin/Planete/FeedEditAction.php @@ -7,6 +7,7 @@ use AppBundle\AuditLog\Audit; use AppBundle\Planete\FeedFormData; use AppBundle\Planete\FeedFormType; +use Exception; use PlanetePHP\FeedRepository; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; @@ -32,22 +33,23 @@ public function __invoke(Request $request): Response $form = $this->createForm(FeedFormType::class, $data); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $ok = $this->feedRepository->update( - $id, - $data->name, - $data->url, - $data->feed, - $data->status, - $data->userId, - ); - - if ($ok) { + try { + $this->feedRepository->update( + $id, + $data->name, + $data->url, + $data->feed, + $data->status, + $data->userId, + ); + $this->audit->log(sprintf("Modification du flux %s (%d)", $data->name, $id)); $this->addFlash('notice', 'Le flux a été modifié'); return $this->redirectToRoute('admin_planete_feed_list'); + } catch (Exception $e) { + $this->addFlash('error', "Une erreur est survenue lors de la modification du flux :\n" . $e->getMessage()); } - $this->addFlash('error', 'Une erreur est survenue lors de la modification du flux'); } return $this->render('admin/planete/feed_edit.html.twig', [ diff --git a/sources/AppBundle/Controller/Admin/Planete/FeedListAction.php b/sources/AppBundle/Controller/Admin/Planete/FeedListAction.php index 715e3c863..adadbbf3a 100644 --- a/sources/AppBundle/Controller/Admin/Planete/FeedListAction.php +++ b/sources/AppBundle/Controller/Admin/Planete/FeedListAction.php @@ -23,18 +23,12 @@ public function __construct( public function __invoke(Request $request): Response { $testFeeds = $request->query->getBoolean('testFeeds'); - $filter = $request->query->get('filter'); - $sort = $request->query->get('sort', 'name'); - $direction = $request->query->get('direction', 'asc'); - $feeds = $this->feedRepository->find($sort, $direction, $filter); + $feeds = $this->feedRepository->find(); return new Response($this->twig->render('admin/planete/feed_list.html.twig', [ 'feeds' => $feeds, 'testFeeds' => $testFeeds, 'feedResults' => $testFeeds ? $this->testFeeds($feeds) : [], - 'sort' => $sort, - 'direction' => $direction, - 'filter' => $filter, ])); } diff --git a/sources/PlanetePHP/FeedRepository.php b/sources/PlanetePHP/FeedRepository.php index 523345730..969dc5565 100644 --- a/sources/PlanetePHP/FeedRepository.php +++ b/sources/PlanetePHP/FeedRepository.php @@ -5,11 +5,10 @@ namespace PlanetePHP; use Doctrine\DBAL\Connection; -use Webmozart\Assert\Assert; -class FeedRepository +final readonly class FeedRepository { - public function __construct(private readonly Connection $connection) {} + public function __construct(private Connection $connection) {} /** * @return Feed[] @@ -24,33 +23,19 @@ public function findActive(): array } /** - * @param string $sort - * @param string $direction - * @param string|null $filter - * * @return Feed[] */ - public function find($sort = 'name', $direction = 'asc', $filter = null): array + public function find(): array { - $sorts = [ - 'name' => 'f.nom', - 'url' => 'f.url', - 'status' => 'f.etat', - ]; - Assert::keyExists($sorts, $sort); $qb = $this->connection->createQueryBuilder() ->select('f.id', 'f.nom', 'f.url', 'f.feed', 'f.etat', 'f.id_personne_physique') ->from('afup_planete_flux', 'f') - ->orderBy($sorts[$sort], $direction); - if (null !== $filter) { - $qb->where('nom LIKE :filter') - ->setParameter('filter', '%' . $filter . '%'); - } + ->orderBy('f.nom', 'asc'); return $this->hydrateAll($qb->executeQuery()->fetchAllAssociative()); } - public function get($id): Feed + public function get(int $id): Feed { $query = $this->connection->prepare('SELECT id, nom, url, feed, etat, id_personne_physique FROM afup_planete_flux f WHERE f.id = :id'); @@ -59,7 +44,7 @@ public function get($id): Feed return $this->hydrate($query->executeQuery()->fetchAssociative()); } - public function insert(string $name, string $url, string $feed, FeedStatus $status, ?int $userId = 0) + public function insert(string $name, string $url, string $feed, FeedStatus $status, ?int $userId = 0): void { $statement = $this->connection->prepare('INSERT INTO afup_planete_flux (nom, url, feed, etat, id_personne_physique) VALUES (:name, :url, :feed, :status, :userId)'); @@ -69,10 +54,10 @@ public function insert(string $name, string $url, string $feed, FeedStatus $stat $statement->bindValue('status', $status->value); $statement->bindValue('userId', (int) $userId); - return $statement->executeStatement(); + $statement->executeStatement(); } - public function update(int $id, string $name, string $url, string $feed, FeedStatus $status, ?int $userId = 0) + public function update(int $id, string $name, string $url, string $feed, FeedStatus $status, ?int $userId = 0): void { $statement = $this->connection->prepare('UPDATE afup_planete_flux SET nom = :name, url = :url, feed = :feed, etat = :status, id_personne_physique = :userId @@ -85,12 +70,12 @@ public function update(int $id, string $name, string $url, string $feed, FeedSta $statement->bindValue('userId', (int) $userId); $statement->bindValue('id', $id); - return $statement->executeStatement(); + $statement->executeStatement(); } - public function delete(int $id): bool + public function delete(int $id): void { - return $this->connection->delete('afup_planete_flux', ['id' => $id]) === 1; + $this->connection->delete('afup_planete_flux', ['id' => $id]); } private function hydrateAll(array $rows): array diff --git a/templates/admin/planete/feed_list.html.twig b/templates/admin/planete/feed_list.html.twig index 912a126df..d64788760 100644 --- a/templates/admin/planete/feed_list.html.twig +++ b/templates/admin/planete/feed_list.html.twig @@ -19,37 +19,12 @@