PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 3.6.4
JetFormBuilder — Dynamic Blocks Form Builder v3.6.4
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 1.1.2 1.1.3 1.1.4 1.1.5 All 130 releases
jetformbuilder / compatibility / bricks / onboarding-builder.php
onboarding-builder.php
141 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 namespace JFB_Compatibility\Bricks;
4
5 use Jet_Form_Builder\Classes\Tools;
6 use JFB_Modules\Onboarding\Builders\Exceptions\Use_Form_Exception;
7 use JFB_Modules\Onboarding\Builders\Interfaces\Builder_Create_Page_Interface;
8 use JFB_Modules\Onboarding\Builders\Interfaces\Builder_Interface;
9 use JFB_Modules\Onboarding\Builders\Interfaces\Builder_Update_Page_Interface;
10 use JFB_Modules\Onboarding\Module;
11 use JFB_Modules\Security\Csrf\Csrf_Tools;
12
13 class Onboarding_Builder {
14
15 public function init_hooks() {
16 add_action( 'jet-form-builder/use-form', array( $this, 'handle_use' ) );
17 add_action(
18 'jet-form-builder/use-form/register-assets',
19 array( $this, 'block_editor_assets' )
20 );
21 }
22
23 /**
24 * @param Builder_Create_Page_Interface|Builder_Update_Page_Interface $builder
25 *
26 * @return void
27 * @throws Use_Form_Exception
28 */
29 public function handle_use( Builder_Interface $builder ) {
30 if ( 'bricks' !== $builder->get_builder_type() ) {
31 return;
32 }
33
34 if ( $builder instanceof Builder_Update_Page_Interface ) {
35 $this->update( $builder );
36
37 return;
38 }
39
40 $this->create( $builder );
41 }
42
43 /**
44 * @return void
45 * @throws Use_Form_Exception
46 */
47 public function create( Builder_Create_Page_Interface $create_page ) {
48 $post_id = wp_insert_post(
49 array(
50 'post_title' => $create_page->get_title(),
51 'post_type' => 'page',
52 'post_status' => 'draft',
53 ),
54 true
55 );
56
57 if ( is_wp_error( $post_id ) ) {
58 // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
59 throw new Use_Form_Exception( $post_id->get_error_message() );
60 }
61
62 update_post_meta(
63 $post_id,
64 BRICKS_DB_PAGE_CONTENT,
65 array(
66 array(
67 'id' => Csrf_Tools::generate( 4 ),
68 'name' => 'jet-form-builder-form',
69 'parent' => 0,
70 'settings' => array(
71 'form_id' => (string) $create_page->get_form_id(),
72 'submit_type' => 'ajax',
73 ),
74 ),
75 )
76 );
77
78 // Set _bricks_editor_mode to 'bricks'
79 update_post_meta( $post_id, BRICKS_DB_EDITOR_MODE, 'bricks' );
80
81 $create_page->set_redirect_url( \Bricks\Helpers::get_builder_edit_link( $post_id ) );
82 }
83
84 /**
85 * @param Builder_Update_Page_Interface $update_page
86 *
87 * @return void
88 */
89 public function update( Builder_Update_Page_Interface $update_page ) {
90 $elements = get_post_meta( $update_page->get_page_id(), BRICKS_DB_PAGE_CONTENT, true );
91
92 update_post_meta(
93 $update_page->get_page_id(),
94 BRICKS_DB_PAGE_CONTENT,
95 array_merge(
96 $elements,
97 array(
98 array(
99 'id' => Csrf_Tools::generate( 4 ),
100 'name' => 'jet-form-builder-form',
101 'parent' => 0,
102 'settings' => array(
103 'form_id' => (string) $update_page->get_form_id(),
104 'submit_type' => 'ajax',
105 ),
106 ),
107 )
108 )
109 );
110
111 $update_page->set_redirect_url(
112 \Bricks\Helpers::get_builder_edit_link( $update_page->get_page_id() )
113 );
114 }
115
116 public function block_editor_assets() {
117 /** @var Module $onboarding */
118 /** @noinspection PhpUnhandledExceptionInspection */
119 $onboarding = jet_form_builder()->module( 'onboarding' );
120 /** @var Bricks $bricks */
121 /** @noinspection PhpUnhandledExceptionInspection */
122 $bricks = jet_form_builder()->compat( 'bricks' );
123
124 $script_asset = require_once $bricks->get_dir( 'assets/build/block.editor.asset.php' );
125
126 array_push(
127 $script_asset['dependencies'],
128 $onboarding->get_use_form()->get_handle()
129 );
130
131 wp_enqueue_script(
132 $bricks->get_handle( 'block-editor' ),
133 $bricks->get_url( 'assets/build/block.editor.js' ),
134 $script_asset['dependencies'],
135 $script_asset['version'],
136 true
137 );
138 }
139
140 }
141