PluginProbe
Code Engine – PHP Snippets, AI Functions & Automation for WordPress / 0.3.1
Code Engine – PHP Snippets, AI Functions & Automation for WordPress v0.3.1
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 0.3.8 All 32 releases
code-engine / common / rest.php

rest.php in Code Engine – PHP Snippets, AI Functions & Automation for WordPress 0.3.1, at common/rest.php

137 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class MeowCommon_Rest
4 {
5 private $namespace = "meow-common/v1";
6 static public $instance = null;
7
8 static public function init_once() {
9 if ( !MeowCommon_Rest::$instance ) {
10 MeowCommon_Rest::$instance = new self();
11 }
12 }
13
14 private function __construct() {
15 add_action( 'rest_api_init', array( $this, 'rest_api_init' ) );
16 }
17
18 function rest_api_init() {
19 if ( !current_user_can( 'manage_options' ) ) {
20 return;
21 }
22 register_rest_route( $this->namespace, '/empty_request/', [
23 'methods' => 'POST',
24 'permission_callback' => function () {
25 return current_user_can( 'manage_options' );
26 },
27 'callback' => [ $this, 'empty_request' ]
28 ]);
29 register_rest_route( $this->namespace, '/file_operation/', [
30 'methods' => 'POST',
31 'permission_callback' => function () {
32 return current_user_can( 'manage_options' );
33 },
34 'callback' => [ $this, 'file_operation' ]
35 ]);
36 register_rest_route( $this->namespace, '/sql_request/', [
37 'methods' => 'POST',
38 'permission_callback' => function () {
39 return current_user_can( 'manage_options' );
40 },
41 'callback' => [ $this, 'sql_request' ]
42 ]);
43 register_rest_route( $this->namespace, '/error_logs/', [
44 'methods' => 'POST',
45 'permission_callback' => function () {
46 $ok = current_user_can( 'manage_options' );
47 return $ok;
48 },
49 'callback' => [ $this, 'rest_error_logs' ]
50 ]);
51 register_rest_route( $this->namespace, '/all_settings/', [
52 'methods' => 'POST',
53 'permission_callback' => function () {
54 $ok = current_user_can( 'manage_options' );
55 return $ok;
56 },
57 'callback' => [ $this, 'rest_all_settings' ]
58 ]);
59 register_rest_route( $this->namespace, '/update_option/', [
60 'methods' => 'POST',
61 'permission_callback' => function () {
62 $ok = current_user_can( 'manage_options' );
63 return $ok;
64 },
65 'callback' => [ $this, 'rest_update_option' ]
66 ]);
67 }
68
69 function file_rand( $filesize ) {
70 $tmp_file = tmpfile();
71 fseek( $tmp_file, $filesize - 1, SEEK_CUR );
72 fwrite( $tmp_file, 'a');
73 fclose( $tmp_file );
74 }
75
76 function empty_request() {
77 return new WP_REST_Response( [ 'success' => true ], 200 );
78 }
79
80 function file_operation() {
81 $this->file_rand( 1024 * 10 );
82 return new WP_REST_Response( [ 'success' => true ], 200 );
83 }
84
85 function sql_request() {
86 global $wpdb;
87 $count = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts}" );
88 return new WP_REST_Response( [ 'success' => true, 'data' => $count ], 200 );
89 }
90
91 // List all the options with their default values.
92 function list_options() {
93 return array(
94 'meowapps_hide_meowapps' => false,
95 'force_sslverify' => false
96 );
97 }
98
99 function get_all_options() {
100 $options = $this->list_options();
101 $current_options = array();
102 foreach ( $options as $option => $default ) {
103 $current_options[$option] = get_option( $option, $default );
104 }
105 return $current_options;
106 }
107
108 function rest_all_settings() {
109 return new WP_REST_Response( [ 'success' => true, 'data' => $this->get_all_options() ], 200 );
110 }
111
112 function rest_update_option( $request ) {
113 $params = $request->get_json_params();
114 try {
115 $name = $params['name'];
116 $options = $this->list_options();
117 if ( !array_key_exists( $name, $options ) ) {
118 return new WP_REST_Response([ 'success' => false, 'message' => 'This option does not exist.' ], 200 );
119 }
120 $value = is_bool( $params['value'] ) ? ( $params['value'] ? '1' : '' ) : $params['value'];
121 $success = update_option( $name, $value );
122 if ( !$success ) {
123 return new WP_REST_Response( [ 'success' => false, 'message' => 'Could not update option.' ], 200 );
124 }
125 return new WP_REST_Response( [ 'success' => true, 'data' => $value ], 200 );
126 }
127 catch (Exception $e) {
128 return new WP_REST_Response( [ 'success' => false, 'message' => $e->getMessage() ], 500 );
129 }
130 }
131
132 function rest_error_logs( $request ) {
133 return new WP_REST_Response( [ 'success' => true, 'data' => MeowCommon_Helpers::php_error_logs() ], 200 );
134 }
135
136 }
137