PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.9
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.9
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
← All changes | classes/Visualizer/Module/Chart.php +34 -9 3.0.63.0.9 View file →
@@ -56,11 +56,9 @@
56 56 $this->_addAjaxAction( Visualizer_Plugin::ACTION_CREATE_CHART, 'renderChartPages' );
57 57 $this->_addAjaxAction( Visualizer_Plugin::ACTION_EDIT_CHART, 'renderChartPages' );
58 58 $this->_addAjaxAction( Visualizer_Plugin::ACTION_UPLOAD_DATA, 'uploadData' );
59 59 $this->_addAjaxAction( Visualizer_Plugin::ACTION_CLONE_CHART, 'cloneChart' );
60 - // Added by Ash/Upwork
61 60 $this->_addAjaxAction( Visualizer_Plugin::ACTION_EXPORT_DATA, 'exportData' );
62 - // Added by Ash/Upwork
63 61 }
64 62
65 63 /**
66 64 * Fetches charts from database.
@@ -210,9 +208,9 @@
210 208 defined( 'IFRAME_REQUEST' ) || define( 'IFRAME_REQUEST', 1 );
211 209 // check chart, if chart not exists, will create new one and redirects to the same page with proper chart id
212 210 $chart_id = isset( $_GET['chart'] ) ? filter_var( $_GET['chart'], FILTER_VALIDATE_INT ) : '';
213 211 if ( ! $chart_id || ! ( $chart = get_post( $chart_id ) ) || $chart->post_type != Visualizer_Plugin::CPT_VISUALIZER ) {
214 - $default_type = 'line';
212 + $default_type = isset( $_GET['type'] ) && ! empty( $_GET['type'] ) ? $_GET['type'] : 'line';
215 213 $source = new Visualizer_Source_Csv( VISUALIZER_ABSPATH . DIRECTORY_SEPARATOR . 'samples' . DIRECTORY_SEPARATOR . $default_type . '.csv' );
216 214 $source->fetch();
217 215 $chart_id = wp_insert_post(
218 216 array(
@@ -268,12 +266,23 @@
268 266 $this->_chart = get_post( $chart_id );
269 267 $tab = isset( $_GET['tab'] ) && ! empty( $_GET['tab'] ) ? $_GET['tab'] : 'visualizer';
270 268
271 269 // skip chart type pages only for existing charts.
272 - if ( VISUALIZER_SKIP_CHART_TYPE_PAGE && 'auto-draft' !== $this->_chart->post_status ) {
270 + if ( VISUALIZER_SKIP_CHART_TYPE_PAGE && 'auto-draft' !== $this->_chart->post_status && ( ! empty( $_GET['tab'] ) && 'visualizer' === $_GET['tab'] ) ) {
273 271 $tab = 'settings';
274 272 }
275 273
274 + if ( isset( $_POST['cancel'] ) && 1 === intval( $_POST['cancel'] ) ) {
275 + // if the cancel button is clicked.
276 + $this->undoRevisions( $chart_id, true );
277 + } elseif ( isset( $_POST['save'] ) && 1 === intval( $_POST['save'] ) ) {
278 + // if the save button is clicked.
279 + $this->undoRevisions( $chart_id, false );
280 + } else {
281 + // if the edit button is clicked.
282 + $this->_chart = $this->handleExistingRevisions( $chart_id, $this->_chart );
283 + }
284 +
276 285 switch ( $tab ) {
277 286 case 'settings':
278 287 $this->_handleDataAndSettingsPage();
279 288 break;
@@ -335,8 +344,9 @@
335 344 ),
336 345 'charts' => array(
337 346 'canvas' => $data,
338 347 ),
348 + 'language' => $this->get_language(),
339 349 'map_api_key' => get_option( 'visualizer-map-api-key' ),
340 350 'ajax' => array(
341 351 'url' => admin_url( 'admin-ajax.php' ),
342 352 'nonces' => array(
@@ -355,8 +365,11 @@
355 365 if ( filter_input( INPUT_GET, 'library', FILTER_VALIDATE_BOOLEAN ) ) {
356 366 $render->button = filter_input( INPUT_GET, 'action' ) == Visualizer_Plugin::ACTION_EDIT_CHART
357 367 ? esc_html__( 'Save Chart', 'visualizer' )
358 368 : esc_html__( 'Create Chart', 'visualizer' );
369 + if ( filter_input( INPUT_GET, 'action' ) == Visualizer_Plugin::ACTION_EDIT_CHART ) {
370 + $render->cancel_button = esc_html__( 'Cancel', 'visualizer' );
371 + }
359 372 } else {
360 373 $render->button = esc_attr__( 'Insert Chart', 'visualizer' );
361 374 }
362 375 if ( VISUALIZER_PRO ) {
@@ -424,20 +437,32 @@
424 437 *
425 438 * @access public
426 439 */
427 440 public function uploadData() {
441 + // if this is being called internally from pro and VISUALIZER_DO_NOT_DIE is set.
442 + // otherwise, assume this is a normal web request.
443 + $can_die = ! ( defined( 'VISUALIZER_DO_NOT_DIE' ) && VISUALIZER_DO_NOT_DIE );
444 +
428 445 // validate nonce
429 - // do not use filter_input as it does not work for phpunit test cases, use filter_var instead
430 446 if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( $_GET['nonce'] ) ) {
447 + if ( ! $can_die ) {
448 + return;
449 + }
431 450 status_header( 403 );
432 451 exit;
433 452 }
453 +
434 454 // check chart, if chart exists
455 + // do not use filter_input as it does not work for phpunit test cases, use filter_var instead
435 456 $chart_id = isset( $_GET['chart'] ) ? filter_var( $_GET['chart'], FILTER_VALIDATE_INT ) : '';
436 457 if ( ! $chart_id || ! ( $chart = get_post( $chart_id ) ) || $chart->post_type != Visualizer_Plugin::CPT_VISUALIZER ) {
458 + if ( ! $can_die ) {
459 + return;
460 + }
437 461 status_header( 400 );
438 462 exit;
439 463 }
464 +
440 465 if ( ! isset( $_POST['vz-import-time'] ) ) {
441 466 apply_filters( 'visualizer_pro_remove_schedule', $chart_id );
442 467 }
443 468
@@ -454,12 +479,10 @@
454 479 apply_filters( 'visualizer_pro_chart_schedule', $chart_id, $_POST['remote_data'], $_POST['vz-import-time'] );
455 480 }
456 481 } elseif ( isset( $_FILES['local_data'] ) && $_FILES['local_data']['error'] == 0 ) {
457 482 $source = new Visualizer_Source_Csv( $_FILES['local_data']['tmp_name'] );
458 - // Added by Ash/Upwork
459 483 } elseif ( isset( $_POST['chart_data'] ) && strlen( $_POST['chart_data'] ) > 0 ) {
460 484 $source = apply_filters( 'visualizer_pro_handle_chart_data', $_POST['chart_data'], '' );
461 - // Added by Ash/Upwork
462 485 } else {
463 486 $render->message = esc_html__( 'CSV file with chart data was not uploaded. Please, try again.', 'visualizer' );
464 487 }
465 488 if ( $source ) {
@@ -475,11 +498,12 @@
475 498 $render->message = esc_html__( 'CSV file is broken or invalid. Please, try again.', 'visualizer' );
476 499 }
477 500 }
478 501 $render->render();
479 - if ( ! ( defined( 'VISUALIZER_DO_NOT_DIE' ) && VISUALIZER_DO_NOT_DIE ) ) {
480 - defined( 'WP_TESTS_DOMAIN' ) ? wp_die() : exit();
502 + if ( ! $can_die ) {
503 + return;
481 504 }
505 + defined( 'WP_TESTS_DOMAIN' ) ? wp_die() : exit();
482 506 }
483 507
484 508 /**
485 509 * Clones the chart.
@@ -597,5 +621,6 @@
597 621 // Added by Ash/Upwork
598 622 $this->_addAction( 'admin_head', 'renderFlattrScript' );
599 623 wp_iframe( array( $render, 'render' ) );
600 624 }
625 +
601 626 }