PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.3.4
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.3.4
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 +80 -415 3.10.03.3.4 View file →
@@ -53,109 +53,26 @@
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 70
73 - $this->_addAction( 'visualizer_chart_schedules_spl', 'addSplChartSchedules', null, 10, 3 );
74 -
75 71 $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 72 }
84 73
85 74 /**
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 -
101 - /**
102 - * Add disabled `optgroup` schedules to the drop downs.
103 - *
104 - * @since ?
105 - *
106 - * @access public
107 - *
108 - * @param string $feature The feature for which to add schedules.
109 - * @param int $chart_id The chart ID.
110 - * @param int $plan The plan number.
111 - */
112 - public function addSplChartSchedules( $feature, $chart_id, $plan ) {
113 - if ( apply_filters( 'visualizer_is_business', false ) ) {
114 - return;
115 - }
116 -
117 - $license = __( 'PRO', 'visualizer' );
118 - if ( Visualizer_Module::is_pro() ) {
119 - switch ( $plan ) {
120 - case 1:
121 - $license = __( 'Developer', 'visualizer' );
122 - break;
123 - }
124 - }
125 -
126 - $hours = array(
127 - '0' => __( 'Live', 'visualizer' ),
128 - '1' => __( 'Each hour', 'visualizer' ),
129 - '12' => __( 'Each 12 hours', 'visualizer' ),
130 - '24' => __( 'Each day', 'visualizer' ),
131 - '72' => __( 'Each 3 days', 'visualizer' ),
132 - );
133 -
134 - switch ( $feature ) {
135 - case 'json':
136 - case 'csv':
137 - // no more schedules if pro is already active.
138 - if ( Visualizer_Module::is_pro() ) {
139 - return;
140 - }
141 - break;
142 - case 'wp':
143 - // fall-through.
144 - case 'db':
145 - break;
146 - default:
147 - return;
148 - }
149 -
150 - echo '<optgroup disabled label="' . sprintf( __( 'More in the %s version', 'visualizer' ), $license ) . '">';
151 - foreach ( $hours as $hour => $desc ) {
152 - echo '<option disabled>' . $desc . '</option>';
153 - }
154 - echo '</optgroup>';
155 - }
156 -
157 - /**
158 75 * No limits on revisions.
159 76 */
160 77 public function limitRevisions( $num, $post ) {
161 78 if ( Visualizer_Plugin::CPT_VISUALIZER === $post->post_type ) {
@@ -221,26 +138,12 @@
221 138 if ( current_user_can( 'edit_posts' ) && current_user_can( 'edit_pages' ) && 'true' == get_user_option( 'rich_editing' ) ) {
222 139 $this->_addFilter( 'mce_external_languages', 'add_tinymce_lang', 10, 1 );
223 140 $this->_addFilter( 'mce_external_plugins', 'tinymce_plugin', 10, 1 );
224 141 $this->_addFilter( 'mce_buttons', 'register_mce_button', 10, 1 );
225 - $this->_addFilter( 'tiny_mce_before_init', 'get_strings_for_block', 10, 1 );
226 142 }
227 143 }
228 144
229 145 /**
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 146 * Load plugin translation for - TinyMCE API
244 147 *
245 148 * @access public
246 149 * @param array $arr The tinymce_lang array.
@@ -315,9 +218,9 @@
315 218
316 219 // Load all the assets for the different libraries we support.
317 220 $deps = array(
318 221 Visualizer_Render_Sidebar_Google::enqueue_assets( array( 'media-editor' ) ),
319 - Visualizer_Render_Sidebar_Type_DataTable_Tabular::enqueue_assets( array( 'media-editor' ) ),
222 + Visualizer_Render_Sidebar_Type_DataTable_DataTable::enqueue_assets( array( 'media-editor' ) ),
320 223 );
321 224
322 225 wp_enqueue_script( 'visualizer-media-model', VISUALIZER_ABSURL . 'js/media/model.js', $deps, Visualizer_Plugin::VERSION, true );
323 226 wp_enqueue_script( 'visualizer-media-collection', VISUALIZER_ABSURL . 'js/media/collection.js', array( 'visualizer-media-model' ), Visualizer_Plugin::VERSION, true );
@@ -366,9 +269,9 @@
366 269 'filters' => $chart_types,
367 270 'types' => array_keys( $chart_types ),
368 271 ),
369 272 'nonce' => wp_create_nonce(),
370 - 'buildurl' => esc_url( add_query_arg( 'action', Visualizer_Plugin::ACTION_CREATE_CHART, admin_url( 'admin-ajax.php' ) ) ),
273 + 'buildurl' => add_query_arg( 'action', Visualizer_Plugin::ACTION_CREATE_CHART, admin_url( 'admin-ajax.php' ) ),
371 274 );
372 275
373 276 return $strings;
374 277 }
@@ -390,71 +293,68 @@
390 293 'enabled' => true,
391 294 );
392 295 }
393 296
394 - $enabled = self::proFeaturesLocked();
395 -
396 297 $types = array_merge(
397 298 $additional,
398 299 array(
399 - 'tabular' => array(
300 + 'dataTable' => array(
400 301 'name' => esc_html__( 'Table', 'visualizer' ),
401 302 'enabled' => true,
402 - 'supports' => $enabled ? array( 'Google Charts', 'DataTable' ) : array( 'DataTable' ),
303 + 'supports' => array( 'DataTable' ),
403 304 ),
404 305 'pie' => array(
405 306 'name' => esc_html__( 'Pie/Donut', 'visualizer' ),
406 307 'enabled' => true,
407 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
308 + 'supports' => array( 'Google Charts', 'ChartJS' ),
408 309 ),
409 310 'line' => array(
410 311 'name' => esc_html__( 'Line', 'visualizer' ),
411 312 'enabled' => true,
412 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
313 + 'supports' => array( 'Google Charts', 'ChartJS' ),
413 314 ),
414 - 'bar' => array(
415 - 'name' => esc_html__( 'Bar', 'visualizer' ),
416 - 'enabled' => true,
417 - 'supports' => $enabled ? array( 'Google Charts', 'ChartJS' ) : array( 'Google Charts' ),
418 - ),
419 315 'area' => array(
420 316 'name' => esc_html__( 'Area', 'visualizer' ),
421 - 'enabled' => $enabled,
317 + 'enabled' => true,
422 318 // in ChartJS, the fill option is used to make Line chart an area: https://www.chartjs.org/docs/latest/charts/area.html
423 319 'supports' => array( 'Google Charts' ),
424 320 ),
425 321 'geo' => array(
426 322 'name' => esc_html__( 'Geo', 'visualizer' ),
427 - 'enabled' => $enabled,
323 + 'enabled' => true,
428 324 'supports' => array( 'Google Charts' ),
429 325 ),
326 + 'bar' => array(
327 + 'name' => esc_html__( 'Bar', 'visualizer' ),
328 + 'enabled' => true,
329 + 'supports' => array( 'Google Charts', 'ChartJS' ),
330 + ),
430 331 'column' => array(
431 332 'name' => esc_html__( 'Column', 'visualizer' ),
432 - 'enabled' => $enabled,
333 + 'enabled' => true,
433 334 'supports' => array( 'Google Charts', 'ChartJS' ),
434 335 ),
435 - 'bubble' => array(
436 - 'name' => esc_html__( 'Bubble', 'visualizer' ),
437 - 'enabled' => $enabled,
438 - // 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 - 'supports' => array( 'Google Charts' ),
440 - ),
441 336 'scatter' => array(
442 337 'name' => esc_html__( 'Scatter', 'visualizer' ),
443 - 'enabled' => $enabled,
338 + 'enabled' => true,
444 339 'supports' => array( 'Google Charts' ),
445 340 ),
446 341 'gauge' => array(
447 342 'name' => esc_html__( 'Gauge', 'visualizer' ),
448 - 'enabled' => $enabled,
343 + 'enabled' => true,
449 344 'supports' => array( 'Google Charts' ),
450 345 ),
451 346 'candlestick' => array(
452 347 'name' => esc_html__( 'Candlestick', 'visualizer' ),
453 - 'enabled' => $enabled,
348 + 'enabled' => true,
454 349 'supports' => array( 'Google Charts' ),
455 350 ),
456 351 // pro types
352 + 'table' => array(
353 + 'name' => esc_html__( 'Table (Deprecated)', 'visualizer' ),
354 + 'enabled' => false,
355 + 'supports' => array( 'Google Charts' ),
356 + ),
457 357 'timeline' => array(
458 358 'name' => esc_html__( 'Timeline', 'visualizer' ),
459 359 'enabled' => false,
460 360 'supports' => array( 'Google Charts', 'ChartJS' ),
@@ -523,8 +423,18 @@
523 423 switch ( $where ) {
524 424 case 'types':
525 425 // fall-through
526 426 case 'library':
427 + // if the user has a Google Table chart, show it as deprecated otherwise remove the option from the library.
428 + if ( ! self::hasChartType( 'table' ) ) {
429 + $deprecated[] = 'table';
430 + if ( $get2Darray ) {
431 + $types['dataTable'] = esc_html__( 'Table', 'visualizer' );
432 + } else {
433 + $types['dataTable']['name'] = esc_html__( 'Table', 'visualizer' );
434 + }
435 + }
436 +
527 437 // if a user has a Gauge/Candlestick chart, then let them keep using it.
528 438 if ( ! Visualizer_Module::is_pro() ) {
529 439 if ( ! self::hasChartType( 'gauge' ) ) {
530 440 if ( $get2Darray ) {
@@ -542,8 +452,18 @@
542 452 }
543 453 }
544 454 break;
545 455 default:
456 + // remove the option to create a Google Table chart.
457 + $deprecated[] = 'table';
458 +
459 + // rename the new table chart type.
460 + if ( $get2Darray ) {
461 + $types['dataTable'] = esc_html__( 'Table', 'visualizer' );
462 + } else {
463 + $types['dataTable']['name'] = esc_html__( 'Table', 'visualizer' );
464 + }
465 +
546 466 // if a user has a Gauge/Candlestick chart, then let them keep using it.
547 467 if ( ! Visualizer_Module::is_pro() ) {
548 468 if ( ! self::hasChartType( 'gauge' ) ) {
549 469 if ( $get2Darray ) {
@@ -610,9 +530,8 @@
610 530 VISUALIZER_ABSURL . 'js/library.js',
611 531 array(
612 532 'jquery',
613 533 'media-views',
614 - 'clipboard',
615 534 ),
616 535 Visualizer_Plugin::VERSION,
617 536 true
618 537 );
@@ -687,161 +606,12 @@
687 606 'edit_posts',
688 607 'viz-support',
689 608 array( $this, 'renderSupportPage' )
690 609 );
691 -
692 - if ( ! Visualizer_Module::is_pro() ) {
693 - add_submenu_page(
694 - Visualizer_Plugin::NAME,
695 - __( 'Get Visualizer Pro', 'visualizer' ),
696 - __( 'Get Visualizer Pro', 'visualizer' ),
697 - 'edit_posts',
698 - 'viz-get-pro',
699 - '__return_null'
700 - );
701 - add_action( 'admin_footer', array( $this, 'handleGetProSubMenu' ) );
702 - }
703 610 remove_submenu_page( Visualizer_Plugin::NAME, Visualizer_Plugin::NAME );
704 -
705 - add_action( "load-{$this->_libraryPage}", array( $this, 'addScreenOptions' ) );
706 611 }
707 612
708 613 /**
709 - * Handle get pro plugin submenu.
710 - */
711 - public function handleGetProSubMenu() {
712 - ?>
713 - <style type="text/css">
714 - #toplevel_page_visualizer ul.wp-submenu li.wp-first-item + li + li + li {
715 - background: #FF7E65;
716 - font-size: 14px;
717 - font-weight: 600;
718 - color: #fff;
719 - }
720 - #toplevel_page_visualizer ul.wp-submenu li.wp-first-item + li + li + li > a {
721 - color: #fff !important;
722 - }
723 - #toplevel_page_visualizer ul.wp-submenu li.wp-first-item + li + li + li > a:hover {
724 - box-shadow: inherit;
725 - }
726 - #toplevel_page_visualizer ul.wp-submenu li.wp-first-item + li + li + li + li {
727 - display: none;
728 - }
729 - </style>
730 - <script type="text/javascript">
731 - jQuery( document ).ready( function() {
732 - jQuery( '#toplevel_page_visualizer' ).on( 'click', 'li:not(.wp-submenu-head, .wp-first-item):eq(2)', function( e ) {
733 - e.preventDefault();
734 - window.open( '<?php echo tsdk_utmify( 'https://themeisle.com/plugins/visualizer-charts-and-graphs/upgrade/', 'toplevel' ); ?>', '_blank' );
735 - } );
736 - } );
737 - </script>
738 - <?php
739 - }
740 -
741 - /**
742 - * Adds the screen options for pagination.
743 - */
744 - function addScreenOptions() {
745 - $screen = get_current_screen();
746 -
747 - // bail if it's some other page.
748 - if ( ! is_object( $screen ) || $screen->id !== $this->_libraryPage ) {
749 - return;
750 - }
751 -
752 - $args = array(
753 - 'label' => __( 'Number of charts per page:', 'visualizer' ),
754 - 'default' => 6,
755 - 'option' => 'visualizer_library_per_page',
756 - );
757 - add_screen_option( 'per_page', $args );
758 - }
759 -
760 - /**
761 - * Returns the screen option for pagination.
762 - */
763 - function setScreenOptions( $status, $option, $value ) {
764 - if ( 'visualizer_library_per_page' === $option ) {
765 - return $value;
766 - }
767 - }
768 -
769 - /**
770 - * Adds the display filters to be used in the meta_query while displaying the charts.
771 - */
772 - private function getDisplayFilters( &$query_args ) {
773 - $query = array();
774 - global $sitepress;
775 - if ( Visualizer_Module::is_pro() && ( function_exists( 'icl_get_languages' ) && $sitepress instanceof \SitePress ) ) {
776 - $current_lang = icl_get_current_language();
777 - if ( in_array( $current_lang, array( 'all', icl_get_default_language() ), true ) ) {
778 - $query[] = array(
779 - 'key' => 'chart_lang',
780 - 'compare' => 'NOT EXISTS',
781 - );
782 - } else {
783 - $query[] = array(
784 - 'key' => 'chart_lang',
785 - 'value' => $current_lang,
786 - 'compare' => '=',
787 - );
788 - }
789 - }
790 -
791 - // add chart type filter to the query arguments
792 - $type = filter_input( INPUT_GET, 'type' );
793 - if ( $type && in_array( $type, Visualizer_Plugin::getChartTypes(), true ) ) {
794 - $query[] = array(
795 - 'key' => Visualizer_Plugin::CF_CHART_TYPE,
796 - 'value' => $type,
797 - 'compare' => '=',
798 - );
799 - }
800 -
801 - // add chart library filter to the query arguments
802 - $library = filter_input( INPUT_GET, 'library' );
803 - if ( $library ) {
804 - $query[] = array(
805 - 'key' => Visualizer_Plugin::CF_CHART_LIBRARY,
806 - 'value' => $library,
807 - 'compare' => '=',
808 - );
809 - }
810 -
811 - // add date filter to the query arguments
812 - $date = filter_input( INPUT_GET, 'date' );
813 - $possible = array_keys( Visualizer_Plugin::getSupportedDateFilter() );
814 - if ( $date && in_array( $date, $possible, true ) ) {
815 - $query_args['date_query'] = array(
816 - 'after' => "$date -1 day",
817 - 'inclusive' => true,
818 - );
819 - }
820 -
821 - // add source filter to the query arguments
822 - $source = filter_input( INPUT_GET, 'source' );
823 - if ( $source ) {
824 - $source = ucwords( $source );
825 - $source = "Visualizer_Source_{$source}";
826 - $query[] = array(
827 - 'key' => Visualizer_Plugin::CF_SOURCE,
828 - 'value' => $source,
829 - 'compare' => '=',
830 - );
831 - }
832 -
833 - $query_args['meta_query'] = $query;
834 -
835 - $orderby = filter_input( INPUT_GET, 'orderby' );
836 - $order = filter_input( INPUT_GET, 'order' );
837 - if ( $orderby ) {
838 - $query_args['order_by'] = $orderby;
839 - }
840 - $query_args['order'] = empty( $order ) ? 'desc' : $order;
841 - }
842 -
843 - /**
844 614 * Get the instance of WP_Query that fetches the charts as per the given criteria.
845 615 */
846 616 private function getQuery() {
847 617 static $q;
@@ -860,34 +630,29 @@
860 630 'default' => 1,
861 631 ),
862 632 )
863 633 );
864 -
865 - $per_page = 6;
866 - $screen = get_current_screen();
867 - if ( $screen ) {
868 - // retrieve the per_page option
869 - $screen_option = $screen->get_option( 'per_page', 'option' );
870 - // retrieve the value stored for the current user
871 - $user = get_current_user_id();
872 - $per_page = get_user_meta( $user, $screen_option, true );
873 - if ( empty( $per_page ) || $per_page < 1 ) {
874 - // nothing set, get the default value
875 - $per_page = $screen->get_option( 'per_page', 'default' );
876 - }
877 - }
878 -
879 634 // the initial query arguments to fetch charts
880 635 $query_args = array(
881 636 'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
882 - 'posts_per_page' => $per_page,
637 + 'posts_per_page' => 6,
883 638 'paged' => $page,
884 639 );
885 -
886 - $this->getDisplayFilters( $query_args );
887 -
640 + // add chart type filter to the query arguments
641 + $filter = filter_input( INPUT_GET, 'type' );
642 + if ( $filter && in_array( $filter, Visualizer_Plugin::getChartTypes(), true ) ) {
643 + $query_args['meta_query'] = array(
644 + array(
645 + 'key' => Visualizer_Plugin::CF_CHART_TYPE,
646 + 'value' => $filter,
647 + 'compare' => '=',
648 + ),
649 + );
650 + } else {
651 + $filter = 'all';
652 + }
888 653 // Added by Ash/Upwork
889 - $filterByMeta = ! empty( $_GET['s'] ) ? sanitize_text_field( wp_unslash( $_GET['s'] ) ) : null; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
654 + $filterByMeta = filter_input( INPUT_GET, 's', FILTER_SANITIZE_STRING );
890 655 if ( $filterByMeta ) {
891 656 $query = array(
892 657 'key' => Visualizer_Plugin::CF_SETTINGS,
893 658 'value' => $filterByMeta,
@@ -896,9 +661,9 @@
896 661 $meta = isset( $query_args['meta_query'] ) ? $query_args['meta_query'] : array();
897 662 $meta[] = $query;
898 663 $query_args['meta_query'] = $meta;
899 664 }
900 - $q = new WP_Query( apply_filters( 'visualizer_query_args', $query_args ) );
665 + $q = new WP_Query( $query_args );
901 666 return $q;
902 667 }
903 668
904 669 /**
@@ -960,27 +725,12 @@
960 725 if ( ! empty( $atts['settings'] ) ) {
961 726 $settings = apply_filters( $atts['settings'], $settings, $chart->ID, $type );
962 727 }
963 728
964 - if ( $settings ) {
965 - unset( $settings['height'], $settings['width'], $settings['chartArea'] );
966 - }
967 -
729 + unset( $settings['height'], $settings['width'], $settings['chartArea'] );
968 730 $series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
969 - $data = self::get_chart_data( $chart, $type );
731 + $data = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_DATA, unserialize( html_entity_decode( $chart->post_content ) ), $chart->ID, $type );
970 732
971 - // Set default setting series when add manual chart data - Only during first creation.
972 - if ( isset( $settings['series'] ) && ! empty( $series ) ) {
973 - $count_series = count( $series ) - count( $settings['series'] );
974 - if ( $count_series > 1 ) {
975 - $clone_last_series = end( $settings['series'] );
976 - $clone_last_series = array_fill_keys( array_keys( $clone_last_series ), '' );
977 - foreach ( range( 1, $count_series ) as $item ) {
978 - $settings['series'][] = $clone_last_series;
979 - }
980 - }
981 - }
982 -
983 733 $library = $this->load_chart_type( $chart->ID );
984 734
985 735 $id = 'visualizer-' . $chart->ID;
986 736 $arguments = $this->get_inline_custom_css( $id, $settings );
@@ -988,15 +738,8 @@
988 738 $css .= $arguments[0];
989 739 $settings = $arguments[1];
990 740 }
991 741
992 - if ( isset( $settings['controls']['ui']['labelStacking'] ) ) {
993 - unset( $settings['controls']['ui']['labelStacking'] );
994 - }
995 - if ( isset( $settings['controls']['ui']['orientation'] ) ) {
996 - unset( $settings['controls']['ui']['orientation'] );
997 - }
998 -
999 742 // add chart to the array
1000 743 $charts[ $id ] = array(
1001 744 'id' => $chart->ID,
1002 745 'type' => $type,
@@ -1015,38 +758,30 @@
1015 758 'language' => $this->get_language(),
1016 759 'map_api_key' => get_option( 'visualizer-map-api-key' ),
1017 760 'charts' => $charts,
1018 761 'urls' => array(
1019 - 'base' => esc_url( add_query_arg( array( 'vpage' => false, 'vaction' => false ) ) ),
1020 - 'create' => esc_url(
1021 - add_query_arg(
1022 - array(
1023 - 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
1024 - 'library' => 'yes',
1025 - 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
1026 - 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
1027 - 'vaction' => false,
1028 - ),
1029 - $ajaxurl
1030 - )
762 + 'base' => add_query_arg( array( 'vpage' => false, 'vaction' => false ) ),
763 + 'create' => add_query_arg(
764 + array(
765 + 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
766 + 'library' => 'yes',
767 + 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
768 + 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
769 + 'vaction' => false,
770 + ),
771 + $ajaxurl
1031 772 ),
1032 - 'edit' => esc_url(
1033 - add_query_arg(
1034 - array(
1035 - 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
1036 - 'library' => 'yes',
1037 - 'vaction' => false,
1038 - ),
1039 - $ajaxurl
1040 - )
773 + 'edit' => add_query_arg(
774 + array(
775 + 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
776 + 'library' => 'yes',
777 + 'vaction' => false,
778 + ),
779 + $ajaxurl
1041 780 ),
1042 781 ),
1043 782 'page_type' => 'library',
1044 783 'is_front' => false,
1045 - 'i10n' => array(
1046 - 'copied' => __( 'The shortcode has been copied to your clipboard. Hit Ctrl-V/Cmd-V to paste it.', 'visualizer' ),
1047 - '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' ),
1048 - ),
1049 784 )
1050 785 );
1051 786 // render library page
1052 787 $render = new Visualizer_Render_Library();
@@ -1113,9 +848,9 @@
1113 848 esc_html__( 'Docs', 'visualizer' )
1114 849 );
1115 850 // flattr link
1116 851 $plugin_meta[] = sprintf(
1117 - '<a style="color:red" href="' . tsdk_utmify( Visualizer_Plugin::PRO_TEASER_URL, 'pluginrow' ) . '" target="_blank">%s</a>',
852 + '<a style="color:red" href="' . Visualizer_Plugin::PRO_TEASER_URL . '" target="_blank">%s</a>',
1118 853 esc_html__( 'Pro Addon', 'visualizer' )
1119 854 );
1120 855 }
1121 856
@@ -1121,75 +856,5 @@
1121 856
1122 857 return $plugin_meta;
1123 858 }
1124 859
1125 - /**
1126 - * If check is existing user.
1127 - *
1128 - * @return bool Default false
1129 - */
1130 - public static function proFeaturesLocked() {
1131 - if ( Visualizer_Module::is_pro() ) {
1132 - return true;
1133 - }
1134 - return 'yes' === get_option( 'visualizer-new-user', 'yes' ) ? false : true;
1135 - }
1136 -
1137 - /**
1138 - * Multilingual Support.
1139 - *
1140 - * @param int $chart_id Chart ID.
1141 - * @return bool Default false
1142 - */
1143 - public function addMultilingualSupport( $chart_id ) {
1144 - global $sitepress;
1145 - if ( Visualizer_Module::is_pro() ) {
1146 - return;
1147 - }
1148 - if ( function_exists( 'icl_get_languages' ) && $sitepress instanceof \SitePress ) {
1149 - $language = icl_get_languages();
1150 - $current_lang = icl_get_current_language();
1151 - $default_lang = icl_get_default_language();
1152 - $post_info = wpml_get_language_information( null, $chart_id );
1153 - $translations = array();
1154 - if ( ! empty( $post_info ) && ( $default_lang === $post_info['language_code'] ) ) {
1155 - $trid = $sitepress->get_element_trid( $chart_id, 'post_' . Visualizer_Plugin::CPT_VISUALIZER );
1156 - $translations = $sitepress->get_element_translations( $trid );
1157 - }
1158 - if ( empty( $translations ) ) {
1159 - return;
1160 - }
1161 - ?>
1162 - <hr><div class="visualizer-languages-list only-pro">
1163 - <?php
1164 - foreach ( $language as $lang ) {
1165 - $lang_code = $lang['code'];
1166 - if ( $current_lang !== $lang_code ) {
1167 - ?>
1168 - <a href="javascript:;">
1169 - <img src="<?php echo esc_url( $lang['country_flag_url'] ); ?>" alt="<?php echo esc_attr( $lang['translated_name'] ); ?>">
1170 - </a>
1171 - <?php
1172 - }
1173 - }
1174 - ?>
1175 - <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>
1176 - </div>
1177 - <?php
1178 - }
1179 - }
1180 -
1181 - /**
1182 - * Check chart is enabled or not.
1183 - *
1184 - * @param string $type Chart ID.
1185 - *
1186 - * @return bool Default false
1187 - */
1188 - public static function checkChartStatus( $type ) {
1189 - $types = self::_getChartTypesLocalized( false, false, false, true );
1190 - if ( isset( $types[ $type ] ) ) {
1191 - return ! empty( $types[ $type ]['enabled'] );
1192 - }
1193 - return false;
1194 - }
1195 860 }