diff options
Diffstat (limited to 'core/Twig.php')
-rwxr-xr-x | core/Twig.php | 54 |
1 files changed, 10 insertions, 44 deletions
diff --git a/core/Twig.php b/core/Twig.php index 9f17e0b218..5ac84993f1 100755 --- a/core/Twig.php +++ b/core/Twig.php @@ -53,7 +53,14 @@ function piwik_fix_lbrace($string) $replace = array_map(function ($val) { return $val . '⁣' . $val; }, $chars); } - return str_replace($search, $replace, $string); + $replacedString = str_replace($search, $replace, $string); + + // try to replace characters until there are no changes + if ($string !== $replacedString) { + return piwik_fix_lbrace($replacedString); + } + + return $string; } function piwik_escape_filter(Twig_Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false) { @@ -166,9 +173,6 @@ class Twig $this->addFilter_percent(); $this->addFilter_percentage(); $this->addFilter_percentEvolution(); - $this->addFilter_piwikProAdLink(); - $this->addFilter_piwikProOnPremisesAdLink(); - $this->addFilter_piwikProCloudAdLink(); $this->addFilter_prettyDate(); $this->addFilter_safeDecodeRaw(); $this->addFilter_number(); @@ -411,47 +415,9 @@ class Twig $this->twig->addFilter($percentage); } - protected function addFilter_piwikProAdLink() - { - $ads = $this->getPiwikProAdvertising(); - $piwikProAd = new Twig_SimpleFilter('piwikProCampaignParameters', function ($url, $campaignName, $campaignMedium, $campaignContent = '') use ($ads) { - $url = $ads->addPromoCampaignParametersToUrl($url, $campaignName, $campaignMedium, $campaignContent); - return $url; - }); - $this->twig->addFilter($piwikProAd); - } - - protected function addFilter_piwikProOnPremisesAdLink() - { - $twigEnv = $this->getTwigEnvironment(); - $ads = $this->getPiwikProAdvertising(); - $piwikProAd = new Twig_SimpleFilter('piwikProOnPremisesPromoUrl', function ($medium, $content = '') use ($twigEnv, $ads) { - - $url = $ads->getPromoUrlForOnPremises($medium, $content); - - return twig_escape_filter($twigEnv, $url, 'html_attr'); - - }, array('is_safe' => array('html_attr'))); - $this->twig->addFilter($piwikProAd); - } - - protected function addFilter_piwikProCloudAdLink() - { - $twigEnv = $this->getTwigEnvironment(); - $ads = $this->getPiwikProAdvertising(); - $piwikProAd = new Twig_SimpleFilter('piwikProCloudPromoUrl', function ($medium, $content = '') use ($twigEnv, $ads) { - - $url = $ads->getPromoUrlForCloud($medium, $content); - - return twig_escape_filter($twigEnv, $url, 'html_attr'); - - }, array('is_safe' => array('html_attr'))); - $this->twig->addFilter($piwikProAd); - } - - private function getPiwikProAdvertising() + private function getProfessionalServicesAdvertising() { - return StaticContainer::get('Piwik\PiwikPro\Advertising'); + return StaticContainer::get('Piwik\ProfessionalServices\Advertising'); } protected function addFilter_number() |