Current File : /home/pacjaorg/public_html/copwordpres/wp-content/plugins/betterdocs/includes/Core/BaseAPI.php
<?php

namespace WPDeveloper\BetterDocs\Core;

use WP_Error;
use WP_REST_Server;
use WP_REST_Response;
use WPDeveloper\BetterDocs\Utils\Base;
use WPDeveloper\BetterDocs\Dependencies\DI\Container;

abstract class BaseAPI extends Base {
    protected $namespace = 'betterdocs';
    protected $version   = 'v1';
    /**
     * Summary of settings
     * @var Settings
     */
    protected $settings;

    /**
     * Summary of container
     * @var Container
     */
    protected $container;

    public function __construct( Settings $settings, Container $container ) {
        $this->settings  = $settings;
        $this->container = $container;

        add_filter( 'rest_prepare_doc_category', [$this, 'rest_prepare_doc_category'], 10, 3 );
    }

    public function get_namespace() {
        return $this->namespace . '/' . $this->version;
    }

    public function get( $endpoint, $callback, $args = [] ) {
        return $this->register_endpoint( $endpoint, $callback, $args, WP_REST_Server::READABLE );
    }

    public function post( $endpoint, $callback, $args = [] ) {
        return $this->register_endpoint( $endpoint, $callback, $args );
    }

    public function permission_check() {
        return true;
    }

    protected function register_endpoint( $endpoint, $callback, $args = [], $methods = WP_REST_Server::CREATABLE ) {
        return register_rest_route( $this->get_namespace(), $endpoint, [
            'methods'             => $methods,
            'callback'            => $callback,
            'permission_callback' => [$this, 'permission_check'],
            'args'                => $args
        ] );
    }

    public function register_field( $type, $attribute, $args = [] ) {
        $args = wp_parse_args( $args, [
            'update_callback' => null,
            'schema'          => [
                'description' => 'Holds the thumbnail URL of doc category',
                'type'        => 'string',
                'format'      => 'url'
            ]
        ] );

        return register_rest_field( $type, $attribute, $args );
    }

    /**
     * @param $data
     *
     * @return WP_REST_Response
     */
    public function success( $data ) {
        $_data = [
            'success' => true,
            'data'    => $data
        ];

        if ( is_string( $data ) ) {
            $_data['message'] = $data;

            unset( $_data['data'] );
        }

        return new WP_REST_Response( $_data, 200 );
    }

    /**
     * @param $error_code string
     * @param $error_message string|array
     * @param $endpoint string
     * @param $status int
     * @param $additional_data array
     *
     * @return WP_Error
     */
    public function error( $error_code, $error_message, $status = 500, $additional_data = [] ) {
        $additional_data['status'] = $status;
        return new WP_Error( $error_code, $error_message, $additional_data );
    }

    abstract public function register();

    public function rest_prepare_doc_category( $data, $category, $request ) {
        $nested_subcategory = $request->get_param('nested_subcategory', false);
        $_counts = betterdocs()->query->get_docs_count( $category, $nested_subcategory );

        // Add the custom data to the response
        $data->data['count'] = $_counts;
        return $data;
    }
}
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

Site will be available soon. Thank you for your patience!