PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.8
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.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 3.10.4 All 148 releases
← All changes | classes/Visualizer/Module/Admin.php +40 -263 3.10.123.4.8 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
@@ -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,10 +388,8 @@
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 395 'tabular' => array(
@@ -398,60 +394,60 @@
398 394 array(
399 395 'tabular' => array(
400 396 'name' => esc_html__( 'Table', 'visualizer' ),
401 397 'enabled' => true,
402 - 'supports' => $enabled ? array( 'Google Charts', 'DataTable' ) : array( 'DataTable' ),
398 + 'supports' => array( 'Google Charts', '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
457 453 'timeline' => array(
@@ -670,9 +666,9 @@
670 666 Visualizer_Plugin::NAME,
671 667 __( 'Chart Library', 'visualizer' ),
672 668 __( 'Chart Library', 'visualizer' ),
673 669 'edit_posts',
674 - 'admin.php?page=' . Visualizer_Plugin::NAME
670 + admin_url( 'admin.php?page=' . Visualizer_Plugin::NAME )
675 671 );
676 672 add_submenu_page(
677 673 Visualizer_Plugin::NAME,
678 674 __( 'Add New Chart', 'visualizer' ),
@@ -677,9 +673,9 @@
677 673 Visualizer_Plugin::NAME,
678 674 __( 'Add New Chart', 'visualizer' ),
679 675 __( 'Add New Chart', 'visualizer' ),
680 676 'edit_posts',
681 - 'admin.php?page=' . Visualizer_Plugin::NAME . '&vaction=addnew'
677 + admin_url( 'admin.php?page=' . Visualizer_Plugin::NAME . '&vaction=addnew' )
682 678 );
683 679 add_submenu_page(
684 680 Visualizer_Plugin::NAME,
685 681 __( 'Support', 'visualizer' ),
@@ -687,49 +683,14 @@
687 683 'edit_posts',
688 684 'viz-support',
689 685 array( $this, 'renderSupportPage' )
690 686 );
691 -
692 687 remove_submenu_page( Visualizer_Plugin::NAME, Visualizer_Plugin::NAME );
693 688
694 689 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 693 * Adds the screen options for pagination.
733 694 */
734 695 function addScreenOptions() {
735 696 $screen = get_current_screen();
@@ -741,9 +702,9 @@
741 702
742 703 $args = array(
743 704 'label' => __( 'Number of charts per page:', 'visualizer' ),
744 705 'default' => 6,
745 - 'option' => 'visualizer_library_per_page',
706 + 'option' => 'visualizer_per_page_library',
746 707 );
747 708 add_screen_option( 'per_page', $args );
748 709 }
749 710
@@ -750,9 +711,9 @@
750 711 /**
751 712 * Returns the screen option for pagination.
752 713 */
753 714 function setScreenOptions( $status, $option, $value ) {
754 - if ( 'visualizer_library_per_page' === $option ) {
715 + if ( 'visualizer_per_page_library' === $option ) {
755 716 return $value;
756 717 }
757 718 }
758 719
@@ -760,24 +721,8 @@
760 721 * Adds the display filters to be used in the meta_query while displaying the charts.
761 722 */
762 723 private function getDisplayFilters( &$query_args ) {
763 724 $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 725
781 726 // add chart type filter to the query arguments
782 727 $type = filter_input( INPUT_GET, 'type' );
783 728 if ( $type && in_array( $type, Visualizer_Plugin::getChartTypes(), true ) ) {
@@ -875,9 +820,9 @@
875 820
876 821 $this->getDisplayFilters( $query_args );
877 822
878 823 // Added by Ash/Upwork
879 - $filterByMeta = ! empty( $_GET['s'] ) ? sanitize_text_field( wp_unslash( $_GET['s'] ) ) : null; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
824 + $filterByMeta = filter_input( INPUT_GET, 's', FILTER_SANITIZE_STRING );
880 825 if ( $filterByMeta ) {
881 826 $query = array(
882 827 'key' => Visualizer_Plugin::CF_SETTINGS,
883 828 'value' => $filterByMeta,
@@ -899,9 +844,8 @@
899 844 * @access public
900 845 */
901 846 public function renderSupportPage() {
902 847 wp_enqueue_style( 'visualizer-upsell', VISUALIZER_ABSURL . 'css/upsell.css', array(), Visualizer_Plugin::VERSION );
903 - $this->load_survey();
904 848 include_once VISUALIZER_ABSPATH . '/templates/support.php';
905 849 }
906 850
907 851 /**
@@ -958,20 +902,8 @@
958 902
959 903 $series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
960 904 $data = self::get_chart_data( $chart, $type );
961 905
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 906 $library = $this->load_chart_type( $chart->ID );
975 907
976 908 $id = 'visualizer-' . $chart->ID;
977 909 $arguments = $this->get_inline_custom_css( $id, $settings );
@@ -979,15 +911,8 @@
979 911 $css .= $arguments[0];
980 912 $settings = $arguments[1];
981 913 }
982 914
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 915 // add chart to the array
991 916 $charts[ $id ] = array(
992 917 'id' => $chart->ID,
993 918 'type' => $type,
@@ -1006,30 +931,26 @@
1006 931 'language' => $this->get_language(),
1007 932 'map_api_key' => get_option( 'visualizer-map-api-key' ),
1008 933 'charts' => $charts,
1009 934 '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 - )
935 + 'base' => add_query_arg( array( 'vpage' => false, 'vaction' => false ) ),
936 + 'create' => add_query_arg(
937 + array(
938 + 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
939 + 'library' => 'yes',
940 + 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
941 + 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
942 + 'vaction' => false,
943 + ),
944 + $ajaxurl
1022 945 ),
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 - )
946 + 'edit' => add_query_arg(
947 + array(
948 + 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
949 + 'library' => 'yes',
950 + 'vaction' => false,
951 + ),
952 + $ajaxurl
1032 953 ),
1033 954 ),
1034 955 'page_type' => 'library',
1035 956 'is_front' => false,
@@ -1053,11 +974,8 @@
1053 974 'total' => $query->max_num_pages,
1054 975 'type' => 'array',
1055 976 )
1056 977 );
1057 -
1058 - $this->load_survey();
1059 -
1060 978 $render->render();
1061 979 }
1062 980
1063 981 /**
@@ -1107,9 +1025,9 @@
1107 1025 esc_html__( 'Docs', 'visualizer' )
1108 1026 );
1109 1027 // flattr link
1110 1028 $plugin_meta[] = sprintf(
1111 - '<a style="color:red" href="' . tsdk_utmify( Visualizer_Plugin::PRO_TEASER_URL, 'pluginrow' ) . '" target="_blank">%s</a>',
1029 + '<a style="color:red" href="' . Visualizer_Plugin::PRO_TEASER_URL . '" target="_blank">%s</a>',
1112 1030 esc_html__( 'Pro Addon', 'visualizer' )
1113 1031 );
1114 1032 }
1115 1033
@@ -1115,146 +1033,5 @@
1115 1033
1116 1034 return $plugin_meta;
1117 1035 }
1118 1036
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 1037 }