@@ -52,161 +52,6 @@ public function __construct( WP_REST_Server $wp_rest_server ) {
5252 $ this ->server = $ wp_rest_server ;
5353 }
5454
55- /**
56- * Get a CMB2 box prepared for REST
57- *
58- * @since 2.2.0
59- *
60- * @param CMB2 $cmb
61- * @return array
62- */
63- public function get_rest_box ( $ cmb ) {
64- $ cmb ->object_type ( $ this ->object_id );
65- $ cmb ->object_id ( $ this ->object_type );
66-
67- $ boxes_data = $ cmb ->meta_box ;
68-
69- if ( isset ( $ _REQUEST ['rendered ' ] ) ) {
70- $ boxes_data ['form_open ' ] = $ this ->get_cb_results ( array ( $ cmb , 'render_form_open ' ) );
71- $ boxes_data ['form_close ' ] = $ this ->get_cb_results ( array ( $ cmb , 'render_form_close ' ) );
72-
73- global $ wp_scripts , $ wp_styles ;
74- $ before_css = $ wp_styles ->queue ;
75- $ before_js = $ wp_scripts ->queue ;
76-
77- CMB2_JS ::enqueue ();
78-
79- $ boxes_data ['js_dependencies ' ] = array_values ( array_diff ( $ wp_scripts ->queue , $ before_js ) );
80- $ boxes_data ['css_dependencies ' ] = array_values ( array_diff ( $ wp_styles ->queue , $ before_css ) );
81- }
82-
83- // TODO: look into 'embed' parameter.
84- // http://demo.wp-api.org/wp-json/wp/v2/posts?_embed
85- unset( $ boxes_data ['fields ' ] );
86- // Handle callable properties.
87- unset( $ boxes_data ['show_on_cb ' ] );
88-
89- $ base = CMB2_REST ::BASE . '/boxes/ ' . $ cmb ->cmb_id ;
90- $ boxbase = $ base . '/ ' . $ cmb ->cmb_id ;
91-
92- $ response = new WP_REST_Response ( $ boxes_data );
93- $ response ->add_links ( array (
94- 'self ' => array (
95- 'href ' => rest_url ( trailingslashit ( $ boxbase ) ),
96- ),
97- 'collection ' => array (
98- 'href ' => rest_url ( trailingslashit ( $ base ) ),
99- ),
100- 'fields ' => array (
101- 'href ' => rest_url ( trailingslashit ( $ boxbase ) . 'fields/ ' ),
102- ),
103- ) );
104-
105- $ boxes_data ['_links ' ] = $ response ->get_links ();
106-
107- return $ boxes_data ;
108- }
109-
110- /**
111- * Get a specific field
112- *
113- * @since 2.2.0
114- *
115- * @param CMB2 $cmb
116- * @return array|WP_Error
117- */
118- public function get_rest_field ( $ cmb , $ field_id ) {
119-
120- // TODO: more robust show_in_rest checking. use rest_read/rest_write properties.
121- // TODO: more robust show_in_rest checking. use rest_read/rest_write properties.
122- // TODO: more robust show_in_rest checking. use rest_read/rest_write properties.
123-
124- if ( ! $ cmb ->prop ( 'show_in_rest ' ) ) {
125- return new WP_Error ( 'cmb2_rest_error ' , __ ( "You don't have permission to view this field. " , 'cmb2 ' ) );
126- }
127-
128- $ field = $ cmb ->get_field ( $ field_id );
129-
130- if ( ! $ field ) {
131- return new WP_Error ( 'cmb2_rest_error ' , __ ( 'No field found by that id. ' , 'cmb2 ' ) );
132- }
133-
134- // TODO: check for show_in_rest property.
135- // $can_read = $this->can_read
136- // ? 'write_only' !== $show_in_rest
137- // : in_array( $show_in_rest, array( 'read_and_write', 'read_only' ), true );
138-
139-
140- $ field_data = $ this ->prepare_field_data ( $ field );
141-
142- $ base = CMB2_REST ::BASE . '/boxes/ ' . $ cmb ->cmb_id ;
143-
144- $ response = new WP_REST_Response ( $ field_data );
145- $ response ->add_links ( array (
146- 'self ' => array (
147- 'href ' => rest_url ( trailingslashit ( $ base ) . 'fields/ ' . $ field ->_id () ),
148- ),
149- 'collection ' => array (
150- 'href ' => rest_url ( trailingslashit ( $ base ) . 'fields/ ' ),
151- ),
152- 'box ' => array (
153- 'href ' => rest_url ( trailingslashit ( $ base ) ),
154- ),
155- ) );
156-
157- $ field_data ['_links ' ] = $ response ->get_links ();
158-
159- return $ field_data ;
160- }
161-
162- public function prepare_field_data ( CMB2_Field $ field ) {
163- $ field_data = array ();
164- $ params_to_ignore = array ( 'show_on_cb ' , 'show_in_rest ' , 'options ' );
165- $ params_to_rename = array (
166- 'label_cb ' => 'label ' ,
167- 'options_cb ' => 'options ' ,
168- );
169-
170- // TODO: Use request get object
171- // Run this first so the js_dependencies arg is populated.
172- $ rendered = isset ( $ _REQUEST ['rendered ' ] ) && ( $ cb = $ field ->maybe_callback ( 'render_row_cb ' ) )
173- // Ok, callback is good, let's run it.
174- ? $ this ->get_cb_results ( $ cb , $ field ->args (), $ field )
175- : false ;
176-
177- foreach ( $ field ->args () as $ key => $ value ) {
178- if ( in_array ( $ key , $ params_to_ignore , true ) ) {
179- continue ;
180- }
181-
182- if ( 'render_row_cb ' === $ key ) {
183- continue ;
184- }
185-
186- if ( 'options_cb ' === $ key ) {
187- $ value = $ field ->options ();
188- } elseif ( in_array ( $ key , CMB2_Field::$ callable_fields ) ) {
189- $ value = $ field ->get_param_callback_result ( $ key );
190- }
191-
192- $ key = isset ( $ params_to_rename [ $ key ] ) ? $ params_to_rename [ $ key ] : $ key ;
193-
194- if ( empty ( $ value ) || is_scalar ( $ value ) || is_array ( $ value ) ) {
195- $ field_data [ $ key ] = $ value ;
196- } else {
197- $ field_data [ $ key ] = __ ( 'Value Error ' , 'cmb2 ' );
198- }
199- }
200-
201- if ( isset ( $ _REQUEST ['rendered ' ] ) ) {
202- $ field_data ['rendered ' ] = $ rendered ;
203- }
204-
205- $ field_data ['value ' ] = $ field ->get_data ();
206-
207- return $ field_data ;
208- }
209-
21055 /**
21156 * Check if a given request has access to a field or box.
21257 * By default, no special permissions needed, but filtering return value.
@@ -280,7 +125,7 @@ public function initiate_request( $request ) {
280125 * @param WP_REST_Request $request Request object
281126 * @return array $data
282127 */
283- public function prepare_item_for_response ( $ data , $ request ) {
128+ public function prepare_item_for_response ( $ data , $ request = null ) {
284129
285130 $ context = ! empty ( $ this ->request ['context ' ] ) ? $ this ->request ['context ' ] : 'view ' ;
286131 $ data = $ this ->filter_response_by_context ( $ data , $ context );
@@ -294,7 +139,7 @@ public function prepare_item_for_response( $data, $request ) {
294139 * @param object $request The WP_REST_Request object
295140 * @param object $cmb2_endpoints This endpoints object
296141 */
297- return apply_filters ( 'cmb2_rest_prepare ' , $ data , $ this ->request , $ this );
142+ return apply_filters ( 'cmb2_rest_prepare ' , rest_ensure_response ( $ data ) , $ this ->request , $ this );
298143 }
299144
300145 /**
0 commit comments