PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 4.0.0
Visualizer – Tables & Charts Manager with Built-in AI Generator v4.0.0
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 +32 -11 3.11.154.0.0 View file →
@@ -2,9 +2,9 @@
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 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: 3.11.15
6 + Version: 4.0.0
7 7 Author: Themeisle
8 8 Author URI: http://themeisle.com
9 9 License: GPL v2.0 or later
10 10 WordPress Available: yes
@@ -35,17 +35,17 @@
35 35 * approved classes.
36 36 *
37 37 * @since 1.0.0
38 38 *
39 - * @param string $class The class name to autoload.
39 + * @param string $class_name The class name to autoload.
40 40 *
41 41 * @return boolean Returns TRUE if the class is located. Otherwise FALSE.
42 42 */
43 -function visualizer_autoloader( $class ) {
43 +function visualizer_autoloader( $class_name ) {
44 44 $namespaces = array( 'Visualizer' );
45 45 foreach ( $namespaces as $namespace ) {
46 - if ( substr( $class, 0, strlen( $namespace ) ) === $namespace ) {
47 - $filename = dirname( __FILE__ ) . str_replace( '_', DIRECTORY_SEPARATOR, "_classes_{$class}.php" );
46 + if ( substr( $class_name, 0, strlen( $namespace ) ) === $namespace ) {
47 + $filename = __DIR__ . str_replace( '_', DIRECTORY_SEPARATOR, "_classes_{$class_name}.php" );
48 48 if ( is_readable( $filename ) ) {
49 49 require $filename;
50 50
51 51 return true;
@@ -65,9 +65,9 @@
65 65 // setup environment
66 66 define( 'VISUALIZER_BASEFILE', __FILE__ );
67 67 define( 'VISUALIZER_BASENAME', plugin_basename( __FILE__ ) );
68 68 define( 'VISUALIZER_ABSURL', plugins_url( '/', __FILE__ ) );
69 - define( 'VISUALIZER_ABSPATH', dirname( __FILE__ ) );
69 + define( 'VISUALIZER_ABSPATH', __DIR__ );
70 70 define( 'VISUALIZER_DIRNAME', basename( VISUALIZER_ABSPATH ) );
71 71 define( 'VISUALIZER_REST_VERSION', 1 );
72 72 // 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 73 // this is also used in Block.php
@@ -92,12 +92,13 @@
92 92
93 93 // the link to pre-build queries.
94 94 define( 'VISUALIZER_DB_QUERY_DOC_URL', 'https://docs.themeisle.com/article/970-visualizer-sample-queries-to-generate-charts' );
95 95 define( 'VISUALIZER_MAIN_DOC', 'https://docs.themeisle.com/category/657-visualizer' );
96 - define( 'VISUALIZER_DOC_COLLECTION', 'https://docs.themeisle.com/search?collectionId=561ec249c69791452ed4bceb&query=#+visualizer' );
96 + define( 'VISUALIZER_DOC_COLLECTION', 'https://docs.themeisle.com/visualizer-charts-and-graphs/?query=#' );
97 97 define( 'VISUALIZER_DEMO_URL', 'https://demo.themeisle.com/visualizer/#' );
98 98 define( 'VISUALIZER_CODE_SNIPPETS_URL', 'https://docs.themeisle.com/category/726-visualizer' );
99 99 define( 'VISUALIZER_SUBSCRIBE_API', 'https://api.themeisle.com/tracking/subscribe' );
100 + define( 'VISUALIZER_AGENTS_URL', 'https://ai.themeisle.com' );
100 101
101 102 // to redirect all themeisle_log_event to error log.
102 103 define( 'VISUALIZER_LOCAL_DEBUG', false );
103 104
@@ -111,8 +112,18 @@
111 112 Visualizer_Gutenberg_Block::get_instance();
112 113 }}
113 114 );
114 115
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 +
115 126 // set general modules
116 127 $plugin->setModule( Visualizer_Module_Utility::NAME );
117 128 $plugin->setModule( Visualizer_Module_Setup::NAME );
118 129 $plugin->setModule( Visualizer_Module_Sources::NAME );
@@ -130,12 +141,22 @@
130 141
131 142 // Set setup wizard module.
132 143 $plugin->setModule( Visualizer_Module_Wizard::NAME );
133 144
145 + // AI Chart Builder module (AJAX endpoints for the React wizard).
146 + $plugin->setModule( Visualizer_Module_AIBuilder::NAME );
147 +
134 148 $vendor_file = VISUALIZER_ABSPATH . '/vendor/autoload.php';
135 149 if ( is_readable( $vendor_file ) ) {
136 - include_once( $vendor_file );
150 + include_once $vendor_file;
137 151 }
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 +
138 159 add_filter( 'themeisle_sdk_products', 'visualizer_register_sdk', 10, 1 );
139 160 add_filter( 'pirate_parrot_log', 'visualizer_register_parrot', 10, 1 );
140 161 add_filter(
141 162 'themeisle_sdk_compatibilities/' . VISUALIZER_DIRNAME, function ( $compatibilities ) {
@@ -148,9 +169,9 @@
148 169 }
149 170 );
150 171 add_filter(
151 172 'visualizer_about_us_metadata',
152 - function() {
173 + function () {
153 174 return array(
154 175 'logo' => esc_url( VISUALIZER_ABSURL . 'images/visualizer-logo.svg' ),
155 176 'location' => 'visualizer',
156 177 'has_upgrade_menu' => ! Visualizer_Module::is_pro(),
@@ -163,14 +184,14 @@
163 184 if ( ! defined( 'TI_E2E_TESTING' ) && 'yes' === get_option( 'visualizer_logger_flag', 'no' ) ) {
164 185 add_filter( 'themeisle_sdk_enable_telemetry', '__return_true' );
165 186 add_filter(
166 187 'themeisle_sdk_telemetry_products',
167 - function( $products ) {
188 + function ( $products ) {
168 189 $already_registered = false;
169 190
170 191 $license = get_option( 'visualizer_pro_license_data', 'free' );
171 192 if ( ! empty( $license ) && is_object( $license ) ) {
172 - $license = $license->key;
193 + $license = $license->key ?? 'free';
173 194 }
174 195 $track_hash = 'free' === $license ? 'free' : wp_hash( $license );
175 196
176 197 foreach ( $products as &$product ) {