PluginProbe
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment / 2.1.39
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment v2.1.39
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/Frontend.php +34 -104 1.0.62.1.39 View file →
@@ -1,12 +1,12 @@
1 1 <?php
2 2 /**
3 3 * @package FireBox
4 - * @version 1.0.6 Free
4 + * @version 2.1.39 Free
5 5 *
6 6 * @author FirePlugins <info@fireplugins.com>
7 7 * @link https://www.fireplugins.com
8 - * @copyright Copyright © 2021 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;
@@ -15,10 +15,8 @@
15 15 {
16 16 exit; // Exit if accessed directly.
17 17 }
18 18
19 -use FPFramework\Libs\Registry;
20 -
21 19 class Frontend
22 20 {
23 21 public function __construct()
24 22 {
@@ -27,40 +25,25 @@
27 25 {
28 26 return;
29 27 }
30 28
31 - $this->init_dependencies();
29 + // Prepare Gutenberg Blocks that contain attributes by FireBox
30 + new \FireBox\Core\FB\BoxBlocksParser();
32 31
33 - $this->render();
34 - }
35 -
36 - /**
37 - * Initializes the dependencies
38 - *
39 - * @return void
40 - */
41 - private function init_dependencies()
42 - {
43 32 /**
44 33 * Event that runs before any rendering of popups.
45 34 */
46 35 do_action('firebox/boxes/before_render');
47 36
48 - $actions = [];
49 -
50 -
37 + // Run Actions
38 + \FireBox\Core\Helpers\Actions::run();
51 39
52 - // Initialize Sounds
53 - $actions[] = new \FireBox\Core\FB\Actions\Sounds();
54 -
55 - // Make actions filterable
56 - $actions = apply_filters('firebox/actions/box/edit', $actions);
57 -
58 - // Run actions
59 - new \FireBox\Core\FB\Actions\ActionsBase($actions);
40 + add_action('template_redirect', [$this, 'render']);
60 41
61 - // Prepare Gutenberg Blocks that contain attributes by FireBox
62 - new \FireBox\Core\FB\BoxBlocksParser();
42 + /**
43 + * Event that runs after popups have been rendered.
44 + */
45 + do_action('firebox/boxes/after_render');
63 46 }
64 47
65 48 /**
66 49 * Renders all boxes on front-end
@@ -66,9 +49,9 @@
66 49 * Renders all boxes on front-end
67 50 *
68 51 * @return void
69 52 */
70 - private function render()
53 + public function render()
71 54 {
72 55 if ($this->checkForBoxPreview())
73 56 {
74 57 return;
@@ -73,9 +56,10 @@
73 56 {
74 57 return;
75 58 }
76 59
77 - if ($this->checkForBoxTemplatePreview())
60 + // Don't render the popup if previewing with third party page builders
61 + if (!$this->canRenderInEditors())
78 62 {
79 63 return;
80 64 }
81 65
@@ -80,98 +64,44 @@
80 64 }
81 65
82 66 // increment session counter
83 67 \FPFramework\Libs\Functions::incrementSession();
84 -
68 +
85 69 /**
86 70 * Adds all boxes at the end of page.
87 71 */
88 - add_action('wp', function() {
89 - firebox()->boxes->render();
90 - });
91 -
92 - /**
93 - * Event that runs after popups have been rendered.
94 - */
95 - do_action('firebox/boxes/after_render');
72 + firebox()->boxes->render();
96 73 }
97 74
98 75 /**
99 - * Check if we are previewing a box and do not show other boxes.
76 + * Don't render when previewing with third party page builders.
100 77 *
101 78 * @return boolean
102 79 */
103 - private function checkForBoxPreview()
80 + private function canRenderInEditors()
104 81 {
105 - $previewer = new Previewer();
106 - return $previewer->init();
107 - }
108 -
109 - /**
110 - * Check if we are previewing a box template and do not show other boxes.
111 - *
112 - * @return boolean
113 - */
114 - private function checkForBoxTemplatePreview()
115 - {
116 - // Preview a box template
117 - if (!isset($_GET['firebox_preview_template']))
82 + // Don't render the popup if previewing with Elementor
83 + if (class_exists('\Elementor\Plugin') && \Elementor\Plugin::$instance->preview->is_preview_mode())
118 84 {
119 - return false;
85 + return;
120 86 }
121 87
122 - $preview_box = sanitize_text_field($_GET['firebox_preview_template']);
123 - $this->render_template(base64_decode($preview_box));
124 - return true;
125 - }
126 -
127 - /**
128 - * Render template content
129 - *
130 - * @param string $template_alias
131 - *
132 - * @return void
133 - */
134 - private function render_template($template_alias)
135 - {
136 - $templates = firebox()->library;
137 -
138 - if (!$box = $templates->find($template_alias))
88 + // Don't render the popup if previewing with Beaver Builder
89 + if (class_exists('\FLBuilderModel') && method_exists('\FLBuilderModel', 'is_builder_active') && \FLBuilderModel::is_builder_active())
139 90 {
140 91 return;
141 92 }
142 -
143 - $box->params = new Registry($box->params);
144 93
145 - // Remove Publishing Assignments
146 - foreach ($box->params as $key => $value)
147 - {
148 - if (strpos($key, 'assign') !== false)
149 - {
150 - $box->params->remove($key);
151 - }
152 - }
153 - $box->params->remove('assignments');
94 + return true;
95 + }
154 96
155 - // Set id to 999999 for making front-end script happy
156 - $box->ID = 999999;
157 -
158 - // Enable Test Mode to prevent cookies
159 - $box->params->set('testmode', true);
160 -
161 - /**
162 - * Some popups may require a trigger method override for the Template preview.
163 - *
164 - * i.e. AdBlock popups should not require an AdBlocker for the Template preview
165 - * to display the popup.
166 - */
167 - if (isset($box->custom_fields->override_trigger_method) && $box->custom_fields->override_trigger_method !== 'inherit')
168 - {
169 - $box->params->set('triggermethod', $box->custom_fields->override_trigger_method);
170 - }
171 -
172 - // Disable Statistics to prevent impressions from being tracked into the database
173 - $box->stats = 0;
174 -
175 - return firebox()->box->render($box);
97 + /**
98 + * Check if we are previewing a box and do not show other boxes.
99 + *
100 + * @return boolean
101 + */
102 + private function checkForBoxPreview()
103 + {
104 + $previewer = new Previewer();
105 + return $previewer->init();
176 106 }
177 107 }