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