PluginProbe
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment / 3.1.8
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment v3.1.8
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 / Admin / PluginUninstall.php

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

117 lines 2.8 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.1.8 Free
5 *
6 * @author FirePlugins <info@fireplugins.com>
7 * @link https://www.fireplugins.com
8 * @copyright Copyright © 2026 FirePlugins All Rights Reserved
9 * @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
10 */
11
12 namespace FireBox\Core\Admin;
13
14 if (!defined('ABSPATH'))
15 {
16 exit; // Exit if accessed directly.
17 }
18
19 require_once FBOX_PLUGIN_DIR . 'Inc/Framework/Inc/Admin/Includes/Uninstall.php';
20
21 class PluginUninstall extends \Uninstall
22 {
23 /**
24 * Runs once we uninstall the plugin.
25 *
26 * @return void
27 */
28 public function start()
29 {
30 if (!$settings = get_option('firebox_settings'))
31 {
32 return;
33 }
34
35 // Disable usage tracking
36 $tracking = new \FireBox\Core\UsageTracking\SendUsage();
37 $tracking->stop();
38
39 if (isset($settings['keep_data_on_uninstall']) && $settings['keep_data_on_uninstall'] == '1')
40 {
41 return;
42 }
43
44 require_once FBOX_PLUGIN_DIR . 'Inc/Framework/Inc/Helpers/Directory.php';
45 require_once FBOX_PLUGIN_DIR . 'Inc/Framework/Inc/Helpers/WPHelper.php';
46
47 // remove all db tables
48 $this->pluginUninstall();
49
50 $this->removeCapabilities();
51
52 // de-register post type
53 unregister_post_type('firebox');
54
55 // remove all custom post types data
56 $items = get_posts(['post_type' => 'firebox', 'post_status' => 'any', 'numberposts' => -1, 'fields' => 'ids']);
57
58 if ($items)
59 {
60 foreach ($items as $item)
61 {
62 wp_delete_post($item, true);
63 }
64 }
65
66 // remove all options
67 delete_option('firebox_version');
68 delete_option('firebox_settings');
69 delete_option('firebox_import');
70 delete_option('firebox_license_status');
71 delete_option('firebox_license_key');
72
73
74 // Remove onboarding data
75 $this->removeOnboardingData();
76
77 // Remove first campaign timing data
78 delete_option('firebox_first_campaign_tracking_started_at');
79 delete_option('firebox_time_to_first_campaign_draft_seconds');
80 delete_option('firebox_time_to_first_campaign_publish_seconds');
81
82 // Delete /wp-content/uploads/firebox directory
83 \FPFramework\Helpers\Directory::delete(\FPFramework\Helpers\WPHelper::getPluginUploadsDirectory('firebox'));
84 }
85
86 private function removeCapabilities()
87 {
88 $capabilities = \FireBox\Core\Admin\Capabilities::getCapabilities();
89
90 // Remove capabilities from all roles
91 foreach ($capabilities as $cap)
92 {
93 foreach (wp_roles()->roles as $role_name => $role_info)
94 {
95 $role = get_role($role_name);
96
97 if ($role && $role->has_cap($cap))
98 {
99 $role->remove_cap($cap);
100 }
101 }
102 }
103 }
104
105 /**
106 * Remove all onboarding-related options
107 *
108 * @return void
109 */
110 private function removeOnboardingData()
111 {
112 // Remove site-wide onboarding options
113 delete_option('firebox_onboarding_completed');
114 delete_option('firebox_activation_redirect');
115 }
116 }
117