diff --git a/plugins/CoreAdminHome/OptOutManager.php b/plugins/CoreAdminHome/OptOutManager.php index 9aede6b7b5259518ac353114efa418c838775b05..32b5ac55967ba0795156db75139417d646830956 100644 --- a/plugins/CoreAdminHome/OptOutManager.php +++ b/plugins/CoreAdminHome/OptOutManager.php @@ -34,6 +34,9 @@ class OptOutManager /** @var View|null */ private $view; + /** @var array */ + private $queryParameters = array(); + /** * @param DoNotTrackHeaderChecker $doNotTrackHeaderChecker */ @@ -110,6 +113,50 @@ class OptOutManager $this->title = $title; } + /** + * @param string $key + * @param string $value + * @param bool $override + * + * @return bool + */ + public function addQueryParameter($key, $value, $override = true) + { + if (!isset($this->queryParameters[$key]) || true === $override) { + $this->queryParameters[$key] = $value; + return true; + } + + return false; + } + + /** + * @param array $items + * @param bool|true $override + */ + public function addQueryParameters(array $items, $override = true) + { + foreach ($items as $key => $value) { + $this->addQueryParameter($key, $value, $override); + } + } + + /** + * @param $key + */ + public function removeQueryParameter($key) + { + unset($this->queryParameters[$key]); + } + + /** + * @return array + */ + public function getQueryParameters() + { + return $this->queryParameters; + } + /** * @return View * @throws \Exception @@ -145,6 +192,13 @@ class OptOutManager ? $language : LanguagesManager::getLanguageCodeForCurrentUser(); + $this->addQueryParameters(array( + 'module' => 'CoreAdminHome', + 'action' => 'optOut', + 'language' => $lang, + 'setCookieInNewWindow' => 1 + ), false); + $this->view = new View("@CoreAdminHome/optOut"); $this->view->setXFrameOptions('allow'); $this->view->dntFound = $dntFound; @@ -156,6 +210,7 @@ class OptOutManager $this->view->javascripts = $this->getJavascripts(); $this->view->stylesheets = $this->getStylesheets(); $this->view->title = $this->getTitle(); + $this->view->queryParameters = $this->getQueryParameters(); return $this->view; } diff --git a/plugins/CoreAdminHome/templates/optOut.twig b/plugins/CoreAdminHome/templates/optOut.twig index e0eef925719f8b7674d616a27a4db216726f6782..777f6bef3bc17a73a708df8ad052ccd6b2dae7be 100644 --- a/plugins/CoreAdminHome/templates/optOut.twig +++ b/plugins/CoreAdminHome/templates/optOut.twig @@ -71,7 +71,7 @@ <br/><br/> {% if not showConfirmOnly %} - <form method="post" action="?module=CoreAdminHome&action=optOut{% if language %}&language={{ language }}{% endif %}&setCookieInNewWindow=1" target="_blank"> + <form method="post" action="?{{ queryParameters|url_encode|raw }}" target="_blank"> <input type="hidden" name="nonce" value="{{ nonce }}" /> <input type="hidden" name="fuzz" value="{{ "now"|date }}" /> <input onclick="submitForm(event, this.form);" type="checkbox" id="trackVisits" name="trackVisits" {% if trackVisits %}checked="checked"{% endif %} />