Skip to content
Snippets Groups Projects
Commit 4bc7c926 authored by Stefan Galinski's avatar Stefan Galinski :video_game:
Browse files

[BUGFIX] Fix broken query settings in the companies repository, Add caching

parent 7f30953c
No related branches found
No related tags found
No related merge requests found
<?php
namespace SGalinski\SgJobs\Domain\Repository;
/***************************************************************
* Copyright notice
*
......@@ -26,6 +24,8 @@ namespace SGalinski\SgJobs\Domain\Repository;
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
namespace SGalinski\SgJobs\Domain\Repository;
use SGalinski\SgJobs\Domain\Model\Company;
use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Context\Exception\AspectNotFoundException;
......@@ -38,15 +38,17 @@ use TYPO3\CMS\Extbase\Persistence\Repository;
* Company Repository
*/
class CompanyRepository extends Repository {
/** @var array */
protected $cache = [];
/**
* initializes the object
*/
public function initializeObject(): void {
$querySettings = $this->createQuery()->getQuerySettings();
$querySettings->setRespectStoragePage(FALSE);
$querySettings->setIgnoreEnableFields(TRUE);
$querySettings->setEnableFieldsToBeIgnored(['disabled']);
$this->setDefaultQuerySettings($querySettings);
// $querySettings = $this->createQuery()->getQuerySettings();
// $querySettings->setRespectStoragePage(FALSE);
// $querySettings->setIgnoreEnableFields(TRUE);
// $this->setDefaultQuerySettings($querySettings);
}
/**
......@@ -130,34 +132,36 @@ class CompanyRepository extends Repository {
* @throws AspectNotFoundException
*/
public function getAllCompanies(int $pageUid, array $filters = []) {
$companyConstraints = [];
$query = $this->createQuery();
$querySettings = $query->getQuerySettings();
$querySettings->setStoragePageIds([$pageUid]);
$querySettings->setLanguageUid(
GeneralUtility::makeInstance(Context::class)->getPropertyFromAspect('language', 'id', 0)
);
$query->setQuerySettings($querySettings);
$query->setOrderings(
[
'sorting' => QueryInterface::ORDER_ASCENDING,
]
);
$companyConstraints[] = $query->equals('pid', $pageUid);
if (count($filters) > 0) {
$constraints = [];
foreach ($filters as $filter) {
$constraints[] = $query->equals('uid', $filter);
$hash = $pageUid . '_' . implode('-', $filters);
if (!isset($this->cache[$hash])) {
$companyConstraints = [];
$query = $this->createQuery();
$querySettings = $query->getQuerySettings();
$querySettings->setStoragePageIds([$pageUid]);
$querySettings->setLanguageUid(
GeneralUtility::makeInstance(Context::class)->getPropertyFromAspect('language', 'id', 0)
);
$query->setQuerySettings($querySettings);
$query->setOrderings(
[
'sorting' => QueryInterface::ORDER_ASCENDING,
]
);
$companyConstraints[] = $query->equals('pid', $pageUid);
if (count($filters) > 0) {
$constraints = [];
foreach ($filters as $filter) {
$constraints[] = $query->equals('uid', $filter);
}
$companyConstraints[] = $query->logicalOr($constraints);
}
$companyConstraints[] = $query->logicalOr($constraints);
}
$query->matching($query->logicalAnd($companyConstraints));
$query->matching($query->logicalAnd($companyConstraints));
$this->cache[$hash] = $query->execute();
}
return $query->execute();
return $this->cache[$hash];
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment