1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-06 06:38:00 +02:00

Fixes #3546 Social network trackers now ignored during THEME_LAYOUT detection.

This commit is contained in:
Cameron
2019-01-24 11:36:14 -08:00
parent 524ed929f1
commit 9e09cf836e
3 changed files with 52 additions and 17 deletions

View File

@@ -1028,7 +1028,7 @@ class eRouter
*/
public $notFoundUrl = 'system/error/404?type=routeError';
protected $_trackers = array('fbclid','utm_source','utm_medium','utm_content','utm_campaign');
public function __construct()
@@ -1090,11 +1090,6 @@ class eRouter
}
public function getTrackers()
{
return $this->_trackers;
}
/**
* Load config and url rules, if not available - build it on the fly
* @return eRouter
@@ -1805,16 +1800,7 @@ class eRouter
// Ignore social trackers when determining route.
$get = $_GET;
$trackers = $this->getTrackers();
foreach($trackers as $val)
{
if(isset($get[$val]))
{
unset($get[$val]);
}
}
$get = eHelper::removeTrackers($_GET);
// Route to front page - index/index/index route
if(!$rawPathInfo && (!$this->getMainModule() || empty($get)))
@@ -4949,4 +4935,28 @@ class eHelper
return array(1 => $multi, 2 => $params, 3 => $parmstr);
}
/**
* Remove Social Media Trackers from a $_GET array based on key matches.
* @param array $get
* @return array
*/
public static function removeTrackers($get = array())
{
$trackers = array('fbclid','utm_source','utm_medium','utm_content','utm_campaign');
foreach($trackers as $val)
{
if(isset($get[$val]))
{
unset($get[$val]);
}
}
return $get;
}
}

View File

@@ -279,6 +279,29 @@ class e_theme
return isset($this->_data[$this->_current][$var]) ? $this->_data[$this->_current][$var] : false;
}
/**
* Rebuild URL without trackers, for matching against theme_layout prefs.
* @param string $url
* @return string
*/
private function filterTrackers($url)
{
if(strpos($url,'?') === false || empty($url))
{
return $url;
}
list($site,$query) = explode('?',$url);
parse_str($query,$get);
$get = eHelper::removeTrackers($get);
$ret = empty($get) ? $site : $site.'?'.http_build_query($get);
return $ret;
}
/**
* Calculate THEME_LAYOUT constant based on theme preferences and current URL.
@@ -306,6 +329,8 @@ class e_theme
// FIX - check against urldecoded strings
$c_url = rtrim(rawurldecode($c_url), '?');
$c_url = $this->filterTrackers($c_url);
foreach($cusPagePref as $lyout=>$cusPageArray)
{
if(!is_array($cusPageArray)) { continue; }

View File

@@ -20,4 +20,4 @@ e107::css('inline','
');
?>