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 -337 3.10.33.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,151 +671,12 @@
687 671 'edit_posts',
688 672 'viz-support',
689 673 array( $this, 'renderSupportPage' )
690 674 );
691 -
692 675 remove_submenu_page( Visualizer_Plugin::NAME, Visualizer_Plugin::NAME );
693 -
694 - add_action( "load-{$this->_libraryPage}", array( $this, 'addScreenOptions' ) );
695 - add_action( 'admin_footer', array( $this, 'handleGetProSubMenu' ) );
696 676 }
697 677
698 678 /**
699 - * Handle get pro plugin submenu.
700 - */
701 - public function handleGetProSubMenu() {
702 - if ( ! Visualizer_Module::is_pro() ) {
703 - ?>
704 - <style type="text/css">
705 - #toplevel_page_visualizer ul.wp-submenu li:last-child {
706 - background: #FF7E65;
707 - font-size: 14px;
708 - font-weight: 600;
709 - color: #fff;
710 - }
711 - #toplevel_page_visualizer ul.wp-submenu li:last-child > a {
712 - color: #fff !important;
713 - }
714 - #toplevel_page_visualizer ul.wp-submenu li:last-child > a:hover {
715 - box-shadow: inherit;
716 - }
717 - </style>
718 - <?php
719 - if ( get_option( 'visualizer_fresh_install', false ) ) {
720 - ?>
721 - <style type="text/css">
722 - #toplevel_page_visualizer ul.wp-submenu li.wp-first-item + li + li + li {
723 - display: none;
724 - }
725 - </style>
726 - <?php
727 - }
728 - }
729 - }
730 -
731 - /**
732 - * Adds the screen options for pagination.
733 - */
734 - function addScreenOptions() {
735 - $screen = get_current_screen();
736 -
737 - // bail if it's some other page.
738 - if ( ! is_object( $screen ) || $screen->id !== $this->_libraryPage ) {
739 - return;
740 - }
741 -
742 - $args = array(
743 - 'label' => __( 'Number of charts per page:', 'visualizer' ),
744 - 'default' => 6,
745 - 'option' => 'visualizer_library_per_page',
746 - );
747 - add_screen_option( 'per_page', $args );
748 - }
749 -
750 - /**
751 - * Returns the screen option for pagination.
752 - */
753 - function setScreenOptions( $status, $option, $value ) {
754 - if ( 'visualizer_library_per_page' === $option ) {
755 - return $value;
756 - }
757 - }
758 -
759 - /**
760 - * Adds the display filters to be used in the meta_query while displaying the charts.
761 - */
762 - private function getDisplayFilters( &$query_args ) {
763 - $query = array();
764 - global $sitepress;
765 - if ( Visualizer_Module::is_pro() && ( function_exists( 'icl_get_languages' ) && $sitepress instanceof \SitePress ) ) {
766 - $current_lang = icl_get_current_language();
767 - if ( in_array( $current_lang, array( 'all', icl_get_default_language() ), true ) ) {
768 - $query[] = array(
769 - 'key' => 'chart_lang',
770 - 'compare' => 'NOT EXISTS',
771 - );
772 - } else {
773 - $query[] = array(
774 - 'key' => 'chart_lang',
775 - 'value' => $current_lang,
776 - 'compare' => '=',
777 - );
778 - }
779 - }
780 -
781 - // add chart type filter to the query arguments
782 - $type = filter_input( INPUT_GET, 'type' );
783 - if ( $type && in_array( $type, Visualizer_Plugin::getChartTypes(), true ) ) {
784 - $query[] = array(
785 - 'key' => Visualizer_Plugin::CF_CHART_TYPE,
786 - 'value' => $type,
787 - 'compare' => '=',
788 - );
789 - }
790 -
791 - // add chart library filter to the query arguments
792 - $library = filter_input( INPUT_GET, 'library' );
793 - if ( $library ) {
794 - $query[] = array(
795 - 'key' => Visualizer_Plugin::CF_CHART_LIBRARY,
796 - 'value' => $library,
797 - 'compare' => '=',
798 - );
799 - }
800 -
801 - // add date filter to the query arguments
802 - $date = filter_input( INPUT_GET, 'date' );
803 - $possible = array_keys( Visualizer_Plugin::getSupportedDateFilter() );
804 - if ( $date && in_array( $date, $possible, true ) ) {
805 - $query_args['date_query'] = array(
806 - 'after' => "$date -1 day",
807 - 'inclusive' => true,
808 - );
809 - }
810 -
811 - // add source filter to the query arguments
812 - $source = filter_input( INPUT_GET, 'source' );
813 - if ( $source ) {
814 - $source = ucwords( $source );
815 - $source = "Visualizer_Source_{$source}";
816 - $query[] = array(
817 - 'key' => Visualizer_Plugin::CF_SOURCE,
818 - 'value' => $source,
819 - 'compare' => '=',
820 - );
821 - }
822 -
823 - $query_args['meta_query'] = $query;
824 -
825 - $orderby = filter_input( INPUT_GET, 'orderby' );
826 - $order = filter_input( INPUT_GET, 'order' );
827 - if ( $orderby ) {
828 - $query_args['order_by'] = $orderby;
829 - }
830 - $query_args['order'] = empty( $order ) ? 'desc' : $order;
831 - }
832 -
833 - /**
834 679 * Get the instance of WP_Query that fetches the charts as per the given criteria.
835 680 */
836 681 private function getQuery() {
837 682 static $q;
@@ -850,34 +695,29 @@
850 695 'default' => 1,
851 696 ),
852 697 )
853 698 );
854 -
855 - $per_page = 6;
856 - $screen = get_current_screen();
857 - if ( $screen ) {
858 - // retrieve the per_page option
859 - $screen_option = $screen->get_option( 'per_page', 'option' );
860 - // retrieve the value stored for the current user
861 - $user = get_current_user_id();
862 - $per_page = get_user_meta( $user, $screen_option, true );
863 - if ( empty( $per_page ) || $per_page < 1 ) {
864 - // nothing set, get the default value
865 - $per_page = $screen->get_option( 'per_page', 'default' );
866 - }
867 - }
868 -
869 699 // the initial query arguments to fetch charts
870 700 $query_args = array(
871 701 'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
872 - 'posts_per_page' => $per_page,
702 + 'posts_per_page' => 6,
873 703 'paged' => $page,
874 704 );
875 -
876 - $this->getDisplayFilters( $query_args );
877 -
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 + }
878 718 // Added by Ash/Upwork
879 - $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 );
880 720 if ( $filterByMeta ) {
881 721 $query = array(
882 722 'key' => Visualizer_Plugin::CF_SETTINGS,
883 723 'value' => $filterByMeta,
@@ -886,9 +726,9 @@
886 726 $meta = isset( $query_args['meta_query'] ) ? $query_args['meta_query'] : array();
887 727 $meta[] = $query;
888 728 $query_args['meta_query'] = $meta;
889 729 }
890 - $q = new WP_Query( apply_filters( 'visualizer_query_args', $query_args ) );
730 + $q = new WP_Query( $query_args );
891 731 return $q;
892 732 }
893 733
894 734 /**
@@ -955,22 +795,10 @@
955 795 unset( $settings['height'], $settings['width'], $settings['chartArea'] );
956 796 }
957 797
958 798 $series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
959 - $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 );
960 800
961 - // Set default setting series when add manual chart data - Only during first creation.
962 - if ( isset( $settings['series'] ) && ! empty( $series ) ) {
963 - $count_series = count( $series ) - count( $settings['series'] );
964 - if ( $count_series > 1 ) {
965 - $clone_last_series = end( $settings['series'] );
966 - $clone_last_series = array_fill_keys( array_keys( $clone_last_series ), '' );
967 - foreach ( range( 1, $count_series ) as $item ) {
968 - $settings['series'][] = $clone_last_series;
969 - }
970 - }
971 - }
972 -
973 801 $library = $this->load_chart_type( $chart->ID );
974 802
975 803 $id = 'visualizer-' . $chart->ID;
976 804 $arguments = $this->get_inline_custom_css( $id, $settings );
@@ -978,15 +806,8 @@
978 806 $css .= $arguments[0];
979 807 $settings = $arguments[1];
980 808 }
981 809
982 - if ( isset( $settings['controls']['ui']['labelStacking'] ) ) {
983 - unset( $settings['controls']['ui']['labelStacking'] );
984 - }
985 - if ( isset( $settings['controls']['ui']['orientation'] ) ) {
986 - unset( $settings['controls']['ui']['orientation'] );
987 - }
988 -
989 810 // add chart to the array
990 811 $charts[ $id ] = array(
991 812 'id' => $chart->ID,
992 813 'type' => $type,
@@ -1005,38 +826,30 @@
1005 826 'language' => $this->get_language(),
1006 827 'map_api_key' => get_option( 'visualizer-map-api-key' ),
1007 828 'charts' => $charts,
1008 829 'urls' => array(
1009 - 'base' => esc_url( add_query_arg( array( 'vpage' => false, 'vaction' => false ) ) ),
1010 - 'create' => esc_url(
1011 - add_query_arg(
1012 - array(
1013 - 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
1014 - 'library' => 'yes',
1015 - 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
1016 - 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
1017 - 'vaction' => false,
1018 - ),
1019 - $ajaxurl
1020 - )
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
1021 840 ),
1022 - 'edit' => esc_url(
1023 - add_query_arg(
1024 - array(
1025 - 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
1026 - 'library' => 'yes',
1027 - 'vaction' => false,
1028 - ),
1029 - $ajaxurl
1030 - )
841 + 'edit' => add_query_arg(
842 + array(
843 + 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
844 + 'library' => 'yes',
845 + 'vaction' => false,
846 + ),
847 + $ajaxurl
1031 848 ),
1032 849 ),
1033 850 'page_type' => 'library',
1034 851 'is_front' => false,
1035 - 'i10n' => array(
1036 - 'copied' => __( 'The shortcode has been copied to your clipboard. Hit Ctrl-V/Cmd-V to paste it.', 'visualizer' ),
1037 - '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' ),
1038 - ),
1039 852 )
1040 853 );
1041 854 // render library page
1042 855 $render = new Visualizer_Render_Library();
@@ -1103,9 +916,9 @@
1103 916 esc_html__( 'Docs', 'visualizer' )
1104 917 );
1105 918 // flattr link
1106 919 $plugin_meta[] = sprintf(
1107 - '<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>',
1108 921 esc_html__( 'Pro Addon', 'visualizer' )
1109 922 );
1110 923 }
1111 924
@@ -1111,75 +924,5 @@
1111 924
1112 925 return $plugin_meta;
1113 926 }
1114 927
1115 - /**
1116 - * If check is existing user.
1117 - *
1118 - * @return bool Default false
1119 - */
1120 - public static function proFeaturesLocked() {
1121 - if ( Visualizer_Module::is_pro() ) {
1122 - return true;
1123 - }
1124 - return 'yes' === get_option( 'visualizer-new-user', 'yes' ) ? false : true;
1125 - }
1126 -
1127 - /**
1128 - * Multilingual Support.
1129 - *
1130 - * @param int $chart_id Chart ID.
1131 - * @return bool Default false
1132 - */
1133 - public function addMultilingualSupport( $chart_id ) {
1134 - global $sitepress;
1135 - if ( Visualizer_Module::is_pro() ) {
1136 - return;
1137 - }
1138 - if ( function_exists( 'icl_get_languages' ) && $sitepress instanceof \SitePress ) {
1139 - $language = icl_get_languages();
1140 - $current_lang = icl_get_current_language();
1141 - $default_lang = icl_get_default_language();
1142 - $post_info = wpml_get_language_information( null, $chart_id );
1143 - $translations = array();
1144 - if ( ! empty( $post_info ) && ( $default_lang === $post_info['language_code'] ) ) {
1145 - $trid = $sitepress->get_element_trid( $chart_id, 'post_' . Visualizer_Plugin::CPT_VISUALIZER );
1146 - $translations = $sitepress->get_element_translations( $trid );
1147 - }
1148 - if ( empty( $translations ) ) {
1149 - return;
1150 - }
1151 - ?>
1152 - <hr><div class="visualizer-languages-list only-pro">
1153 - <?php
1154 - foreach ( $language as $lang ) {
1155 - $lang_code = $lang['code'];
1156 - if ( $current_lang !== $lang_code ) {
1157 - ?>
1158 - <a href="javascript:;">
1159 - <img src="<?php echo esc_url( $lang['country_flag_url'] ); ?>" alt="<?php echo esc_attr( $lang['translated_name'] ); ?>">
1160 - </a>
1161 - <?php
1162 - }
1163 - }
1164 - ?>
1165 - <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>
1166 - </div>
1167 - <?php
1168 - }
1169 - }
1170 -
1171 - /**
1172 - * Check chart is enabled or not.
1173 - *
1174 - * @param string $type Chart ID.
1175 - *
1176 - * @return bool Default false
1177 - */
1178 - public static function checkChartStatus( $type ) {
1179 - $types = self::_getChartTypesLocalized( false, false, false, true );
1180 - if ( isset( $types[ $type ] ) ) {
1181 - return ! empty( $types[ $type ]['enabled'] );
1182 - }
1183 - return false;
1184 - }
1185 928 }