File: /var/www/html/wpmuhibbah_err/wp-content/plugins/give/includes/api/class-give-api-v2.php
<?php
/**
* Give API V2
*
* @package Give
* @subpackage Classes/API
* @copyright Copyright (c) 2018, GiveWP
* @license https://opensource.org/licenses/gpl-license GNU Public License
* @since 2.1
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Give_API_V2 Class
*
* The base version API class
*
* @since 2.1
*/
class Give_API_V2 {
/**
* API base prefix
*
* @since 2.1
* @access private
*
* @var string
*/
private $rest_base = 'give-api/v2';
/**
* Instance.
*
* @since 2.1
* @access private
*
* @var Give_API_V2
*/
private static $instance;
/**
* Singleton pattern.
*
* @since 2.1
* @access private
*/
private function __construct() {
}
/**
* Get instance.
*
* @since 2.1
* @access public
* @return Give_API_V2
*/
public static function get_instance() {
if ( null === static::$instance ) {
self::$instance = new static();
self::$instance->init();
}
return self::$instance;
}
/**
* Initialize API
*
* @since 2.1
* @access private
*/
private function init() {
// Setup hooks.
add_action( 'rest_api_init', [ $this, 'register_routes' ] );
add_action( 'wp_enqueue_scripts', [ $this, 'localize_script' ], 999 );
add_action( 'admin_enqueue_scripts', [ $this, 'localize_script' ], 999 );
}
/**
* Register API routes
* Note: only for internal purpose.
*
* @todo : prevent cross domain api request
*
* @since 2.1
* @access private
*/
public function register_routes() {
register_rest_route(
$this->rest_base,
'/form/(?P<id>[\d]+)',
[
'methods' => 'GET',
'callback' => [ $this, 'get_forms_data' ],
'permission_callback' => '__return_true',
]
);
register_rest_route(
$this->rest_base,
'/form-grid',
[
'methods' => 'GET',
'callback' => [ $this, 'get_donation_grid' ],
'permission_callback' => '__return_true',
]
);
}
/**
* Add api localize data
*
* @since 2.1
* @access public
*/
public function localize_script() {
$data = [
'root' => esc_url_raw( self::get_rest_api() ),
'rest_base' => $this->rest_base,
];
if ( is_admin() ) {
wp_localize_script( 'give-admin-scripts', 'giveApiSettings', $data );
} else {
wp_localize_script( 'give', 'giveApiSettings', $data );
}
}
/**
* Rest fetch form data callback
*
* @param WP_REST_Request $request
*
* @access public
* @return array|mixed|object
*/
public function get_forms_data( $request ) {
$parameters = $request->get_params();
// Bailout
if ( ! isset( $parameters['id'] ) || empty( $parameters['id'] ) ) {
return [ 'error' => 'no_parameter_given' ];
}
return give_form_shortcode( $parameters );
}
/**
* Rest fetch form data callback
*
* @param WP_REST_Request $request
*
* @access public
* @return array|mixed|object
*/
public function get_donation_grid( $request ) {
$parameters = $request->get_params();
return give_form_grid_shortcode( $parameters );
}
/**
* Get api reset url
*
* @since 2.1
* @access public
*
* @param int $blog_id Optional. Blog ID. Default of null returns URL for current blog.
* @param string $path Optional. REST route. Default '/'.
* @param string $scheme Optional. Sanitization scheme. Default 'rest'.
*
* @return string Full URL to the endpoint.
*/
public static function get_rest_api( $blog_id = null, $path = '/', $scheme = 'rest' ) {
return trailingslashit( get_rest_url( $blog_id, $path, $scheme ) . self::$instance->rest_base );
}
}
Give_API_V2::get_instance();