PluginProbe
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment / 1.0.7
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment v1.0.7
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 / Frontend.php

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

177 lines 3.6 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 1.0.7 Free
5 *
6 * @author FirePlugins <info@fireplugins.com>
7 * @link https://www.fireplugins.com
8 * @copyright Copyright © 2021 FirePlugins All Rights Reserved
9 * @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
10 */
11
12 namespace FireBox\Core;
13
14 if (!defined('ABSPATH'))
15 {
16 exit; // Exit if accessed directly.
17 }
18
19 use FPFramework\Libs\Registry;
20
21 class Frontend
22 {
23 public function __construct()
24 {
25 // ensure we run only on front-end
26 if (is_admin())
27 {
28 return;
29 }
30
31 $this->init_dependencies();
32
33 $this->render();
34 }
35
36 /**
37 * Initializes the dependencies
38 *
39 * @return void
40 */
41 private function init_dependencies()
42 {
43 /**
44 * Event that runs before any rendering of popups.
45 */
46 do_action('firebox/boxes/before_render');
47
48 $actions = [];
49
50
51
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);
60
61 // Prepare Gutenberg Blocks that contain attributes by FireBox
62 new \FireBox\Core\FB\BoxBlocksParser();
63 }
64
65 /**
66 * Renders all boxes on front-end
67 *
68 * @return void
69 */
70 private function render()
71 {
72 if ($this->checkForBoxPreview())
73 {
74 return;
75 }
76
77 if ($this->checkForBoxTemplatePreview())
78 {
79 return;
80 }
81
82 // increment session counter
83 \FPFramework\Libs\Functions::incrementSession();
84
85 /**
86 * Adds all boxes at the end of page.
87 */
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');
96 }
97
98 /**
99 * Check if we are previewing a box and do not show other boxes.
100 *
101 * @return boolean
102 */
103 private function checkForBoxPreview()
104 {
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']))
118 {
119 return false;
120 }
121
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))
139 {
140 return;
141 }
142
143 $box->params = new Registry($box->params);
144
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');
154
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);
176 }
177 }