PluginProbe
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment / 2.1.37
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment v2.1.37
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
← All changes | Inc/Core/Controllers/BoxSettings.php +9 -104 trunk2.1.37 View file →
@@ -1,12 +1,12 @@
1 1 <?php
2 2 /**
3 3 * @package FireBox
4 - * @version 3.1.13 Free
4 + * @version 2.1.37 Free
5 5 *
6 6 * @author FirePlugins <info@fireplugins.com>
7 7 * @link https://www.fireplugins.com
8 - * @copyright Copyright © 2026 FirePlugins All Rights Reserved
8 + * @copyright Copyright © 2025 FirePlugins All Rights Reserved
9 9 * @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
10 10 */
11 11
12 12 namespace FireBox\Core\Controllers;
@@ -32,9 +32,9 @@
32 32 const settings_name = 'firebox_settings';
33 33
34 34 public function __construct()
35 35 {
36 - add_action('update_option_firebox_settings', [$this, 'after_update_settings'], 10, 2);
36 + add_action('update_option_firebox_settings', [$this, 'after_update_settings'], 10, 3);
37 37 }
38 38
39 39 /**
40 40 * Render the page content
@@ -82,53 +82,8 @@
82 82 FPF_VERSION,
83 83 false
84 84 );
85 85 wp_enqueue_script('fpf-geoip');
86 -
87 - wp_register_script(
88 - 'firebox-settings-integrations',
89 - FBOX_MEDIA_ADMIN_URL . 'js/integrations_settings.js',
90 - [],
91 - FBOX_VERSION,
92 - true
93 - );
94 - wp_enqueue_script('firebox-settings-integrations');
95 -
96 - wp_register_style(
97 - 'firebox-settings-integrations',
98 - FBOX_MEDIA_ADMIN_URL . 'css/integrations_settings.css',
99 - [],
100 - FBOX_VERSION
101 - );
102 - wp_enqueue_style('firebox-settings-integrations');
103 -
104 - $integrations = [];
105 - foreach (\FireBox\Core\Helpers\Integrations::getSettingsManagedIntegrations() as $integration)
106 - {
107 - $integrations[$integration['slug']] = [
108 - 'label' => $integration['label'],
109 - 'connected' => !empty($integration['connected']),
110 - 'locked' => !empty($integration['locked']),
111 - 'connection_type' => isset($integration['connection_type']) ? $integration['connection_type'] : 'api_key',
112 - 'docs_url' => isset($integration['docs_url']) ? $integration['docs_url'] : ''
113 - ];
114 - }
115 -
116 - $data = [
117 - 'ajax_url' => admin_url('admin-ajax.php'),
118 - 'settings_url' => admin_url('admin.php?page=firebox-settings#integrations'),
119 - 'nonce' => wp_create_nonce('fpf_js_nonce'),
120 - 'i18n' => [
121 - 'connected' => firebox()->_('FB_INTEGRATION_CONNECTED'),
122 - 'disconnected' => firebox()->_('FB_INTEGRATION_DISCONNECTED'),
123 - 'could_not_connect' => firebox()->_('FB_INTEGRATION_ERROR_CONNECT'),
124 - 'could_not_disconnect' => firebox()->_('FB_INTEGRATION_ERROR_DISCONNECT'),
125 - 'please_enter_api_key' => fpframework()->_('FPF_PLEASE_ENTER_AN_API_KEY')
126 - ],
127 - 'integrations' => $integrations
128 - ];
129 -
130 - wp_localize_script('firebox-settings-integrations', 'firebox_integrations_settings', $data);
131 86 }
132 87
133 88 /**
134 89 * Callback used to handle the processing of settings.
@@ -139,21 +94,12 @@
139 94 * @return void
140 95 */
141 96 public function processBoxSettings($input)
142 97 {
143 - if ($this->isAllowedProgrammaticSettingsUpdate())
144 - {
145 - return is_array($input) ? $input : [];
146 - }
147 -
148 - $input = is_array($input) ? $input : [];
149 - $is_settings_form_submit = isset($_POST['option_page']) && sanitize_text_field(wp_unslash($_POST['option_page'])) === self::settings_name;
150 -
151 - // Allow programmatic updates (e.g. AJAX integration connect/disconnect) without settings form nonce.
152 - if (!$is_settings_form_submit)
153 - {
154 - return $input;
155 - }
98 + if (isset($_REQUEST['action']) && in_array($_REQUEST['action'], ['firebox_download_key_notice_activate', 'firebox_enable_usage_tracking']))
99 + {
100 + return $input;
101 + }
156 102
157 103 // run a quick security check
158 104 if (!check_admin_referer('fpf_form_nonce_firebox_settings', 'fpf_form_nonce_firebox_settings'))
159 105 {
@@ -168,22 +114,8 @@
168 114 }
169 115
170 116
171 117
172 - // Preserve integration keys managed through AJAX connect/disconnect.
173 - $stored_settings = get_option('firebox_settings', []);
174 - $stored_settings = is_array($stored_settings) ? $stored_settings : [];
175 - foreach (\FireBox\Core\Helpers\Integrations::getSettingsKeys() as $key)
176 - {
177 - // Only a stored credential is worth carrying over. The keys are
178 - // seeded empty at install, and copying those in would add a blank
179 - // entry for every integration the site never connected.
180 - if (!array_key_exists($key, $input) && !empty($stored_settings[$key]))
181 - {
182 - $input[$key] = $stored_settings[$key];
183 - }
184 - }
185 -
186 118 // Filters the fields value
187 119 \FPFramework\Helpers\FormHelper::filterFields($input, \FireBox\Core\Admin\Forms\Settings::getSettings());
188 120
189 121 \FPFramework\Libs\AdminNotice::displaySuccess(fpframework()->_('FPF_SETTINGS_SAVED'));
@@ -190,33 +122,8 @@
190 122
191 123 return $input;
192 124 }
193 125
194 - /**
195 - * Allow a small set of internal settings updates to bypass the settings-form nonce.
196 - *
197 - * @return bool
198 - */
199 - private function isAllowedProgrammaticSettingsUpdate()
200 - {
201 - if (!wp_doing_ajax())
202 - {
203 - return false;
204 - }
205 -
206 - $action = isset($_REQUEST['action']) ? sanitize_key(wp_unslash($_REQUEST['action'])) : '';
207 -
208 - if ($action === '')
209 - {
210 - return false;
211 - }
212 -
213 - return in_array($action, [
214 - 'firebox_download_key_notice_activate',
215 - 'firebox_enable_usage_tracking',
216 - ], true);
217 - }
218 -
219 126
220 127
221 128 /**
222 129 * What the settings page will contain
@@ -225,10 +132,9 @@
225 132 */
226 133 public function settingsPageContent()
227 134 {
228 135 $fieldsParser = new FieldsParser([
229 - 'fields_name_prefix' => 'firebox_settings',
230 - 'fields_path' => ['\\FireBox\\Core\\Fields\\']
136 + 'fields_name_prefix' => 'firebox_settings'
231 137 ]);
232 138
233 139 $settings = \FireBox\Core\Admin\Forms\Settings::getSettings();
234 140 foreach ($settings['data'] as $key => $value)
@@ -251,6 +157,5 @@
251 157 ]);
252 158
253 159 echo $form->render(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
254 160 }
255 -
256 -}
161 +}