PluginProbe
Simple Analytics / 1.106
Simple Analytics v1.106
1.109 1.108 1.107 1.106 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.80 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.90 1.91 All 98 releases
simpleanalytics / src / Plugin.php

Plugin.php in Simple Analytics 1.106, at src/Plugin.php

86 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SimpleAnalytics;
4
5 use SimpleAnalytics\Actions\AddInactiveComment;
6 use SimpleAnalytics\Actions\AddNoScriptTag;
7 use SimpleAnalytics\Actions\AddPluginSettingsLink;
8 use SimpleAnalytics\Scripts\AnalyticsScript;
9 use SimpleAnalytics\Scripts\AutomatedEventsScript;
10 use SimpleAnalytics\Scripts\InactiveScript;
11 use SimpleAnalytics\Settings\AdminPage;
12
13 final class Plugin
14 {
15 protected $hooks;
16 protected $settings;
17 protected $trackingRules;
18 protected $scripts;
19 protected $adminPage;
20
21 public function __construct(
22 WordPressHooks $hooks,
23 WordPressSettings $settings,
24 TrackingRules $trackingRules,
25 ScriptRegistry $scripts,
26 AdminPage $adminPage
27 ) {
28 $this->hooks = $hooks;
29 $this->settings = $settings;
30 $this->trackingRules = $trackingRules;
31 $this->scripts = $scripts;
32 $this->adminPage = $adminPage;
33 }
34
35 public function boot(): void
36 {
37 $this->hooks->addAction('init', \Closure::fromCallable([$this, 'onInit']));
38 $this->hooks->onActivation(\Closure::fromCallable([$this, 'onActivation']));
39 $this->hooks->onDeactivation(\Closure::fromCallable([$this, 'onUninstall']));
40
41 if ($this->hooks->isAdmin()) {
42 $this->adminPage->register();
43 AddPluginSettingsLink::register();
44 }
45 }
46
47 public function onInit(): void
48 {
49 $tracking = ! $this->trackingRules->hasExcludedIp() && ! $this->trackingRules->hasExcludedUserRole();
50
51 if ($tracking) {
52 $this->scripts->push(new AnalyticsScript);
53 } else {
54 $this->scripts->push(new InactiveScript);
55 AddInactiveComment::register();
56 }
57
58 if ($tracking && $this->settings->get(SettingName::NOSCRIPT)) {
59 AddNoScriptTag::register();
60 }
61
62 if ($this->settings->boolean(SettingName::AUTOMATED_EVENTS)) {
63 $this->scripts->push(new AutomatedEventsScript);
64 }
65
66 $this->scripts->register();
67 }
68
69 public function onActivation(): void
70 {
71 $this->settings->register(SettingName::ENABLED, true);
72
73 foreach (array_diff(SettingName::cases(), [SettingName::ENABLED]) as $name) {
74 $this->settings->register($name);
75 }
76
77 // Legacy. Update the option introduced in a previous release to use autoloading.
78 $this->settings->update(SettingName::CUSTOM_DOMAIN, $this->settings->get(SettingName::CUSTOM_DOMAIN), true);
79 }
80
81 public function onUninstall(): void
82 {
83 foreach (SettingName::cases() as $key) $this->settings->delete($key);
84 }
85 }
86