PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.0.5
MxChat – AI Chatbot & Content Generation for WordPress v2.0.5
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
mxchat-basic / mxchat-basic.php

mxchat-basic.php in MxChat – AI Chatbot & Content Generation for WordPress 2.0.5, at mxchat-basic.php

177 lines 6.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
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.5
6 * Author: MxChat
7 * Author URI: https://mxchat.ai
8 * License: GPLv2 or later
9 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
10 * Text Domain: mxchat
11 * Domain Path: /languages
12 */
13
14 if (!defined('ABSPATH')) {
15 exit; // Exit if accessed directly.
16 }
17
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 // Include classes
25 require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-integrator.php';
26 require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-admin.php';
27 require_once plugin_dir_path(__FILE__) . 'includes/class-mxchat-public.php';
28 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
34 function mxchat_activate() {
35 global $wpdb;
36 $charset_collate = $wpdb->get_charset_collate();
37
38 // Chat Transcripts Table
39 $chat_transcripts_table = $wpdb->prefix . 'mxchat_chat_transcripts';
40 $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;";
50
51 // System Prompt Content Table
52 $system_prompt_table = $wpdb->prefix . 'mxchat_system_prompt_content';
53 $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;";
62
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;";
74
75 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
76
77 // Create or update tables
78 dbDelta($sql_chat_transcripts);
79 dbDelta($sql_system_prompt);
80 dbDelta($sql_intents_table);
81
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');
85
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');
89
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.5');
95 }
96
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 function mxchat_check_for_update() {
107 $current_version = get_option('mxchat_plugin_version');
108 $plugin_version = '2.0.5'; // Update with your latest version
109
110 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
114 }
115 }
116
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 // Run the update check function on every request
151 add_action('plugins_loaded', 'mxchat_check_for_update');
152
153 // Register activation hook
154 register_activation_hook(__FILE__, 'mxchat_activate');
155
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 // Instantiate classes
172 if (is_admin()) {
173 $mxchat_admin = new MxChat_Admin();
174 }
175 $mxchat_public = new MxChat_Public();
176 $mxchat_integrator = new MxChat_Integrator();
177