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 / includes / blocks / conditional-block / rest-api / add-render-state-endpoint-option.php

add-render-state-endpoint-option.php in JetFormBuilder — Dynamic Blocks Form Builder 3.6.6, at includes/blocks/conditional-block/rest-api/add-render-state-endpoint-option.php

112 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace Jet_Form_Builder\Blocks\Conditional_Block\Rest_Api;
5
6 use Jet_Form_Builder\Blocks\Conditional_Block\Render_State;
7 use Jet_Form_Builder\Classes\Tools;
8 use Jet_Form_Builder\Rest_Api\Rest_Api_Endpoint_Base;
9
10 // If this file is called directly, abort.
11 if ( ! defined( 'WPINC' ) ) {
12 die;
13 }
14
15 class Add_Render_State_Endpoint_Option extends Rest_Api_Endpoint_Base {
16
17 /**
18 * @return mixed
19 */
20 public static function get_rest_base() {
21 return 'render-states/add/option';
22 }
23
24 /**
25 * @return mixed
26 */
27 public static function get_methods() {
28 return \WP_REST_Server::CREATABLE;
29 }
30
31 public function check_permission(): bool {
32 return current_user_can( 'manage_options' );
33 }
34
35 /**
36 * @param \WP_REST_Request $request
37 *
38 * @return mixed
39 */
40 public function run_callback( \WP_REST_Request $request ) {
41 $body = $request->get_json_params();
42 $label = $body['value'] ?? '';
43 $value = $this->format_name( $label );
44
45 if ( ! $value ) {
46 return new \WP_REST_Response(
47 array(
48 'message' => __( 'Empty render state name', 'jet-form-builder' ),
49 ),
50 400
51 );
52 }
53
54 $saved = Tools::decode_json( get_option( Render_State::OPTION_KEY, '[]' ) );
55
56 $find = array_filter(
57 $saved,
58 function ( $item ) use ( $value ) {
59 return $item['value'] === $value;
60 }
61 );
62
63 if ( count( $find ) ) {
64 return new \WP_REST_Response(
65 array(
66 'message' => sprintf(
67 /* translators: %s - name of render state */
68 __( 'Render state with name "%s" is already exist', 'jet-form-builder' ),
69 $value
70 ),
71 ),
72 400
73 );
74 }
75
76 $new_state = array(
77 'label' => $label,
78 'value' => $value,
79 );
80
81 $saved[] = $new_state;
82
83 $result = Render_State::update_states( $saved );
84
85 if ( ! $result ) {
86 return new \WP_REST_Response(
87 array(
88 'message' => __( 'Something went wrong', 'jet-form-builder' ),
89 ),
90 400
91 );
92 }
93
94 $new_state['is_custom'] = true;
95
96 return new \WP_REST_Response(
97 array(
98 'message' => __( 'Successful added render state', 'jet-form-builder' ),
99 'state' => $new_state,
100 )
101 );
102 }
103
104 private function format_name( string $title ): string {
105 $name = preg_replace( '#[\s\-\_]+#', '.', $title );
106 $name = preg_replace( '#[^\w\.]+#', '', $name );
107 $name = trim( $name, '.' );
108
109 return strtoupper( $name );
110 }
111 }
112