PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.3.2
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.3.2
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 -405 3.10.33.3.2 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,151 +606,12 @@
687 606 'edit_posts',
688 607 'viz-support',
689 608 array( $this, 'renderSupportPage' )
690 609 );
691 -
692 610 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 611 }
697 612
698 613 /**
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 614 * Get the instance of WP_Query that fetches the charts as per the given criteria.
835 615 */
836 616 private function getQuery() {
837 617 static $q;
@@ -850,34 +630,29 @@
850 630 'default' => 1,
851 631 ),
852 632 )
853 633 );
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 634 // the initial query arguments to fetch charts
870 635 $query_args = array(
871 636 'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
872 - 'posts_per_page' => $per_page,
637 + 'posts_per_page' => 6,
873 638 'paged' => $page,
874 639 );
875 -
876 - $this->getDisplayFilters( $query_args );
877 -
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 + }
878 653 // Added by Ash/Upwork
879 - $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 );
880 655 if ( $filterByMeta ) {
881 656 $query = array(
882 657 'key' => Visualizer_Plugin::CF_SETTINGS,
883 658 'value' => $filterByMeta,
@@ -886,9 +661,9 @@
886 661 $meta = isset( $query_args['meta_query'] ) ? $query_args['meta_query'] : array();
887 662 $meta[] = $query;
888 663 $query_args['meta_query'] = $meta;
889 664 }
890 - $q = new WP_Query( apply_filters( 'visualizer_query_args', $query_args ) );
665 + $q = new WP_Query( $query_args );
891 666 return $q;
892 667 }
893 668
894 669 /**
@@ -950,27 +725,12 @@
950 725 if ( ! empty( $atts['settings'] ) ) {
951 726 $settings = apply_filters( $atts['settings'], $settings, $chart->ID, $type );
952 727 }
953 728
954 - if ( $settings ) {
955 - unset( $settings['height'], $settings['width'], $settings['chartArea'] );
956 - }
957 -
729 + unset( $settings['height'], $settings['width'], $settings['chartArea'] );
958 730 $series = apply_filters( Visualizer_Plugin::FILTER_GET_CHART_SERIES, get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ), $chart->ID, $type );
959 - $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 );
960 732
961 - // Set default setting series when add manual chart data - Only during first creation.
962 - if ( isset( $settings['series'] ) && ! empty( $series ) ) {
963 - $count_series = count( $series ) - count( $settings['series'] );
964 - if ( $count_series > 1 ) {
965 - $clone_last_series = end( $settings['series'] );
966 - $clone_last_series = array_fill_keys( array_keys( $clone_last_series ), '' );
967 - foreach ( range( 1, $count_series ) as $item ) {
968 - $settings['series'][] = $clone_last_series;
969 - }
970 - }
971 - }
972 -
973 733 $library = $this->load_chart_type( $chart->ID );
974 734
975 735 $id = 'visualizer-' . $chart->ID;
976 736 $arguments = $this->get_inline_custom_css( $id, $settings );
@@ -978,15 +738,8 @@
978 738 $css .= $arguments[0];
979 739 $settings = $arguments[1];
980 740 }
981 741
982 - if ( isset( $settings['controls']['ui']['labelStacking'] ) ) {
983 - unset( $settings['controls']['ui']['labelStacking'] );
984 - }
985 - if ( isset( $settings['controls']['ui']['orientation'] ) ) {
986 - unset( $settings['controls']['ui']['orientation'] );
987 - }
988 -
989 742 // add chart to the array
990 743 $charts[ $id ] = array(
991 744 'id' => $chart->ID,
992 745 'type' => $type,
@@ -1005,38 +758,30 @@
1005 758 'language' => $this->get_language(),
1006 759 'map_api_key' => get_option( 'visualizer-map-api-key' ),
1007 760 'charts' => $charts,
1008 761 'urls' => array(
1009 - 'base' => esc_url( add_query_arg( array( 'vpage' => false, 'vaction' => false ) ) ),
1010 - 'create' => esc_url(
1011 - add_query_arg(
1012 - array(
1013 - 'action' => Visualizer_Plugin::ACTION_CREATE_CHART,
1014 - 'library' => 'yes',
1015 - 'type' => isset( $_GET['type'] ) ? $_GET['type'] : '',
1016 - 'chart-library' => isset( $_GET['chart-library'] ) ? $_GET['chart-library'] : '',
1017 - 'vaction' => false,
1018 - ),
1019 - $ajaxurl
1020 - )
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
1021 772 ),
1022 - 'edit' => esc_url(
1023 - add_query_arg(
1024 - array(
1025 - 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
1026 - 'library' => 'yes',
1027 - 'vaction' => false,
1028 - ),
1029 - $ajaxurl
1030 - )
773 + 'edit' => add_query_arg(
774 + array(
775 + 'action' => Visualizer_Plugin::ACTION_EDIT_CHART,
776 + 'library' => 'yes',
777 + 'vaction' => false,
778 + ),
779 + $ajaxurl
1031 780 ),
1032 781 ),
1033 782 'page_type' => 'library',
1034 783 'is_front' => false,
1035 - 'i10n' => array(
1036 - 'copied' => __( 'The shortcode has been copied to your clipboard. Hit Ctrl-V/Cmd-V to paste it.', 'visualizer' ),
1037 - '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' ),
1038 - ),
1039 784 )
1040 785 );
1041 786 // render library page
1042 787 $render = new Visualizer_Render_Library();
@@ -1103,9 +848,9 @@
1103 848 esc_html__( 'Docs', 'visualizer' )
1104 849 );
1105 850 // flattr link
1106 851 $plugin_meta[] = sprintf(
1107 - '<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>',
1108 853 esc_html__( 'Pro Addon', 'visualizer' )
1109 854 );
1110 855 }
1111 856
@@ -1111,75 +856,5 @@
1111 856
1112 857 return $plugin_meta;
1113 858 }
1114 859
1115 - /**
1116 - * If check is existing user.
1117 - *
1118 - * @return bool Default false
1119 - */
1120 - public static function proFeaturesLocked() {
1121 - if ( Visualizer_Module::is_pro() ) {
1122 - return true;
1123 - }
1124 - return 'yes' === get_option( 'visualizer-new-user', 'yes' ) ? false : true;
1125 - }
1126 -
1127 - /**
1128 - * Multilingual Support.
1129 - *
1130 - * @param int $chart_id Chart ID.
1131 - * @return bool Default false
1132 - */
1133 - public function addMultilingualSupport( $chart_id ) {
1134 - global $sitepress;
1135 - if ( Visualizer_Module::is_pro() ) {
1136 - return;
1137 - }
1138 - if ( function_exists( 'icl_get_languages' ) && $sitepress instanceof \SitePress ) {
1139 - $language = icl_get_languages();
1140 - $current_lang = icl_get_current_language();
1141 - $default_lang = icl_get_default_language();
1142 - $post_info = wpml_get_language_information( null, $chart_id );
1143 - $translations = array();
1144 - if ( ! empty( $post_info ) && ( $default_lang === $post_info['language_code'] ) ) {
1145 - $trid = $sitepress->get_element_trid( $chart_id, 'post_' . Visualizer_Plugin::CPT_VISUALIZER );
1146 - $translations = $sitepress->get_element_translations( $trid );
1147 - }
1148 - if ( empty( $translations ) ) {
1149 - return;
1150 - }
1151 - ?>
1152 - <hr><div class="visualizer-languages-list only-pro">
1153 - <?php
1154 - foreach ( $language as $lang ) {
1155 - $lang_code = $lang['code'];
1156 - if ( $current_lang !== $lang_code ) {
1157 - ?>
1158 - <a href="javascript:;">
1159 - <img src="<?php echo esc_url( $lang['country_flag_url'] ); ?>" alt="<?php echo esc_attr( $lang['translated_name'] ); ?>">
1160 - </a>
1161 - <?php
1162 - }
1163 - }
1164 - ?>
1165 - <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>
1166 - </div>
1167 - <?php
1168 - }
1169 - }
1170 -
1171 - /**
1172 - * Check chart is enabled or not.
1173 - *
1174 - * @param string $type Chart ID.
1175 - *
1176 - * @return bool Default false
1177 - */
1178 - public static function checkChartStatus( $type ) {
1179 - $types = self::_getChartTypesLocalized( false, false, false, true );
1180 - if ( isset( $types[ $type ] ) ) {
1181 - return ! empty( $types[ $type ]['enabled'] );
1182 - }
1183 - return false;
1184 - }
1185 860 }