@@ -596,12 +596,15 @@ public function update_chart_data( $data ) {
596596 }
597597 $ chart_type = sanitize_text_field ( $ data ['visualizer-chart-type ' ] );
598598 $ source_type = sanitize_text_field ( $ data ['visualizer-source ' ] );
599+ $ default_data = (int ) $ data ['visualizer-default-data ' ];
600+ $ series_data = map_deep ( $ data ['visualizer-series ' ], array ( $ this , 'sanitize_value ' ) );
601+ $ settings_data = map_deep ( $ data ['visualizer-settings ' ], array ( $ this , 'sanitize_value ' ) );
599602
600603 update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_TYPE , $ chart_type );
601604 update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_SOURCE , $ source_type );
602- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_DEFAULT_DATA , $ data [ ' visualizer-default-data ' ] );
603- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_SERIES , $ data [ ' visualizer-series ' ] );
604- update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_SETTINGS , $ data [ ' visualizer-settings ' ] );
605+ update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_DEFAULT_DATA , $ default_data );
606+ update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_SERIES , $ series_data );
607+ update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_SETTINGS , $ settings_data );
605608
606609 if ( $ data ['visualizer-chart-url ' ] && $ data ['visualizer-chart-schedule ' ] >= 0 ) {
607610 $ chart_url = esc_url_raw ( $ data ['visualizer-chart-url ' ] );
@@ -628,8 +631,8 @@ public function update_chart_data( $data ) {
628631 }
629632
630633 if ( 'Visualizer_Source_Csv_Remote ' === $ source_type ) {
631- $ schedule_url = $ data ['visualizer-chart-url ' ];
632- $ schedule_id = $ data ['visualizer-chart-schedule ' ];
634+ $ schedule_url = esc_url_raw ( $ data ['visualizer-chart-url ' ] ) ;
635+ $ schedule_id = intval ( $ data ['visualizer-chart-schedule ' ] ) ;
633636 update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_URL , $ schedule_url );
634637 update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_CHART_SCHEDULE , $ schedule_id );
635638 } else {
@@ -642,8 +645,8 @@ public function update_chart_data( $data ) {
642645 $ json_schedule = intval ( $ data ['visualizer-json-schedule ' ] );
643646 $ json_url = esc_url_raw ( $ data ['visualizer-json-url ' ] );
644647 $ json_headers = esc_url_raw ( $ data ['visualizer-json-headers ' ] );
645- $ json_root = $ data ['visualizer-json-root ' ];
646- $ json_paging = $ data ['visualizer-json-paging ' ];
648+ $ json_root = sanitize_text_field ( $ data ['visualizer-json-root ' ] ) ;
649+ $ json_paging = sanitize_text_field ( $ data ['visualizer-json-paging ' ] ) ;
647650
648651 update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_SCHEDULE , $ json_schedule );
649652 update_post_meta ( $ data ['id ' ], Visualizer_Plugin::CF_JSON_URL , $ json_url );
@@ -664,7 +667,8 @@ public function update_chart_data( $data ) {
664667 }
665668
666669 if ( Visualizer_Module::is_pro () ) {
667- update_post_meta ( $ data ['id ' ], Visualizer_Pro::CF_PERMISSIONS , $ data ['visualizer-permissions ' ] );
670+ $ permissions_data = map_deep ( $ data ['visualizer-permissions ' ], array ( $ this , 'sanitize_value ' ) );
671+ update_post_meta ( $ data ['id ' ], Visualizer_PRO::CF_PERMISSIONS , $ permissions_data );
668672 }
669673
670674 if ( $ data ['visualizer-chart-url ' ] ) {
@@ -863,4 +867,18 @@ public function add_rest_query_vars( $args, \WP_REST_Request $request ) {
863867 }
864868 return $ args ;
865869 }
870+
871+ /**
872+ * Sanitize value.
873+ *
874+ * @param mixed $value The value to sanitize.
875+ * @return mixed Sanitized value.
876+ */
877+ private function sanitize_value ( $ value ) {
878+ if ( is_string ( $ value ) ) {
879+ return sanitize_text_field ( $ value );
880+ }
881+
882+ return $ value ;
883+ }
866884}
0 commit comments