From 711ba87a99a5d1641c4ed887a5eed008843c3729 Mon Sep 17 00:00:00 2001 From: Philipp Halle Date: Tue, 27 Aug 2024 16:28:17 +0200 Subject: [PATCH] [BUGFIX] Remove all default restrictions for query loading the job record in slug generation --- Classes/EventListener/GenerateJobSlug.php | 41 ++++++++++++++--------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/Classes/EventListener/GenerateJobSlug.php b/Classes/EventListener/GenerateJobSlug.php index cfa483f..4d49853 100644 --- a/Classes/EventListener/GenerateJobSlug.php +++ b/Classes/EventListener/GenerateJobSlug.php @@ -5,6 +5,7 @@ namespace FGTCLB\AcademicJobs\EventListener; use FGTCLB\AcademicJobs\Event\AfterSaveJobEvent; +use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\DataHandling\SlugHelper; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -19,13 +20,23 @@ public function __construct(ConnectionPool $connectionPool) { $this->connectionPool = $connectionPool; } + public function __invoke(AfterSaveJobEvent $event): void { $uid = $event->getJob()->getUid(); - $connection = $this->connectionPool->getConnectionForTable('tx_academicjobs_domain_model_job'); + $queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_academicjobs_domain_model_job'); + $queryBuilder->getRestrictions()->removeAll(); - $jobRecord = $connection - ->select(['*'], 'tx_academicjobs_domain_model_job', ['uid' => $uid]) + $jobRecord = $queryBuilder + ->select('*') + ->from('tx_academicjobs_domain_model_job') + ->where( + $queryBuilder->expr()->eq( + 'uid', + $queryBuilder->createNamedParameter($uid, Connection::PARAM_INT) + ) + ) + ->executeQuery() ->fetchAssociative(); if ($jobRecord === false) { @@ -35,19 +46,17 @@ public function __invoke(AfterSaveJobEvent $event): void $slugHelper = $this->getSlugHelperForProfileSlug(); $jobSlug = $slugHelper->generate($jobRecord, $jobRecord['pid']); - if (empty($jobRecord)) { - return; - } - - $connection->update( - self::TABLE_NAME, - [ - 'slug' => $jobSlug, - ], - [ - 'uid' => $uid, - ] - ); + $queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_academicjobs_domain_model_job'); + $queryBuilder + ->update('tx_academicjobs_domain_model_job') + ->where( + $queryBuilder->expr()->eq( + 'uid', + $queryBuilder->createNamedParameter($uid, Connection::PARAM_INT) + ) + ) + ->set('slug', $jobSlug) + ->executeStatement(); } private function getSlugHelperForProfileSlug(): SlugHelper