PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 0.1.8
AI Engine – The Chatbot, AI Framework & MCP for WordPress v0.1.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 / rest.php
ai-engine / classes Last commit date
admin.php 3 years ago ai.php 3 years ago answer.php 3 years ago core.php 3 years ago init.php 3 years ago query.php 3 years ago rest.php 3 years ago shortcodes.php 3 years ago ui.php 3 years ago
rest.php
219 lines
1 <?php
2
3 class Meow_MWAI_Rest
4 {
5 private $core = null;
6 private $namespace = 'ai-engine/v1';
7
8 public function __construct( $core ) {
9 if ( !current_user_can( 'administrator' ) ) {
10 return;
11 }
12 $this->core = $core;
13 add_action( 'rest_api_init', array( $this, 'rest_api_init' ) );
14 }
15
16 function rest_api_init() {
17 try {
18 register_rest_route( $this->namespace, '/update_option', array(
19 'methods' => 'POST',
20 'permission_callback' => array( $this->core, 'can_access_settings' ),
21 'callback' => array( $this, 'rest_update_option' )
22 ) );
23 register_rest_route( $this->namespace, '/all_settings', array(
24 'methods' => 'GET',
25 'permission_callback' => array( $this->core, 'can_access_settings' ),
26 'callback' => array( $this, 'rest_all_settings' ),
27 ) );
28 register_rest_route( $this->namespace, '/make_completions', array(
29 'methods' => 'POST',
30 'permission_callback' => array( $this->core, 'can_access_features' ),
31 'callback' => array( $this, 'make_completions' ),
32 ) );
33 register_rest_route( $this->namespace, '/make_titles', array(
34 'methods' => 'POST',
35 'permission_callback' => array( $this->core, 'can_access_features' ),
36 'callback' => array( $this, 'make_titles' ),
37 ) );
38 register_rest_route( $this->namespace, '/make_excerpts', array(
39 'methods' => 'POST',
40 'permission_callback' => array( $this->core, 'can_access_features' ),
41 'callback' => array( $this, 'make_excerpts' ),
42 ) );
43 register_rest_route( $this->namespace, '/update_post_title', array(
44 'methods' => 'POST',
45 'permission_callback' => array( $this->core, 'can_access_features' ),
46 'callback' => array( $this, 'update_post_title' ),
47 ) );
48 register_rest_route( $this->namespace, '/update_post_excerpt', array(
49 'methods' => 'POST',
50 'permission_callback' => array( $this->core, 'can_access_features' ),
51 'callback' => array( $this, 'update_post_excerpt' ),
52 ) );
53 register_rest_route( $this->namespace, '/create_post', array(
54 'methods' => 'POST',
55 'permission_callback' => array( $this->core, 'can_access_features' ),
56 'callback' => array( $this, 'create_post' ),
57 ) );
58 }
59 catch ( Exception $e ) {
60 var_dump( $e );
61 }
62 }
63
64 function rest_all_settings() {
65 return new WP_REST_Response( [
66 'success' => true,
67 'data' => $this->core->get_all_options()
68 ], 200 );
69 }
70
71 function rest_update_option( $request ) {
72 try {
73 $params = $request->get_json_params();
74 $value = $params['options'];
75 $options = $this->core->update_options( $value );
76 $success = !!$options;
77 $message = __( $success ? 'OK' : "Could not update options.", 'ai-engine' );
78 return new WP_REST_Response([ 'success' => $success, 'message' => $message, 'options' => $options ], 200 );
79 }
80 catch ( Exception $e ) {
81 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
82 }
83 }
84
85 function createValidationResult( $result = true, $message = null) {
86 $message = $message ? $message : __( 'OK', 'ai-engine' );
87 return [ 'result' => $result, 'message' => $message ];
88 }
89
90 function validate_updated_option( $option_name ) {
91 $option_checkbox = get_option( 'mwai_option_checkbox', false );
92 $option_text = get_option( 'mwai_option_text', 'Default' );
93 if ( $option_checkbox === '' )
94 update_option( 'mwai_option_checkbox', false );
95 if ( $option_text === '' )
96 update_option( 'mwai_option_text', 'Default' );
97 return $this->createValidationResult();
98 }
99
100 function setup_query_based_on_params( $query, $params ) {
101 if ( isset( $params['model'] ) ) {
102 $query->setModel( $params['model'] );
103 }
104 if ( isset( $params['temperature'] ) ) {
105 $query->setTemperature( $params['temperature'] );
106 }
107 if ( isset( $params['apiKey'] ) ) {
108 $query->setApiKey( $params['apiKey'] );
109 }
110 return $query;
111 }
112
113 function make_completions( $request ) {
114 try {
115 $params = $request->get_json_params();
116 $prompt = $params['prompt'];
117 $query = new Meow_MWAI_Query( $prompt, 2048 );
118 $query = $this->setup_query_based_on_params( $query, $params );
119 $answer = $this->core->ai->run( $query );
120 return new WP_REST_Response([ 'success' => true, 'data' => $answer->result, 'usage' => $answer->usage ], 200 );
121 }
122 catch ( Exception $e ) {
123 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
124 }
125 }
126
127 function make_titles( $request ) {
128 try {
129 $params = $request->get_json_params();
130 $postId = intval( $params['postId'] );
131 $text = $this->core->get_text_from_postId( $postId );
132 $prompt = "Create short SEO-friendly title for this text: " . $text;
133 $query = new Meow_MWAI_Query( $prompt, 40 );
134 $query->setMaxResults( 5 );
135 $answer = $this->core->ai->run( $query );
136 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
137 }
138 catch ( Exception $e ) {
139 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
140 }
141 }
142
143 function make_excerpts( $request ) {
144 try {
145 $params = $request->get_json_params();
146 $postId = intval( $params['postId'] );
147 $text = $this->core->get_text_from_postId( $postId );
148 $prompt = "Create SEO-friendly introduction to this text, 120 to 170 characters max, no URLs: " . $text;
149 $query = new Meow_MWAI_Query( $prompt, 140 );
150 $query->setMaxResults( 5 );
151 $answer = $this->core->ai->run( $query );
152 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
153 }
154 catch ( Exception $e ) {
155 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
156 }
157 }
158
159 function update_post_title( $request ) {
160 try {
161 $params = $request->get_json_params();
162 $title = sanitize_text_field( $params['title'] );
163 $postId = intval( $params['postId'] );
164 $post = get_post( $postId );
165 if ( !$post ) {
166 throw new Exception( 'There is no post with this ID.' );
167 }
168 $post->post_title = $title;
169 //$post->post_name = sanitize_title( $title );
170 wp_update_post( $post );
171 return new WP_REST_Response([ 'success' => true, 'message' => "Title updated." ], 200 );
172 }
173 catch ( Exception $e ) {
174 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
175 }
176 }
177
178 function update_post_excerpt( $request ) {
179 try {
180 $params = $request->get_json_params();
181 $excerpt = sanitize_text_field( $params['excerpt'] );
182 $postId = intval( $params['postId'] );
183 $post = get_post( $postId );
184 if ( !$post ) {
185 throw new Exception( 'There is no post with this ID.' );
186 }
187 $post->post_excerpt = $excerpt;
188 wp_update_post( $post );
189 return new WP_REST_Response([ 'success' => true, 'message' => "Excerpt updated." ], 200 );
190 }
191 catch ( Exception $e ) {
192 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
193 }
194 }
195
196 function create_post( $request ) {
197 try {
198 $params = $request->get_json_params();
199 $title = sanitize_text_field( $params['title'] );
200 // Sanitize content that contains line returns and HTML tags
201 $content = sanitize_textarea_field( $params['content'] );
202 $excerpt = sanitize_text_field( $params['excerpt'] );
203 //$postType = sanitize_text_field( $params['postType'] );
204 $post = new stdClass();
205 $post->post_title = $title;
206 $post->post_excerpt = $excerpt;
207 $post->post_content = $content;
208 $post->post_status = 'draft';
209 $post->post_type = 'post';
210 $post->post_content = $this->core->markdown_to_html( $post->post_content );
211 $postId = wp_insert_post( $post );
212 return new WP_REST_Response([ 'success' => true, 'postId' => $postId ], 200 );
213 }
214 catch ( Exception $e ) {
215 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
216 }
217 }
218 }
219