PluginProbe
Simple Analytics / 1.110
Simple Analytics v1.110
1.110 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 All 99 releases
simpleanalytics / simple-analytics.php

simple-analytics.php in Simple Analytics 1.110, at simple-analytics.php

173 lines 8.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 * Plugin Name: Simple Analytics Official
4 * Version: 1.110
5 * Plugin URI: https://docs.simpleanalytics.com/install-simple-analytics-on-wordpress
6 * Description: Embed Simple Analytics script in your WordPress website
7 * Author: Simple Analytics
8 * Author URI: https://simpleanalytics.com/
9 * Requires at least: 7.0.3
10 * Requires PHP: 7.4.0
11 * Tested up to: 7.1
12 *
13 * Text Domain: simple-analytics
14 * Domain Path: /lang/
15 *
16 * @package WordPress
17 * @author Simple Analytics
18 * @since 1.0.0
19 */
20
21 defined('\\ABSPATH') || exit;
22
23 define('SimpleAnalytics\\PLUGIN_URL', plugin_dir_url(__FILE__));
24 define('SimpleAnalytics\\PLUGIN_PATH', plugin_dir_path(__FILE__));
25 define('SimpleAnalytics\\PLUGIN_BASENAME', plugin_basename(__FILE__));
26 define('SimpleAnalytics\\ENTRYPOINT_FILE', __FILE__);
27
28 /**
29 * @note Manual loading rather than Composer to avoid potential conflict with plugins/themes that ship older autoloader.
30 */
31 require __DIR__ . '/src/Support/SvgIcon.php';
32 require __DIR__ . '/helpers.php';
33 require __DIR__ . '/src/Plugin.php';
34 require __DIR__ . '/src/WordPressHooks.php';
35 require __DIR__ . '/src/WordPressSettings.php';
36 require __DIR__ . '/src/Setting.php';
37 require __DIR__ . '/src/SettingName.php';
38 require __DIR__ . '/src/TrackingRules.php';
39 require __DIR__ . '/src/ScriptRegistry.php';
40 require __DIR__ . '/src/Scripts/Contracts/Script.php';
41 require __DIR__ . '/src/Scripts/Contracts/HideScriptId.php';
42 require __DIR__ . '/src/Scripts/Contracts/HasAttributes.php';
43 require __DIR__ . '/src/Scripts/AnalyticsScript.php';
44 require __DIR__ . '/src/Scripts/AutomatedEventsScript.php';
45 require __DIR__ . '/src/Scripts/InactiveScript.php';
46 require __DIR__ . '/src/Actions/Action.php';
47 require __DIR__ . '/src/Actions/AddInactiveComment.php';
48 require __DIR__ . '/src/Actions/AddNoScriptTag.php';
49 require __DIR__ . '/src/Actions/AddPluginSettingsLink.php';
50 require __DIR__ . '/src/Support/Str.php';
51 require __DIR__ . '/src/Support/OnloadCallback.php';
52 require __DIR__ . '/src/Settings/Block.php';
53 require __DIR__ . '/src/Settings/Blocks/CalloutBlock.php';
54 require __DIR__ . '/src/Settings/Concerns/HasDocs.php';
55 require __DIR__ . '/src/Settings/Concerns/HasPlaceholder.php';
56 require __DIR__ . '/src/Settings/Concerns/ManagesBlocks.php';
57 require __DIR__ . '/src/Settings/Concerns/WordPressPageIntegration.php';
58 require __DIR__ . '/src/Settings/AdminPage.php';
59 require __DIR__ . '/src/Settings/Blocks/Fields/Field.php';
60 require __DIR__ . '/src/Settings/Blocks/Fields/Input.php';
61 require __DIR__ . '/src/Settings/Blocks/Fields/Checkboxes.php';
62 require __DIR__ . '/src/Settings/Blocks/Fields/Checkbox.php';
63 require __DIR__ . '/src/Settings/Blocks/Fields/IpList.php';
64 require __DIR__ . '/src/Settings/Tab.php';
65 require __DIR__ . '/src/UI/LabelComponent.php';
66 require __DIR__ . '/src/UI/TabListComponent.php';
67 require __DIR__ . '/src/UI/PageLayoutComponent.php';
68
69 use SimpleAnalytics\SettingName;
70 use SimpleAnalytics\Settings\Tab;
71 use function SimpleAnalytics\get_icon;
72
73 $settings = new SimpleAnalytics\WordPressSettings();
74 $hooks = new SimpleAnalytics\WordPressHooks();
75 $rules = new SimpleAnalytics\TrackingRules($settings);
76 $scripts = new SimpleAnalytics\ScriptRegistry(/*TODO TAKE $hooks WordPressHooks as arg/dependency*/);
77
78 $adminPage = SimpleAnalytics\Settings\AdminPage::title('Simple Analytics')
79 ->slug('simpleanalytics')
80 ->tab('General', function (Tab $tab) {
81 })
82 ->tab('Ignore Rules', function (Tab $tab) {
83 $tab->icon(get_icon('eye-slash'));
84
85 $tab->input(SettingName::IGNORE_PAGES, 'Ignore Pages')
86 ->description('Comma separated list of pages to ignore. E.g. /contact, /about')
87 ->placeholder('Example: /page1, /page2, /category/*')
88 ->docs('https://docs.simpleanalytics.com/ignore-pages');
89
90 $tab->callout('IP and role exclusion only works when there is no page caching.');
91
92 $tab->multiCheckbox(SettingName::EXCLUDED_ROLES, 'Specific User Roles to Exclude')
93 ->description('When none selected, all authenticated users will be excluded from tracking.')
94 ->options(function () {
95 return wp_roles()->get_names();
96 });
97
98 $tab->ipList(SettingName::EXCLUDED_IP_ADDRESSES, 'Exclude IP Addresses')
99 ->placeholder("127.0.0.1\n192.168.0.1")
100 ->description('IP addresses to exclude from tracking.');
101 })
102 ->tab('Advanced', function (Tab $tab) {
103 $tab->icon(get_icon('cog'));
104
105 $tab->input(SettingName::CUSTOM_DOMAIN, 'Custom Domain')
106 ->placeholder('Enter your custom domain or leave it empty.')
107 ->description('E.g. api.example.com. Leave empty to use the default domain (most users).')
108 ->docs('https://docs.simpleanalytics.com/bypass-ad-blockers');
109
110 $tab->checkbox(SettingName::COLLECT_DNT, 'Collect Do Not Track')
111 ->description('If you want to collect visitors with Do Not Track enabled, turn this on.')
112 ->docs('https://docs.simpleanalytics.com/dnt');
113
114 $tab->checkbox(SettingName::HASH_MODE, 'Hash mode')
115 ->description('If your website uses hash (#) navigation, turn this on. On most WordPress websites this is not relevant.')
116 ->docs('https://docs.simpleanalytics.com/hash-mode');
117
118 $tab->checkbox(SettingName::MANUAL_COLLECT, 'Manually collect page views')
119 ->description('In case you don’t want to auto collect page views, but via `sa_pageview` function in JavaScript.')
120 ->docs('https://docs.simpleanalytics.com/trigger-custom-page-views#use-custom-collection-anyway');
121
122 $tab->checkbox(SettingName::NOSCRIPT, 'Support no JavaScript mode')
123 ->description('Collect analytics from visitors with disabled or no JavaScript.');
124
125 $tab->input(SettingName::ONLOAD_CALLBACK, 'Onload Callback')
126 ->description('JavaScript to run when the script loads. Requires permission to save unfiltered HTML. After upgrading, save an existing callback again to enable it.')
127 ->placeholder('Example: sa_event("My event")')
128 ->docs('https://docs.simpleanalytics.com/trigger-custom-page-views#use-custom-collection-anyway');
129
130 $tab->input(SettingName::HOSTNAME, 'Overwrite domain name')
131 ->description('Override the domain that is sent to Simple Analytics. Useful for multi-domain setups.')
132 ->placeholder('Example: example.com')
133 ->docs('https://docs.simpleanalytics.com/overwrite-domain-name');
134
135 $tab->input(SettingName::SA_GLOBAL, 'Global variable name')
136 ->description('Change the global variable name of Simple Analytics. Default is `sa_event`.')
137 ->placeholder('Example: ba_event')
138 ->docs('https://docs.simpleanalytics.com/events#the-variable-sa_event-is-already-used');
139 })
140 ->tab('Events', function (Tab $tab) {
141 $tab->title('Automated events')
142 ->icon(get_icon('events'))
143 ->description("It will track outbound links, email addresses clicks,
144 and amount of downloads for common files (pdf, csv, docx, xIsx).
145 Events will appear on your events page on simpleanalytics.com");
146
147 $tab->checkbox(SettingName::AUTOMATED_EVENTS, 'Collect automated events');
148
149 $tab->input(SettingName::EVENT_COLLECT_DOWNLOADS, 'Auto collect downloads')
150 ->placeholder('Example: outbound,emails,downloads')
151 ->docs('https://docs.simpleanalytics.com/automated-events');
152
153 $tab->input(SettingName::EVENT_EXTENSIONS, 'Download file extensions')
154 ->description('Comma separated list of file extensions to track as downloads. E.g. pdf, zip')
155 ->placeholder('Example: pdf, zip')
156 ->docs('https://docs.simpleanalytics.com/automated-events');
157
158 $tab->checkbox(SettingName::EVENT_USE_TITLE, 'Use titles of page')
159 ->description('Use the title of the page as the event name. Default is the URL.')
160 ->docs('https://docs.simpleanalytics.com/automated-events');
161
162 $tab->checkbox(SettingName::EVENT_FULL_URLS, 'Use full URLs')
163 ->description('Use full URLs instead of the path. Default is the path.')
164 ->docs('https://docs.simpleanalytics.com/automated-events');
165
166 $tab->input(SettingName::EVENT_SA_GLOBAL, 'Override global')
167 ->description('Override the global variable name of Simple Analytics. Default is `sa_event`.')
168 ->placeholder('Example: ba_event')
169 ->docs('https://docs.simpleanalytics.com/events#the-variable-sa_event-is-already-used');
170 });
171
172 (new SimpleAnalytics\Plugin($hooks, $settings, $rules, $scripts, $adminPage))->boot();
173