1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
<?php
/**
* Piwik - free/libre analytics platform
*
* @link https://matomo.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 self::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://matomo.org/support-plans/?';
$campaign = $this->getCampaignParametersForPromoUrl(
$name = self::CAMPAIGN_NAME_PROFESSIONAL_SERVICES,
$campaignMedium,
$campaignContent
);
return $url . $campaign;
}
/**
* 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=Matomo_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);
}
}
|