PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.4
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.4
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 +68 -268 3.10.133.4.4 View file →
@@ -53,9 +53,9 @@
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 );
@@ -73,10 +73,8 @@
73 73 $this->_addAction( 'visualizer_chart_schedules_spl', 'addSplChartSchedules', null, 10, 3 );
74 74
75 75 $this->_addAction( 'admin_init', 'init' );
76 76
77 - $this->_addAction( 'visualizer_chart_languages', 'addMultilingualSupport' );
78 -
79 77 if ( defined( 'TI_CYPRESS_TESTING' ) ) {
80 78 $this->load_cypress_hooks();
81 79 }
82 80
@@ -315,9 +313,9 @@
315 313
316 314 // Load all the assets for the different libraries we support.
317 315 $deps = array(
318 316 Visualizer_Render_Sidebar_Google::enqueue_assets( array( 'media-editor' ) ),
319 - Visualizer_Render_Sidebar_Type_DataTable_Tabular::enqueue_assets( array( 'media-editor' ) ),
317 + Visualizer_Render_Sidebar_Type_DataTable_DataTable::enqueue_assets( array( 'media-editor' ) ),
320 318 );
321 319
322 320 wp_enqueue_script( 'visualizer-media-model', VISUALIZER_ABSURL . 'js/media/model.js', $deps, Visualizer_Plugin::VERSION, true );
323 321 wp_enqueue_script( 'visualizer-media-collection', VISUALIZER_ABSURL . 'js/media/collection.js', array( 'visualizer-media-model' ), Visualizer_Plugin::VERSION, true );
@@ -366,9 +364,9 @@
366 364 'filters' => $chart_types,
367 365 'types' => array_keys( $chart_types ),
368 366 ),
369 367 'nonce' => wp_create_nonce(),
370 - 'buildurl' => esc_url( add_query_arg( 'action', Visualizer_Plugin::ACTION_CREATE_CHART, admin_url( 'admin-ajax.php' ) ) ),
368 + 'buildurl' => add_query_arg( 'action', Visualizer_Plugin::ACTION_CREATE_CHART, admin_url( 'admin-ajax.php' ) ),
371 369 );
372 370
373 371 return $strings;
374 372 }
@@ -390,71 +388,74 @@
390 388 'enabled' => true,
391 389 );
392 390 }
393 391
394 - $enabled = self::proFeaturesLocked();
395 -
396 392 $types = array_merge(
397 393 $additional,
398 394 array(
399 - 'tabular' => array(
395 + 'dataTable' => array(
400 396 'name' => esc_html__( 'Table', 'visualizer' ),
401 397 'enabled' => true,
402 - 'supports' => $enabled ? array( 'Google Charts', 'DataTable' ) : array( 'DataTable' ),
398 + 'supports' => array( 'DataTable' ),
403 399 ),
404 400 'pie' => array(
405 401 'name' => esc_html__( 'Pie/Donut', 'visualizer' ),
406 402 'enabled' => true,
407 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
403 + 'supports' => array( 'Google Charts', 'ChartJS' ),
408 404 ),
409 405 'line' => array(
410 406 'name' => esc_html__( 'Line', 'visualizer' ),
411 407 'enabled' => true,
412 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
408 + 'supports' => array( 'Google Charts', 'ChartJS' ),
413 409 ),
414 - 'bar' => array(
415 - 'name' => esc_html__( 'Bar', 'visualizer' ),
416 - 'enabled' => true,
417 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
418 - ),
419 410 'area' => array(
420 411 'name' => esc_html__( 'Area', 'visualizer' ),
421 - 'enabled' => $enabled,
412 + 'enabled' => true,
422 413 // in ChartJS, the fill option is used to make Line chart an area: https://www.chartjs.org/docs/latest/charts/area.html
423 414 'supports' => array( 'Google Charts' ),
424 415 ),
425 416 'geo' => array(
426 417 'name' => esc_html__( 'Geo', 'visualizer' ),
427 - 'enabled' => $enabled,
418 + 'enabled' => true,
428 419 'supports' => array( 'Google Charts' ),
429 420 ),
421 + 'bar' => array(
422 + 'name' => esc_html__( 'Bar', 'visualizer' ),
423 + 'enabled' => true,
424 + 'supports' => array( 'Google Charts', 'ChartJS' ),
425 + ),
430 426 'column' => array(
431 427 'name' => esc_html__( 'Column', 'visualizer' ),
432 - 'enabled' => $enabled,
428 + 'enabled' => true,
433 429 'supports' => array( 'Google Charts', 'ChartJS' ),
434 430 ),
435 431 'bubble' => array(
436 432 'name' => esc_html__( 'Bubble', 'visualizer' ),
437 - 'enabled' => $enabled,
433 + 'enabled' => true,
438 434 // 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 435 'supports' => array( 'Google Charts' ),
440 436 ),
441 437 'scatter' => array(
442 438 'name' => esc_html__( 'Scatter', 'visualizer' ),
443 - 'enabled' => $enabled,
439 + 'enabled' => true,
444 440 'supports' => array( 'Google Charts' ),
445 441 ),
446 442 'gauge' => array(
447 443 'name' => esc_html__( 'Gauge', 'visualizer' ),
448 - 'enabled' => $enabled,
444 + 'enabled' => true,
449 445 'supports' => array( 'Google Charts' ),
450 446 ),
451 447 'candlestick' => array(
452 448 'name' => esc_html__( 'Candlestick', 'visualizer' ),
453 - 'enabled' => $enabled,
449 + 'enabled' => true,
454 450 'supports' => array( 'Google Charts' ),
455 451 ),
456 452 // pro types
453 + 'table' => array(
454 + 'name' => esc_html__( 'Table (Deprecated)', 'visualizer' ),
455 + 'enabled' => false,
456 + 'supports' => array( 'Google Charts' ),
457 + ),
457 458 'timeline' => array(
458 459 'name' => esc_html__( 'Timeline', 'visualizer' ),
459 460 'enabled' => false,
460 461 'supports' => array( 'Google Charts', 'ChartJS' ),
@@ -523,8 +524,18 @@
523 524 switch ( $where ) {
524 525 case 'types':
525 526 // fall-through
526 527 case 'library':
528 + // if the user has a Google Table chart, show it as deprecated otherwise remove the option from the library.
529 + if ( ! self::hasChartType( 'table' ) ) {
530 + $deprecated[] = 'table';
531 + if ( $get2Darray ) {
532 + $types['dataTable'] = esc_html__( 'Table', 'visualizer' );
533 + } else {
534 + $types['dataTable']['name'] = esc_html__( 'Table', 'visualizer' );
535 + }
536 + }
537 +
527 538 // if a user has a Gauge/Candlestick chart, then let them keep using it.
528 539 if ( ! Visualizer_Module::is_pro() ) {
529 540 if ( ! self::hasChartType( 'gauge' ) ) {
530 541 if ( $get2Darray ) {
@@ -542,8 +553,18 @@
542 553 }
543 554 }
544 555 break;
545 556 default:
557 + // remove the option to create a Google Table chart.
558 + $deprecated[] = 'table';
559 +
560 + // rename the new table chart type.
561 + if ( $get2Darray ) {
562 + $types['dataTable'] = esc_html__( 'Table', 'visualizer' );
563 + } else {
564 + $types['dataTable']['name'] = esc_html__( 'Table', 'visualizer' );
565 + }
566 +
546 567 // if a user has a Gauge/Candlestick chart, then let them keep using it.
547 568 if ( ! Visualizer_Module::is_pro() ) {
548 569 if ( ! self::hasChartType( 'gauge' ) ) {
549 570 if ( $get2Darray ) {
@@ -610,9 +631,8 @@
610 631 VISUALIZER_ABSURL . 'js/library.js',
611 632 array(
612 633 'jquery',
613 634 'media-views',
614 - 'clipboard',
615 635 ),
616 636 Visualizer_Plugin::VERSION,
617 637 true
618 638 );
@@ -670,9 +690,9 @@
670 690 Visualizer_Plugin::NAME,
671 691 __( 'Chart Library', 'visualizer' ),
672 692 __( 'Chart Library', 'visualizer' ),
673 693 'edit_posts',
674 - 'admin.php?page=' . Visualizer_Plugin::NAME
694 + admin_url( 'admin.php?page=' . Visualizer_Plugin::NAME )
675 695 );
676 696 add_submenu_page(
677 697 Visualizer_Plugin::NAME,
678 698 __( 'Add New Chart', 'visualizer' ),
@@ -677,9 +697,9 @@
677 697 Visualizer_Plugin::NAME,
678 698 __( 'Add New Chart', 'visualizer' ),
679 699 __( 'Add New Chart', 'visualizer' ),
680 700 'edit_posts',
681 - 'admin.php?page=' . Visualizer_Plugin::NAME . '&vaction=addnew'
701 + admin_url( 'admin.php?page=' . Visualizer_Plugin::NAME . '&vaction=addnew' )
682 702 );
683 703 add_submenu_page(
684 704 Visualizer_Plugin::NAME,
685 705 __( 'Support', 'visualizer' ),
@@ -687,49 +707,14 @@
687 707 'edit_posts',
688 708 'viz-support',
689 709 array( $this, 'renderSupportPage' )
690 710 );
691 -
692 711 remove_submenu_page( Visualizer_Plugin::NAME, Visualizer_Plugin::NAME );
693 712
694 713 add_action( "load-{$this->_libraryPage}", array( $this, 'addScreenOptions' ) );
695 - add_action( 'admin_footer', array( $this, 'handleGetProSubMenu' ) );
696 714 }
697 715
698 716 /**
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 717 * Adds the screen options for pagination.
733 718 */
734 719 function addScreenOptions() {
735 720 $screen = get_current_screen();
@@ -741,9 +726,9 @@
741 726
742 727 $args = array(
743 728 'label' => __( 'Number of charts per page:', 'visualizer' ),
744 729 'default' => 6,
745 - 'option' => 'visualizer_library_per_page',
730 + 'option' => 'visualizer_per_page_library',
746 731 );
747 732 add_screen_option( 'per_page', $args );
748 733 }
749 734
@@ -750,9 +735,9 @@
750 735 /**
751 736 * Returns the screen option for pagination.
752 737 */
753 738 function setScreenOptions( $status, $option, $value ) {
754 - if ( 'visualizer_library_per_page' === $option ) {
739 + if ( 'visualizer_per_page_library' === $option ) {
755 740 return $value;
756 741 }
757 742 }
758 743
@@ -760,24 +745,8 @@
760 745 * Adds the display filters to be used in the meta_query while displaying the charts.
761 746 */
762 747 private function getDisplayFilters( &$query_args ) {
763 748 $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 749
781 750 // add chart type filter to the query arguments
782 751 $type = filter_input( INPUT_GET, 'type' );
783 752 if ( $type && in_array( $type, Visualizer_Plugin::getChartTypes(), true ) ) {
@@ -875,9 +844,9 @@
875 844
876 845 $this->getDisplayFilters( $query_args );
877 846
878 847 // Added by Ash/Upwork
879 - $filterByMeta = ! empty( $_GET['s'] ) ? sanitize_text_field( wp_unslash( $_GET['s'] ) ) : null; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
848 + $filterByMeta = filter_input( INPUT_GET, 's', FILTER_SANITIZE_STRING );
880 849 if ( $filterByMeta ) {
881 850 $query = array(
882 851 'key' => Visualizer_Plugin::CF_SETTINGS,
883 852 'value' => $filterByMeta,
@@ -899,9 +868,8 @@
899 868 * @access public
900 869 */
901 870 public function renderSupportPage() {
902 871 wp_enqueue_style( 'visualizer-upsell', VISUALIZER_ABSURL . 'css/upsell.css', array(), Visualizer_Plugin::VERSION );
903 - $this->load_survey();
904 872 include_once VISUALIZER_ABSPATH . '/templates/support.php';
905 873 }
906 874
907 875 /**
@@ -958,20 +926,8 @@
958 926
959 927 $series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
960 928 $data = self::get_chart_data( $chart, $type );
961 929
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 930 $library = $this->load_chart_type( $chart->ID );
975 931
976 932 $id = 'visualizer-' . $chart->ID;
977 933 $arguments = $this->get_inline_custom_css( $id, $settings );
@@ -979,15 +935,8 @@
979 935 $css .= $arguments[0];
980 936 $settings = $arguments[1];
981 937 }
982 938
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 939 // add chart to the array
991 940 $charts[ $id ] = array(
992 941 'id' => $chart->ID,
993 942 'type' => $type,
@@ -1006,36 +955,31 @@
1006 955 'language' => $this->get_language(),
1007 956 'map_api_key' => get_option( 'visualizer-map-api-key' ),
1008 957 'charts' => $charts,
1009 958 '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 - )
959 + 'base' => add_query_arg( array( 'vpage' => false, 'vaction' => false ) ),
960 + 'create' => add_query_arg(
961 + array(
962 + 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
963 + 'library' => 'yes',
964 + 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
965 + 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
966 + 'vaction' => false,
967 + ),
968 + $ajaxurl
1022 969 ),
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 - )
970 + 'edit' => add_query_arg(
971 + array(
972 + 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
973 + 'library' => 'yes',
974 + 'vaction' => false,
975 + ),
976 + $ajaxurl
1032 977 ),
1033 978 ),
1034 979 'page_type' => 'library',
1035 980 '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' ),
981 + 'i10n' => array(
1038 982 '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 983 ),
1040 984 )
1041 985 );
@@ -1053,11 +997,8 @@
1053 997 'total' => $query->max_num_pages,
1054 998 'type' => 'array',
1055 999 )
1056 1000 );
1057 -
1058 - $this->load_survey();
1059 -
1060 1001 $render->render();
1061 1002 }
1062 1003
1063 1004 /**
@@ -1107,9 +1048,9 @@
1107 1048 esc_html__( 'Docs', 'visualizer' )
1108 1049 );
1109 1050 // flattr link
1110 1051 $plugin_meta[] = sprintf(
1111 - '<a style="color:red" href="' . tsdk_utmify( Visualizer_Plugin::PRO_TEASER_URL, 'pluginrow' ) . '" target="_blank">%s</a>',
1052 + '<a style="color:red" href="' . Visualizer_Plugin::PRO_TEASER_URL . '" target="_blank">%s</a>',
1112 1053 esc_html__( 'Pro Addon', 'visualizer' )
1113 1054 );
1114 1055 }
1115 1056
@@ -1115,146 +1056,5 @@
1115 1056
1116 1057 return $plugin_meta;
1117 1058 }
1118 1059
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 1060 }