PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.1
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.1
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 +82 -400 3.10.123.4.1 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 *
@@ -315,9 +291,9 @@
315 291
316 292 // Load all the assets for the different libraries we support.
317 293 $deps = array(
318 294 Visualizer_Render_Sidebar_Google::enqueue_assets( array( 'media-editor' ) ),
319 - Visualizer_Render_Sidebar_Type_DataTable_Tabular::enqueue_assets( array( 'media-editor' ) ),
295 + Visualizer_Render_Sidebar_Type_DataTable_DataTable::enqueue_assets( array( 'media-editor' ) ),
320 296 );
321 297
322 298 wp_enqueue_script( 'visualizer-media-model', VISUALIZER_ABSURL . 'js/media/model.js', $deps, Visualizer_Plugin::VERSION, true );
323 299 wp_enqueue_script( 'visualizer-media-collection', VISUALIZER_ABSURL . 'js/media/collection.js', array( 'visualizer-media-model' ), Visualizer_Plugin::VERSION, true );
@@ -366,9 +342,9 @@
366 342 'filters' => $chart_types,
367 343 'types' => array_keys( $chart_types ),
368 344 ),
369 345 'nonce' => wp_create_nonce(),
370 - 'buildurl' => esc_url( add_query_arg( 'action', Visualizer_Plugin::ACTION_CREATE_CHART, admin_url( 'admin-ajax.php' ) ) ),
346 + 'buildurl' => add_query_arg( 'action', Visualizer_Plugin::ACTION_CREATE_CHART, admin_url( 'admin-ajax.php' ) ),
371 347 );
372 348
373 349 return $strings;
374 350 }
@@ -390,71 +366,74 @@
390 366 'enabled' => true,
391 367 );
392 368 }
393 369
394 - $enabled = self::proFeaturesLocked();
395 -
396 370 $types = array_merge(
397 371 $additional,
398 372 array(
399 - 'tabular' => array(
373 + 'dataTable' => array(
400 374 'name' => esc_html__( 'Table', 'visualizer' ),
401 375 'enabled' => true,
402 - 'supports' => $enabled ? array( 'Google Charts', 'DataTable' ) : array( 'DataTable' ),
376 + 'supports' => array( 'DataTable' ),
403 377 ),
404 378 'pie' => array(
405 379 'name' => esc_html__( 'Pie/Donut', 'visualizer' ),
406 380 'enabled' => true,
407 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
381 + 'supports' => array( 'Google Charts', 'ChartJS' ),
408 382 ),
409 383 'line' => array(
410 384 'name' => esc_html__( 'Line', 'visualizer' ),
411 385 'enabled' => true,
412 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
386 + 'supports' => array( 'Google Charts', 'ChartJS' ),
413 387 ),
414 - 'bar' => array(
415 - 'name' => esc_html__( 'Bar', 'visualizer' ),
416 - 'enabled' => true,
417 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
418 - ),
419 388 'area' => array(
420 389 'name' => esc_html__( 'Area', 'visualizer' ),
421 - 'enabled' => $enabled,
390 + 'enabled' => true,
422 391 // in ChartJS, the fill option is used to make Line chart an area: https://www.chartjs.org/docs/latest/charts/area.html
423 392 'supports' => array( 'Google Charts' ),
424 393 ),
425 394 'geo' => array(
426 395 'name' => esc_html__( 'Geo', 'visualizer' ),
427 - 'enabled' => $enabled,
396 + 'enabled' => true,
428 397 'supports' => array( 'Google Charts' ),
429 398 ),
399 + 'bar' => array(
400 + 'name' => esc_html__( 'Bar', 'visualizer' ),
401 + 'enabled' => true,
402 + 'supports' => array( 'Google Charts', 'ChartJS' ),
403 + ),
430 404 'column' => array(
431 405 'name' => esc_html__( 'Column', 'visualizer' ),
432 - 'enabled' => $enabled,
406 + 'enabled' => true,
433 407 'supports' => array( 'Google Charts', 'ChartJS' ),
434 408 ),
435 409 'bubble' => array(
436 410 'name' => esc_html__( 'Bubble', 'visualizer' ),
437 - 'enabled' => $enabled,
411 + 'enabled' => true,
438 412 // 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 413 'supports' => array( 'Google Charts' ),
440 414 ),
441 415 'scatter' => array(
442 416 'name' => esc_html__( 'Scatter', 'visualizer' ),
443 - 'enabled' => $enabled,
417 + 'enabled' => true,
444 418 'supports' => array( 'Google Charts' ),
445 419 ),
446 420 'gauge' => array(
447 421 'name' => esc_html__( 'Gauge', 'visualizer' ),
448 - 'enabled' => $enabled,
422 + 'enabled' => true,
449 423 'supports' => array( 'Google Charts' ),
450 424 ),
451 425 'candlestick' => array(
452 426 'name' => esc_html__( 'Candlestick', 'visualizer' ),
453 - 'enabled' => $enabled,
427 + 'enabled' => true,
454 428 'supports' => array( 'Google Charts' ),
455 429 ),
456 430 // pro types
431 + 'table' => array(
432 + 'name' => esc_html__( 'Table (Deprecated)', 'visualizer' ),
433 + 'enabled' => false,
434 + 'supports' => array( 'Google Charts' ),
435 + ),
457 436 'timeline' => array(
458 437 'name' => esc_html__( 'Timeline', 'visualizer' ),
459 438 'enabled' => false,
460 439 'supports' => array( 'Google Charts', 'ChartJS' ),
@@ -523,8 +502,18 @@
523 502 switch ( $where ) {
524 503 case 'types':
525 504 // fall-through
526 505 case 'library':
506 + // if the user has a Google Table chart, show it as deprecated otherwise remove the option from the library.
507 + if ( ! self::hasChartType( 'table' ) ) {
508 + $deprecated[] = 'table';
509 + if ( $get2Darray ) {
510 + $types['dataTable'] = esc_html__( 'Table', 'visualizer' );
511 + } else {
512 + $types['dataTable']['name'] = esc_html__( 'Table', 'visualizer' );
513 + }
514 + }
515 +
527 516 // if a user has a Gauge/Candlestick chart, then let them keep using it.
528 517 if ( ! Visualizer_Module::is_pro() ) {
529 518 if ( ! self::hasChartType( 'gauge' ) ) {
530 519 if ( $get2Darray ) {
@@ -542,8 +531,18 @@
542 531 }
543 532 }
544 533 break;
545 534 default:
535 + // remove the option to create a Google Table chart.
536 + $deprecated[] = 'table';
537 +
538 + // rename the new table chart type.
539 + if ( $get2Darray ) {
540 + $types['dataTable'] = esc_html__( 'Table', 'visualizer' );
541 + } else {
542 + $types['dataTable']['name'] = esc_html__( 'Table', 'visualizer' );
543 + }
544 +
546 545 // if a user has a Gauge/Candlestick chart, then let them keep using it.
547 546 if ( ! Visualizer_Module::is_pro() ) {
548 547 if ( ! self::hasChartType( 'gauge' ) ) {
549 548 if ( $get2Darray ) {
@@ -610,9 +609,8 @@
610 609 VISUALIZER_ABSURL . 'js/library.js',
611 610 array(
612 611 'jquery',
613 612 'media-views',
614 - 'clipboard',
615 613 ),
616 614 Visualizer_Plugin::VERSION,
617 615 true
618 616 );
@@ -670,9 +668,9 @@
670 668 Visualizer_Plugin::NAME,
671 669 __( 'Chart Library', 'visualizer' ),
672 670 __( 'Chart Library', 'visualizer' ),
673 671 'edit_posts',
674 - 'admin.php?page=' . Visualizer_Plugin::NAME
672 + admin_url( 'admin.php?page=' . Visualizer_Plugin::NAME )
675 673 );
676 674 add_submenu_page(
677 675 Visualizer_Plugin::NAME,
678 676 __( 'Add New Chart', 'visualizer' ),
@@ -677,9 +675,9 @@
677 675 Visualizer_Plugin::NAME,
678 676 __( 'Add New Chart', 'visualizer' ),
679 677 __( 'Add New Chart', 'visualizer' ),
680 678 'edit_posts',
681 - 'admin.php?page=' . Visualizer_Plugin::NAME . '&vaction=addnew'
679 + admin_url( 'admin.php?page=' . Visualizer_Plugin::NAME . '&vaction=addnew' )
682 680 );
683 681 add_submenu_page(
684 682 Visualizer_Plugin::NAME,
685 683 __( 'Support', 'visualizer' ),
@@ -687,151 +685,12 @@
687 685 'edit_posts',
688 686 'viz-support',
689 687 array( $this, 'renderSupportPage' )
690 688 );
691 -
692 689 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 690 }
697 691
698 692 /**
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 693 * Get the instance of WP_Query that fetches the charts as per the given criteria.
835 694 */
836 695 private function getQuery() {
837 696 static $q;
@@ -850,34 +709,29 @@
850 709 'default' => 1,
851 710 ),
852 711 )
853 712 );
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 713 // the initial query arguments to fetch charts
870 714 $query_args = array(
871 715 'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
872 - 'posts_per_page' => $per_page,
716 + 'posts_per_page' => 6,
873 717 'paged' => $page,
874 718 );
875 -
876 - $this->getDisplayFilters( $query_args );
877 -
719 + // add chart type filter to the query arguments
720 + $filter = filter_input( INPUT_GET, 'type' );
721 + if ( $filter && in_array( $filter, Visualizer_Plugin::getChartTypes(), true ) ) {
722 + $query_args['meta_query'] = array(
723 + array(
724 + 'key' => Visualizer_Plugin::CF_CHART_TYPE,
725 + 'value' => $filter,
726 + 'compare' => '=',
727 + ),
728 + );
729 + } else {
730 + $filter = 'all';
731 + }
878 732 // Added by Ash/Upwork
879 - $filterByMeta = ! empty( $_GET['s'] ) ? sanitize_text_field( wp_unslash( $_GET['s'] ) ) : null; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
733 + $filterByMeta = filter_input( INPUT_GET, 's', FILTER_SANITIZE_STRING );
880 734 if ( $filterByMeta ) {
881 735 $query = array(
882 736 'key' => Visualizer_Plugin::CF_SETTINGS,
883 737 'value' => $filterByMeta,
@@ -886,9 +740,9 @@
886 740 $meta = isset( $query_args['meta_query'] ) ? $query_args['meta_query'] : array();
887 741 $meta[] = $query;
888 742 $query_args['meta_query'] = $meta;
889 743 }
890 - $q = new WP_Query( apply_filters( 'visualizer_query_args', $query_args ) );
744 + $q = new WP_Query( $query_args );
891 745 return $q;
892 746 }
893 747
894 748 /**
@@ -899,9 +753,8 @@
899 753 * @access public
900 754 */
901 755 public function renderSupportPage() {
902 756 wp_enqueue_style( 'visualizer-upsell', VISUALIZER_ABSURL . 'css/upsell.css', array(), Visualizer_Plugin::VERSION );
903 - $this->load_survey();
904 757 include_once VISUALIZER_ABSPATH . '/templates/support.php';
905 758 }
906 759
907 760 /**
@@ -956,22 +809,10 @@
956 809 unset( $settings['height'], $settings['width'], $settings['chartArea'] );
957 810 }
958 811
959 812 $series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
960 - $data = self::get_chart_data( $chart, $type );
813 + $data = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_DATA, unserialize( html_entity_decode( $chart->post_content ) ), $chart->ID, $type );
961 814
962 - // Set default setting series when add manual chart data - Only during first creation.
963 - if ( isset( $settings['series'] ) && ! empty( $series ) ) {
964 - $count_series = count( $series ) - count( $settings['series'] );
965 - if ( $count_series > 1 ) {
966 - $clone_last_series = end( $settings['series'] );
967 - $clone_last_series = array_fill_keys( array_keys( $clone_last_series ), '' );
968 - foreach ( range( 1, $count_series ) as $item ) {
969 - $settings['series'][] = $clone_last_series;
970 - }
971 - }
972 - }
973 -
974 815 $library = $this->load_chart_type( $chart->ID );
975 816
976 817 $id = 'visualizer-' . $chart->ID;
977 818 $arguments = $this->get_inline_custom_css( $id, $settings );
@@ -979,15 +820,8 @@
979 820 $css .= $arguments[0];
980 821 $settings = $arguments[1];
981 822 }
982 823
983 - if ( isset( $settings['controls']['ui']['labelStacking'] ) ) {
984 - unset( $settings['controls']['ui']['labelStacking'] );
985 - }
986 - if ( isset( $settings['controls']['ui']['orientation'] ) ) {
987 - unset( $settings['controls']['ui']['orientation'] );
988 - }
989 -
990 824 // add chart to the array
991 825 $charts[ $id ] = array(
992 826 'id' => $chart->ID,
993 827 'type' => $type,
@@ -1006,38 +840,30 @@
1006 840 'language' => $this->get_language(),
1007 841 'map_api_key' => get_option( 'visualizer-map-api-key' ),
1008 842 'charts' => $charts,
1009 843 'urls' => array(
1010 - 'base' => esc_url( add_query_arg( array( 'vpage' => false, 'vaction' => false ) ) ),
1011 - 'create' => esc_url(
1012 - add_query_arg(
1013 - array(
1014 - 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
1015 - 'library' => 'yes',
1016 - 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
1017 - 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
1018 - 'vaction' => false,
1019 - ),
1020 - $ajaxurl
1021 - )
844 + 'base' => add_query_arg( array( 'vpage' => false, 'vaction' => false ) ),
845 + 'create' => add_query_arg(
846 + array(
847 + 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
848 + 'library' => 'yes',
849 + 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
850 + 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
851 + 'vaction' => false,
852 + ),
853 + $ajaxurl
1022 854 ),
1023 - 'edit' => esc_url(
1024 - add_query_arg(
1025 - array(
1026 - 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
1027 - 'library' => 'yes',
1028 - 'vaction' => false,
1029 - ),
1030 - $ajaxurl
1031 - )
855 + 'edit' => add_query_arg(
856 + array(
857 + 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
858 + 'library' => 'yes',
859 + 'vaction' => false,
860 + ),
861 + $ajaxurl
1032 862 ),
1033 863 ),
1034 864 'page_type' => 'library',
1035 865 'is_front' => false,
1036 - 'i10n' => array(
1037 - 'copied' => __( 'The shortcode has been copied to your clipboard. Hit Ctrl-V/Cmd-V to paste it.', 'visualizer' ),
1038 - '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' ),
1039 - ),
1040 866 )
1041 867 );
1042 868 // render library page
1043 869 $render = new Visualizer_Render_Library();
@@ -1053,11 +879,8 @@
1053 879 'total' => $query->max_num_pages,
1054 880 'type' => 'array',
1055 881 )
1056 882 );
1057 -
1058 - $this->load_survey();
1059 -
1060 883 $render->render();
1061 884 }
1062 885
1063 886 /**
@@ -1107,9 +930,9 @@
1107 930 esc_html__( 'Docs', 'visualizer' )
1108 931 );
1109 932 // flattr link
1110 933 $plugin_meta[] = sprintf(
1111 - '<a style="color:red" href="' . tsdk_utmify( Visualizer_Plugin::PRO_TEASER_URL, 'pluginrow' ) . '" target="_blank">%s</a>',
934 + '<a style="color:red" href="' . Visualizer_Plugin::PRO_TEASER_URL . '" target="_blank">%s</a>',
1112 935 esc_html__( 'Pro Addon', 'visualizer' )
1113 936 );
1114 937 }
1115 938
@@ -1115,146 +938,5 @@
1115 938
1116 939 return $plugin_meta;
1117 940 }
1118 941
1119 - /**
1120 - * If check is existing user.
1121 - *
1122 - * @return bool Default false
1123 - */
1124 - public static function proFeaturesLocked() {
1125 - if ( Visualizer_Module::is_pro() ) {
1126 - return true;
1127 - }
1128 - return 'yes' === get_option( 'visualizer-new-user', 'yes' ) ? false : true;
1129 - }
1130 -
1131 - /**
1132 - * Multilingual Support.
1133 - *
1134 - * @param int $chart_id Chart ID.
1135 - * @return bool Default false
1136 - */
1137 - public function addMultilingualSupport( $chart_id ) {
1138 - global $sitepress;
1139 - if ( Visualizer_Module::is_pro() ) {
1140 - return;
1141 - }
1142 - if ( function_exists( 'icl_get_languages' ) && $sitepress instanceof \SitePress ) {
1143 - $language = icl_get_languages();
1144 - $current_lang = icl_get_current_language();
1145 - $default_lang = icl_get_default_language();
1146 - $post_info = wpml_get_language_information( null, $chart_id );
1147 - $translations = array();
1148 - if ( ! empty( $post_info ) && ( $default_lang === $post_info['language_code'] ) ) {
1149 - $trid = $sitepress->get_element_trid( $chart_id, 'post_' . Visualizer_Plugin::CPT_VISUALIZER );
1150 - $translations = $sitepress->get_element_translations( $trid );
1151 - }
1152 - if ( empty( $translations ) ) {
1153 - return;
1154 - }
1155 - ?>
1156 - <hr><div class="visualizer-languages-list only-pro">
1157 - <?php
1158 - foreach ( $language as $lang ) {
1159 - $lang_code = $lang['code'];
1160 - if ( $current_lang !== $lang_code ) {
1161 - ?>
1162 - <a href="javascript:;">
1163 - <img src="<?php echo esc_url( $lang['country_flag_url'] ); ?>" alt="<?php echo esc_attr( $lang['translated_name'] ); ?>">
1164 - </a>
1165 - <?php
1166 - }
1167 - }
1168 - ?>
1169 - <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>
1170 - </div>
1171 - <?php
1172 - }
1173 - }
1174 -
1175 - /**
1176 - * Check chart is enabled or not.
1177 - *
1178 - * @param string $type Chart ID.
1179 - *
1180 - * @return bool Default false
1181 - */
1182 - public static function checkChartStatus( $type ) {
1183 - $types = self::_getChartTypesLocalized( false, false, false, true );
1184 - if ( isset( $types[ $type ] ) ) {
1185 - return ! empty( $types[ $type ]['enabled'] );
1186 - }
1187 - return false;
1188 - }
1189 -
1190 - /**
1191 - * Get the survey metadata.
1192 - *
1193 - * @return array The survey metadata.
1194 - */
1195 - private function get_survey_metadata() {
1196 - $install_date = get_option( 'visualizer_install', false );
1197 - $install_category = 0;
1198 -
1199 - if ( false !== $install_date ) {
1200 - $days_since_install = round( ( time() - $install_date ) / DAY_IN_SECONDS );
1201 -
1202 - if ( 0 === $days_since_install || 1 === $days_since_install ) {
1203 - $install_category = 0;
1204 - } elseif ( 1 < $days_since_install && 8 > $days_since_install ) {
1205 - $install_category = 7;
1206 - } elseif ( 8 <= $days_since_install && 31 > $days_since_install ) {
1207 - $install_category = 30;
1208 - } elseif ( 30 < $days_since_install && 90 > $days_since_install ) {
1209 - $install_category = 90;
1210 - } elseif ( 90 <= $days_since_install ) {
1211 - $install_category = 91;
1212 - }
1213 - }
1214 -
1215 - $plugin_data = get_plugin_data( VISUALIZER_BASEFILE, false, false );
1216 - $plugin_version = '';
1217 - if ( ! empty( $plugin_data['Version'] ) ) {
1218 - $plugin_version = $plugin_data['Version'];
1219 - }
1220 -
1221 - $user_id = 'visualizer_' . preg_replace( '/[^\w\d]*/', '', get_site_url() ); // Use a normalized version of the site URL as a user ID.
1222 -
1223 - $license_data = get_option( 'visualizer_pro_license_data', false );
1224 - if ( false !== $license_data ) {
1225 - $user_id = 'visualizer_' . $license_data->key;
1226 - }
1227 -
1228 - return array(
1229 - 'userId' => $user_id,
1230 - 'attributes' => array(
1231 - 'days_since_install' => $install_category,
1232 - 'free_version' => $plugin_version,
1233 - 'pro_version' => defined( 'VISUALIZER_PRO_VERSION' ) ? VISUALIZER_PRO_VERSION : '',
1234 - 'license_status' => apply_filters( 'product_visualizer_license_status', 'invalid' ),
1235 - ),
1236 - );
1237 - }
1238 -
1239 - /**
1240 - * Load the survey.
1241 - */
1242 - private function load_survey() {
1243 -
1244 - if ( defined( 'TI_CYPRESS_TESTING' ) ) {
1245 - return;
1246 - }
1247 -
1248 - $survey_handler = apply_filters( 'themeisle_sdk_dependency_script_handler', 'survey' );
1249 -
1250 - if ( empty( $survey_handler ) ) {
1251 - return;
1252 - }
1253 -
1254 - $metadata = $this->get_survey_metadata();
1255 -
1256 - do_action( 'themeisle_sdk_dependency_enqueue_script', 'survey' );
1257 - wp_enqueue_script( 'visualizer_chart_survey', VISUALIZER_ABSURL . 'js/survey.js', array( $survey_handler ), $metadata['attributes']['free_version'], true );
1258 - wp_localize_script( 'visualizer_chart_survey', 'visualizerSurveyData', $metadata );
1259 - }
1260 942 }