[\d]+)/fields'; } public static function get_methods() { return \WP_REST_Server::READABLE; } public function get_common_args(): array { return array( 'id' => array( 'type' => 'integer', 'required' => true, ), ); } public function check_permission(): bool { $capability = Tab_Handler_Manager::get_form_records_access_capability(); return current_user_can( 'edit_jet_fb_forms' ) || current_user_can( $capability ); } public function run_callback( \WP_REST_Request $request ) { $form_id = $request->get_param( 'id' ); $form = get_post( $form_id ); $capability = Tab_Handler_Manager::get_form_records_access_capability(); if ( ! current_user_can( $capability ) && absint( $form->post_author ) !== get_current_user_id() && ! current_user_can( 'edit_post', $form->ID ) ) { return new \WP_REST_Response( array( 'message' => __( 'Not allowed', 'jet-form-builder' ), ), 403 ); } jet_fb_context()->set_parsers( Block_Helper::get_blocks_by_post( $form ) ); foreach ( jet_fb_context()->iterate_parsers() as $name => $parser ) { if ( $parser->is_secure() ) { continue; } $fields[] = array( 'value' => $name, 'label' => $parser->get_label(), 'type' => $parser->get_type(), ); } if ( empty( $fields ) ) { return new \WP_REST_Response( array( 'message' => __( 'Not founded fields', 'jet-form-builder' ), ), 204 ); } return new \WP_REST_Response( array( 'fields' => $fields, ) ); } }