PluginProbe
Code Engine – PHP Snippets, AI Functions & Automation for WordPress / 0.3.9
Code Engine – PHP Snippets, AI Functions & Automation for WordPress v0.3.9
0.5.7 0.5.6 0.5.5 0.5.4 0.5.3 0.5.2 0.5.1 0.5.0 0.4.9 0.4.8 0.4.7 0.4.6 trunk 0.0.1 0.0.2 0.2.8 0.2.9 0.3.0 0.3.1 0.3.2 0.3.3 0.3.4 0.3.5 0.3.6 0.3.7 All 33 releases
← All changes | common/rest.php +26 -57 0.4.90.3.9 View file →
@@ -1,13 +1,13 @@
1 1 <?php
2 2
3 -class MeowKit_MWCODE_Rest {
3 +class MeowCommon_Rest {
4 4 private $namespace = 'meow-common/v1';
5 5 public static $instance = null;
6 6
7 7 public static function init_once() {
8 - if ( !MeowKit_MWCODE_Rest::$instance ) {
9 - MeowKit_MWCODE_Rest::$instance = new self();
8 + if ( !MeowCommon_Rest::$instance ) {
9 + MeowCommon_Rest::$instance = new self();
10 10 }
11 11 }
12 12
13 13 private function __construct() {
@@ -13,68 +13,57 @@
13 13 private function __construct() {
14 14 add_action( 'rest_api_init', [ $this, 'rest_api_init' ] );
15 15 }
16 16
17 - /**
18 - * Capability gate for plugin admin endpoints. Defaults to manage_options but
19 - * honours a per-plugin filter so a site can grant access to other roles
20 - * without re-implementing every permission_callback. The filter name is
21 - * derived from the class name (`MeowKit_<PREFIX>_Rest` => `<prefix>_allow_setup`),
22 - * so each plugin gets its own filter automatically after Nekofy substitution.
23 - */
24 - private function can_setup() {
25 - static $filter = null;
26 - if ( $filter === null ) {
27 - $parts = explode( '_', __CLASS__ );
28 - $prefix = isset( $parts[1] ) ? strtolower( $parts[1] ) : '';
29 - $filter = $prefix !== '' ? $prefix . '_allow_setup' : '';
30 - }
31 - $default = current_user_can( 'manage_options' );
32 - return $filter !== '' ? apply_filters( $filter, $default ) : $default;
33 - }
34 -
35 17 public function rest_api_init() {
36 - if ( !$this->can_setup() ) {
18 + if ( !current_user_can( 'manage_options' ) ) {
37 19 return;
38 20 }
39 - $permission = function () {
40 - return $this->can_setup();
41 - };
42 21 register_rest_route( $this->namespace, '/empty_request/', [
43 22 'methods' => 'POST',
44 - 'permission_callback' => $permission,
23 + 'permission_callback' => function () {
24 + return current_user_can( 'manage_options' );
25 + },
45 26 'callback' => [ $this, 'empty_request' ]
46 27 ] );
47 28 register_rest_route( $this->namespace, '/file_operation/', [
48 29 'methods' => 'POST',
49 - 'permission_callback' => $permission,
30 + 'permission_callback' => function () {
31 + return current_user_can( 'manage_options' );
32 + },
50 33 'callback' => [ $this, 'file_operation' ]
51 34 ] );
52 35 register_rest_route( $this->namespace, '/sql_request/', [
53 36 'methods' => 'POST',
54 - 'permission_callback' => $permission,
37 + 'permission_callback' => function () {
38 + return current_user_can( 'manage_options' );
39 + },
55 40 'callback' => [ $this, 'sql_request' ]
56 41 ] );
57 42 register_rest_route( $this->namespace, '/error_logs/', [
58 43 'methods' => 'POST',
59 - 'permission_callback' => $permission,
44 + 'permission_callback' => function () {
45 + $ok = current_user_can( 'manage_options' );
46 + return $ok;
47 + },
60 48 'callback' => [ $this, 'rest_error_logs' ]
61 49 ] );
62 50 register_rest_route( $this->namespace, '/all_settings/', [
63 51 'methods' => 'POST',
64 - 'permission_callback' => $permission,
52 + 'permission_callback' => function () {
53 + $ok = current_user_can( 'manage_options' );
54 + return $ok;
55 + },
65 56 'callback' => [ $this, 'rest_all_settings' ]
66 57 ] );
67 58 register_rest_route( $this->namespace, '/update_option/', [
68 59 'methods' => 'POST',
69 - 'permission_callback' => $permission,
60 + 'permission_callback' => function () {
61 + $ok = current_user_can( 'manage_options' );
62 + return $ok;
63 + },
70 64 'callback' => [ $this, 'rest_update_option' ]
71 65 ] );
72 - register_rest_route( $this->namespace, '/installed_plugins/', [
73 - 'methods' => 'POST',
74 - 'permission_callback' => $permission,
75 - 'callback' => [ $this, 'rest_installed_plugins' ]
76 - ] );
77 66 }
78 67
79 68 public function file_rand( $filesize ) {
80 69 $tmp_file = tmpfile();
@@ -118,28 +107,8 @@
118 107 public function rest_all_settings() {
119 108 return new WP_REST_Response( [ 'success' => true, 'data' => $this->get_all_options() ], 200 );
120 109 }
121 110
122 - public function rest_installed_plugins() {
123 - if ( !function_exists( 'get_plugins' ) ) {
124 - require_once ABSPATH . 'wp-admin/includes/plugin.php';
125 - }
126 - $all_plugins = get_plugins();
127 - $result = [];
128 - foreach ( $all_plugins as $plugin_file => $plugin_data ) {
129 - // Plugin file looks like "ai-engine/ai-engine.php" — the slug is the
130 - // first path segment. Some plugins live at the root (single file),
131 - // those we just skip; we only care about Meow Apps directories anyway.
132 - $parts = explode( '/', $plugin_file );
133 - if ( count( $parts ) < 2 ) {
134 - continue;
135 - }
136 - $slug = $parts[0];
137 - $result[ $slug ] = is_plugin_active( $plugin_file ) ? 'active' : 'inactive';
138 - }
139 - return new WP_REST_Response( [ 'success' => true, 'data' => $result ], 200 );
140 - }
141 -
142 111 public function rest_update_option( $request ) {
143 112 $params = $request->get_json_params();
144 113 try {
145 114 $name = $params['name'];
@@ -159,8 +128,8 @@
159 128 }
160 129 }
161 130
162 131 public function rest_error_logs( $request ) {
163 - return new WP_REST_Response( [ 'success' => true, 'data' => MeowKit_MWCODE_Helpers::php_error_logs() ], 200 );
132 + return new WP_REST_Response( [ 'success' => true, 'data' => MeowCommon_Helpers::php_error_logs() ], 200 );
164 133 }
165 134
166 135 }