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 +82 -414 3.10.153.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 );
@@ -670,9 +654,9 @@
670 654 Visualizer_Plugin::NAME,
671 655 __( 'Chart Library', 'visualizer' ),
672 656 __( 'Chart Library', 'visualizer' ),
673 657 'edit_posts',
674 - 'admin.php?page=' . Visualizer_Plugin::NAME
658 + admin_url( 'admin.php?page=' . Visualizer_Plugin::NAME )
675 659 );
676 660 add_submenu_page(
677 661 Visualizer_Plugin::NAME,
678 662 __( 'Add New Chart', 'visualizer' ),
@@ -677,9 +661,9 @@
677 661 Visualizer_Plugin::NAME,
678 662 __( 'Add New Chart', 'visualizer' ),
679 663 __( 'Add New Chart', 'visualizer' ),
680 664 'edit_posts',
681 - 'admin.php?page=' . Visualizer_Plugin::NAME . '&vaction=addnew'
665 + admin_url( 'admin.php?page=' . Visualizer_Plugin::NAME . '&vaction=addnew' )
682 666 );
683 667 add_submenu_page(
684 668 Visualizer_Plugin::NAME,
685 669 __( 'Support', 'visualizer' ),
@@ -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 /**
@@ -899,9 +739,8 @@
899 739 * @access public
900 740 */
901 741 public function renderSupportPage() {
902 742 wp_enqueue_style( 'visualizer-upsell', VISUALIZER_ABSURL . 'css/upsell.css', array(), Visualizer_Plugin::VERSION );
903 - $this->load_survey();
904 743 include_once VISUALIZER_ABSPATH . '/templates/support.php';
905 744 }
906 745
907 746 /**
@@ -956,22 +795,10 @@
956 795 unset( $settings['height'], $settings['width'], $settings['chartArea'] );
957 796 }
958 797
959 798 $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 );
799 + $data = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_DATA, unserialize( html_entity_decode( $chart->post_content ) ), $chart->ID, $type );
961 800
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 801 $library = $this->load_chart_type( $chart->ID );
975 802
976 803 $id = 'visualizer-' . $chart->ID;
977 804 $arguments = $this->get_inline_custom_css( $id, $settings );
@@ -979,15 +806,8 @@
979 806 $css .= $arguments[0];
980 807 $settings = $arguments[1];
981 808 }
982 809
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 810 // add chart to the array
991 811 $charts[ $id ] = array(
992 812 'id' => $chart->ID,
993 813 'type' => $type,
@@ -1006,38 +826,30 @@
1006 826 'language' => $this->get_language(),
1007 827 'map_api_key' => get_option( 'visualizer-map-api-key' ),
1008 828 'charts' => $charts,
1009 829 '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 - )
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
1022 840 ),
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 - )
841 + 'edit' => add_query_arg(
842 + array(
843 + 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
844 + 'library' => 'yes',
845 + 'vaction' => false,
846 + ),
847 + $ajaxurl
1032 848 ),
1033 849 ),
1034 850 'page_type' => 'library',
1035 851 '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 852 )
1041 853 );
1042 854 // render library page
1043 855 $render = new Visualizer_Render_Library();
@@ -1053,11 +865,8 @@
1053 865 'total' => $query->max_num_pages,
1054 866 'type' => 'array',
1055 867 )
1056 868 );
1057 -
1058 - $this->load_survey();
1059 -
1060 869 $render->render();
1061 870 }
1062 871
1063 872 /**
@@ -1107,9 +916,9 @@
1107 916 esc_html__( 'Docs', 'visualizer' )
1108 917 );
1109 918 // flattr link
1110 919 $plugin_meta[] = sprintf(
1111 - '<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>',
1112 921 esc_html__( 'Pro Addon', 'visualizer' )
1113 922 );
1114 923 }
1115 924
@@ -1115,146 +924,5 @@
1115 924
1116 925 return $plugin_meta;
1117 926 }
1118 927
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 928 }