PluginProbe
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment / 2.0.12
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment v2.0.12
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 +26 -112 trunk2.0.12 View file →
@@ -1,12 +1,12 @@
1 1 <?php
2 2 /**
3 3 * @package FireBox
4 - * @version 3.1.13 Free
4 + * @version 2.0.12 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 © 2023 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,8 +15,10 @@
15 15 {
16 16 exit; // Exit if accessed directly.
17 17 }
18 18
19 +use FPFramework\Libs\Registry;
20 +
19 21 class Frontend
20 22 {
21 23 public function __construct()
22 24 {
@@ -25,60 +27,21 @@
25 27 {
26 28 return;
27 29 }
28 30
29 - // Keep FireBox assets out of WP Rocket's JS delay/defer/minify and CSS optimizations
30 - new \FireBox\Core\Libs\WPRocket();
31 -
32 - wp_register_script(
33 - 'firebox-main',
34 - FBOX_MEDIA_PUBLIC_URL . 'js/firebox.js',
35 - [],
36 - FBOX_VERSION,
37 - ['in_footer' => true, 'strategy' => 'defer']
38 - );
39 -
40 - // The session stamper on its own, for pages where no campaign renders but a
41 - // campaign elsewhere depends on the session cookies staying accurate.
42 - wp_register_script(
43 - 'firebox-session-stamp',
44 - FBOX_MEDIA_PUBLIC_URL . 'js/session-stamp.js',
45 - [],
46 - FBOX_VERSION,
47 - ['in_footer' => true, 'strategy' => 'defer']
48 - );
49 -
50 - /**
51 - * The session stamper writes the cookies PHP reads back
52 - * (FPFramework\Base\Factory\Session), so it has to name and scope them
53 - * the same way. Attached to both handles because either one can carry
54 - * the stamper: it is bundled into the runtime and also ships alone.
55 - */
56 - $scope = wp_json_encode([
57 - 'name_prefix' => \FPFramework\Helpers\CookieScope::name(''),
58 - 'path' => \FPFramework\Helpers\CookieScope::path(),
59 - 'domain' => \FPFramework\Helpers\CookieScope::domain()
60 - ]);
61 -
62 - foreach (['firebox-main', 'firebox-session-stamp'] as $handle)
63 - {
64 - wp_add_inline_script($handle, 'window.fpfCookieScope = ' . $scope . ';', 'before');
65 - }
66 -
67 31 // Prepare Gutenberg Blocks that contain attributes by FireBox
68 32 new \FireBox\Core\FB\BoxBlocksParser();
69 33
34 + $this->prepare();
35 +
70 36 /**
71 37 * Event that runs before any rendering of popups.
72 38 */
73 39 do_action('firebox/boxes/before_render');
74 40
75 - // Run Actions
76 - \FireBox\Core\Helpers\Actions::run();
77 -
78 41 add_action('template_redirect', [$this, 'render']);
79 42
80 - add_action('wp_enqueue_scripts', [$this, 'enqueueEmbedStylesEarly']);
43 + \FireBox\Core\Helpers\Actions::run();
81 44
82 45 /**
83 46 * Event that runs after popups have been rendered.
84 47 */
@@ -84,43 +47,29 @@
84 47 */
85 48 do_action('firebox/boxes/after_render');
86 49 }
87 50
88 - /**
89 - * Enqueues the embed-mode campaign CSS early (wp_enqueue_scripts, before wp_head closes)
90 - * when the currently queried post/page contains an Embed Campaign block. This avoids a
91 - * flash of unstyled content, since renderEmbed() otherwise only enqueues this CSS later,
92 - * during content rendering.
93 - *
94 - * @return void
95 - */
96 - public function enqueueEmbedStylesEarly()
51 + private function prepare()
97 52 {
98 - $post = get_queried_object();
53 + add_filter('the_content', [$this, 'prepareContent'], 0);
54 + }
99 55
100 - if (!($post instanceof \WP_Post))
56 + public function prepareContent($content)
57 + {
58 + global $post;
59 +
60 + if (!$post instanceof \WP_Post)
101 61 {
102 - return;
62 + return $content;
103 63 }
104 -
105 - if (!has_block('firebox/embed', $post))
64 +
65 + // Check if the current post type is 'firebox'
66 + if ($post->post_type === 'firebox')
106 67 {
107 - return;
68 + remove_filter('the_content', 'wptexturize');
108 69 }
109 -
110 - wp_enqueue_style(
111 - 'firebox',
112 - FBOX_MEDIA_PUBLIC_URL . 'css/firebox.css',
113 - [],
114 - FBOX_VERSION
115 - );
116 -
117 - wp_enqueue_style(
118 - 'fb-block-embed-campaign',
119 - FBOX_MEDIA_PUBLIC_URL . 'css/blocks/embed-campaign.css',
120 - [],
121 - FBOX_VERSION
122 - );
70 +
71 + return $content;
123 72 }
124 73
125 74 /**
126 75 * Renders all boxes on front-end
@@ -133,14 +82,11 @@
133 82 {
134 83 return;
135 84 }
136 85
137 - // Don't render the popup if previewing with third party page builders
138 - if (!$this->canRenderInEditors())
139 - {
140 - return;
141 - }
142 -
86 + // increment session counter
87 + \FPFramework\Libs\Functions::incrementSession();
88 +
143 89 /**
144 90 * Adds all boxes at the end of page.
145 91 */
146 92 firebox()->boxes->render();
@@ -146,40 +92,8 @@
146 92 firebox()->boxes->render();
147 93 }
148 94
149 95 /**
150 - * Don't render when previewing with third party page builders.
151 - *
152 - * @return boolean
153 - */
154 - private function canRenderInEditors()
155 - {
156 - // Don't render the popup if previewing with Elementor
157 - if (class_exists('\Elementor\Plugin') &&
158 - property_exists(\Elementor\Plugin::$instance, 'preview') &&
159 - method_exists(\Elementor\Plugin::$instance->preview, 'is_preview_mode') &&
160 - \Elementor\Plugin::$instance->preview->is_preview_mode()
161 - )
162 - {
163 - return;
164 - }
165 -
166 - // Don't render the popup if previewing with Beaver Builder
167 - if (class_exists('\FLBuilderModel') && method_exists('\FLBuilderModel', 'is_builder_active') && \FLBuilderModel::is_builder_active())
168 - {
169 - return;
170 - }
171 -
172 - // Don't render the popup if previewing with Bricks Builder
173 - if (function_exists('bricks_is_builder') && bricks_is_builder())
174 - {
175 - return;
176 - }
177 -
178 - return true;
179 - }
180 -
181 - /**
182 96 * Check if we are previewing a box and do not show other boxes.
183 97 *
184 98 * @return boolean
185 99 */
@@ -187,5 +101,5 @@
187 101 {
188 102 $previewer = new Previewer();
189 103 return $previewer->init();
190 104 }
191 -}
105 +}