diff --git a/src/Silex/Controller/VisitorController.php b/src/Silex/Controller/VisitorController.php index 076d182..1aa638d 100644 --- a/src/Silex/Controller/VisitorController.php +++ b/src/Silex/Controller/VisitorController.php @@ -10,6 +10,7 @@ use Silex\Http\HttpResponse; use Silex\Model\Comment; use Silex\Util\Pagination; use Silex\Validation\CommentValidation; +use Silex\Validation\NewsValidation; class VisitorController { @@ -17,6 +18,8 @@ class VisitorController { public function index(DI $di, array $params): HttpResponse { + $errors = []; + $gw = $di->getNewsGateway(); $gwc = $di->getCommentGateway(); $user = $di->getSecurity()->getCurrentUser(); @@ -25,7 +28,7 @@ class VisitorController { $total = $gw->getCount(); $nbPages = Pagination::getNbPages($total, self::PER_PAGE); - if(!empty($_GET['dateDeb']) && !empty($_GET['dateFin'])) { + if(!empty($_GET['dateDeb']) && !empty($_GET['dateFin']) && NewsValidation::isValidDate($_GET,$errors)) { $news = $gw->getLike($_GET['dateDeb'], $_GET['dateFin'], $page , self::PER_PAGE); } else { $news = $gw->getPaginatedRecentNews($page , self::PER_PAGE); @@ -36,7 +39,7 @@ class VisitorController { } else { $nbCommentsByUser = 0; } - return new HttpResponse(200, 'home', ['news' => $news, 'page' => $page, 'nbPages' => $nbPages, 'nbComments' => $nbComments, 'nbCommentsByUser' => $nbCommentsByUser]); + return new HttpResponse(200, 'home', ['news' => $news, 'page' => $page, 'nbPages' => $nbPages, 'nbComments' => $nbComments, 'nbCommentsByUser' => $nbCommentsByUser, 'errors' => $errors]); } public function viewPost(DI $di, array $params): HttpResponse diff --git a/src/Silex/Validation/NewsValidation.php b/src/Silex/Validation/NewsValidation.php index 614b1c8..9feab84 100644 --- a/src/Silex/Validation/NewsValidation.php +++ b/src/Silex/Validation/NewsValidation.php @@ -22,4 +22,21 @@ final class NewsValidation $post['content'] = htmlspecialchars($post['content']); return empty($errors); } + + public static function isValidDate(array &$get, array &$errors): bool + { + if(!isset($get['dateDeb']) || !isset($get['dateFin'])){ + return false; + } + if(strtotime($get['dateDeb']) === false){ + $errors[] = 'Date début invalide'; + } + if(strtotime($get['dateFin']) === false){ + $errors[] = 'Date fin invalide'; + } + if($get['dateDeb'] > $get['dateFin']){ + $errors[] = 'Date début supérieur à date fin'; + } + return empty($errors); + } } diff --git a/views/home.php b/views/home.php index db3f71c..825e656 100644 --- a/views/home.php +++ b/views/home.php @@ -1,3 +1,4 @@ +