public static function addToUrl($strRequest, $blnIgnoreParams = false, $arrUnset = array())
{
$arrGet = $blnIgnoreParams ? array() : $_GET;
// Clean the $_GET values (thanks to thyon)
foreach (array_keys($arrGet) as $key) {
$arrGet[$key] = \Input::get($key, true, true);
}
$arrFragments = preg_split('/&(amp;)?/i', $strRequest);
// Merge the new request string
foreach ($arrFragments as $strFragment) {
list($key, $value) = explode('=', $strFragment);
if ($value == '') {
unset($arrGet[$key]);
} else {
$arrGet[$key] = $value;
}
}
// Unset the language parameter
if (\Config::get('addLanguageToUrl')) {
unset($arrGet['language']);
}
$strParams = '';
$strConnector = '/';
$strSeparator = '/';
// Compile the parameters string
foreach ($arrGet as $k => $v) {
// Omit the key if it is an auto_item key (see #5037)
if (\Config::get('useAutoItem') && ($k == 'auto_item' || in_array($k, $GLOBALS['TL_AUTO_ITEM']))) {
$strParams = $strConnector . urlencode($v) . $strParams;
} else {
$strParams .= $strConnector . urlencode($k) . $strSeparator . urlencode($v);
}
}
/** @var PageModel $objPage */
global $objPage;
$pageId = $objPage->alias ?: $objPage->id;
// Get the page ID from URL if not set
if (empty($pageId)) {
$pageId = static::getPageIdFromUrl();
}
$arrParams = array();
$arrParams['alias'] = $pageId . $strParams;
$arrParams['_locale'] = $objPage->rootLanguage;
$strUrl = \System::getContainer()->get('router')->generate('contao_frontend', $arrParams);
$strUrl = substr($strUrl, strlen(\Environment::get('path')) + 1);
return $strUrl;
}