Skip to content

Commit 0605325

Browse files
committed
wip
1 parent efa0cd8 commit 0605325

File tree

7 files changed

+83
-84
lines changed

7 files changed

+83
-84
lines changed

simple-analytics.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
require __DIR__ . '/src/Scripts/AutomatedEventsScript.php';
4040
require __DIR__ . '/src/Scripts/InactiveScript.php';
4141
require __DIR__ . '/src/Actions/Action.php';
42-
require __DIR__ . '/src/Actions/FooterContents.php';
43-
require __DIR__ . '/src/Actions/AnalyticsCode.php';
42+
require __DIR__ . '/src/Actions/AddInactiveComment.php';
43+
require __DIR__ . '/src/Actions/AddNoScriptTag.php';
4444
require __DIR__ . '/src/Support/Str.php';
4545
require __DIR__ . '/src/Settings/Block.php';
4646
require __DIR__ . '/src/Settings/Blocks/CalloutBlock.php';
@@ -61,4 +61,4 @@
6161

6262
use SimpleAnalytics\Plugin;
6363

64-
(new Plugin)->register();
64+
(new Plugin)->boot();

src/Actions/AddInactiveComment.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace SimpleAnalytics\Actions;
4+
5+
class AddInactiveComment extends Action
6+
{
7+
protected string $hook = 'wp_footer';
8+
9+
#[\Override]
10+
public function handle(): void
11+
{
12+
echo "<!-- Simple Analytics: Not logging requests from admins -->\n";
13+
}
14+
}

src/Actions/AddNoScriptTag.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace SimpleAnalytics\Actions;
4+
5+
use SimpleAnalytics\Setting;
6+
use SimpleAnalytics\SettingName;
7+
8+
class AddNoScriptTag extends Action
9+
{
10+
protected string $hook = 'wp_footer';
11+
12+
#[\Override]
13+
public function handle(): void
14+
{
15+
echo sprintf("<noscript><img src=\"%s\" alt=\"\" referrerpolicy=\"no-referrer-when-downgrade\"></noscript>\n", $this->getCustomDomain());
16+
}
17+
18+
public function getCustomDomain(): string
19+
{
20+
return esc_url('https://' . Setting::get(SettingName::CUSTOM_DOMAIN, 'queue.simpleanalyticscdn.com') . '/noscript.gif');
21+
}
22+
}

src/Actions/AnalyticsCode.php

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/Actions/FooterContents.php

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/Plugin.php

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,55 @@
22

33
namespace SimpleAnalytics;
44

5-
use SimpleAnalytics\Actions\AnalyticsCode;
65
use SimpleAnalytics\Settings\{Page, Tab};
6+
use SimpleAnalytics\Actions\AddInactiveComment;
7+
use SimpleAnalytics\Actions\AddNoScriptTag;
8+
use SimpleAnalytics\Scripts\AnalyticsScript;
9+
use SimpleAnalytics\Scripts\AutomatedEventsScript;
10+
use SimpleAnalytics\Scripts\InactiveScript;
711

812
class Plugin
913
{
10-
public function register(): void
14+
public function boot(): void
1115
{
12-
AnalyticsCode::register();
16+
add_action('init', $this->onInit(...));
17+
is_admin() && $this->defineAdminPage();
18+
}
19+
20+
public function onInit(): void
21+
{
22+
$shouldCollect = (new TrackingPolicy)->shouldCollectAnalytics();
23+
24+
$this->addScripts($shouldCollect);
1325

14-
$this->defineAdminPage();
26+
if (! $shouldCollect) {
27+
AddInactiveComment::register();
28+
}
29+
30+
if ($shouldCollect && Setting::boolean(SettingName::NOSCRIPT)) {
31+
AddNoScriptTag::register();
32+
}
1533
}
1634

17-
protected function defineAdminPage(): void
35+
protected function addScripts(bool $collect): void
1836
{
19-
if (! is_admin()) return;
37+
$scripts = new ScriptManager;
38+
39+
if ($collect) {
40+
$scripts->add(new AnalyticsScript);
41+
} else {
42+
$scripts->add(new InactiveScript);
43+
}
2044

45+
if (Setting::boolean(SettingName::AUTOMATED_EVENTS)) {
46+
$scripts->add(new AutomatedEventsScript);
47+
}
48+
49+
$scripts->register();
50+
}
51+
52+
protected function defineAdminPage(): void
53+
{
2154
Page::title('Simple Analytics')
2255
->slug('simpleanalytics')
2356
->tab('General', function (Tab $tab) {
@@ -62,6 +95,10 @@ protected function defineAdminPage(): void
6295
->description('In case you don’t want to auto collect page views, but via `sa_pageview` function in JavaScript.')
6396
->docs('https://docs.simpleanalytics.com/trigger-custom-page-views#use-custom-collection-anyway');
6497

98+
$tab->checkbox(SettingName::NOSCRIPT, 'Support no JavaScript mode')
99+
->description('Collect analytics from visitors with disabled or no JavaScript.')
100+
->default(false);
101+
65102
$tab->input(SettingName::ONLOAD_CALLBACK, 'Onload Callback')
66103
->description('JavaScript function to call when the script is loaded.')
67104
->placeholder('Example: sa_event("My event")')

src/SettingName.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
class SettingName
1111
{
1212
const string CUSTOM_DOMAIN = 'simpleanalytics_custom_domain';
13+
const string NOSCRIPT = 'simpleanalytics_noscript';
1314
const string EXCLUDED_IP_ADDRESSES = 'simpleanalytics_excluded_ip_addresses';
1415
const string EXCLUDED_ROLES = 'simpleanalytics_exclude_user_roles';
1516
const string HASH_MODE = 'simpleanalytics_hash_mode';

0 commit comments

Comments
 (0)