PluginProbe
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment / 3.0.1
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment v3.0.1
3.1.13 3.1.12 3.1.11 3.1.10 3.1.9 3.1.8 3.1.7 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 All 122 releases
firebox / Inc / Core / UsageTracking / UsageTracking.php

UsageTracking.php in FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment 3.0.1, at Inc/Core/UsageTracking/UsageTracking.php

294 lines 17.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package FireBox
4 * @version 3.0.1 Free
5 *
6 * @author FirePlugins <info@fireplugins.com>
7 * @link https://www.fireplugins.com
8 * @copyright Copyright © 2025 FirePlugins All Rights Reserved
9 * @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
10 */
11
12 namespace FireBox\Core\UsageTracking;
13
14 if (!defined('ABSPATH'))
15 {
16 exit; // Exit if accessed directly.
17 }
18
19 class UsageTracking
20 {
21 private $settings = [];
22
23 private $pluginData = [];
24
25 public function __construct()
26 {
27 $this->settings = get_option('firebox_settings', []);
28 $this->pluginData = new PluginData();
29 }
30
31 public function getData()
32 {
33 global $wpdb;
34
35 $theme_data = wp_get_theme();
36
37 $payload = [
38 // Generic Data
39 'url' => home_url(),
40 'email' => get_option('admin_email'),
41 'php_version' => PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION,
42 'wp_version' => get_bloginfo('version'),
43 'database_type' => $this->getDatabaseType(),
44 'database_version' => $wpdb->db_version(),
45 'server_version' => isset($_SERVER['SERVER_SOFTWARE']) ? sanitize_text_field(wp_unslash($_SERVER['SERVER_SOFTWARE'])) : '',
46 'is_debug' => defined('WP_DEBUG') && WP_DEBUG,
47 'is_ssl' => is_ssl(),
48 'is_multisite' => is_multisite(),
49 'is_network_activated' => $this->is_active_for_network(),
50 'is_wpcom' => defined('IS_WPCOM') && IS_WPCOM,
51 'is_wpcom_vip' => (defined('WPCOM_IS_VIP_ENV') && WPCOM_IS_VIP_ENV) || (function_exists('wpcom_is_vip') && wpcom_is_vip()),
52 'is_wp_cache' => defined('WP_CACHE') && WP_CACHE,
53 'sites_count' => $this->get_sites_total(),
54 'active_plugins' => $this->get_active_plugins(),
55 'theme_name' => $theme_data->get('Name'),
56 'theme_version' => $theme_data->get('Version'),
57 'locale' => get_locale(),
58 'timezone_offset' => wp_timezone_string(),
59 // FireBox Specific Data
60 'firebox_version' => FBOX_VERSION,
61 'firebox_license_key' => get_option('firebox_license_key', ''),
62 'firebox_license_type' => FBOX_LICENSE_TYPE,
63 'firebox_license_status' => get_option('firebox_license_status', ''),
64 'firebox_is_pro' => FBOX_LICENSE_TYPE === 'pro',
65 'firebox_views' => $this->pluginData->getViews(),
66 'firebox_dimensions' => $this->pluginData->getDimensionsData(),
67 'firebox_campaigns_published' => $this->pluginData->getCampaigns('publish'),
68 'firebox_campaigns_draft' => $this->pluginData->getCampaigns('draft'),
69 'firebox_campaigns_trash' => $this->pluginData->getCampaigns('trash'),
70 'firebox_submissions' => $this->pluginData->getSubmissions(),
71 'firebox_classic_campaigns' => $this->pluginData->getTotalsBySetting('mode', 'popup'),
72 'firebox_pageslide_campaigns' => $this->pluginData->getTotalsBySetting('mode', 'pageslide'),
73 'firebox_embed_campaigns' => $this->pluginData->getTotalsBySetting('mode', 'embed'),
74 'firebox_campaigns_pageload' => $this->pluginData->getTotalsBySetting('triggermethod', 'pageload'),
75 'firebox_campaigns_scroll_depth' => $this->pluginData->getTotalsBySetting('triggermethod', 'pageheight'),
76 'firebox_campaigns_element_visibility' => $this->pluginData->getTotalsBySetting('triggermethod', 'element'),
77 'firebox_campaigns_exit_intent' => $this->pluginData->getTotalsBySetting('triggermethod', 'userleave'),
78 'firebox_campaigns_click' => $this->pluginData->getTotalsBySetting('triggermethod', 'onclick'),
79 'firebox_campaigns_external_link_click' => $this->pluginData->getTotalsBySetting('triggermethod', 'onexternallink'),
80 'firebox_campaigns_hover' => $this->pluginData->getTotalsBySetting('triggermethod', 'elementHover'),
81 'firebox_campaigns_adblock_detect' => $this->pluginData->getTotalsBySetting('triggermethod', 'onAdBlockDetect'),
82 'firebox_campaigns_idle' => $this->pluginData->getTotalsBySetting('triggermethod', 'onIdle'),
83 'firebox_campaigns_floating_button' => $this->pluginData->getTotalsBySetting('triggermethod', 'floatingbutton'),
84 'firebox_campaigns_manual' => $this->pluginData->getTotalsBySetting('triggermethod', 'ondemand'),
85 'firebox_show_frequency_always' => $this->pluginData->getTotalsBySetting('assign_impressions_param_type', 'always'),
86 'firebox_show_frequency_session' => $this->pluginData->getTotalsBySetting('assign_impressions_param_type', 'session'),
87 'firebox_show_frequency_day' => $this->pluginData->getTotalsBySetting('assign_impressions_param_type', 'day'),
88 'firebox_show_frequency_week' => $this->pluginData->getTotalsBySetting('assign_impressions_param_type', 'week'),
89 'firebox_show_frequency_custom' => $this->pluginData->getTotalsBySetting('assign_impressions_param_type', 'custom'),
90 'firebox_cookie_never' => $this->pluginData->getTotalsBySetting('assign_cookietype', 'never'),
91 'firebox_cookie_ever' => $this->pluginData->getTotalsBySetting('assign_cookietype', 'ever'),
92 'firebox_cookie_session' => $this->pluginData->getTotalsBySetting('assign_cookietype', 'session'),
93 'firebox_cookie_custom' => $this->pluginData->getTotalsBySetting('assign_cookietype', 'custom'),
94 'firebox_auto_close' => $this->pluginData->getTotalsBySetting('box_auto_close', 'yes'),
95 'firebox_auto_focus' => $this->pluginData->getTotalsBySetting('autofocus', '1'),
96 'firebox_close_with_esc' => $this->pluginData->getTotalsBySetting('close_on_esc', '1'),
97 'firebox_display_conditions_all' => $this->pluginData->getTotalsBySetting('display_conditions_type', 'all'),
98 'firebox_display_conditions_mirror' => $this->pluginData->getTotalsBySetting('display_conditions_type', 'mirror'),
99 'firebox_display_conditions_custom' => $this->pluginData->getTotalsBySetting('display_conditions_type', 'custom'),
100 'firebox_campaigns_with_sound' => $this->pluginData->getTotalsBySetting('opening_sound.source', 'cond:not:none'),
101 'firebox_cond_date' => $this->pluginData->getTotalsByCondition('Date\Date'),
102 'firebox_cond_day_of_week' => $this->pluginData->getTotalsByCondition('Date\Day'),
103 'firebox_cond_month' => $this->pluginData->getTotalsByCondition('Date\Month'),
104 'firebox_cond_time' => $this->pluginData->getTotalsByCondition('Date\Time'),
105 'firebox_cond_user' => $this->pluginData->getTotalsByCondition('WP\UserID'),
106 'firebox_cond_menu' => $this->pluginData->getTotalsByCondition('WP\Menu'),
107 'firebox_cond_user_group' => $this->pluginData->getTotalsByCondition('WP\UserGroup'),
108 'firebox_cond_post' => $this->pluginData->getTotalsByCondition('WP\Posts'),
109 'firebox_cond_page' => $this->pluginData->getTotalsByCondition('WP\Pages'),
110 'firebox_cond_post_tag' => $this->pluginData->getTotalsByCondition('WP\Tags'),
111 'firebox_cond_post_category' => $this->pluginData->getTotalsByCondition('WP\Categories'),
112 'firebox_cond_cpt' => $this->pluginData->getTotalsByCondition('WP\CustomPostTypes'),
113 'firebox_cond_homepage' => $this->pluginData->getTotalsByCondition('WP\Homepage'),
114 'firebox_cond_device' => $this->pluginData->getTotalsByCondition('Device'),
115 'firebox_cond_browser' => $this->pluginData->getTotalsByCondition('Browser'),
116 'firebox_cond_os' => $this->pluginData->getTotalsByCondition('OS'),
117 'firebox_cond_city' => $this->pluginData->getTotalsByCondition('Geo\City'),
118 'firebox_cond_country' => $this->pluginData->getTotalsByCondition('Geo\Country'),
119 'firebox_cond_region' => $this->pluginData->getTotalsByCondition('Geo\Region'),
120 'firebox_cond_continent' => $this->pluginData->getTotalsByCondition('Geo\Continent'),
121 'firebox_cond_fb_view_campaign' => $this->pluginData->getTotalsByCondition('FireBox\Popup'),
122 'firebox_cond_fb_submitted_form' => $this->pluginData->getTotalsByCondition('FireBox\Form'),
123 'firebox_cond_edd_products_in_cart' => $this->pluginData->getTotalsByCondition('EDD\CartContainsProducts'),
124 'firebox_cond_edd_cart_items_count' => $this->pluginData->getTotalsByCondition('EDD\CartContainsXProducts'),
125 'firebox_cond_edd_amount_in_cart' => $this->pluginData->getTotalsByCondition('EDD\CartValue'),
126 'firebox_cond_edd_current_product' => $this->pluginData->getTotalsByCondition('EDD\Product'),
127 'firebox_cond_edd_purchased_product' => $this->pluginData->getTotalsByCondition('EDD\PurchasedProduct'),
128 'firebox_cond_edd_last_purchased_date' => $this->pluginData->getTotalsByCondition('EDD\LastPurchaseDate'),
129 'firebox_cond_edd_current_product_price' => $this->pluginData->getTotalsByCondition('EDD\CurrentProductPrice'),
130 'firebox_cond_edd_total_spend' => $this->pluginData->getTotalsByCondition('EDD\TotalSpend'),
131 'firebox_cond_edd_current_product_category' => $this->pluginData->getTotalsByCondition('EDD\Category'),
132 'firebox_cond_edd_category' => $this->pluginData->getTotalsByCondition('EDD\CategoryView'),
133 'firebox_cond_woo_products_in_cart' => $this->pluginData->getTotalsByCondition('WooCommerce\CartContainsProducts'),
134 'firebox_cond_woo_cart_items_count' => $this->pluginData->getTotalsByCondition('WooCommerce\CartContainsXProducts'),
135 'firebox_cond_woo_amount_in_cart' => $this->pluginData->getTotalsByCondition('WooCommerce\CartValue'),
136 'firebox_cond_woo_current_product' => $this->pluginData->getTotalsByCondition('WooCommerce\Product'),
137 'firebox_cond_woo_purchased_product' => $this->pluginData->getTotalsByCondition('WooCommerce\PurchasedProduct'),
138 'firebox_cond_woo_last_purchased_date' => $this->pluginData->getTotalsByCondition('WooCommerce\LastPurchaseDate'),
139 'firebox_cond_woo_current_product_price' => $this->pluginData->getTotalsByCondition('WooCommerce\CurrentProductPrice'),
140 'firebox_cond_woo_total_spend' => $this->pluginData->getTotalsByCondition('WooCommerce\TotalSpend'),
141 'firebox_cond_woo_current_product_category' => $this->pluginData->getTotalsByCondition('WooCommerce\Category'),
142 'firebox_cond_woo_category' => $this->pluginData->getTotalsByCondition('WooCommerce\CategoryView'),
143 'firebox_cond_url' => $this->pluginData->getTotalsByCondition('URL'),
144 'firebox_cond_referrer' => $this->pluginData->getTotalsByCondition('Referrer'),
145 'firebox_cond_ip' => $this->pluginData->getTotalsByCondition('IP'),
146 'firebox_cond_pageviews' => $this->pluginData->getTotalsByCondition('Pageviews'),
147 'firebox_cond_cookies' => $this->pluginData->getTotalsByCondition('Cookie'),
148 'firebox_cond_php' => $this->pluginData->getTotalsByCondition('PHP'),
149 'firebox_cond_wpml_language' => $this->pluginData->getTotalsByCondition('Language'),
150 'firebox_cond_timeonsite' => $this->pluginData->getTotalsByCondition('TimeOnSite'),
151 'firebox_cond_new_returning_visitor' => $this->pluginData->getTotalsByCondition('NewReturningVisitor'),
152 'firebox_actions' => $this->pluginData->getTotalsBySetting('actions', 'cond:not:emptyArray'),
153 'firebox_php_scripts_on_before' => $this->pluginData->getTotalsBySetting('phpscripts.beforerender', 'cond:not:empty'),
154 'firebox_php_scripts_on_after' => $this->pluginData->getTotalsBySetting('phpscripts.afterrender', 'cond:not:empty'),
155 'firebox_php_scripts_on_open' => $this->pluginData->getTotalsBySetting('phpscripts.open', 'cond:not:empty'),
156 'firebox_php_scripts_on_close' => $this->pluginData->getTotalsBySetting('phpscripts.close', 'cond:not:empty'),
157 'firebox_php_scripts_on_form_success' => $this->pluginData->getTotalsBySetting('phpscripts.formsuccess', 'cond:not:empty'),
158 'firebox_custom_css' => $this->pluginData->getTotalsBySetting('customcss', 'cond:not:empty'),
159 'firebox_custom_javascript' => $this->pluginData->getTotalsBySetting('customcode', 'cond:not:empty'),
160 'firebox_test_mode' => $this->pluginData->getTotalsBySetting('testmode', '1'),
161 'firebox_prevent_page_scrollling' => $this->pluginData->getTotalsBySetting('preventpagescroll', '1'),
162 'firebox_settings' => $this->getSettings()
163 ];
164
165 return $payload;
166 }
167
168 private function getDatabaseType()
169 {
170 global $wpdb;
171
172 if (is_object($wpdb->dbh))
173 {
174 // mysqli or PDO
175 $extension = get_class($wpdb->dbh);
176 }
177 else
178 {
179 // Unknown sql extension
180 $extension = null;
181 }
182
183 return $extension;
184 }
185
186 private function getSettings()
187 {
188 return array_diff_key(
189 $this->settings,
190 array_flip(
191 [
192 'api_key',
193 'geo_license_key',
194 'license_key',
195 'cloudflare_turnstile_site_key',
196 'cloudflare_turnstile_secret_key',
197 'recaptcha_v2_checkbox_site_key',
198 'recaptcha_v2_checkbox_secret_key',
199 'recaptcha_v2_invisible_site_key',
200 'recaptcha_v2_invisible_secret_key',
201 'recaptcha_v3_site_key',
202 'recaptcha_v3_secret_key',
203 'hcaptcha_site_key',
204 'hcaptcha_secret_key',
205 'openai_api_key',
206 'stripe_test_secret_key',
207 'stripe_test_publishable_key',
208 'stripe_live_secret_key',
209 'stripe_live_publishable_key',
210 'stripe_webhooks_secret_test',
211 'stripe_webhooks_secret_live',
212 'stripe_webhooks_id_test',
213 'stripe_webhooks_id_live',
214 ]
215 )
216 );
217 }
218
219 /**
220 * Determines whether the plugin is active for the entire network.
221 *
222 * @return bool
223 */
224 private function is_active_for_network()
225 {
226 // Stop if not multisite
227 if (!is_multisite())
228 {
229 return false;
230 }
231
232 // Get all active plugins
233 $plugins = get_site_option('active_sitewide_plugins');
234
235 // Stop if the plugin is active for the entire network
236 if (isset($plugins[plugin_basename(FBOX_PLUGIN_BASE_FILE)]))
237 {
238 return true;
239 }
240
241 return false;
242 }
243
244 /**
245 * Total number of sites.
246 *
247 * @return int
248 */
249 private function get_sites_total()
250 {
251 return function_exists('get_blog_count') ? (int) get_blog_count() : 1;
252 }
253
254 /**
255 * Get the list of active plugins.
256 *
257 * @return array
258 */
259 private function get_active_plugins()
260 {
261 if (!function_exists('get_plugins'))
262 {
263 include ABSPATH . '/wp-admin/includes/plugin.php';
264 }
265
266 $active = is_multisite() ?
267 array_merge(get_option('active_plugins', []), array_flip(get_site_option('active_sitewide_plugins', []))) :
268 get_option('active_plugins', []);
269 $plugins = array_intersect_key(get_plugins(), array_flip($active));
270
271 return array_map(
272 static function ($plugin)
273 {
274 if (isset($plugin['Version']))
275 {
276 return $plugin['Version'];
277 }
278
279 return 'Not Set';
280 },
281 $plugins
282 );
283 }
284
285 /**
286 * Return the User Agent used in the API request.
287 *
288 * @return string
289 */
290 public function get_user_agent()
291 {
292 return 'FireBox/' . FBOX_VERSION . '; ' . get_bloginfo('url');
293 }
294 }