Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/ProfessionalServices/Advertising.php')
-rw-r--r--core/ProfessionalServices/Advertising.php134
1 files changed, 134 insertions, 0 deletions
diff --git a/core/ProfessionalServices/Advertising.php b/core/ProfessionalServices/Advertising.php
new file mode 100644
index 0000000000..07e42c46e4
--- /dev/null
+++ b/core/ProfessionalServices/Advertising.php
@@ -0,0 +1,134 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\ProfessionalServices;
+
+use Piwik\Plugin;
+use Piwik\Config;
+
+/**
+ * Advertising for providers of Professional Support for Piwik.
+ *
+ * Lets you for example check whether advertising is enabled, generate links for different landing pages etc.
+ *
+ * @since 2.16.0
+ */
+class Advertising
+{
+ const CAMPAIGN_NAME_PROFESSIONAL_SERVICES = 'App_ProfessionalServices';
+
+ /**
+ * @var Plugin\Manager
+ */
+ private $pluginManager;
+
+ /**
+ * @var Config
+ */
+ private $config;
+
+ public function __construct(Plugin\Manager $pluginManager, Config $config)
+ {
+ $this->pluginManager = $pluginManager;
+ $this->config = $config;
+ }
+
+ /**
+ * Returns true if it is ok to show some advertising in the Piwik UI.
+ * @return bool
+ */
+ public function areAdsForProfessionalServicesEnabled()
+ {
+ return $this->isAdsEnabledInConfig($this->config->General);
+ }
+
+ /**
+ * Get URL for promoting Professional Services for Piwik
+ *
+ * @param string $campaignMedium
+ * @param string $campaignContent
+ * @return string
+ */
+ public function getPromoUrlForProfessionalServices($campaignMedium, $campaignContent = '')
+ {
+ $url = 'https://piwik.org/consulting/?';
+
+ $campaign = $this->getCampaignParametersForPromoUrl(
+ $name = self::CAMPAIGN_NAME_PROFESSIONAL_SERVICES,
+ $campaignMedium,
+ $campaignContent
+ );
+
+ return $url . $campaign;
+ }
+
+ /**
+ * Get URL for letting people know about upgrade to On premises
+ *
+ * @return string
+ */
+ public function getPromoUrlForPiwikProUpgrade()
+ {
+ return 'https://piwik.org/recommends/piwik-pro-from-app';
+ }
+
+ /**
+ * Appends campaign parameters to the given URL for promoting any Professional Support for Piwik service.
+ *
+ * @param string $url
+ * @param string $campaignName
+ * @param string $campaignMedium
+ * @param string $campaignContent
+ * @return string
+ */
+ public function addPromoCampaignParametersToUrl($url, $campaignName, $campaignMedium, $campaignContent = '')
+ {
+ if (empty($url)) {
+ return '';
+ }
+
+ if (strpos($url, '?') === false) {
+ $url .= '?';
+ } else {
+ $url .= '&';
+ }
+
+ $url .= $this->getCampaignParametersForPromoUrl($campaignName, $campaignMedium, $campaignContent);
+
+ return $url;
+ }
+
+ /**
+ * Generates campaign URL parameters that can be used with promoting Professional Support service.
+ *
+ * @param string $campaignName
+ * @param string $campaignMedium
+ * @param string $campaignContent Optional
+ * @return string URL parameters without a leading ? or &
+ */
+ private function getCampaignParametersForPromoUrl($campaignName, $campaignMedium, $campaignContent = '')
+ {
+ $campaignName = sprintf('pk_campaign=%s&pk_medium=%s&pk_source=Piwik_App', $campaignName, $campaignMedium);
+
+ if (!empty($campaignContent)) {
+ $campaignName .= '&pk_content=' . $campaignContent;
+ }
+
+ return $campaignName;
+ }
+
+ /**
+ * @param $configGeneralSection
+ * @return bool
+ */
+ public static function isAdsEnabledInConfig($configGeneralSection)
+ {
+ $oldSettingValue = @$configGeneralSection['piwik_pro_ads_enabled'];
+ $newSettingValue = @$configGeneralSection['piwik_professional_support_ads_enabled'];
+ return (bool) ($newSettingValue || $oldSettingValue);
+ }
+}