PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.0
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.0
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/Admin.php +80 -347 3.10.13.4.0 View file →
@@ -53,19 +53,17 @@
53 53 parent::__construct( $plugin );
54 54 $this->_addAction( 'load-post.php', 'enqueueMediaScripts' );
55 55 $this->_addAction( 'load-post-new.php', 'enqueueMediaScripts' );
56 56 $this->_addAction( 'admin_footer', 'renderTemplates' );
57 - $this->_addAction( 'admin_enqueue_scripts', 'enqueueLibraryScripts', null, 0 );
57 + $this->_addAction( 'admin_enqueue_scripts', 'enqueueLibraryScripts', null, 8 );
58 58 $this->_addAction( 'admin_menu', 'registerAdminMenu' );
59 59 $this->_addFilter( 'media_view_strings', 'setupMediaViewStrings' );
60 60 $this->_addFilter( 'plugin_action_links', 'getPluginActionLinks', 10, 2 );
61 61 $this->_addFilter( 'plugin_row_meta', 'getPluginMetaLinks', 10, 2 );
62 62 $this->_addFilter( 'visualizer_logger_data', 'getLoggerData' );
63 + $this->_addFilter( 'visualizer_get_chart_counts', 'getChartCountsByTypeAndMeta' );
63 64 $this->_addFilter( 'visualizer_feedback_review_trigger', 'feedbackReviewTrigger' );
64 65
65 - // screen pagination
66 - $this->_addFilter( 'set-screen-option', 'setScreenOptions', 10, 3 );
67 -
68 66 // revision support.
69 67 $this->_addFilter( 'wp_revisions_to_keep', 'limitRevisions', null, 10, 2 );
70 68 $this->_addAction( '_wp_put_post_revision', 'addRevision', null, 10, 1 );
71 69 $this->_addAction( 'wp_restore_post_revision', 'restoreRevision', null, 10, 2 );
@@ -72,32 +70,10 @@
72 70
73 71 $this->_addAction( 'visualizer_chart_schedules_spl', 'addSplChartSchedules', null, 10, 3 );
74 72
75 73 $this->_addAction( 'admin_init', 'init' );
76 -
77 - $this->_addAction( 'visualizer_chart_languages', 'addMultilingualSupport' );
78 -
79 - if ( defined( 'TI_CYPRESS_TESTING' ) ) {
80 - $this->load_cypress_hooks();
81 - }
82 -
83 74 }
84 75
85 - /**
86 - * Define the hooks that are needed for cypress.
87 - *
88 - * @since 3.4.0
89 - * @access private
90 - */
91 - private function load_cypress_hooks() {
92 - // all charts should load on the same page without pagination.
93 - add_filter(
94 - 'visualizer_query_args', function( $args ) {
95 - $args['posts_per_page'] = 20;
96 - return $args;
97 - }, 10, 1
98 - );
99 - }
100 76
101 77 /**
102 78 * Add disabled `optgroup` schedules to the drop downs.
103 79 *
@@ -221,26 +197,12 @@
221 197 if ( current_user_can( 'edit_posts' ) && current_user_can( 'edit_pages' ) && 'true' == get_user_option( 'rich_editing' ) ) {
222 198 $this->_addFilter( 'mce_external_languages', 'add_tinymce_lang', 10, 1 );
223 199 $this->_addFilter( 'mce_external_plugins', 'tinymce_plugin', 10, 1 );
224 200 $this->_addFilter( 'mce_buttons', 'register_mce_button', 10, 1 );
225 - $this->_addFilter( 'tiny_mce_before_init', 'get_strings_for_block', 10, 1 );
226 201 }
227 202 }
228 203
229 204 /**
230 - * Add the strings required for the TinyMCE buttons for the classic block (not the classic editor).
231 - *
232 - * @since ?
233 - * @access friendly
234 - */
235 - function get_strings_for_block( $settings ) {
236 - $class = new Visualizer_Module_Language();
237 - $strings = $class->get_strings();
238 - $array = array( 'visualizer_tinymce_plugin' => json_encode( $strings ) );
239 - return array_merge( $settings, $array );
240 - }
241 -
242 - /**
243 205 * Load plugin translation for - TinyMCE API
244 206 *
245 207 * @access public
246 208 * @param array $arr The tinymce_lang array.
@@ -315,9 +277,9 @@
315 277
316 278 // Load all the assets for the different libraries we support.
317 279 $deps = array(
318 280 Visualizer_Render_Sidebar_Google::enqueue_assets( array( 'media-editor' ) ),
319 - Visualizer_Render_Sidebar_Type_DataTable_Tabular::enqueue_assets( array( 'media-editor' ) ),
281 + Visualizer_Render_Sidebar_Type_DataTable_DataTable::enqueue_assets( array( 'media-editor' ) ),
320 282 );
321 283
322 284 wp_enqueue_script( 'visualizer-media-model', VISUALIZER_ABSURL . 'js/media/model.js', $deps, Visualizer_Plugin::VERSION, true );
323 285 wp_enqueue_script( 'visualizer-media-collection', VISUALIZER_ABSURL . 'js/media/collection.js', array( 'visualizer-media-model' ), Visualizer_Plugin::VERSION, true );
@@ -366,9 +328,9 @@
366 328 'filters' => $chart_types,
367 329 'types' => array_keys( $chart_types ),
368 330 ),
369 331 'nonce' => wp_create_nonce(),
370 - 'buildurl' => esc_url( add_query_arg( 'action', Visualizer_Plugin::ACTION_CREATE_CHART, admin_url( 'admin-ajax.php' ) ) ),
332 + 'buildurl' => add_query_arg( 'action', Visualizer_Plugin::ACTION_CREATE_CHART, admin_url( 'admin-ajax.php' ) ),
371 333 );
372 334
373 335 return $strings;
374 336 }
@@ -390,71 +352,74 @@
390 352 'enabled' => true,
391 353 );
392 354 }
393 355
394 - $enabled = self::proFeaturesLocked();
395 -
396 356 $types = array_merge(
397 357 $additional,
398 358 array(
399 - 'tabular' => array(
359 + 'dataTable' => array(
400 360 'name' => esc_html__( 'Table', 'visualizer' ),
401 361 'enabled' => true,
402 - 'supports' => $enabled ? array( 'Google Charts', 'DataTable' ) : array( 'DataTable' ),
362 + 'supports' => array( 'DataTable' ),
403 363 ),
404 364 'pie' => array(
405 365 'name' => esc_html__( 'Pie/Donut', 'visualizer' ),
406 366 'enabled' => true,
407 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
367 + 'supports' => array( 'Google Charts', 'ChartJS' ),
408 368 ),
409 369 'line' => array(
410 370 'name' => esc_html__( 'Line', 'visualizer' ),
411 371 'enabled' => true,
412 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
372 + 'supports' => array( 'Google Charts', 'ChartJS' ),
413 373 ),
414 - 'bar' => array(
415 - 'name' => esc_html__( 'Bar', 'visualizer' ),
416 - 'enabled' => true,
417 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
418 - ),
419 374 'area' => array(
420 375 'name' => esc_html__( 'Area', 'visualizer' ),
421 - 'enabled' => $enabled,
376 + 'enabled' => true,
422 377 // in ChartJS, the fill option is used to make Line chart an area: https://www.chartjs.org/docs/latest/charts/area.html
423 378 'supports' => array( 'Google Charts' ),
424 379 ),
425 380 'geo' => array(
426 381 'name' => esc_html__( 'Geo', 'visualizer' ),
427 - 'enabled' => $enabled,
382 + 'enabled' => true,
428 383 'supports' => array( 'Google Charts' ),
429 384 ),
385 + 'bar' => array(
386 + 'name' => esc_html__( 'Bar', 'visualizer' ),
387 + 'enabled' => true,
388 + 'supports' => array( 'Google Charts', 'ChartJS' ),
389 + ),
430 390 'column' => array(
431 391 'name' => esc_html__( 'Column', 'visualizer' ),
432 - 'enabled' => $enabled,
392 + 'enabled' => true,
433 393 'supports' => array( 'Google Charts', 'ChartJS' ),
434 394 ),
435 395 'bubble' => array(
436 396 'name' => esc_html__( 'Bubble', 'visualizer' ),
437 - 'enabled' => $enabled,
397 + 'enabled' => true,
438 398 // chartjs' bubble is ugly looking (and it won't work off the default bubble.csv) so it is being excluded for the time being.
439 399 'supports' => array( 'Google Charts' ),
440 400 ),
441 401 'scatter' => array(
442 402 'name' => esc_html__( 'Scatter', 'visualizer' ),
443 - 'enabled' => $enabled,
403 + 'enabled' => true,
444 404 'supports' => array( 'Google Charts' ),
445 405 ),
446 406 'gauge' => array(
447 407 'name' => esc_html__( 'Gauge', 'visualizer' ),
448 - 'enabled' => $enabled,
408 + 'enabled' => true,
449 409 'supports' => array( 'Google Charts' ),
450 410 ),
451 411 'candlestick' => array(
452 412 'name' => esc_html__( 'Candlestick', 'visualizer' ),
453 - 'enabled' => $enabled,
413 + 'enabled' => true,
454 414 'supports' => array( 'Google Charts' ),
455 415 ),
456 416 // pro types
417 + 'table' => array(
418 + 'name' => esc_html__( 'Table (Deprecated)', 'visualizer' ),
419 + 'enabled' => false,
420 + 'supports' => array( 'Google Charts' ),
421 + ),
457 422 'timeline' => array(
458 423 'name' => esc_html__( 'Timeline', 'visualizer' ),
459 424 'enabled' => false,
460 425 'supports' => array( 'Google Charts', 'ChartJS' ),
@@ -523,8 +488,18 @@
523 488 switch ( $where ) {
524 489 case 'types':
525 490 // fall-through
526 491 case 'library':
492 + // if the user has a Google Table chart, show it as deprecated otherwise remove the option from the library.
493 + if ( ! self::hasChartType( 'table' ) ) {
494 + $deprecated[] = 'table';
495 + if ( $get2Darray ) {
496 + $types['dataTable'] = esc_html__( 'Table', 'visualizer' );
497 + } else {
498 + $types['dataTable']['name'] = esc_html__( 'Table', 'visualizer' );
499 + }
500 + }
501 +
527 502 // if a user has a Gauge/Candlestick chart, then let them keep using it.
528 503 if ( ! Visualizer_Module::is_pro() ) {
529 504 if ( ! self::hasChartType( 'gauge' ) ) {
530 505 if ( $get2Darray ) {
@@ -542,8 +517,18 @@
542 517 }
543 518 }
544 519 break;
545 520 default:
521 + // remove the option to create a Google Table chart.
522 + $deprecated[] = 'table';
523 +
524 + // rename the new table chart type.
525 + if ( $get2Darray ) {
526 + $types['dataTable'] = esc_html__( 'Table', 'visualizer' );
527 + } else {
528 + $types['dataTable']['name'] = esc_html__( 'Table', 'visualizer' );
529 + }
530 +
546 531 // if a user has a Gauge/Candlestick chart, then let them keep using it.
547 532 if ( ! Visualizer_Module::is_pro() ) {
548 533 if ( ! self::hasChartType( 'gauge' ) ) {
549 534 if ( $get2Darray ) {
@@ -610,9 +595,8 @@
610 595 VISUALIZER_ABSURL . 'js/library.js',
611 596 array(
612 597 'jquery',
613 598 'media-views',
614 - 'clipboard',
615 599 ),
616 600 Visualizer_Plugin::VERSION,
617 601 true
618 602 );
@@ -687,161 +671,12 @@
687 671 'edit_posts',
688 672 'viz-support',
689 673 array( $this, 'renderSupportPage' )
690 674 );
691 -
692 - if ( ! Visualizer_Module::is_pro() ) {
693 - add_submenu_page(
694 - Visualizer_Plugin::NAME,
695 - __( 'Get Visualizer Pro', 'visualizer' ),
696 - __( 'Get Visualizer Pro', 'visualizer' ),
697 - 'edit_posts',
698 - 'viz-get-pro',
699 - '__return_null'
700 - );
701 - add_action( 'admin_footer', array( $this, 'handleGetProSubMenu' ) );
702 - }
703 675 remove_submenu_page( Visualizer_Plugin::NAME, Visualizer_Plugin::NAME );
704 -
705 - add_action( "load-{$this->_libraryPage}", array( $this, 'addScreenOptions' ) );
706 676 }
707 677
708 678 /**
709 - * Handle get pro plugin submenu.
710 - */
711 - public function handleGetProSubMenu() {
712 - ?>
713 - <style type="text/css">
714 - #toplevel_page_visualizer ul.wp-submenu li.wp-first-item + li + li + li {
715 - background: #FF7E65;
716 - font-size: 14px;
717 - font-weight: 600;
718 - color: #fff;
719 - }
720 - #toplevel_page_visualizer ul.wp-submenu li.wp-first-item + li + li + li > a {
721 - color: #fff !important;
722 - }
723 - #toplevel_page_visualizer ul.wp-submenu li.wp-first-item + li + li + li > a:hover {
724 - box-shadow: inherit;
725 - }
726 - #toplevel_page_visualizer ul.wp-submenu li.wp-first-item + li + li + li + li {
727 - display: none;
728 - }
729 - </style>
730 - <script type="text/javascript">
731 - jQuery( document ).ready( function() {
732 - jQuery( '#toplevel_page_visualizer' ).on( 'click', 'li:not(.wp-submenu-head, .wp-first-item):eq(2)', function( e ) {
733 - e.preventDefault();
734 - window.open( '<?php echo tsdk_utmify( 'https://themeisle.com/plugins/visualizer-charts-and-graphs/upgrade/', 'toplevel' ); ?>', '_blank' );
735 - } );
736 - } );
737 - </script>
738 - <?php
739 - }
740 -
741 - /**
742 - * Adds the screen options for pagination.
743 - */
744 - function addScreenOptions() {
745 - $screen = get_current_screen();
746 -
747 - // bail if it's some other page.
748 - if ( ! is_object( $screen ) || $screen->id !== $this->_libraryPage ) {
749 - return;
750 - }
751 -
752 - $args = array(
753 - 'label' => __( 'Number of charts per page:', 'visualizer' ),
754 - 'default' => 6,
755 - 'option' => 'visualizer_library_per_page',
756 - );
757 - add_screen_option( 'per_page', $args );
758 - }
759 -
760 - /**
761 - * Returns the screen option for pagination.
762 - */
763 - function setScreenOptions( $status, $option, $value ) {
764 - if ( 'visualizer_library_per_page' === $option ) {
765 - return $value;
766 - }
767 - }
768 -
769 - /**
770 - * Adds the display filters to be used in the meta_query while displaying the charts.
771 - */
772 - private function getDisplayFilters( &$query_args ) {
773 - $query = array();
774 - global $sitepress;
775 - if ( Visualizer_Module::is_pro() && ( function_exists( 'icl_get_languages' ) && $sitepress instanceof \SitePress ) ) {
776 - $current_lang = icl_get_current_language();
777 - if ( in_array( $current_lang, array( 'all', icl_get_default_language() ), true ) ) {
778 - $query[] = array(
779 - 'key' => 'chart_lang',
780 - 'compare' => 'NOT EXISTS',
781 - );
782 - } else {
783 - $query[] = array(
784 - 'key' => 'chart_lang',
785 - 'value' => $current_lang,
786 - 'compare' => '=',
787 - );
788 - }
789 - }
790 -
791 - // add chart type filter to the query arguments
792 - $type = filter_input( INPUT_GET, 'type' );
793 - if ( $type && in_array( $type, Visualizer_Plugin::getChartTypes(), true ) ) {
794 - $query[] = array(
795 - 'key' => Visualizer_Plugin::CF_CHART_TYPE,
796 - 'value' => $type,
797 - 'compare' => '=',
798 - );
799 - }
800 -
801 - // add chart library filter to the query arguments
802 - $library = filter_input( INPUT_GET, 'library' );
803 - if ( $library ) {
804 - $query[] = array(
805 - 'key' => Visualizer_Plugin::CF_CHART_LIBRARY,
806 - 'value' => $library,
807 - 'compare' => '=',
808 - );
809 - }
810 -
811 - // add date filter to the query arguments
812 - $date = filter_input( INPUT_GET, 'date' );
813 - $possible = array_keys( Visualizer_Plugin::getSupportedDateFilter() );
814 - if ( $date && in_array( $date, $possible, true ) ) {
815 - $query_args['date_query'] = array(
816 - 'after' => "$date -1 day",
817 - 'inclusive' => true,
818 - );
819 - }
820 -
821 - // add source filter to the query arguments
822 - $source = filter_input( INPUT_GET, 'source' );
823 - if ( $source ) {
824 - $source = ucwords( $source );
825 - $source = "Visualizer_Source_{$source}";
826 - $query[] = array(
827 - 'key' => Visualizer_Plugin::CF_SOURCE,
828 - 'value' => $source,
829 - 'compare' => '=',
830 - );
831 - }
832 -
833 - $query_args['meta_query'] = $query;
834 -
835 - $orderby = filter_input( INPUT_GET, 'orderby' );
836 - $order = filter_input( INPUT_GET, 'order' );
837 - if ( $orderby ) {
838 - $query_args['order_by'] = $orderby;
839 - }
840 - $query_args['order'] = empty( $order ) ? 'desc' : $order;
841 - }
842 -
843 - /**
844 679 * Get the instance of WP_Query that fetches the charts as per the given criteria.
845 680 */
846 681 private function getQuery() {
847 682 static $q;
@@ -860,34 +695,29 @@
860 695 'default' => 1,
861 696 ),
862 697 )
863 698 );
864 -
865 - $per_page = 6;
866 - $screen = get_current_screen();
867 - if ( $screen ) {
868 - // retrieve the per_page option
869 - $screen_option = $screen->get_option( 'per_page', 'option' );
870 - // retrieve the value stored for the current user
871 - $user = get_current_user_id();
872 - $per_page = get_user_meta( $user, $screen_option, true );
873 - if ( empty( $per_page ) || $per_page < 1 ) {
874 - // nothing set, get the default value
875 - $per_page = $screen->get_option( 'per_page', 'default' );
876 - }
877 - }
878 -
879 699 // the initial query arguments to fetch charts
880 700 $query_args = array(
881 701 'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
882 - 'posts_per_page' => $per_page,
702 + 'posts_per_page' => 6,
883 703 'paged' => $page,
884 704 );
885 -
886 - $this->getDisplayFilters( $query_args );
887 -
705 + // add chart type filter to the query arguments
706 + $filter = filter_input( INPUT_GET, 'type' );
707 + if ( $filter && in_array( $filter, Visualizer_Plugin::getChartTypes(), true ) ) {
708 + $query_args['meta_query'] = array(
709 + array(
710 + 'key' => Visualizer_Plugin::CF_CHART_TYPE,
711 + 'value' => $filter,
712 + 'compare' => '=',
713 + ),
714 + );
715 + } else {
716 + $filter = 'all';
717 + }
888 718 // Added by Ash/Upwork
889 - $filterByMeta = ! empty( $_GET['s'] ) ? sanitize_text_field( wp_unslash( $_GET['s'] ) ) : null; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
719 + $filterByMeta = filter_input( INPUT_GET, 's', FILTER_SANITIZE_STRING );
890 720 if ( $filterByMeta ) {
891 721 $query = array(
892 722 'key' => Visualizer_Plugin::CF_SETTINGS,
893 723 'value' => $filterByMeta,
@@ -896,9 +726,9 @@
896 726 $meta = isset( $query_args['meta_query'] ) ? $query_args['meta_query'] : array();
897 727 $meta[] = $query;
898 728 $query_args['meta_query'] = $meta;
899 729 }
900 - $q = new WP_Query( apply_filters( 'visualizer_query_args', $query_args ) );
730 + $q = new WP_Query( $query_args );
901 731 return $q;
902 732 }
903 733
904 734 /**
@@ -965,22 +795,10 @@
965 795 unset( $settings['height'], $settings['width'], $settings['chartArea'] );
966 796 }
967 797
968 798 $series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
969 - $data = self::get_chart_data( $chart, $type );
799 + $data = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_DATA, unserialize( html_entity_decode( $chart->post_content ) ), $chart->ID, $type );
970 800
971 - // Set default setting series when add manual chart data - Only during first creation.
972 - if ( isset( $settings['series'] ) && ! empty( $series ) ) {
973 - $count_series = count( $series ) - count( $settings['series'] );
974 - if ( $count_series > 1 ) {
975 - $clone_last_series = end( $settings['series'] );
976 - $clone_last_series = array_fill_keys( array_keys( $clone_last_series ), '' );
977 - foreach ( range( 1, $count_series ) as $item ) {
978 - $settings['series'][] = $clone_last_series;
979 - }
980 - }
981 - }
982 -
983 801 $library = $this->load_chart_type( $chart->ID );
984 802
985 803 $id = 'visualizer-' . $chart->ID;
986 804 $arguments = $this->get_inline_custom_css( $id, $settings );
@@ -988,15 +806,8 @@
988 806 $css .= $arguments[0];
989 807 $settings = $arguments[1];
990 808 }
991 809
992 - if ( isset( $settings['controls']['ui']['labelStacking'] ) ) {
993 - unset( $settings['controls']['ui']['labelStacking'] );
994 - }
995 - if ( isset( $settings['controls']['ui']['orientation'] ) ) {
996 - unset( $settings['controls']['ui']['orientation'] );
997 - }
998 -
999 810 // add chart to the array
1000 811 $charts[ $id ] = array(
1001 812 'id' => $chart->ID,
1002 813 'type' => $type,
@@ -1015,38 +826,30 @@
1015 826 'language' => $this->get_language(),
1016 827 'map_api_key' => get_option( 'visualizer-map-api-key' ),
1017 828 'charts' => $charts,
1018 829 'urls' => array(
1019 - 'base' => esc_url( add_query_arg( array( 'vpage' => false, 'vaction' => false ) ) ),
1020 - 'create' => esc_url(
1021 - add_query_arg(
1022 - array(
1023 - 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
1024 - 'library' => 'yes',
1025 - 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
1026 - 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
1027 - 'vaction' => false,
1028 - ),
1029 - $ajaxurl
1030 - )
830 + 'base' => add_query_arg( array( 'vpage' => false, 'vaction' => false ) ),
831 + 'create' => add_query_arg(
832 + array(
833 + 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
834 + 'library' => 'yes',
835 + 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
836 + 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
837 + 'vaction' => false,
838 + ),
839 + $ajaxurl
1031 840 ),
1032 - 'edit' => esc_url(
1033 - add_query_arg(
1034 - array(
1035 - 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
1036 - 'library' => 'yes',
1037 - 'vaction' => false,
1038 - ),
1039 - $ajaxurl
1040 - )
841 + 'edit' => add_query_arg(
842 + array(
843 + 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
844 + 'library' => 'yes',
845 + 'vaction' => false,
846 + ),
847 + $ajaxurl
1041 848 ),
1042 849 ),
1043 850 'page_type' => 'library',
1044 851 'is_front' => false,
1045 - 'i10n' => array(
1046 - 'copied' => __( 'The shortcode has been copied to your clipboard. Hit Ctrl-V/Cmd-V to paste it.', 'visualizer' ),
1047 - 'conflict' => __( 'We have detected a potential conflict with another component that prevents Visualizer from functioning properly. Please disable any of the following components if they are activated on your instance: Modern Events Calendar plugin, Acronix plugin. In case the aforementioned components are not activated or you continue to see this error message, please disable all other plugins and enable them one by one to find out the component that is causing the conflict.', 'visualizer' ),
1048 - ),
1049 852 )
1050 853 );
1051 854 // render library page
1052 855 $render = new Visualizer_Render_Library();
@@ -1113,9 +916,9 @@
1113 916 esc_html__( 'Docs', 'visualizer' )
1114 917 );
1115 918 // flattr link
1116 919 $plugin_meta[] = sprintf(
1117 - '<a style="color:red" href="' . tsdk_utmify( Visualizer_Plugin::PRO_TEASER_URL, 'pluginrow' ) . '" target="_blank">%s</a>',
920 + '<a style="color:red" href="' . Visualizer_Plugin::PRO_TEASER_URL . '" target="_blank">%s</a>',
1118 921 esc_html__( 'Pro Addon', 'visualizer' )
1119 922 );
1120 923 }
1121 924
@@ -1121,75 +924,5 @@
1121 924
1122 925 return $plugin_meta;
1123 926 }
1124 927
1125 - /**
1126 - * If check is existing user.
1127 - *
1128 - * @return bool Default false
1129 - */
1130 - public static function proFeaturesLocked() {
1131 - if ( Visualizer_Module::is_pro() ) {
1132 - return true;
1133 - }
1134 - return 'yes' === get_option( 'visualizer-new-user', 'yes' ) ? false : true;
1135 - }
1136 -
1137 - /**
1138 - * Multilingual Support.
1139 - *
1140 - * @param int $chart_id Chart ID.
1141 - * @return bool Default false
1142 - */
1143 - public function addMultilingualSupport( $chart_id ) {
1144 - global $sitepress;
1145 - if ( Visualizer_Module::is_pro() ) {
1146 - return;
1147 - }
1148 - if ( function_exists( 'icl_get_languages' ) && $sitepress instanceof \SitePress ) {
1149 - $language = icl_get_languages();
1150 - $current_lang = icl_get_current_language();
1151 - $default_lang = icl_get_default_language();
1152 - $post_info = wpml_get_language_information( null, $chart_id );
1153 - $translations = array();
1154 - if ( ! empty( $post_info ) && ( $default_lang === $post_info['language_code'] ) ) {
1155 - $trid = $sitepress->get_element_trid( $chart_id, 'post_' . Visualizer_Plugin::CPT_VISUALIZER );
1156 - $translations = $sitepress->get_element_translations( $trid );
1157 - }
1158 - if ( empty( $translations ) ) {
1159 - return;
1160 - }
1161 - ?>
1162 - <hr><div class="visualizer-languages-list only-pro">
1163 - <?php
1164 - foreach ( $language as $lang ) {
1165 - $lang_code = $lang['code'];
1166 - if ( $current_lang !== $lang_code ) {
1167 - ?>
1168 - <a href="javascript:;">
1169 - <img src="<?php echo esc_url( $lang['country_flag_url'] ); ?>" alt="<?php echo esc_attr( $lang['translated_name'] ); ?>">
1170 - </a>
1171 - <?php
1172 - }
1173 - }
1174 - ?>
1175 - <a href="<?php echo tsdk_utmify( Visualizer_Plugin::PRO_TEASER_URL, 'wpml-support', 'visualizer_render_char' ); ?>"target="_blank"><?php esc_html_e( 'Upgrade to PRO to active this translation for charts', 'visualizer' ); ?></a>
1176 - </div>
1177 - <?php
1178 - }
1179 - }
1180 -
1181 - /**
1182 - * Check chart is enabled or not.
1183 - *
1184 - * @param string $type Chart ID.
1185 - *
1186 - * @return bool Default false
1187 - */
1188 - public static function checkChartStatus( $type ) {
1189 - $types = self::_getChartTypesLocalized( false, false, false, true );
1190 - if ( isset( $types[ $type ] ) ) {
1191 - return ! empty( $types[ $type ]['enabled'] );
1192 - }
1193 - return false;
1194 - }
1195 928 }