PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 5.5.7
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v5.5.7
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
formidable / classes / controllers / FrmSimpleBlocksController.php

FrmSimpleBlocksController.php in Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More 5.5.7, at classes/controllers/FrmSimpleBlocksController.php

170 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 die( 'You are not allowed to call this page directly.' );
4 }
5
6 class FrmSimpleBlocksController {
7
8 /**
9 * Enqueue Formidable Simple Blocks' js and CSS for editor in admin.
10 */
11 public static function block_editor_assets() {
12 $version = FrmAppHelper::plugin_version();
13
14 wp_register_script(
15 'formidable-form-selector',
16 FrmAppHelper::plugin_url() . '/js/formidable_blocks.js',
17 array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-components', 'wp-block-editor' ),
18 $version,
19 true
20 );
21
22 $icon = apply_filters( 'frm_icon', 'svg' );
23 if ( 0 === strpos( $icon, 'data:image/svg+xml;base64,' ) ) {
24 $icon = ' ' . FrmAppHelper::get_menu_icon_class();
25 } else {
26 $icon = str_replace( 'dashicons-', '', $icon );
27 }
28
29 $block_name = FrmAppHelper::get_menu_name();
30 if ( $block_name === 'Formidable' ) {
31 $block_name = 'Formidable Forms';
32 }
33
34 $script_vars = array(
35 'forms' => self::get_forms_options(),
36 'icon' => $icon,
37 'name' => $block_name,
38 'link' => FrmAppHelper::admin_upgrade_link( 'block' ),
39 'url' => FrmAppHelper::plugin_url(),
40 );
41
42 wp_localize_script( 'formidable-form-selector', 'formidable_form_selector', $script_vars );
43 if ( function_exists( 'wp_set_script_translations' ) ) {
44 wp_set_script_translations( 'formidable-form-selector', 'formidable' );
45 }
46
47 wp_enqueue_style(
48 'formidable_block-editor-css',
49 FrmAppHelper::plugin_url() . '/css/frm_blocks.css',
50 array( 'wp-edit-blocks' ),
51 $version
52 );
53 }
54
55 /**
56 * Returns a filtered list of form options with the name as label and the id as value, sorted by label
57 *
58 * @return array
59 */
60 private static function get_forms_options() {
61 $forms = FrmForm::getAll(
62 array(
63 'is_template' => 0,
64 'status' => 'published',
65 array(
66 'or' => 1,
67 'parent_form_id' => null,
68 'parent_form_id <' => 1,
69 ),
70 ),
71 'name'
72 );
73
74 return array_map( 'FrmSimpleBlocksController::set_form_options', $forms );
75 }
76
77 /**
78 * Returns an array for a form with name as label and id as value
79 *
80 * @param $form
81 *
82 * @return array
83 */
84 private static function set_form_options( $form ) {
85 return array(
86 'label' => $form->name,
87 'value' => $form->id,
88 );
89 }
90
91 /**
92 * Registers simple form block
93 */
94 public static function register_simple_form_block() {
95 if ( ! is_callable( 'register_block_type' ) ) {
96 return;
97 }
98
99 if ( is_admin() ) {
100 FrmStylesController::enqueue_css( 'register', true );
101 }
102
103 register_block_type(
104 'formidable/simple-form',
105 array(
106 'attributes' => array(
107 'formId' => array(
108 'type' => 'string',
109 ),
110 'title' => array(
111 'type' => 'string',
112 ),
113 'description' => array(
114 'type' => 'string',
115 ),
116 'minimize' => array(
117 'type' => 'string',
118 ),
119 'className' => array(
120 'type' => 'string',
121 ),
122 ),
123 'editor_style' => 'formidable',
124 'editor_script' => 'formidable-form-selector',
125 'render_callback' => 'FrmSimpleBlocksController::simple_form_render',
126
127 )
128 );
129 }
130
131 /**
132 * Renders a form given the specified attributes.
133 *
134 * @param array $attributes
135 * @return string
136 */
137 public static function simple_form_render( $attributes ) {
138 if ( ! isset( $attributes['formId'] ) ) {
139 return '';
140 }
141
142 /**
143 * @since 5.5.2
144 * @param array $attributes
145 */
146 do_action( 'frm_before_simple_form_render', $attributes );
147
148 $params = array_filter( $attributes );
149 $params['id'] = $params['formId'];
150 unset( $params['formId'] );
151
152 $form = FrmFormsController::get_form_shortcode( $params );
153 return self::maybe_remove_fade_on_load_for_block_preview( $form );
154 }
155
156 /**
157 * Remove fade on load when /wp-json/wp/v2/block-renderer/formidable/simple-form is called.
158 * With the class set, the form never appears in the form block preview.
159 *
160 * @param string $form
161 * @return string
162 */
163 private static function maybe_remove_fade_on_load_for_block_preview( $form ) {
164 if ( is_callable( 'wp_is_json_request' ) && wp_is_json_request() ) {
165 $form = str_replace( ' frm_logic_form ', ' ', $form );
166 }
167 return $form;
168 }
169 }
170