PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 3.6.6
JetFormBuilder — Dynamic Blocks Form Builder v3.6.6
3.6.6.1 3.6.6 3.6.5.4 3.6.5.3 3.6.5.2 3.6.5.1 3.6.5 3.6.4.2 3.6.4.1 3.6.4 3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 All 134 releases
jetformbuilder / modules / onboarding / builders / block-editor-builder.php

block-editor-builder.php in JetFormBuilder — Dynamic Blocks Form Builder 3.6.6, at modules/onboarding/builders/block-editor-builder.php

122 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace JFB_Modules\Onboarding\Builders;
4
5 use JFB_Modules\Onboarding\Builders\Exceptions\Use_Form_Exception;
6 use JFB_Modules\Onboarding\Builders\Interfaces\Builder_Create_Page_Interface;
7 use JFB_Modules\Onboarding\Builders\Interfaces\Builder_Interface;
8 use JFB_Modules\Onboarding\Builders\Interfaces\Builder_Update_Page_Interface;
9 use JFB_Modules\Onboarding\Module;
10
11 class Block_Editor_Builder {
12
13 public function init_hooks() {
14 add_action( 'jet-form-builder/use-form', array( $this, 'handle_use' ) );
15 add_action(
16 'jet-form-builder/use-form/register-assets',
17 array( $this, 'enqueue_builder_assets' ),
18 15
19 );
20 }
21
22 /**
23 * @param Builder_Create_Page_Interface|Builder_Update_Page_Interface $builder
24 *
25 * @return void
26 * @throws Use_Form_Exception
27 */
28 public function handle_use( Builder_Interface $builder ) {
29 if ( 'blocks' !== $builder->get_builder_type() ) {
30 return;
31 }
32
33 if ( $builder instanceof Builder_Update_Page_Interface ) {
34 $this->update( $builder );
35
36 return;
37 }
38
39 $this->create( $builder );
40 }
41
42 /**
43 * @return void
44 * @throws Use_Form_Exception
45 */
46 public function create( Builder_Create_Page_Interface $create_page ) {
47 $post_id = wp_insert_post(
48 array(
49 'post_title' => $create_page->get_title(),
50 'post_type' => 'page',
51 'post_status' => 'draft',
52 'post_content' => sprintf(
53 '<!-- wp:jet-forms/form-block {"form_id":%d} /-->',
54 $create_page->get_form_id()
55 ),
56 ),
57 true
58 );
59
60 if ( is_wp_error( $post_id ) ) {
61 // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
62 throw new Use_Form_Exception( $post_id->get_error_message() );
63 }
64
65 $create_page->set_redirect_url( get_edit_post_link( $post_id, false ) );
66 }
67
68 /**
69 * @param Builder_Update_Page_Interface $update_page
70 *
71 * @return void
72 * @throws Use_Form_Exception
73 */
74 public function update( Builder_Update_Page_Interface $update_page ) {
75 $page = get_post( $update_page->get_page_id() );
76
77 if ( ! ( $page instanceof \WP_Post ) ) {
78 throw new Use_Form_Exception( 'Undefined page' );
79 }
80
81 $post_id = wp_update_post(
82 array(
83 'ID' => $update_page->get_page_id(),
84 'post_content' => $page->post_content . sprintf(
85 '<!-- wp:jet-forms/form-block {"form_id":%d} /-->',
86 $update_page->get_form_id()
87 ),
88 ),
89 true
90 );
91
92 if ( is_wp_error( $post_id ) ) {
93 // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
94 throw new Use_Form_Exception( $post_id->get_error_message() );
95 }
96
97 $update_page->set_redirect_url(
98 get_edit_post_link( $update_page->get_page_id(), false )
99 );
100 }
101
102 public function enqueue_builder_assets() {
103 /** @var Module $onboarding */
104 /** @noinspection PhpUnhandledExceptionInspection */
105 $onboarding = jet_form_builder()->module( 'onboarding' );
106 $script_asset = require_once $onboarding->get_dir( 'assets/build/block.builder.asset.php' );
107
108 array_push(
109 $script_asset['dependencies'],
110 $onboarding->get_use_form()->get_handle()
111 );
112
113 wp_enqueue_script(
114 $onboarding->get_handle( 'block-builder' ),
115 $onboarding->get_url( 'assets/build/block.builder.js' ),
116 $script_asset['dependencies'],
117 $script_asset['version'],
118 true
119 );
120 }
121 }
122