Skip to content
Snippets Groups Projects
Commit d8251f5b authored by Kevin von Spiczak's avatar Kevin von Spiczak
Browse files

[FEATURE] refactor code, so that multiple storage pids can be used

parent ead302a3
No related branches found
No related tags found
1 merge request!46AZM changes
...@@ -61,6 +61,7 @@ use TYPO3\CMS\Core\Utility\PathUtility; ...@@ -61,6 +61,7 @@ use TYPO3\CMS\Core\Utility\PathUtility;
use TYPO3\CMS\Core\Utility\VersionNumberUtility; use TYPO3\CMS\Core\Utility\VersionNumberUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentNameException;
use TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException; use TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException;
use TYPO3\CMS\Extbase\Mvc\Exception\StopActionException; use TYPO3\CMS\Extbase\Mvc\Exception\StopActionException;
use TYPO3\CMS\Extbase\Property\Exception\TypeConverterException; use TYPO3\CMS\Extbase\Property\Exception\TypeConverterException;
...@@ -244,12 +245,13 @@ class JoblistController extends ActionController { ...@@ -244,12 +245,13 @@ class JoblistController extends ActionController {
} }
unset($filter); unset($filter);
$storagePid = (int) $this->configurationManager->getConfiguration( $storagePids = GeneralUtility::trimExplode(
',', $this->configurationManager->getConfiguration(
ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK
)['persistence']['storagePid']; )['persistence']['storagePid']);
$this->assignFilterValues($storagePid, $filters); $this->assignFilterValues($storagePids, $filters);
$this->view->assign('recordPageId', $storagePid); $this->view->assign('recordPageIds', $storagePids);
$jobLimit = (int) $this->settings['jobLimit']; $jobLimit = (int) $this->settings['jobLimit'];
if ($jobId) { if ($jobId) {
...@@ -305,7 +307,6 @@ class JoblistController extends ActionController { ...@@ -305,7 +307,6 @@ class JoblistController extends ActionController {
} }
$this->view->assign('jobs', $jobs); $this->view->assign('jobs', $jobs);
$this->view->assign('jobs2', 'just a job');
$this->view->assign('limit', $jobLimit); $this->view->assign('limit', $jobLimit);
$this->view->assign('numberOfPages', $numberOfPages); $this->view->assign('numberOfPages', $numberOfPages);
...@@ -326,6 +327,7 @@ class JoblistController extends ActionController { ...@@ -326,6 +327,7 @@ class JoblistController extends ActionController {
* @throws AspectNotFoundException * @throws AspectNotFoundException
* @throws StopActionException * @throws StopActionException
* @throws SiteNotFoundException * @throws SiteNotFoundException
* @throws InvalidArgumentNameException
*/ */
public function applyFormAction( public function applyFormAction(
JobApplication $applyData = NULL, JobApplication $applyData = NULL,
...@@ -384,10 +386,11 @@ class JoblistController extends ActionController { ...@@ -384,10 +386,11 @@ class JoblistController extends ActionController {
} }
$this->view->assign('job', $job); $this->view->assign('job', $job);
} else { } else {
$storagePid = (int) $this->configurationManager->getConfiguration( $storagePids = GeneralUtility::trimExplode(
',', $this->configurationManager->getConfiguration(
ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK
)['persistence']['storagePid']; )['persistence']['storagePid']);
$this->view->assign('companies', $this->companyRepository->getAllCompanies($storagePid)); $this->view->assign('companies', $this->companyRepository->getAllCompanies($storagePids));
} }
// display country options // display country options
...@@ -540,7 +543,7 @@ class JoblistController extends ActionController { ...@@ -540,7 +543,7 @@ class JoblistController extends ActionController {
* @param JobApplication $applyData * @param JobApplication $applyData
* @return ResponseInterface|null * @return ResponseInterface|null
* @throws NoSuchArgumentException * @throws NoSuchArgumentException
* @throws StopActionException * @throws StopActionException|InvalidArgumentNameException
*/ */
public function applyAction(JobApplication $applyData): ?ResponseInterface { public function applyAction(JobApplication $applyData): ?ResponseInterface {
$folderName = $this->request->getArgument('folderName'); $folderName = $this->request->getArgument('folderName');
...@@ -666,18 +669,18 @@ class JoblistController extends ActionController { ...@@ -666,18 +669,18 @@ class JoblistController extends ActionController {
/** /**
* Assign filter values * Assign filter values
* *
* @param int $rootPageId * @param array $rootPageIds
* @param array $filters * @param array $filters
* @throws AspectNotFoundException * @throws AspectNotFoundException
*/ */
protected function assignFilterValues(int $rootPageId, array $filters = []): void { protected function assignFilterValues(array $rootPageIds, array $filters = []): void {
$countries = $this->companyRepository->getAllCountries($rootPageId, $filters['filterByLocation'] ?? []); $countries = $this->companyRepository->getAllCountries($rootPageIds, $filters['filterByLocation'] ?? []);
$this->view->assign('countries', $countries); $this->view->assign('countries', $countries);
$cities = $this->companyRepository->getAllCities($rootPageId, $filters['filterByLocation'] ?? []); $cities = $this->companyRepository->getAllCities($rootPageIds, $filters['filterByLocation'] ?? []);
$this->view->assign('cities', $cities); $this->view->assign('cities', $cities);
$companies = $this->companyRepository->getAllCompanyNames($rootPageId, $filters['filterByLocation'] ?? []); $companies = $this->companyRepository->getAllCompanyNames($rootPageIds, $filters['filterByLocation'] ?? []);
$this->view->assign('companies', $companies); $this->view->assign('companies', $companies);
$departments = $this->departmentRepository->findAllByFilter($filters['filterByDepartment'] ?? []); $departments = $this->departmentRepository->findAllByFilter($filters['filterByDepartment'] ?? []);
......
...@@ -44,13 +44,13 @@ class CompanyRepository extends Repository { ...@@ -44,13 +44,13 @@ class CompanyRepository extends Repository {
/** /**
* Returns all countries filtered by page id * Returns all countries filtered by page id
* *
* @param int $pageUid * @param array $pageUids
* @param array $filters * @param array $filters
* @return array * @return array
* @throws AspectNotFoundException * @throws AspectNotFoundException
*/ */
public function getAllCountries(int $pageUid, array $filters = []) { public function getAllCountries(array $pageUids, array $filters = []): array {
$result = $this->getAllCompanies($pageUid, $filters)->toArray(); $result = $this->getAllCompanies($pageUids, $filters)->toArray();
$countryArray = []; $countryArray = [];
/** @var Company $company */ /** @var Company $company */
...@@ -69,13 +69,13 @@ class CompanyRepository extends Repository { ...@@ -69,13 +69,13 @@ class CompanyRepository extends Repository {
/** /**
* Returns all filtered cities * Returns all filtered cities
* *
* @param int $pageUid * @param array $pageUids
* @param array $filters * @param array $filters
* @return array * @return array
* @throws AspectNotFoundException * @throws AspectNotFoundException
*/ */
public function getAllCities(int $pageUid, array $filters = []) { public function getAllCities(array $pageUids, array $filters = []): array {
$result = $this->getAllCompanies($pageUid, $filters)->toArray(); $result = $this->getAllCompanies($pageUids, $filters)->toArray();
$cityArray = []; $cityArray = [];
/** @var Company $company */ /** @var Company $company */
...@@ -94,13 +94,13 @@ class CompanyRepository extends Repository { ...@@ -94,13 +94,13 @@ class CompanyRepository extends Repository {
/** /**
* Returns all company names filtered by page id * Returns all company names filtered by page id
* *
* @param int $pageUid * @param array $pageUids
* @param array $filters * @param array $filters
* @return array * @return array
* @throws AspectNotFoundException * @throws AspectNotFoundException
*/ */
public function getAllCompanyNames(int $pageUid, array $filters = []) { public function getAllCompanyNames(array $pageUids, array $filters = []): array {
$result = $this->getAllCompanies($pageUid, $filters)->toArray(); $result = $this->getAllCompanies($pageUids, $filters)->toArray();
$companyArray = []; $companyArray = [];
/** @var Company $company */ /** @var Company $company */
...@@ -119,18 +119,21 @@ class CompanyRepository extends Repository { ...@@ -119,18 +119,21 @@ class CompanyRepository extends Repository {
/** /**
* Returns all companies filtered by page id * Returns all companies filtered by page id
* *
* @param int $pageUid * @param array $pageUids
* @param array $filters * @param array $filters
* @return object[]|QueryResultInterface * @return object[]|QueryResultInterface
* @throws AspectNotFoundException * @throws AspectNotFoundException
*/ */
public function getAllCompanies(int $pageUid, array $filters = []) { public function getAllCompanies(array $pageUids, array $filters = []) {
$hash = $pageUid . '_' . implode('-', $filters); $hash = '';
foreach($pageUids as $pageUid) {
$hash .= $pageUid . '_' . implode('-', $filters);
}
if (!isset($this->cache[$hash])) { if (!isset($this->cache[$hash])) {
$companyConstraints = []; $companyConstraints = [];
$query = $this->createQuery(); $query = $this->createQuery();
$querySettings = $query->getQuerySettings(); $querySettings = $query->getQuerySettings();
$querySettings->setStoragePageIds([$pageUid]); $querySettings->setStoragePageIds($pageUids);
$querySettings->setLanguageUid( $querySettings->setLanguageUid(
GeneralUtility::makeInstance(Context::class)->getPropertyFromAspect('language', 'id', 0) GeneralUtility::makeInstance(Context::class)->getPropertyFromAspect('language', 'id', 0)
); );
...@@ -142,7 +145,7 @@ class CompanyRepository extends Repository { ...@@ -142,7 +145,7 @@ class CompanyRepository extends Repository {
] ]
); );
$companyConstraints[] = $query->equals('pid', $pageUid); $companyConstraints[] = $query->equals('pid', $pageUids);
if (count($filters) > 0) { if (count($filters) > 0) {
$constraints = []; $constraints = [];
foreach ($filters as $filter) { foreach ($filters as $filter) {
......
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