PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 1.3.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v1.3.1
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / ProfessionalServices / Advertising.php
matomo / app / core / ProfessionalServices Last commit date
Advertising.php 6 years ago
Advertising.php
125 lines
1 <?php
2 /**
3 * Piwik - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 */
8 namespace Piwik\ProfessionalServices;
9
10 use Piwik\Plugin;
11 use Piwik\Config;
12
13 /**
14 * Advertising for providers of Professional Support for Piwik.
15 *
16 * Lets you for example check whether advertising is enabled, generate links for different landing pages etc.
17 *
18 * @since 2.16.0
19 */
20 class Advertising
21 {
22 const CAMPAIGN_NAME_PROFESSIONAL_SERVICES = 'App_ProfessionalServices';
23
24 /**
25 * @var Plugin\Manager
26 */
27 private $pluginManager;
28
29 /**
30 * @var Config
31 */
32 private $config;
33
34 public function __construct(Plugin\Manager $pluginManager, Config $config)
35 {
36 $this->pluginManager = $pluginManager;
37 $this->config = $config;
38 }
39
40 /**
41 * Returns true if it is ok to show some advertising in the Piwik UI.
42 * @return bool
43 */
44 public function areAdsForProfessionalServicesEnabled()
45 {
46 return self::isAdsEnabledInConfig($this->config->General);
47 }
48
49 /**
50 * Get URL for promoting Professional Services for Piwik
51 *
52 * @param string $campaignMedium
53 * @param string $campaignContent
54 * @return string
55 */
56 public function getPromoUrlForProfessionalServices($campaignMedium, $campaignContent = '')
57 {
58 $url = 'https://matomo.org/support-plans/?';
59
60 $campaign = $this->getCampaignParametersForPromoUrl(
61 $name = self::CAMPAIGN_NAME_PROFESSIONAL_SERVICES,
62 $campaignMedium,
63 $campaignContent
64 );
65
66 return $url . $campaign;
67 }
68
69 /**
70 * Appends campaign parameters to the given URL for promoting any Professional Support for Piwik service.
71 *
72 * @param string $url
73 * @param string $campaignName
74 * @param string $campaignMedium
75 * @param string $campaignContent
76 * @return string
77 */
78 public function addPromoCampaignParametersToUrl($url, $campaignName, $campaignMedium, $campaignContent = '')
79 {
80 if (empty($url)) {
81 return '';
82 }
83
84 if (strpos($url, '?') === false) {
85 $url .= '?';
86 } else {
87 $url .= '&';
88 }
89
90 $url .= $this->getCampaignParametersForPromoUrl($campaignName, $campaignMedium, $campaignContent);
91
92 return $url;
93 }
94
95 /**
96 * Generates campaign URL parameters that can be used with promoting Professional Support service.
97 *
98 * @param string $campaignName
99 * @param string $campaignMedium
100 * @param string $campaignContent Optional
101 * @return string URL parameters without a leading ? or &
102 */
103 private function getCampaignParametersForPromoUrl($campaignName, $campaignMedium, $campaignContent = '')
104 {
105 $campaignName = sprintf('pk_campaign=%s&pk_medium=%s&pk_source=Matomo_App', $campaignName, $campaignMedium);
106
107 if (!empty($campaignContent)) {
108 $campaignName .= '&pk_content=' . $campaignContent;
109 }
110
111 return $campaignName;
112 }
113
114 /**
115 * @param $configGeneralSection
116 * @return bool
117 */
118 public static function isAdsEnabledInConfig($configGeneralSection)
119 {
120 $oldSettingValue = @$configGeneralSection['piwik_pro_ads_enabled'];
121 $newSettingValue = @$configGeneralSection['piwik_professional_support_ads_enabled'];
122 return (bool) ($newSettingValue || $oldSettingValue);
123 }
124 }
125