diff options
author | Thomas Steur <thomas.steur@gmail.com> | 2016-01-29 03:12:26 +0300 |
---|---|---|
committer | Thomas Steur <thomas.steur@gmail.com> | 2016-02-01 02:31:41 +0300 |
commit | a008c849100991c6e254c66b747f6d40e61ba04e (patch) | |
tree | 21650d8b74d1fe9db6e799eba59ca093568dd069 /core | |
parent | c3e29b162a6aa93ec41044e42f229b18deeeaa31 (diff) |
create a new widget promoting piwik pro services
Diffstat (limited to 'core')
-rw-r--r-- | core/PiwikPro/Advertising.php | 64 | ||||
-rwxr-xr-x | core/Twig.php | 30 |
2 files changed, 53 insertions, 41 deletions
diff --git a/core/PiwikPro/Advertising.php b/core/PiwikPro/Advertising.php index dcb94c6fc1..a827ebc85b 100644 --- a/core/PiwikPro/Advertising.php +++ b/core/PiwikPro/Advertising.php @@ -19,6 +19,9 @@ use Piwik\Config; */ class Advertising { + const CAMPAIGN_NAME_UPGRADE_TO_PRO = 'Upgrade_to_Pro'; + const CAMPAIGN_NAME_UPGRADE_TO_CLOUD = 'Upgrade_to_Cloud'; + /** * @var Plugin\Manager */ @@ -54,34 +57,65 @@ class Advertising } /** - * Generates a link for promoting the Piwik Cloud. + * Get URL for promoting the Piwik Cloud. * * @param string $campaignMedium * @param string $campaignContent * @return string */ - public function getPromoLinkForCloud($campaignMedium, $campaignContent = '') + public function getPromoUrlForCloud($campaignMedium, $campaignContent = '') { - $url = 'https://piwik.pro/cloud/'; - $campaign = $this->getCampaignParametersForPromoLink($name = 'Upgrade_to_Cloud', $campaignMedium, $campaignContent); + $url = 'https://piwik.pro/cloud/?'; - $url .= '?' . $campaign; + $campaign = $this->getCampaignParametersForPromoUrl( + $name = self::CAMPAIGN_NAME_UPGRADE_TO_CLOUD, + $campaignMedium, + $campaignContent + ); - return $url; + return $url . $campaign; + } + + /** + * Get URL for promoting Piwik On Premises. + * @param string $campaignMedium + * @param string $campaignContent + * @return string + */ + public function getPromoUrlForOnPremises($campaignMedium, $campaignContent = '') + { + $url = 'https://piwik.pro/c/upgrade/?'; + + $campaign = $this->getCampaignParametersForPromoUrl( + $name = self::CAMPAIGN_NAME_UPGRADE_TO_PRO, + $campaignMedium, + $campaignContent + ); + + return $url . $campaign; } /** - * Generates a link for promoting Piwik On Premises. + * Appends campaign parameters to the given URL for promoting any Piwik PRO service. + * @param string $url + * @param string $campaignName * @param string $campaignMedium * @param string $campaignContent * @return string */ - public function getPromoLinkForOnPremises($campaignMedium, $campaignContent = '') + public function addPromoCampaignParametersToUrl($url, $campaignName, $campaignMedium, $campaignContent = '') { - $url = 'https://piwik.pro/c/upgrade/'; - $campaign = $this->getCampaignParametersForPromoLink($name = 'Upgrade_to_Pro', $campaignMedium, $campaignContent); + if (empty($url)) { + return ''; + } + + if (strpos($url, '?') === false) { + $url .= '?'; + } else { + $url .= '&'; + } - $url .= '?' . $campaign; + $url .= $this->getCampaignParametersForPromoUrl($campaignName, $campaignMedium, $campaignContent); return $url; } @@ -91,15 +125,15 @@ class Advertising * * @param string $campaignName * @param string $campaignMedium - * @param string $content Optional + * @param string $campaignContent Optional * @return string URL parameters without a leading ? or & */ - public function getCampaignParametersForPromoLink($campaignName, $campaignMedium, $content = '') + private function getCampaignParametersForPromoUrl($campaignName, $campaignMedium, $campaignContent = '') { $campaignName = sprintf('pk_campaign=%s&pk_medium=%s&pk_source=Piwik_App', $campaignName, $campaignMedium); - if (!empty($content)) { - $campaignName .= '&pk_content=' . $content; + if (!empty($campaignContent)) { + $campaignName .= '&pk_content=' . $campaignContent; } return $campaignName; diff --git a/core/Twig.php b/core/Twig.php index ab76791490..4a08eb40aa 100755 --- a/core/Twig.php +++ b/core/Twig.php @@ -87,7 +87,6 @@ class Twig $this->addFilter_percentage(); $this->addFilter_percent(); $this->addFilter_percentEvolution(); - $this->addFilter_piwikProAdLink(); $this->addFilter_piwikProOnPremisesAdLink(); $this->addFilter_piwikProCloudAdLink(); $this->addFilter_prettyDate(); @@ -324,34 +323,13 @@ class Twig $this->twig->addFilter($percentage); } - protected function addFilter_piwikProAdLink() - { - $twigEnv = $this->getTwigEnvironment(); - $ads = $this->getPiwikProAdvertising(); - - $piwikProAd = new Twig_SimpleFilter('piwikProPromoLink', function ($url, $campaignName, $campaignMedium, $campaignContent = '') use ($twigEnv, $ads) { - - $campaign = $ads->getCampaignParametersForPromoLink($campaignName, $campaignMedium, $campaignContent); - - if (strpos($url, '?') === false) { - $url .= '?' . $campaign; - } else { - $url .= '&' . $campaign; - } - - return twig_escape_filter($twigEnv, $url, 'html_attr'); - - }, array('is_safe' => array('html_attr'))); - $this->twig->addFilter($piwikProAd); - } - protected function addFilter_piwikProOnPremisesAdLink() { $twigEnv = $this->getTwigEnvironment(); $ads = $this->getPiwikProAdvertising(); - $piwikProAd = new Twig_SimpleFilter('piwikProOnPremisesPromoLink', function ($medium, $content = '') use ($twigEnv, $ads) { + $piwikProAd = new Twig_SimpleFilter('piwikProOnPremisesPromoUrl', function ($medium, $content = '') use ($twigEnv, $ads) { - $url = $ads->getPromoLinkForOnPremises($medium, $content); + $url = $ads->getPromoUrlForOnPremises($medium, $content); return twig_escape_filter($twigEnv, $url, 'html_attr'); @@ -363,9 +341,9 @@ class Twig { $twigEnv = $this->getTwigEnvironment(); $ads = $this->getPiwikProAdvertising(); - $piwikProAd = new Twig_SimpleFilter('piwikProCloudPromoLink', function ($medium, $content = '') use ($twigEnv, $ads) { + $piwikProAd = new Twig_SimpleFilter('piwikProCloudPromoUrl', function ($medium, $content = '') use ($twigEnv, $ads) { - $url = $ads->getPromoLinkForCloud($medium, $content); + $url = $ads->getPromoUrlForCloud($medium, $content); return twig_escape_filter($twigEnv, $url, 'html_attr'); |