PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.4.7
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.4.7
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 / common / rest.php
ai-engine / common Last commit date
admin.php 2 months ago helpers.php 6 months ago issues.php 7 months ago news.php 7 months ago ratings.php 7 months ago releases.txt 2 years ago rest.php 2 months ago
rest.php
163 lines
1 <?php
2
3 class MeowKit_MWAI_Rest {
4 private $namespace = 'meow-common/v1';
5 public static $instance = null;
6
7 public static function init_once() {
8 if ( !MeowKit_MWAI_Rest::$instance ) {
9 MeowKit_MWAI_Rest::$instance = new self();
10 }
11 }
12
13 private function __construct() {
14 add_action( 'rest_api_init', [ $this, 'rest_api_init' ] );
15 }
16
17 public function rest_api_init() {
18 if ( !current_user_can( 'manage_options' ) ) {
19 return;
20 }
21 register_rest_route( $this->namespace, '/empty_request/', [
22 'methods' => 'POST',
23 'permission_callback' => function () {
24 return current_user_can( 'manage_options' );
25 },
26 'callback' => [ $this, 'empty_request' ]
27 ] );
28 register_rest_route( $this->namespace, '/file_operation/', [
29 'methods' => 'POST',
30 'permission_callback' => function () {
31 return current_user_can( 'manage_options' );
32 },
33 'callback' => [ $this, 'file_operation' ]
34 ] );
35 register_rest_route( $this->namespace, '/sql_request/', [
36 'methods' => 'POST',
37 'permission_callback' => function () {
38 return current_user_can( 'manage_options' );
39 },
40 'callback' => [ $this, 'sql_request' ]
41 ] );
42 register_rest_route( $this->namespace, '/error_logs/', [
43 'methods' => 'POST',
44 'permission_callback' => function () {
45 $ok = current_user_can( 'manage_options' );
46 return $ok;
47 },
48 'callback' => [ $this, 'rest_error_logs' ]
49 ] );
50 register_rest_route( $this->namespace, '/all_settings/', [
51 'methods' => 'POST',
52 'permission_callback' => function () {
53 $ok = current_user_can( 'manage_options' );
54 return $ok;
55 },
56 'callback' => [ $this, 'rest_all_settings' ]
57 ] );
58 register_rest_route( $this->namespace, '/update_option/', [
59 'methods' => 'POST',
60 'permission_callback' => function () {
61 $ok = current_user_can( 'manage_options' );
62 return $ok;
63 },
64 'callback' => [ $this, 'rest_update_option' ]
65 ] );
66 register_rest_route( $this->namespace, '/installed_plugins/', [
67 'methods' => 'POST',
68 'permission_callback' => function () {
69 return current_user_can( 'manage_options' );
70 },
71 'callback' => [ $this, 'rest_installed_plugins' ]
72 ] );
73 }
74
75 public function file_rand( $filesize ) {
76 $tmp_file = tmpfile();
77 fseek( $tmp_file, $filesize - 1, SEEK_CUR );
78 fwrite( $tmp_file, 'a' );
79 fclose( $tmp_file );
80 }
81
82 public function empty_request() {
83 return new WP_REST_Response( [ 'success' => true ], 200 );
84 }
85
86 public function file_operation() {
87 $this->file_rand( 1024 * 10 );
88 return new WP_REST_Response( [ 'success' => true ], 200 );
89 }
90
91 public function sql_request() {
92 global $wpdb;
93 $count = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts}" );
94 return new WP_REST_Response( [ 'success' => true, 'data' => $count ], 200 );
95 }
96
97 // List all the options with their default values.
98 public function list_options() {
99 return [
100 'meowapps_hide_meowapps' => false,
101 'force_sslverify' => false
102 ];
103 }
104
105 public function get_all_options() {
106 $options = $this->list_options();
107 $current_options = [];
108 foreach ( $options as $option => $default ) {
109 $current_options[$option] = get_option( $option, $default );
110 }
111 return $current_options;
112 }
113
114 public function rest_all_settings() {
115 return new WP_REST_Response( [ 'success' => true, 'data' => $this->get_all_options() ], 200 );
116 }
117
118 public function rest_installed_plugins() {
119 if ( !function_exists( 'get_plugins' ) ) {
120 require_once ABSPATH . 'wp-admin/includes/plugin.php';
121 }
122 $all_plugins = get_plugins();
123 $result = [];
124 foreach ( $all_plugins as $plugin_file => $plugin_data ) {
125 // Plugin file looks like "ai-engine/ai-engine.php" — the slug is the
126 // first path segment. Some plugins live at the root (single file),
127 // those we just skip; we only care about Meow Apps directories anyway.
128 $parts = explode( '/', $plugin_file );
129 if ( count( $parts ) < 2 ) {
130 continue;
131 }
132 $slug = $parts[0];
133 $result[ $slug ] = is_plugin_active( $plugin_file ) ? 'active' : 'inactive';
134 }
135 return new WP_REST_Response( [ 'success' => true, 'data' => $result ], 200 );
136 }
137
138 public function rest_update_option( $request ) {
139 $params = $request->get_json_params();
140 try {
141 $name = $params['name'];
142 $options = $this->list_options();
143 if ( !array_key_exists( $name, $options ) ) {
144 return new WP_REST_Response( [ 'success' => false, 'message' => 'This option does not exist.' ], 200 );
145 }
146 $value = is_bool( $params['value'] ) ? ( $params['value'] ? '1' : '' ) : $params['value'];
147 $success = update_option( $name, $value );
148 if ( !$success ) {
149 return new WP_REST_Response( [ 'success' => false, 'message' => 'Could not update option.' ], 200 );
150 }
151 return new WP_REST_Response( [ 'success' => true, 'data' => $value ], 200 );
152 }
153 catch ( Exception $e ) {
154 return new WP_REST_Response( [ 'success' => false, 'message' => $e->getMessage() ], 500 );
155 }
156 }
157
158 public function rest_error_logs( $request ) {
159 return new WP_REST_Response( [ 'success' => true, 'data' => MeowKit_MWAI_Helpers::php_error_logs() ], 200 );
160 }
161
162 }
163