PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 1.0.6
MxChat – AI Chatbot & Content Generation for WordPress v1.0.6
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
← All changes | mxchat-basic.php +52 -120 2.0.41.0.6 View file →
@@ -1,15 +1,13 @@
1 1 <?php
2 2 /**
3 3 * Plugin Name: MxChat
4 - * Description: AI chatbot for WordPress with OpenAI, Claude, xAI, DeepSeek, live agent, PDF uploads, WooCommerce, and training on website data.
5 - * Version: 2.0.4
4 + * Description: AI Chatbot for WordPress. Features like custom knowledge submission, chat transcripts, and OpenAI integration for real-time user interaction. Perfect for blogs, business sites, e-commerce platforms, and more.
5 + * Version: 1.0.6
6 6 * Author: MxChat
7 - * Author URI: https://mxchat.ai
7 + * Author URI: https://mxchat.ai/
8 8 * License: GPLv2 or later
9 9 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
10 - * Text Domain: mxchat
11 - * Domain Path: /languages
12 10 */
13 11
14 12 if (!defined('ABSPATH')) {
15 13 exit; // Exit if accessed directly.
@@ -14,140 +12,88 @@
14 12 if (!defined('ABSPATH')) {
15 13 exit; // Exit if accessed directly.
16 14 }
17 15
18 -
19 -function mxchat_load_textdomain() {
20 - load_plugin_textdomain('mxchat', false, dirname(plugin_basename(__FILE__)) . '/languages');
21 -}
22 -add_action('plugins_loaded', 'mxchat_load_textdomain');
23 -
24 16 // Include classes
25 17 require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-integrator.php';
26 18 require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-admin.php';
27 19 require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-public.php';
28 20 require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-utils.php';
29 -require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-user.php';
30 -require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-woocommerce.php';
31 -require_once plugin_dir_path(__FILE__) . 'includes/pdf-parser/alt_autoload.php';
32 -require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-word-handler.php';
33 21
34 22 function mxchat_activate() {
35 23 global $wpdb;
36 - $charset_collate = $wpdb->get_charset_collate();
37 24
38 25 // Chat Transcripts Table
39 26 $chat_transcripts_table = $wpdb->prefix . 'mxchat_chat_transcripts';
40 27 $sql_chat_transcripts = "CREATE TABLE $chat_transcripts_table (
41 - id MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
42 - user_id MEDIUMINT(9) DEFAULT 0,
43 - session_id VARCHAR(255) NOT NULL,
44 - role VARCHAR(255) NOT NULL,
45 - message TEXT NOT NULL,
46 - user_email VARCHAR(255) DEFAULT NULL,
47 - timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
48 - PRIMARY KEY (id)
49 - ) $charset_collate;";
28 + id mediumint(9) NOT NULL AUTO_INCREMENT,
29 + user_id mediumint(9) DEFAULT 0,
30 + session_id varchar(255) NOT NULL,
31 + role varchar(255) NOT NULL,
32 + message text NOT NULL,
33 + timestamp timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
34 + PRIMARY KEY (id)
35 + );";
50 36
51 37 // System Prompt Content Table
52 38 $system_prompt_table = $wpdb->prefix . 'mxchat_system_prompt_content';
53 39 $sql_system_prompt = "CREATE TABLE $system_prompt_table (
54 - id MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
55 - url VARCHAR(255) NOT NULL,
56 - article_content LONGTEXT NOT NULL,
57 - embedding_vector LONGTEXT,
58 - source_url VARCHAR(255) DEFAULT NULL,
59 - timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
60 - PRIMARY KEY (id)
61 - ) $charset_collate;";
40 + id mediumint(9) NOT NULL AUTO_INCREMENT,
41 + url varchar(255) NOT NULL,
42 + article_content longtext NOT NULL,
43 + embedding_vector longtext,
44 + timestamp timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
45 + PRIMARY KEY (id)
46 + );";
62 47
63 - // Intents Table
64 - $intents_table = $wpdb->prefix . 'mxchat_intents';
65 - $sql_intents_table = "CREATE TABLE $intents_table (
66 - id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
67 - intent_label VARCHAR(255) NOT NULL,
68 - phrases TEXT NOT NULL,
69 - embedding_vector LONGTEXT NOT NULL,
70 - callback_function VARCHAR(255) NOT NULL,
71 - similarity_threshold FLOAT DEFAULT 0.85,
72 - PRIMARY KEY (id)
73 - ) $charset_collate;";
48 + require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
74 49
75 - require_once ABSPATH . 'wp-admin/includes/upgrade.php';
50 + // Create or update the chat transcripts table
51 + dbDelta($sql_chat_transcripts);
76 52
77 - // Create or update tables
78 - dbDelta($sql_chat_transcripts);
53 + // Create or update the system prompt content table
79 54 dbDelta($sql_system_prompt);
80 - dbDelta($sql_intents_table);
81 55
82 - // Ensure additional columns in `mxchat_chat_transcripts`
83 - mxchat_add_missing_columns($chat_transcripts_table, 'user_identifier', 'VARCHAR(255)');
84 - mxchat_add_missing_columns($chat_transcripts_table, 'user_email', 'VARCHAR(255) DEFAULT NULL');
56 + // Ensure 'embedding_vector' column exists in the 'system_prompt_content' table
57 + $column_exists = $wpdb->get_results($wpdb->prepare(
58 + "SHOW COLUMNS FROM %s LIKE %s",
59 + $system_prompt_table,
60 + 'embedding_vector'
61 + ));
62 + if (empty($column_exists)) {
63 + $wpdb->query($wpdb->prepare(
64 + "ALTER TABLE %s ADD COLUMN embedding_vector longtext",
65 + $system_prompt_table
66 + ));
67 + }
85 68
86 - // Ensure additional columns in `mxchat_system_prompt_content`
87 - mxchat_add_missing_columns($system_prompt_table, 'embedding_vector', 'LONGTEXT');
88 - mxchat_add_missing_columns($system_prompt_table, 'source_url', 'VARCHAR(255) DEFAULT NULL');
69 + // Ensure 'source_url' column exists in the 'system_prompt_content' table
70 + $source_url_exists = $wpdb->get_results($wpdb->prepare(
71 + "SHOW COLUMNS FROM %s LIKE %s",
72 + $system_prompt_table,
73 + 'source_url'
74 + ));
75 + if (empty($source_url_exists)) {
76 + $wpdb->query($wpdb->prepare(
77 + "ALTER TABLE %s ADD COLUMN source_url VARCHAR(255) DEFAULT NULL",
78 + $system_prompt_table
79 + ));
80 + }
89 81
90 - // Set default thresholds for existing intents
91 - $wpdb->query("UPDATE {$intents_table} SET similarity_threshold = 0.85 WHERE similarity_threshold IS NULL");
92 -
93 - // Update plugin version in the database
94 - update_option('mxchat_plugin_version', '2.0.4');
82 + // Update the version number in the database
83 + update_option('mxchat_plugin_version', '1.0.6');
95 84 }
96 85
97 -
98 -function mxchat_add_missing_columns($table, $column_name, $column_type) {
99 - global $wpdb;
100 - $column_exists = $wpdb->get_results($wpdb->prepare("SHOW COLUMNS FROM $table LIKE %s", $column_name));
101 - if (empty($column_exists)) {
102 - $wpdb->query("ALTER TABLE $table ADD COLUMN $column_name $column_type");
103 - }
104 -}
105 -
106 86 function mxchat_check_for_update() {
107 87 $current_version = get_option('mxchat_plugin_version');
108 - $plugin_version = '2.0.4'; // Update with your latest version
88 + $plugin_version = '1.0.6';
109 89
110 90 if ($current_version !== $plugin_version) {
111 - mxchat_activate(); // Run the activation script to apply schema changes
112 - mxchat_migrate_live_agent_status(); // Add migration for live agent status
113 - update_option('mxchat_plugin_version', $plugin_version); // Update the version
91 + mxchat_activate(); // Run the activation script which includes database migrations
92 + update_option('mxchat_plugin_version', $plugin_version); // Update to the latest version
114 93 }
115 94 }
116 95
117 -function mxchat_migrate_live_agent_status() {
118 - $options = get_option('mxchat_options', []);
119 -
120 - // Check if live_agent_status exists
121 - if (isset($options['live_agent_status'])) {
122 - $current_status = $options['live_agent_status'];
123 - $needs_update = false;
124 -
125 - // Convert to new format if needed
126 - if ($current_status === 'online') {
127 - $options['live_agent_status'] = 'on';
128 - $needs_update = true;
129 - } else if ($current_status === 'offline') {
130 - $options['live_agent_status'] = 'off';
131 - $needs_update = true;
132 - } else if (!in_array($current_status, ['on', 'off'])) {
133 - // Default to off for any unexpected values
134 - $options['live_agent_status'] = 'off';
135 - $needs_update = true;
136 - }
137 -
138 - // Only update if needed
139 - if ($needs_update) {
140 - update_option('mxchat_options', $options);
141 - }
142 - } else {
143 - // If status doesn't exist, set default to off
144 - $options['live_agent_status'] = 'off';
145 - update_option('mxchat_options', $options);
146 - }
147 -}
148 -
149 -
150 96 // Run the update check function on every request
151 97 add_action('plugins_loaded', 'mxchat_check_for_update');
152 98
153 99 // Register activation hook
@@ -152,23 +98,8 @@
152 98
153 99 // Register activation hook
154 100 register_activation_hook(__FILE__, 'mxchat_activate');
155 101
156 -
157 -add_filter('cron_schedules', function($schedules) {
158 - $schedules['one_minute'] = array(
159 - 'interval' => 60,
160 - 'display' => 'Every Minute'
161 - );
162 - return $schedules;
163 -});
164 -
165 -add_action('init', function() {
166 - add_action('mxchat_process_pdf_pages', array('MxChat_Admin', 'process_pdf_pages_cron'), 10, 5);
167 - add_action('mxchat_process_sitemap_urls', array('MxChat_Admin', 'process_sitemap_urls_cron'), 10, 5);
168 -});
169 -
170 -
171 102 // Instantiate classes
172 103 if (is_admin()) {
173 104 $mxchat_admin = new MxChat_Admin();
174 105 }
@@ -173,4 +104,5 @@
173 104 $mxchat_admin = new MxChat_Admin();
174 105 }
175 106 $mxchat_public = new MxChat_Public();
176 107 $mxchat_integrator = new MxChat_Integrator();
108 +