, dreipunktnull * * All rights reserved * * This script is part of the TYPO3 project. The TYPO3 project is * free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * The GNU General Public License can be found at * http://www.gnu.org/copyleft/gpl.html. * * This script is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ use EP\EpProducts\Service\ResellerDataService; use EP\EpProducts\Traits\DbConnectionTrait; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Object\ObjectManager; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface; class ContextProcessor implements DataProcessorInterface { use DbConnectionTrait; /** * @param ContentObjectRenderer $cObj * @param array $contentObjectConfiguration * @param array $processorConfiguration * @param array $processedData * @return array * @throws \Doctrine\DBAL\DBALException */ public function process( ContentObjectRenderer $cObj, array $contentObjectConfiguration, array $processorConfiguration, array $processedData ) { $data = $cObj->data; $processedData['context'] = []; $countryUid = (int) $data['tx_eptheme_context_country']; if ($countryUid > 0) { $processedData['context']['country'] = $this->getContextRecord($countryUid, 'tx_epproducts_domain_model_country'); } $regionUid = (int) $data['tx_eptheme_context_region']; if ($regionUid > 0) { $processedData['context']['region'] = $this->getContextRecord($regionUid, 'tx_epproducts_domain_model_region'); } if ($data['tx_eptheme_context_pacode']) { $processedData['context']['paCode'] = $data['tx_eptheme_context_pacode']; } elseif ($paCode = $this->getPaCodeFromRequest()) { $processedData['context']['paCode'] = $paCode; } return $processedData; } /** * @return array|bool * @throws \Doctrine\DBAL\DBALException */ private function getResellerData() { /** @var \TYPO3\CMS\Extbase\Object\ObjectManager $objectManager */ $objectManager = GeneralUtility::makeInstance(ObjectManager::class); /** @var ResellerDataService $resellerService */ $resellerService = $objectManager->get(ResellerDataService::class); return $resellerService->getResellerForCurrentDomain(); } /** * @return string */ private function getPaCodeFromRequest() { $currentUri = GeneralUtility::getIndpEnv('REQUEST_URI'); $query = parse_url($currentUri, \PHP_URL_QUERY); if (!$query) { return ''; } parse_str($query, $items); if (array_key_exists('pa', $items)) { return $items['pa']; } return ''; } /** * @param int $uid * @param string $table * @return array * @throws \Doctrine\DBAL\DBALException */ private function getContextRecord($uid, $table) { $qb = $this->getDbConnection()->createQueryBuilder(); $query = $qb ->select('*') ->from($table) ->where('uid = :uid') ->andWhere('deleted = 0') ->andWhere('hidden = 0') ->setParameter('uid', $uid) ; return $query->execute()->fetch(); } }