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 -96 1.0.22.1.39 View file →
@@ -1,12 +1,12 @@
1 1 <?php
2 2 /**
3 3 * @package FireBox
4 - * @version 1.0.2 Free
4 + * @version 2.1.39 Free
5 5 *
6 6 * @author FirePlugins <[email protected]>
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,43 +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 - // load dashicons on front-end
44 - wp_enqueue_style('dashicons');
45 -
46 32 /**
47 33 * Event that runs before any rendering of popups.
48 34 */
49 35 do_action('firebox/boxes/before_render');
50 36
51 - $actions = [];
52 -
53 -
37 + // Run Actions
38 + \FireBox\Core\Helpers\Actions::run();
54 39
55 - // Initialize Sounds
56 - $actions[] = new \FireBox\Core\FB\Actions\Sounds();
57 -
58 - // Make actions filterable
59 - $actions = apply_filters('firebox/actions/box/edit', $actions);
60 -
61 - // Run actions
62 - new \FireBox\Core\FB\Actions\ActionsBase($actions);
40 + add_action('template_redirect', [$this, 'render']);
63 41
64 - // Prepare Gutenberg Blocks that contain attributes by FireBox
65 - new \FireBox\Core\FB\BoxBlocksParser();
42 + /**
43 + * Event that runs after popups have been rendered.
44 + */
45 + do_action('firebox/boxes/after_render');
66 46 }
67 47
68 48 /**
69 49 * Renders all boxes on front-end
@@ -69,9 +49,9 @@
69 49 * Renders all boxes on front-end
70 50 *
71 51 * @return void
72 52 */
73 - private function render()
53 + public function render()
74 54 {
75 55 if ($this->checkForBoxPreview())
76 56 {
77 57 return;
@@ -76,9 +56,10 @@
76 56 {
77 57 return;
78 58 }
79 59
80 - if ($this->checkForBoxTemplatePreview())
60 + // Don't render the popup if previewing with third party page builders
61 + if (!$this->canRenderInEditors())
81 62 {
82 63 return;
83 64 }
84 65
@@ -83,87 +64,44 @@
83 64 }
84 65
85 66 // increment session counter
86 67 \FPFramework\Libs\Functions::incrementSession();
87 -
68 +
88 69 /**
89 70 * Adds all boxes at the end of page.
90 71 */
91 - add_action('wp', function() {
92 - firebox()->boxes->render();
93 - });
94 -
95 - /**
96 - * Event that runs after popups have been rendered.
97 - */
98 - do_action('firebox/boxes/after_render');
72 + firebox()->boxes->render();
99 73 }
100 74
101 75 /**
102 - * Check if we are previewing a box and do not show other boxes.
76 + * Don't render when previewing with third party page builders.
103 77 *
104 78 * @return boolean
105 79 */
106 - private function checkForBoxPreview()
80 + private function canRenderInEditors()
107 81 {
108 - $previewer = new Previewer();
109 - return $previewer->init();
110 - }
111 -
112 - /**
113 - * Check if we are previewing a box template and do not show other boxes.
114 - *
115 - * @return boolean
116 - */
117 - private function checkForBoxTemplatePreview()
118 - {
119 - // Preview a box template
120 - 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())
121 84 {
122 - return false;
85 + return;
123 86 }
124 87
125 - $preview_box = sanitize_text_field($_GET['firebox_preview_template']);
126 - $this->render_template(base64_decode($preview_box));
127 - return true;
128 - }
129 -
130 - /**
131 - * Render template content
132 - *
133 - * @param string $template_alias
134 - *
135 - * @return void
136 - */
137 - private function render_template($template_alias)
138 - {
139 - $templates = firebox()->library;
140 -
141 - 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())
142 90 {
143 91 return;
144 92 }
145 -
146 - $box->params = new Registry($box->params);
147 93
148 - // Remove Publishing Assignments
149 - foreach ($box->params as $key => $value)
150 - {
151 - if (strpos($key, 'assign') !== false)
152 - {
153 - $box->params->remove($key);
154 - }
155 - }
156 - $box->params->remove('assignments');
94 + return true;
95 + }
157 96
158 - // Set id to 999999 for making front-end script happy
159 - $box->ID = 999999;
160 -
161 - // Enable Test Mode to prevent cookies
162 - $box->params->set('testmode', true);
163 -
164 - // Disable Statistics to prevent impressions from being tracked into the database
165 - $box->stats = 0;
166 -
167 - return firebox()->boxes->getBox()->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();
168 106 }
169 107 }