From 77b9215787a4999ce637c453db64adf97e0420e7 Mon Sep 17 00:00:00 2001 From: Stefan Galinski <stefan@sgalinski.de> Date: Tue, 7 Sep 2021 19:29:05 +0200 Subject: [PATCH] [TASK] Release of version 4.1.3, Disallow pagination pages greater than the maximum allowed number of possible pages --- Classes/Controller/JoblistController.php | 15 +++++++++++++++ composer.json | 2 +- ext_emconf.php | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Classes/Controller/JoblistController.php b/Classes/Controller/JoblistController.php index fa79eff8..d1224616 100644 --- a/Classes/Controller/JoblistController.php +++ b/Classes/Controller/JoblistController.php @@ -38,6 +38,7 @@ use SGalinski\SgJobs\Property\TypeConverter\UploadedFileReferenceConverter; use SGalinski\SgMail\Service\MailTemplateService; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Core\Environment; +use TYPO3\CMS\Core\Http\ImmediateResponseException; use TYPO3\CMS\Core\Resource\ResourceFactory; use TYPO3\CMS\Core\Site\SiteFinder; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -45,6 +46,8 @@ use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; use TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException; use TYPO3\CMS\Extbase\Utility\LocalizationUtility; +use TYPO3\CMS\Frontend\Controller\ErrorController; +use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons; /** * The joblist plugin controller @@ -143,6 +146,8 @@ class JoblistController extends ActionController { * @param int $currentPageBrowserPage * @return void * @throws \TYPO3\CMS\Core\Context\Exception\AspectNotFoundException + * @throws \TYPO3\CMS\Core\Error\Http\PageNotFoundException + * @throws ImmediateResponseException */ public function indexAction(array $filters = [], int $jobId = NULL, int $currentPageBrowserPage = 0): void { if ($filters) { @@ -205,6 +210,16 @@ class JoblistController extends ActionController { // get all jobs for the current page $allJobs = $this->jobRepository->findJobsByFilter($filters)->toArray(); $numberOfPages = ($jobLimit <= 0 ? 0 : \ceil(\count($allJobs) / $jobLimit)); + if ($currentPageBrowserPage >= $numberOfPages) { + /** @var ErrorController $errorController */ + $errorController = GeneralUtility::makeInstance(ErrorController::class); + $response = $errorController->pageNotFoundAction( + $GLOBALS['TYPO3_REQUEST'], + 'The requested page does not exist', + ['code' => PageAccessFailureReasons::PAGE_NOT_FOUND] + ); + throw new ImmediateResponseException($response); + } } $this->view->assign('jobs', $jobs); diff --git a/composer.json b/composer.json index 5d16065d..e8b239e0 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "license": [ "GPL-2.0-or-later" ], - "version": "4.1.2", + "version": "4.1.3", "support": { "issues": "https://gitlab.sgalinski.de/typo3/sg_jobs" }, diff --git a/ext_emconf.php b/ext_emconf.php index 44e9bc8e..a29a2daa 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -4,7 +4,7 @@ $EM_CONF['sg_jobs'] = [ 'title' => 'Jobs', 'description' => 'Manage and display your Job offers.', 'category' => 'plugin', - 'version' => '4.1.2', + 'version' => '4.1.3', 'state' => 'stable', 'uploadfolder' => FALSE, 'createDirs' => '', -- GitLab