Make custom redirects domain based

This commit is contained in:
Björn Fromme
2019-10-01 12:45:18 +02:00
parent f5aa2afd0c
commit 37cbf12545
4 changed files with 42 additions and 1 deletions
@@ -0,0 +1,26 @@
<?php
namespace EP\EpTrack\Hook;
use TYPO3\CMS\Core\Site\Entity\Site;
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class ItemsProcFunc
{
/**
* @param $config
*/
public function user_domainItems(&$config)
{
$siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
$domains = [
['*', '*'],
];
foreach ($siteFinder->getAllSites() as $site) {
/** @var Site $site */
$domains[] = [$site->getBase()->getHost(), $site->getBase()->getHost()];
}
$config['items'] = $domains;
}
}
@@ -76,6 +76,7 @@ class TrackingMiddleware implements MiddlewareInterface
{
/** @var NormalizedParams $params */
$params = $request->getAttribute('normalizedParams');
$sourceHost = $params->getHttpHost();
$uri = strtok(strtolower($params->getRequestUri()), '?');
if (substr($uri, -1) !== '/') {
@@ -88,6 +89,10 @@ class TrackingMiddleware implements MiddlewareInterface
->select('*')
->from('tx_eptrack_domain_model_redirect')
->where('redirect_from = LOWER(:uri)')
->andWhere($qb->expr()->orX(
$qb->expr()->eq('source_host', $qb->createNamedParameter('*')),
$qb->expr()->eq('source_host', $qb->createNamedParameter($sourceHost))
))
->andWhere('deleted = 0')
->andWhere('hidden = 0')
->setParameter('uri', $uri)
@@ -28,7 +28,8 @@ return [
],
'types' => [
'1' => [
'showitem' => 'hidden, label, redirect_from, target_page_uid, --palette--;;codes, --palette--;UTM;utm',
'showitem' => 'hidden, label, source_host, redirect_from, target_page_uid, --palette--;;codes,
--palette--;UTM;utm',
],
],
'palettes' => [
@@ -129,6 +130,14 @@ return [
],
],
'source_host' => [
'label' => 'Domain',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'itemsProcFunc' => \EP\EpTrack\Hook\ItemsProcFunc::class.'->user_domainItems',
],
],
'label' => [
'exclude' => 0,
'label' => 'LLL:EXT:ep_track/Resources/Private/Language/locallang.xlf:tx_eptrack_domain_model_redirect.label',
@@ -8,6 +8,7 @@ CREATE TABLE tx_eptrack_domain_model_redirect (
pid int(11) DEFAULT '0' NOT NULL,
label varchar(255) DEFAULT '' NOT NULL,
source_host varchar(255) DEFAULT '' NOT NULL,
redirect_from varchar(255) DEFAULT '' NOT NULL,
target_page_uid varchar(255) DEFAULT '' NOT NULL,
tracking_code varchar(255) DEFAULT '' NOT NULL,