Ajoute le controlleur de visiteur
This commit is contained in:
@@ -9,12 +9,14 @@ $loader = new SplClassLoader('Silex', __DIR__ . '/../src');
|
|||||||
$loader->register();
|
$loader->register();
|
||||||
|
|
||||||
$security = new \Silex\Controller\SecurityController();
|
$security = new \Silex\Controller\SecurityController();
|
||||||
|
$visitor = new \Silex\Controller\VisitorController();
|
||||||
$user = new \Silex\Controller\UserController();
|
$user = new \Silex\Controller\UserController();
|
||||||
$admin = new \Silex\Controller\AdminController();
|
$admin = new \Silex\Controller\AdminController();
|
||||||
$router = new Router($_SERVER['REQUEST_URI']);
|
$router = new Router($_SERVER['REQUEST_URI']);
|
||||||
$router->get('/^$/', [$user, 'index']);
|
$router->setBasePath("~cofrizot/silex/index.php");
|
||||||
$router->get('/^recent\/(?<page>\d+)$/', [$user, 'index']);
|
$router->get('/^$/', [$visitor, 'index']);
|
||||||
$router->get('/^news\/(?<slug>[A-Za-z0-9-]+)-(?<id>\d+)$/', [$user, 'viewPost']);
|
$router->get('/^recent\/(?<page>\d+)$/', [$visitor, 'index']);
|
||||||
|
$router->get('/^news\/(?<slug>[A-Za-z0-9-]+)-(?<id>\d+)$/', [$visitor, 'viewPost']);
|
||||||
$router->post('/^comment\/(?<id>\d+)$/', [$user, 'comment']);
|
$router->post('/^comment\/(?<id>\d+)$/', [$user, 'comment']);
|
||||||
$router->match('/^login$/', [$security, 'login']);
|
$router->match('/^login$/', [$security, 'login']);
|
||||||
$router->match('/^register$/', [$security, 'register']);
|
$router->match('/^register$/', [$security, 'register']);
|
||||||
|
@@ -23,6 +23,13 @@ class FrontController
|
|||||||
&& ($di->getSecurity()->getCurrentUser() === null || !$di->getSecurity()->getCurrentUser()->isAdmin())) {
|
&& ($di->getSecurity()->getCurrentUser() === null || !$di->getSecurity()->getCurrentUser()->isAdmin())) {
|
||||||
HttpResponse::redirect($di->getRouter()->url('login'));
|
HttpResponse::redirect($di->getRouter()->url('login'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($this->route->getController() instanceof UserController
|
||||||
|
&& $di->getSecurity()->getCurrentUser() === null)
|
||||||
|
{
|
||||||
|
HttpResponse::redirect($di->getRouter()->url('login'));
|
||||||
|
}
|
||||||
|
|
||||||
return $this->route->call($di);
|
return $this->route->call($di);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -14,36 +14,6 @@ class UserController
|
|||||||
{
|
{
|
||||||
private const PER_PAGE = 12;
|
private const PER_PAGE = 12;
|
||||||
|
|
||||||
public function index(DI $di, array $params): HttpResponse
|
|
||||||
{
|
|
||||||
$gw = $di->getNewsGateway();
|
|
||||||
$gwc = $di->getCommentGateway();
|
|
||||||
$user = $di->getSecurity()->getCurrentUser();
|
|
||||||
|
|
||||||
$page = intval($params['page'] ?? 1);
|
|
||||||
$total = $gw->getCount();
|
|
||||||
$nbPages = Pagination::getNbPages($total, self::PER_PAGE);
|
|
||||||
$news = $gw->getPaginatedRecentNews($page , self::PER_PAGE);
|
|
||||||
$nbComments = $gwc->getCommentNumber();
|
|
||||||
if($user !== null){
|
|
||||||
$nbCommentsByUser = $gwc->getCommentNumberFromUser($user->getId());
|
|
||||||
} else {
|
|
||||||
$nbCommentsByUser = 0;
|
|
||||||
}
|
|
||||||
return new HttpResponse(200, 'home', ['news' => $news, 'page' => $page, 'nbPages' => $nbPages, 'nbComments' => $nbComments, 'nbCommentsByUser' => $nbCommentsByUser]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewPost(DI $di, array $params): HttpResponse
|
|
||||||
{
|
|
||||||
$newsId = intval($params['id']);
|
|
||||||
$news = $di->getNewsGateway()->getById($newsId);
|
|
||||||
if($news->getSlug() !== $params['slug']){
|
|
||||||
HttpResponse::redirect($di->getRouter()->url($news->getSlugRedirect()));
|
|
||||||
}
|
|
||||||
$comments = $di->getCommentGateway()->getByNewsId($newsId);
|
|
||||||
return new HttpResponse(200, 'newsView', ['news' => $news, 'comments' => $comments]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function comment(DI $di, array $params): void
|
public function comment(DI $di, array $params): void
|
||||||
{
|
{
|
||||||
$newsId = intval($params['id']);
|
$newsId = intval($params['id']);
|
||||||
|
44
src/Silex/Controller/VisitorController.php
Normal file
44
src/Silex/Controller/VisitorController.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Silex\Controller;
|
||||||
|
|
||||||
|
use Silex\DI\DI;
|
||||||
|
use Silex\Http\HttpResponse;
|
||||||
|
use Silex\Util\Pagination;
|
||||||
|
|
||||||
|
class VisitorController {
|
||||||
|
|
||||||
|
private const PER_PAGE = 12;
|
||||||
|
|
||||||
|
public function index(DI $di, array $params): HttpResponse
|
||||||
|
{
|
||||||
|
$gw = $di->getNewsGateway();
|
||||||
|
$gwc = $di->getCommentGateway();
|
||||||
|
$user = $di->getSecurity()->getCurrentUser();
|
||||||
|
|
||||||
|
$page = intval($params['page'] ?? 1);
|
||||||
|
$total = $gw->getCount();
|
||||||
|
$nbPages = Pagination::getNbPages($total, self::PER_PAGE);
|
||||||
|
$news = $gw->getPaginatedRecentNews($page , self::PER_PAGE);
|
||||||
|
$nbComments = $gwc->getCommentNumber();
|
||||||
|
if($user !== null){
|
||||||
|
$nbCommentsByUser = $gwc->getCommentNumberFromUser($user->getId());
|
||||||
|
} else {
|
||||||
|
$nbCommentsByUser = 0;
|
||||||
|
}
|
||||||
|
return new HttpResponse(200, 'home', ['news' => $news, 'page' => $page, 'nbPages' => $nbPages, 'nbComments' => $nbComments, 'nbCommentsByUser' => $nbCommentsByUser]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function viewPost(DI $di, array $params): HttpResponse
|
||||||
|
{
|
||||||
|
$newsId = intval($params['id']);
|
||||||
|
$news = $di->getNewsGateway()->getById($newsId);
|
||||||
|
if($news->getSlug() !== $params['slug']){
|
||||||
|
HttpResponse::redirect($di->getRouter()->url($news->getSlugRedirect()));
|
||||||
|
}
|
||||||
|
$comments = $di->getCommentGateway()->getByNewsId($newsId);
|
||||||
|
return new HttpResponse(200, 'newsView', ['news' => $news, 'comments' => $comments]);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user