PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 0.0.9
AI Engine – The Chatbot, AI Framework & MCP for WordPress v0.0.9
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
216 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 return $query;
108 }
109
110 function make_completions( $request ) {
111 try {
112 $params = $request->get_json_params();
113 $prompt = $params['prompt'];
114 $query = new Meow_MWAI_Query( $prompt, 2048 );
115 $query = $this->setup_query_based_on_params( $query, $params );
116 $answer = $this->core->ai->run( $query );
117 return new WP_REST_Response([ 'success' => true, 'data' => $answer->result, 'usage' => $answer->usage ], 200 );
118 }
119 catch ( Exception $e ) {
120 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
121 }
122 }
123
124 function make_titles( $request ) {
125 try {
126 $params = $request->get_json_params();
127 $postId = intval( $params['postId'] );
128 $text = $this->core->get_text_from_postId( $postId );
129 $prompt = "Create short SEO-friendly title for this text: " . $text;
130 $query = new Meow_MWAI_Query( $prompt, 40 );
131 $query->setMaxResults( 5 );
132 $answer = $this->core->ai->run( $query );
133 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
134 }
135 catch ( Exception $e ) {
136 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
137 }
138 }
139
140 function make_excerpts( $request ) {
141 try {
142 $params = $request->get_json_params();
143 $postId = intval( $params['postId'] );
144 $text = $this->core->get_text_from_postId( $postId );
145 $prompt = "Create SEO-friendly introduction to this text, 120 to 170 characters max, no URLs: " . $text;
146 $query = new Meow_MWAI_Query( $prompt, 140 );
147 $query->setMaxResults( 5 );
148 $answer = $this->core->ai->run( $query );
149 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
150 }
151 catch ( Exception $e ) {
152 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
153 }
154 }
155
156 function update_post_title( $request ) {
157 try {
158 $params = $request->get_json_params();
159 $title = sanitize_text_field( $params['title'] );
160 $postId = intval( $params['postId'] );
161 $post = get_post( $postId );
162 if ( !$post ) {
163 throw new Exception( 'There is no post with this ID.' );
164 }
165 $post->post_title = $title;
166 //$post->post_name = sanitize_title( $title );
167 wp_update_post( $post );
168 return new WP_REST_Response([ 'success' => true, 'message' => "Title updated." ], 200 );
169 }
170 catch ( Exception $e ) {
171 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
172 }
173 }
174
175 function update_post_excerpt( $request ) {
176 try {
177 $params = $request->get_json_params();
178 $excerpt = sanitize_text_field( $params['excerpt'] );
179 $postId = intval( $params['postId'] );
180 $post = get_post( $postId );
181 if ( !$post ) {
182 throw new Exception( 'There is no post with this ID.' );
183 }
184 $post->post_excerpt = $excerpt;
185 wp_update_post( $post );
186 return new WP_REST_Response([ 'success' => true, 'message' => "Excerpt updated." ], 200 );
187 }
188 catch ( Exception $e ) {
189 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
190 }
191 }
192
193 function create_post( $request ) {
194 try {
195 $params = $request->get_json_params();
196 $title = sanitize_text_field( $params['title'] );
197 // Sanitize content that contains line returns and HTML tags
198 $content = sanitize_textarea_field( $params['content'] );
199 $excerpt = sanitize_text_field( $params['excerpt'] );
200 //$postType = sanitize_text_field( $params['postType'] );
201 $post = new stdClass();
202 $post->post_title = $title;
203 $post->post_excerpt = $excerpt;
204 $post->post_content = $content;
205 $post->post_status = 'draft';
206 $post->post_type = 'post';
207 $post->post_content = $this->core->markdown_to_blocks( $post->post_content );
208 $postId = wp_insert_post( $post );
209 return new WP_REST_Response([ 'success' => true, 'postId' => $postId ], 200 );
210 }
211 catch ( Exception $e ) {
212 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
213 }
214 }
215 }
216