PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 1.3.59
AI Engine – The Chatbot, AI Framework & MCP for WordPress v1.3.59
3.5.9 3.5.8 3.5.7 3.5.6 3.5.5 3.5.4 3.5.3 3.5.2 3.5.1 3.5.0 3.4.9 3.4.8 3.4.7 0.2.1 1.6.91 0.2.2 1.6.92 0.2.3 1.6.93 0.2.4 1.6.94 0.2.5 1.6.95 0.2.6 1.6.96 0.2.7 1.6.97 0.2.8 1.6.98 0.2.9 1.6.99 0.3.0 1.7.0 0.3.1 1.7.1 0.3.2 1.7.2 0.3.3 1.7.3 0.3.4 1.7.4 0.3.5 1.7.5 0.3.6 1.7.6 0.4.0 1.7.7 0.4.1 1.7.8 0.4.2 1.7.9 0.4.3 1.8.0 0.4.4 1.8.1 0.4.5 1.8.2 0.4.6 1.8.3 0.4.7 1.8.4 0.4.8 1.8.5 0.4.9 1.8.6 0.5.0 1.8.7 0.5.1 1.8.8 0.5.2 1.8.9 0.5.3 1.9.0 0.5.4 1.9.1 0.5.5 1.9.2 0.5.6 1.9.3 0.5.7 1.9.4 0.5.8 1.9.5 0.5.9 1.9.6 0.6.0 1.9.7 0.6.1 1.9.8 0.6.2 1.9.81 0.6.3 1.9.82 0.6.4 1.9.83 0.6.5 1.9.84 0.6.6 1.9.85 0.6.7 1.9.86 0.6.8 1.9.87 0.6.9 1.9.88 0.7.0 1.9.89 0.7.1 1.9.90 0.7.2 1.9.91 0.7.3 1.9.92 0.7.4 1.9.93 0.7.5 1.9.94 0.7.6 1.9.95 0.7.7 1.9.96 0.7.8 1.9.97 0.7.9 1.9.98 0.8.0 1.9.99 0.8.1 2.0.0 0.8.2 2.0.1 0.8.3 2.0.2 0.8.4 2.0.3 0.8.5 2.0.4 0.8.6 2.0.5 0.8.7 2.0.6 0.8.8 2.0.7 0.8.9 2.0.8 0.9.0 2.0.9 0.9.2 2.1.0 0.9.3 2.1.1 0.9.4 2.1.2 0.9.5 2.1.3 0.9.6 2.1.4 0.9.7 2.1.5 0.9.8 2.1.6 0.9.81 2.1.7 0.9.82 2.1.8 0.9.83 2.1.9 0.9.84 2.2.0 0.9.85 2.2.1 0.9.86 2.2.2 0.9.87 2.2.3 0.9.88 2.2.4 0.9.89 2.2.5 0.9.9 2.2.51 0.9.91 2.2.52 0.9.92 2.2.53 0.9.93 2.2.54 0.9.94 2.2.56 0.9.95 2.2.57 0.9.96 2.2.6 0.9.97 2.2.60 0.9.98 2.2.61 0.9.99 2.2.62 1.0.0 2.2.63 1.0.01 2.2.70 1.0.1 2.2.80 1.0.2 2.2.81 1.0.3 2.2.90 1.0.4 2.2.91 1.0.5 2.2.92 1.0.6 2.2.93 1.0.7 2.2.94 1.0.8 2.2.95 1.0.9 2.3.0 1.1.0 2.3.1 1.1.1 2.3.2 1.1.2 2.3.3 1.1.3 2.3.4 1.1.4 2.3.5 1.1.5 2.3.6 1.1.6 2.3.7 1.1.7 2.3.8 1.1.8 2.3.9 1.1.9 2.4.0 1.2.0 2.4.1 1.2.1 2.4.2 1.2.2 2.4.3 1.2.21 2.4.4 1.2.3 2.4.5 1.2.30 2.4.6 1.3.0 2.4.7 1.3.1 2.4.8 1.3.2 2.4.9 1.3.3 2.5.0 1.3.31 2.5.1 1.3.32 2.5.2 1.3.33 2.5.3 1.3.34 2.5.4 1.3.35 2.5.5 1.3.36 2.5.6 1.3.37 2.5.7 1.3.38 2.5.8 1.3.39 2.5.9 1.3.40 2.6.0 1.3.41 2.6.1 1.3.42 2.6.2 1.3.43 2.6.3 1.3.44 2.6.5 1.3.45 2.6.6 1.3.46 2.6.7 1.3.47 2.6.8 1.3.48 2.6.9 1.3.49 2.7.0 1.3.50 2.7.1 1.3.51 2.7.2 1.3.52 2.7.3 1.3.53 2.7.4 1.3.54 2.7.5 1.3.56 2.7.6 1.3.57 2.7.7 1.3.58 2.7.8 1.3.59 2.7.9 1.3.60 2.8.0 1.3.61 2.8.1 1.3.62 2.8.2 1.3.63 2.8.3 1.3.64 2.8.4 1.3.65 2.8.5 1.3.66 2.8.6 1.3.67 2.8.7 1.3.68 2.8.8 1.3.69 2.8.9 1.3.70 2.9.0 1.3.71 2.9.1 1.3.72 2.9.2 1.3.73 2.9.3 1.3.74 2.9.4 1.3.75 2.9.5 1.3.76 2.9.6 1.3.77 2.9.7 1.3.78 2.9.8 1.3.79 2.9.9 1.3.80 3.0.0 1.3.81 3.0.1 1.3.82 3.0.2 1.3.83 3.0.3 1.3.84 3.0.4 1.3.85 3.0.5 1.3.86 3.0.6 1.3.87 3.0.7 1.3.88 3.0.8 1.3.89 3.0.9 1.3.90 3.1.0 1.3.91 3.1.1 1.3.92 3.1.2 1.3.93 3.1.3 1.3.94 3.1.4 1.3.95 3.1.5 1.3.96 3.1.6 1.3.97 3.1.7 1.3.98 3.1.8 1.3.99 3.1.9 1.4.0 3.2.0 1.4.1 3.2.1 1.4.2 3.2.2 1.4.3 3.2.3 1.4.4 3.2.4 1.4.5 3.2.5 1.4.6 3.2.6 1.4.7 3.2.7 1.4.8 3.2.8 1.4.9 3.2.9 1.5.0 3.3.0 1.5.1 3.3.1 1.5.2 3.3.2 1.5.3 3.3.3 1.5.4 3.3.4 1.5.5 3.3.5 1.5.6 3.3.6 1.5.7 3.3.7 1.5.8 3.3.8 1.5.9 3.3.9 1.6.0 3.4.0 1.6.1 3.4.1 1.6.2 3.4.2 1.6.3 3.4.3 1.6.5 3.4.4 1.6.51 3.4.5 1.6.52 3.4.6 1.6.53 1.6.54 1.6.55 1.6.56 1.6.57 1.6.58 1.6.59 1.6.60 1.6.61 1.6.62 1.6.63 1.6.64 1.6.65 1.6.66 1.6.67 1.6.68 trunk 1.6.69 0.0.1 1.6.70 0.0.2 1.6.71 0.0.3 1.6.72 0.0.4 1.6.73 0.0.5 1.6.74 0.0.6 1.6.75 0.0.7 1.6.76 0.0.8 1.6.77 0.0.9 1.6.78 0.1.0 1.6.79 0.1.1 1.6.81 0.1.2 1.6.82 0.1.3 1.6.83 0.1.4 1.6.84 0.1.5 1.6.85 0.1.6 1.6.86 0.1.7 1.6.87 0.1.8 1.6.88 0.1.9 1.6.89 0.2.0 1.6.90
ai-engine / classes / modules / chatbot_chats.php
ai-engine / classes / modules Last commit date
assistants.php 3 years ago chatbot-chatgpt.css 3 years ago chatbot-chatgpt.scss 3 years ago chatbot.php 3 years ago chatbot_chats.php 3 years ago chatbot_logs.php 3 years ago
chatbot_chats.php
159 lines
1 <?php
2
3 class Meow_MWAI_Modules_Chatbot_Chats {
4 private $wpdb = null;
5 private $table_chats = null;
6 private $db_check = false;
7 private $namespace = 'ai-engine/v1';
8
9 public function __construct() {
10 global $wpdb;
11 $this->wpdb = $wpdb;
12 $this->table_chats = $wpdb->prefix . 'mwai_chats';
13 add_filter( 'mwai_chatbot_reply', [ $this, 'chatbot_reply' ], 10, 3 );
14 add_action( 'rest_api_init', array( $this, 'rest_api_init' ) );
15 }
16
17 public function rest_api_init() {
18 register_rest_route( $this->namespace, '/chats', array(
19 'methods' => 'POST',
20 'callback' => array( $this, 'rest_chats' ),
21 'permission_callback' => '__return_true'
22 ) );
23 }
24
25 function rest_chats( $request ) {
26 try {
27 $params = $request->get_json_params();
28 $offset = $params['offset'];
29 $limit = $params['limit'];
30 $filters = $params['filters'];
31 $sort = $params['sort'];
32 $chats = $this->chats_query( [], $offset, $limit, $filters, $sort );
33 return new WP_REST_Response([ 'success' => true, 'total' => $chats['total'], 'chats' => $chats['rows'] ], 200 );
34 }
35 catch ( Exception $e ) {
36 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
37 }
38 }
39
40 function chats_query( $chats = [], $offset = 0, $limit = null, $filters = null, $sort = null ) {
41 $this->check_db();
42 $offset = !empty( $offset ) ? intval( $offset ) : 0;
43 $limit = !empty( $limit ) ? intval( $limit ) : 5;
44 $filters = !empty( $filters ) ? $filters : [];
45 $sort = !empty( $sort ) ? $sort : [ "accessor" => "time", "by" => "desc" ];
46 $query = "SELECT * FROM $this->table_chats";
47
48 // Filters
49 $where = array();
50 if ( isset( $filters['from'] ) ) {
51 $where[] = "time >= '" . esc_sql( $filters['from'] ) . "'";
52 }
53 if ( isset( $filters['to'] ) ) {
54 $where[] = "time <= '" . esc_sql( $filters['to'] ) . "'";
55 }
56 if ( count( $where ) > 0 ) {
57 $query .= " WHERE " . implode( " AND ", $where );
58 }
59
60 // Count based on this query
61 $chats['total'] = $this->wpdb->get_var( "SELECT COUNT(*) FROM ($query) AS t" );
62
63 // Order by
64 $query .= " ORDER BY " . esc_sql( $sort['accessor'] ) . " " . esc_sql( $sort['by'] );
65
66 // Limits
67 if ( $limit > 0 ) {
68 $query .= " LIMIT $offset, $limit";
69 }
70
71 $chats['rows'] = $this->wpdb->get_results( $query, ARRAY_A );
72 return $chats;
73 }
74
75 function chatbot_reply( $rawText, $query, $params ) {
76 global $mwai_core;
77 $userIp = $mwai_core->get_ip_address();
78 $userId = $mwai_core->get_user_id();
79 $chatClientId = isset( $params['clientId'] ) ? $params['clientId'] : $query->session;
80 $ssChatId = hash( 'sha256', $userIp . $userId . $chatClientId );
81 $this->check_db();
82 $chat = $this->wpdb->get_row( $this->wpdb->prepare( "SELECT * FROM $this->table_chats WHERE chatId = %s", $ssChatId ) );
83 if ( $chat ) {
84 $chat->messages = json_decode( $chat->messages );
85 $chat->messages[] = [
86 'type' => 'user',
87 'text' => $params['rawInput']
88 ];
89 $chat->messages[] = [
90 'type' => 'ai',
91 'text' => $rawText
92 ];
93 $chat->messages = json_encode( $chat->messages );
94 $this->wpdb->update( $this->table_chats, [
95 'messages' => $chat->messages,
96 'updated' => date( 'Y-m-d H:i:s' )
97 ], [ 'id' => $chat->id ] );
98 }
99 else {
100 $chat = [
101 'chatId' => $ssChatId,
102 'messages' => json_encode( [
103 [
104 'type' => 'user',
105 'text' => $params['rawInput']
106 ],
107 [
108 'type' => 'ai',
109 'text' => $rawText
110 ]
111 ] ),
112 'extra' => json_encode( [
113 'ip' => $userIp,
114 'userId' => $userId,
115 'session' => $query->session,
116 'model' => $query->model,
117 'temperature' => $query->temperature
118 ] ),
119 'created' => date( 'Y-m-d H:i:s' ),
120 'updated' => date( 'Y-m-d H:i:s' )
121 ];
122 $this->wpdb->insert( $this->table_chats, $chat );
123 }
124 return $rawText;
125 }
126
127 function check_db() {
128 if ( $this->db_check ) {
129 return true;
130 }
131 $this->db_check = !( strtolower(
132 $this->wpdb->get_var( "SHOW TABLES LIKE '$this->table_chats'" ) ) != strtolower( $this->table_chats )
133 );
134 if ( !$this->db_check ) {
135 $this->create_db();
136 $this->db_check = !( strtolower(
137 $this->wpdb->get_var( "SHOW TABLES LIKE '$this->table_chats'" ) ) != strtolower( $this->table_chats )
138 );
139 }
140 return $this->db_check;
141 }
142
143 function create_db() {
144 $charset_collate = $this->wpdb->get_charset_collate();
145 $sqlLogs = "CREATE TABLE $this->table_chats (
146 id BIGINT(20) NOT NULL AUTO_INCREMENT,
147 chatId VARCHAR(64) NOT NULL NULL,
148 messages TEXT NOT NULL NULL,
149 extra TEXT NOT NULL NULL,
150 created DATETIME NOT NULL,
151 updated DATETIME NOT NULL,
152 PRIMARY KEY (id),
153 INDEX chatId (chatId)
154 ) $charset_collate;";
155 require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
156 dbDelta( $sqlLogs );
157 }
158
159 }