PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.5.9
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.5.9
4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.5.2 All 199 releases
betterdocs / includes / Core / BaseAPI.php

BaseAPI.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 3.5.9, at includes/Core/BaseAPI.php

116 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDeveloper\BetterDocs\Core;
4
5 use WP_Error;
6 use WP_REST_Server;
7 use WP_REST_Response;
8 use WPDeveloper\BetterDocs\Utils\Base;
9 use WPDeveloper\BetterDocs\Dependencies\DI\Container;
10
11 abstract class BaseAPI extends Base {
12 protected $namespace = 'betterdocs';
13 protected $version = 'v1';
14 /**
15 * Summary of settings
16 * @var Settings
17 */
18 protected $settings;
19
20 /**
21 * Summary of container
22 * @var Container
23 */
24 protected $container;
25
26 public function __construct( Settings $settings, Container $container ) {
27 $this->settings = $settings;
28 $this->container = $container;
29
30 add_filter( 'rest_prepare_doc_category', [$this, 'rest_prepare_doc_category'], 10, 3 );
31 }
32
33 public function get_namespace() {
34 return $this->namespace . '/' . $this->version;
35 }
36
37 public function get( $endpoint, $callback, $args = [] ) {
38 return $this->register_endpoint( $endpoint, $callback, $args, WP_REST_Server::READABLE );
39 }
40
41 public function post( $endpoint, $callback, $args = [] ) {
42 return $this->register_endpoint( $endpoint, $callback, $args );
43 }
44
45 public function permission_check() {
46 return true;
47 }
48
49 protected function register_endpoint( $endpoint, $callback, $args = [], $methods = WP_REST_Server::CREATABLE ) {
50 return register_rest_route( $this->get_namespace(), $endpoint, [
51 'methods' => $methods,
52 'callback' => $callback,
53 'permission_callback' => [$this, 'permission_check'],
54 'args' => $args
55 ] );
56 }
57
58 public function register_field( $type, $attribute, $args = [] ) {
59 $args = wp_parse_args( $args, [
60 'update_callback' => null,
61 'schema' => [
62 'description' => 'Holds the thumbnail URL of doc category',
63 'type' => 'string',
64 'format' => 'url'
65 ]
66 ] );
67
68 return register_rest_field( $type, $attribute, $args );
69 }
70
71 /**
72 * @param $data
73 *
74 * @return WP_REST_Response
75 */
76 public function success( $data ) {
77 $_data = [
78 'success' => true,
79 'data' => $data
80 ];
81
82 if ( is_string( $data ) ) {
83 $_data['message'] = $data;
84
85 unset( $_data['data'] );
86 }
87
88 return new WP_REST_Response( $_data, 200 );
89 }
90
91 /**
92 * @param $error_code string
93 * @param $error_message string|array
94 * @param $endpoint string
95 * @param $status int
96 * @param $additional_data array
97 *
98 * @return WP_Error
99 */
100 public function error( $error_code, $error_message, $status = 500, $additional_data = [] ) {
101 $additional_data['status'] = $status;
102 return new WP_Error( $error_code, $error_message, $additional_data );
103 }
104
105 abstract public function register();
106
107 public function rest_prepare_doc_category( $data, $category, $request ) {
108 $nested_subcategory = $request->get_param('nested_subcategory', false);
109 $_counts = betterdocs()->query->get_docs_count( $category, $nested_subcategory );
110
111 // Add the custom data to the response
112 $data->data['count'] = $_counts;
113 return $data;
114 }
115 }
116