@@ -177,23 +177,6 @@ public function register_rest_endpoints() {
177177 )
178178 );
179179
180- register_rest_route (
181- 'visualizer/v ' . VISUALIZER_REST_VERSION ,
182- '/update-chart ' ,
183- array (
184- 'methods ' => 'POST ' ,
185- 'callback ' => array ( $ this , 'update_chart_data ' ),
186- 'args ' => array (
187- 'id ' => array (
188- 'sanitize_callback ' => 'absint ' ,
189- ),
190- ),
191- 'permission_callback ' => function () {
192- return current_user_can ( 'edit_posts ' );
193- },
194- )
195- );
196-
197180 }
198181
199182 /**
@@ -348,139 +331,14 @@ public function get_visualizer_data( $post ) {
348331 return $ data ;
349332 }
350333
351- /**
352- * Rest Callback Method
353- */
354- public function update_chart_data ( $ data ) {
355- if ( ! current_user_can ( 'edit_posts ' ) ) {
356- return false ;
357- }
358-
359- if ( $ data ['id ' ] && ! is_wp_error ( $ data ['id ' ] ) ) {
360- if ( get_post_type ( $ data ['id ' ] ) !== Visualizer_Plugin::CPT_VISUALIZER ) {
361- return new WP_Error ( 'invalid_post_type ' , 'Invalid post type. ' );
362- }
363- $ chart_type = sanitize_text_field ( $ data ['visualizer-chart-type ' ] );
364- $ source_type = sanitize_text_field ( $ data ['visualizer-source ' ] );
365- $ default_data = (int ) $ data ['visualizer-default-data ' ];
366- $ series_data = map_deep ( $ data ['visualizer-series ' ], array ( $ this , 'sanitize_value ' ) );
367- $ settings_data = map_deep ( $ data ['visualizer-settings ' ], array ( $ this , 'sanitize_value ' ) );
368-
369- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_TYPE , $ chart_type );
370- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_SOURCE , $ source_type );
371- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_DEFAULT_DATA , $ default_data );
372- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_SERIES , $ series_data );
373- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_SETTINGS , $ settings_data );
374-
375- if ( $ data ['visualizer-chart-url ' ] && $ data ['visualizer-chart-schedule ' ] >= 0 ) {
376- $ chart_url = esc_url_raw ( $ data ['visualizer-chart-url ' ] );
377- $ chart_schedule = intval ( $ data ['visualizer-chart-schedule ' ] );
378- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_URL , $ chart_url );
379- apply_filters ( 'visualizer_pro_chart_schedule ' , $ data ['id ' ], $ chart_url , $ chart_schedule );
380- } else {
381- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_URL );
382- apply_filters ( 'visualizer_pro_remove_schedule ' , $ data ['id ' ] );
383- }
384-
385- // let's check if this is not an external db chart
386- // as there is no support for that in the block editor interface
387- $ external_params = get_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_REMOTE_DB_PARAMS , true );
388- if ( empty ( $ external_params ) ) {
389- if ( $ source_type === 'Visualizer_Source_Query ' ) {
390- $ db_schedule = intval ( $ data ['visualizer-db-schedule ' ] );
391- $ db_query = $ data ['visualizer-db-query ' ];
392- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_DB_SCHEDULE , $ db_schedule );
393- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_DB_QUERY , stripslashes ( $ db_query ) );
394- } else {
395- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_DB_SCHEDULE );
396- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_DB_QUERY );
397- }
398-
399- if ( 'Visualizer_Source_Csv_Remote ' === $ source_type ) {
400- $ schedule_url = esc_url_raw ( $ data ['visualizer-chart-url ' ] );
401- $ schedule_id = intval ( $ data ['visualizer-chart-schedule ' ] );
402- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_URL , $ schedule_url );
403- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_SCHEDULE , $ schedule_id );
404- } else {
405- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_URL );
406- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_SCHEDULE );
407- }
408- }
409-
410- if ( $ source_type === 'Visualizer_Source_Json ' ) {
411- $ json_schedule = intval ( $ data ['visualizer-json-schedule ' ] );
412- $ json_url = esc_url_raw ( $ data ['visualizer-json-url ' ] );
413- $ json_headers = esc_url_raw ( $ data ['visualizer-json-headers ' ] );
414- $ json_root = sanitize_text_field ( $ data ['visualizer-json-root ' ] );
415- $ json_paging = sanitize_text_field ( $ data ['visualizer-json-paging ' ] );
416-
417- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_SCHEDULE , $ json_schedule );
418- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_URL , $ json_url );
419- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_HEADERS , $ json_headers );
420- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_ROOT , $ json_root );
421-
422- if ( ! empty ( $ json_paging ) ) {
423- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_PAGING , $ json_paging );
424- } else {
425- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_PAGING );
426- }
427- } else {
428- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_SCHEDULE );
429- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_URL );
430- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_HEADERS );
431- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_ROOT );
432- delete_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_PAGING );
433- }
434-
435- if ( Visualizer_Module::is_pro () ) {
436- $ permissions_data = map_deep ( $ data ['visualizer-permissions ' ], array ( $ this , 'sanitize_value ' ) );
437- update_post_meta ( $ data ['id ' ], Visualizer_Pro::CF_PERMISSIONS , $ permissions_data );
438- }
439-
440- if ( $ data ['visualizer-chart-url ' ] ) {
441- $ chart_url = esc_url_raw ( $ data ['visualizer-chart-url ' ] );
442- $ content ['source ' ] = $ chart_url ;
443- $ content ['data ' ] = $ this ->format_chart_data ( $ data ['visualizer-data ' ], $ data ['visualizer-series ' ] );
444- } else {
445- $ content = $ this ->format_chart_data ( $ data ['visualizer-data ' ], $ data ['visualizer-series ' ] );
446- }
447-
448- $ chart = array (
449- 'ID ' => $ data ['id ' ],
450- 'post_content ' => serialize ( $ content ),
451- );
452-
453- wp_update_post ( $ chart );
454-
455- // Clear existing chart cache.
456- $ cache_key = Visualizer_Plugin::CF_CHART_CACHE . '_ ' . $ data ['id ' ];
457- if ( get_transient ( $ cache_key ) ) {
458- delete_transient ( $ cache_key );
459- }
460-
461- $ revisions = wp_get_post_revisions ( $ data ['id ' ], array ( 'order ' => 'ASC ' ) );
462-
463- if ( count ( $ revisions ) > 1 ) {
464- $ revision_ids = array_keys ( $ revisions );
465-
466- // delete all revisions.
467- foreach ( $ revision_ids as $ id ) {
468- wp_delete_post_revision ( $ id );
469- }
470- }
471-
472- return new \WP_REST_Response ( array ( 'success ' => sprintf ( 'Chart updated ' ) ) );
473- }
474- }
475-
476334 /**
477335 * Format chart data.
478336 *
479337 * Note: No matter how tempted, don't use the similar method from Visualizer_Source. That works on a different structure.
480338 */
481339 public function format_chart_data ( $ data , $ series ) {
482340 foreach ( $ series as $ i => $ row ) {
483- // if no value exists for the seires , then add null
341+ // if no value exists for the series , then add null
484342 if ( ! isset ( $ series [ $ i ] ) ) {
485343 $ series [ $ i ] = null ;
486344 }
@@ -556,17 +414,4 @@ public function add_rest_query_vars( $args, \WP_REST_Request $request ) {
556414 return $ args ;
557415 }
558416
559- /**
560- * Sanitize value.
561- *
562- * @param mixed $value The value to sanitize.
563- * @return mixed Sanitized value.
564- */
565- public function sanitize_value ( $ value ) {
566- if ( is_string ( $ value ) ) {
567- return sanitize_text_field ( $ value );
568- }
569-
570- return $ value ;
571- }
572417}
0 commit comments