PluginProbe
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment / 2.1.14
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment v2.1.14
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/Blocks.php +76 -33 trunk2.1.14 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.14 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 © 2024 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;
@@ -19,12 +19,25 @@
19 19 class Blocks
20 20 {
21 21 public function __construct()
22 22 {
23 + if (!function_exists('register_block_type'))
24 + {
25 + return;
26 + }
27 +
23 28 add_action('enqueue_block_assets', [$this, 'blocks_assets']);
24 29
25 30 // Register categories
26 - add_filter('block_categories_all', [$this, 'register_categories'], 10, 2);
31 + global $wp_version;
32 + if (version_compare($wp_version, '5.8', '>='))
33 + {
34 + add_action('block_categories_all', [$this, 'register_categories'], 10, 2);
35 + }
36 + else
37 + {
38 + add_action('block_categories', [$this, 'register_categories'], 10, 2);
39 + }
27 40
28 41 $this->register_blocks();
29 42 }
30 43
@@ -38,17 +51,20 @@
38 51 * @return array
39 52 */
40 53 public function register_categories($categories, $context)
41 54 {
42 - return array_merge(
55 + // Add FireBox category
56 + $categories = array_merge(
43 57 $categories,
44 - [
45 - [
46 - 'slug' => 'firebox',
47 - 'title' => 'FireBox'
48 - ]
49 - ]
58 + array(
59 + array(
60 + 'slug' => 'firebox',
61 + 'title' => firebox()->_('FB_PLUGIN_NAME')
62 + ),
63 + )
50 64 );
65 +
66 + return $categories;
51 67 }
52 68
53 69 /**
54 70 * Initialize all blocks
@@ -57,21 +73,13 @@
57 73 */
58 74 public function register_blocks()
59 75 {
60 76 $ds = DIRECTORY_SEPARATOR;
61 -
77 +
62 78 $base_dir = implode($ds, [__DIR__, 'Blocks']);
63 -
64 - $cache_key = 'firebox_block_files';
65 - $files = wp_cache_get($cache_key, 'firebox');
66 -
67 - if ($files === false)
68 - {
69 - $files = array_diff(scandir($base_dir), ['.', '..', '.DS_Store', 'index.php', 'Block.php']);
70 -
71 - wp_cache_set($cache_key, $files, 'firebox', HOUR_IN_SECONDS);
72 - }
73 -
79 +
80 + $files = array_diff(scandir($base_dir), ['.', '..', '.DS_Store', 'index.php', 'FormBlock.php', 'Block.php']);
81 +
74 82 $namespace = '\FireBox\Core\Blocks\\';
75 83
76 84 foreach ($files as $item)
77 85 {
@@ -76,21 +84,38 @@
76 84 foreach ($files as $item)
77 85 {
78 86 // Check if this is a single file and load it
79 87 $file = implode($ds, [$base_dir, $item]);
88 + if (is_file($file))
89 + {
90 + $class_name = preg_replace('/.php$/', '', $item);
91 + $this->registerBlock($namespace . $class_name);
92 + continue;
93 + }
94 +
95 + // If that's not a file, we assume it is a directory of files
96 + $blocks = array_diff(scandir($file), ['.', '..', 'index.php']);
80 97
81 - if (!is_file($file))
82 - {
83 - continue;
98 + foreach ($blocks as $key => $block_name)
99 + {
100 + $class_name = preg_replace('/.php$/', '', $block_name);
101 + $class = $namespace . $item . '\\' . $class_name;
102 + $this->registerBlock($class);
84 103 }
104 + }
105 + }
85 106
86 - $class_name = preg_replace('/.php$/', '', $item);
87 -
88 - $class = $namespace . $class_name;
89 -
90 - $block = new $class();
91 - $block->register();
92 - }
107 + /**
108 + * Registers the block.
109 + *
110 + * @param string $class
111 + *
112 + * @return void
113 + */
114 + private function registerBlock($class)
115 + {
116 + $block = new $class();
117 + $block->register();
93 118 }
94 119
95 120 /**
96 121 * Blocks assets.
@@ -106,11 +131,29 @@
106 131 }
107 132
108 133 wp_enqueue_script(
109 134 'fb-blocks-extend',
110 - FBOX_MEDIA_ADMIN_URL . 'js/blocks/fb_blocks_extend.js',
135 + FBOX_MEDIA_ADMIN_URL . 'js/fb_blocks_extend.js',
111 136 ['wp-i18n', 'wp-blocks', 'wp-editor', 'wp-components', 'wp-api-fetch', 'lodash'],
112 137 FBOX_VERSION,
113 138 true
114 139 );
140 +
141 + // Enqueue block editor style only in Gutenberg editor
142 + if (function_exists('get_current_screen'))
143 + {
144 + $screen = get_current_screen();
145 + if ($screen->is_block_editor)
146 + {
147 + if (get_post_type() === 'firebox')
148 + {
149 + wp_enqueue_style(
150 + 'firebox-block-editor',
151 + FBOX_MEDIA_ADMIN_URL . 'css/block-editor.css',
152 + [],
153 + FBOX_VERSION
154 + );
155 + }
156 + }
157 + }
115 158 }
116 159 }