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

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

157 lines 3.5 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.1.0 Free
5 *
6 * @author FirePlugins <info@fireplugins.com>
7 * @link https://www.fireplugins.com
8 * @copyright Copyright © 2022 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 class Blocks
20 {
21 public function __construct()
22 {
23 if (!function_exists('register_block_type'))
24 {
25 return;
26 }
27
28 add_action('enqueue_block_editor_assets', [$this, 'blocks_assets']);
29
30 // Register categories
31 add_filter('block_categories_all', [$this, 'register_categories'], 10, 2);
32
33 $this->register_blocks();
34 }
35
36 /**
37 * Adds the `FireBox` and `FirePlugins` custom Gutenberg block categories
38 * to register all our blocks.
39 *
40 * @param array $categories
41 * @param WP_Block_Editor_Context $context
42 *
43 * @return array
44 */
45 public function register_categories($categories, $context)
46 {
47 // Add FireBox category
48 $categories = array_merge(
49 $categories,
50 array(
51 array(
52 'slug' => 'firebox',
53 'title' => firebox()->_('FB_PLUGIN_NAME')
54 ),
55 )
56 );
57
58 // Add FirePlugins category
59 $categories = array_merge(
60 $categories,
61 array(
62 array(
63 'slug' => 'fireplugins',
64 'title' => fpframework()->_('FPF_NAME')
65 ),
66 )
67 );
68
69 return $categories;
70 }
71
72 /**
73 * Initialize all blocks
74 *
75 * @return void
76 */
77 public function register_blocks()
78 {
79 $ds = DIRECTORY_SEPARATOR;
80
81 $base_dir = implode($ds, [__DIR__, 'Blocks']);
82
83 $files = array_diff(scandir($base_dir), ['.', '..', 'index.php', 'Block.php']);
84
85 $namespace = '\FireBox\Core\Blocks\\';
86
87 foreach ($files as $item)
88 {
89 // Check if this is a single file and load it
90 $file = implode($ds, [$base_dir, $item]);
91 if (is_file($file))
92 {
93 $class_name = preg_replace('/.php$/', '', $item);
94 $this->registerBlock($namespace . $class_name);
95 continue;
96 }
97
98 // If that's not a file, we assume it is a directory of files
99 $blocks = array_diff(scandir($file), ['.', '..', 'index.php']);
100
101 foreach ($blocks as $key => $block_name)
102 {
103 $class_name = preg_replace('/.php$/', '', $block_name);
104 $class = $namespace . $item . '\\' . $class_name;
105 $this->registerBlock($class);
106 }
107 }
108 }
109
110 /**
111 * Registers the block.
112 *
113 * @param string $class
114 *
115 * @return void
116 */
117 private function registerBlock($class)
118 {
119 $block = new $class();
120 $block->register();
121 }
122
123 /**
124 * Blocks assets.
125 *
126 * - Extends functionality of the button/image blocks by allowing to trigger a popup.
127 * It also allows us to set custom CSS Classes to these blocks without triggering a popup.
128 */
129 public function blocks_assets()
130 {
131 wp_enqueue_script(
132 'fb-blocks-extend',
133 FBOX_MEDIA_ADMIN_URL . 'js/fb_blocks_extend.js',
134 ['wp-i18n', 'wp-blocks', 'wp-editor', 'wp-components', 'wp-api-fetch'],
135 FBOX_VERSION,
136 true
137 );
138
139 // Enqueue block editor style only in Gutenberg editor
140 if (function_exists('get_current_screen'))
141 {
142 $screen = get_current_screen();
143 if ($screen->is_block_editor)
144 {
145 if (get_post_type() === 'firebox')
146 {
147 wp_enqueue_style(
148 'firebox-block-editor',
149 FBOX_MEDIA_ADMIN_URL . 'css/block-editor.css',
150 [],
151 FBOX_VERSION
152 );
153 }
154 }
155 }
156 }
157 }