PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.10.8
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.10.8
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 | index.php +15 -69 4.0.73.10.8 View file →
@@ -1,12 +1,14 @@
1 1 <?php
2 2 /*
3 3 Plugin Name: Visualizer: Tables and Charts for WordPress
4 4 Plugin URI: https://themeisle.com/plugins/visualizer-charts-and-graphs/
5 - Description: Effortlessly create and embed responsive charts and tables with Visualizer, a powerful WordPress plugin that enhances data presentation from multiple sources.
6 - Version: 4.0.7
5 + Description: A simple, easy to use and quite powerful tool to create, manage and embed interactive charts into your WordPress posts and pages. The plugin uses Google Visualization API to render charts, which supports cross-browser compatibility (adopting VML for older IE versions) and cross-platform portability to iOS and new Android releases.
6 + Version: 3.10.8
7 7 Author: Themeisle
8 8 Author URI: http://themeisle.com
9 + Requires at least: 5.2
10 + Tested up to: 5.6
9 11 License: GPL v2.0 or later
10 12 WordPress Available: yes
11 13 Requires License: no
12 14 Pro Slug: visualizer-pro
@@ -35,17 +37,17 @@
35 37 * approved classes.
36 38 *
37 39 * @since 1.0.0
38 40 *
39 - * @param string $class_name The class name to autoload.
41 + * @param string $class The class name to autoload.
40 42 *
41 43 * @return boolean Returns TRUE if the class is located. Otherwise FALSE.
42 44 */
43 -function visualizer_autoloader( $class_name ) {
45 +function visualizer_autoloader( $class ) {
44 46 $namespaces = array( 'Visualizer' );
45 47 foreach ( $namespaces as $namespace ) {
46 - if ( substr( $class_name, 0, strlen( $namespace ) ) === $namespace ) {
47 - $filename = __DIR__ . str_replace( '_', DIRECTORY_SEPARATOR, "_classes_{$class_name}.php" );
48 + if ( substr( $class, 0, strlen( $namespace ) ) === $namespace ) {
49 + $filename = dirname( __FILE__ ) . str_replace( '_', DIRECTORY_SEPARATOR, "_classes_{$class}.php" );
48 50 if ( is_readable( $filename ) ) {
49 51 require $filename;
50 52
51 53 return true;
@@ -65,9 +67,9 @@
65 67 // setup environment
66 68 define( 'VISUALIZER_BASEFILE', __FILE__ );
67 69 define( 'VISUALIZER_BASENAME', plugin_basename( __FILE__ ) );
68 70 define( 'VISUALIZER_ABSURL', plugins_url( '/', __FILE__ ) );
69 - define( 'VISUALIZER_ABSPATH', __DIR__ );
71 + define( 'VISUALIZER_ABSPATH', dirname( __FILE__ ) );
70 72 define( 'VISUALIZER_DIRNAME', basename( VISUALIZER_ABSPATH ) );
71 73 define( 'VISUALIZER_REST_VERSION', 1 );
72 74 // if the below is true, then the js/customization.js in the plugin folder will be used instead of the one in the uploads folder (if it exists).
73 75 // this is also used in Block.php
@@ -92,13 +94,12 @@
92 94
93 95 // the link to pre-build queries.
94 96 define( 'VISUALIZER_DB_QUERY_DOC_URL', 'https://docs.themeisle.com/article/970-visualizer-sample-queries-to-generate-charts' );
95 97 define( 'VISUALIZER_MAIN_DOC', 'https://docs.themeisle.com/category/657-visualizer' );
96 - define( 'VISUALIZER_DOC_COLLECTION', 'https://docs.themeisle.com/visualizer-charts-and-graphs/?query=#' );
98 + define( 'VISUALIZER_DOC_COLLECTION', 'https://docs.themeisle.com/search?collectionId=561ec249c69791452ed4bceb&query=#+visualizer' );
97 99 define( 'VISUALIZER_DEMO_URL', 'https://demo.themeisle.com/visualizer/#' );
98 100 define( 'VISUALIZER_CODE_SNIPPETS_URL', 'https://docs.themeisle.com/category/726-visualizer' );
99 101 define( 'VISUALIZER_SUBSCRIBE_API', 'https://api.themeisle.com/tracking/subscribe' );
100 - define( 'VISUALIZER_AGENTS_URL', 'https://ai.themeisle.com' );
101 102
102 103 // to redirect all themeisle_log_event to error log.
103 104 define( 'VISUALIZER_LOCAL_DEBUG', false );
104 105
@@ -112,18 +113,8 @@
112 113 Visualizer_Gutenberg_Block::get_instance();
113 114 }}
114 115 );
115 116
116 - // register Elementor widget and related hooks
117 - // Use elementor/init so Elementor's autoloader is registered and Widget_Base is resolvable.
118 - add_action(
119 - 'elementor/init',
120 - function () {
121 - require_once VISUALIZER_ABSPATH . '/classes/Visualizer/Elementor/Widget.php';
122 - Visualizer_Elementor_Widget::register_hooks();
123 - }
124 - );
125 -
126 117 // set general modules
127 118 $plugin->setModule( Visualizer_Module_Utility::NAME );
128 119 $plugin->setModule( Visualizer_Module_Setup::NAME );
129 120 $plugin->setModule( Visualizer_Module_Sources::NAME );
@@ -141,22 +132,12 @@
141 132
142 133 // Set setup wizard module.
143 134 $plugin->setModule( Visualizer_Module_Wizard::NAME );
144 135
145 - // AI Chart Builder module (AJAX endpoints for the React wizard).
146 - $plugin->setModule( Visualizer_Module_AIBuilder::NAME );
147 -
148 136 $vendor_file = VISUALIZER_ABSPATH . '/vendor/autoload.php';
149 137 if ( is_readable( $vendor_file ) ) {
150 - include_once $vendor_file;
138 + include_once( $vendor_file );
151 139 }
152 -
153 - $action_scheduler_file = VISUALIZER_ABSPATH . '/vendor/woocommerce/action-scheduler/action-scheduler.php';
154 -
155 - if ( is_readable( $action_scheduler_file ) ) {
156 - require_once $action_scheduler_file;
157 - }
158 -
159 140 add_filter( 'themeisle_sdk_products', 'visualizer_register_sdk', 10, 1 );
160 141 add_filter( 'pirate_parrot_log', 'visualizer_register_parrot', 10, 1 );
161 142 add_filter(
162 143 'themeisle_sdk_compatibilities/' . VISUALIZER_DIRNAME, function ( $compatibilities ) {
@@ -162,9 +143,9 @@
162 143 'themeisle_sdk_compatibilities/' . VISUALIZER_DIRNAME, function ( $compatibilities ) {
163 144 $compatibilities['VisualizerPRO'] = array(
164 145 'basefile' => defined( 'VISUALIZER_PRO_BASEFILE' ) ? VISUALIZER_PRO_BASEFILE : '',
165 146 'required' => '1.8',
166 - 'tested_up' => '2.0',
147 + 'tested_up' => '1.13',
167 148 );
168 149 return $compatibilities;
169 150 }
170 151 );
@@ -169,53 +150,18 @@
169 150 }
170 151 );
171 152 add_filter(
172 153 'visualizer_about_us_metadata',
173 - function () {
154 + function() {
174 155 return array(
175 156 'logo' => esc_url( VISUALIZER_ABSURL . 'images/visualizer-logo.svg' ),
176 157 'location' => 'visualizer',
177 158 'has_upgrade_menu' => ! Visualizer_Module::is_pro(),
178 - 'upgrade_text' => esc_html__( 'Get Visualizer Pro', 'visualizer' ),
179 - 'upgrade_link' => esc_url( tsdk_utmify( Visualizer_Plugin::PRO_TEASER_URL, 'sidebarMenuUpgrade', 'index' ) ),
159 + 'upgrade_text' => esc_html__( 'Get Visualizer Pro', 'feedzy-rss-feeds' ),
160 + 'upgrade_link' => esc_url( tsdk_utmify( Visualizer_Plugin::PRO_TEASER_URL, 'aboutUsPage' ) ),
180 161 );
181 162 }
182 163 );
183 -
184 - if ( ! defined( 'TI_E2E_TESTING' ) && 'yes' === get_option( 'visualizer_logger_flag', 'no' ) ) {
185 - add_filter( 'themeisle_sdk_enable_telemetry', '__return_true' );
186 - add_filter(
187 - 'themeisle_sdk_telemetry_products',
188 - function ( $products ) {
189 - $already_registered = false;
190 -
191 - $license = get_option( 'visualizer_pro_license_data', 'free' );
192 - if ( ! empty( $license ) && is_object( $license ) ) {
193 - $license = $license->key ?? 'free';
194 - }
195 - $track_hash = 'free' === $license ? 'free' : wp_hash( $license );
196 -
197 - foreach ( $products as &$product ) {
198 - if ( strstr( $product['slug'], 'visualizer' ) !== false ) {
199 - $already_registered = true;
200 - $product['trackHash'] = $track_hash;
201 - }
202 - }
203 -
204 - if ( $already_registered ) {
205 - return $products;
206 - }
207 -
208 - // Add Visualizer to the list of products to track the usage of AI Block.
209 - $products[] = array(
210 - 'slug' => 'visualizer',
211 - 'consent' => 'yes' === get_option( 'visualizer_logger_flag', 'no' ),
212 - 'trackHash' => $track_hash,
213 - );
214 - return $products;
215 - }
216 - );
217 - }
218 164 }
219 165
220 166 /**
221 167 * Registers with the SDK