You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
3.6 KiB
PHP
156 lines
3.6 KiB
PHP
<?php
|
|
/**
|
|
* The Global functionality of the plugin.
|
|
*
|
|
* Defines the functionality loaded both on frontend.
|
|
*
|
|
* @since 1.0.15
|
|
* @package RankMath
|
|
* @subpackage RankMath\Rest
|
|
* @author Rank Math <support@rankmath.com>
|
|
*/
|
|
|
|
namespace RankMath\Rest;
|
|
|
|
use WP_Error;
|
|
use WP_REST_Server;
|
|
use WP_REST_Request;
|
|
use WP_REST_Response;
|
|
use WP_REST_Controller;
|
|
use RankMath\Admin\Admin_Helper;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Front class.
|
|
*/
|
|
class Front extends WP_REST_Controller {
|
|
|
|
/**
|
|
* Constructor.
|
|
*/
|
|
public function __construct() {
|
|
$this->namespace = \RankMath\Rest\Rest_Helper::BASE;
|
|
}
|
|
|
|
/**
|
|
* Registers the routes for the objects of the controller.
|
|
*/
|
|
public function register_routes() {
|
|
|
|
register_rest_route(
|
|
$this->namespace,
|
|
'/disconnectSite',
|
|
[
|
|
'methods' => WP_REST_Server::READABLE,
|
|
'callback' => [ $this, 'disconnect_site' ],
|
|
'permission_callback' => [ $this, 'check_api_key' ],
|
|
'args' => $this->get_disconnect_site_args(),
|
|
]
|
|
);
|
|
|
|
register_rest_route(
|
|
$this->namespace,
|
|
'/getFeaturedImageId',
|
|
[
|
|
'methods' => WP_REST_Server::EDITABLE,
|
|
'callback' => [ $this, 'get_featured_image_id' ],
|
|
'permission_callback' => 'is_user_logged_in',
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Check API key in request.
|
|
*
|
|
* @param WP_REST_Request $request Full details about the request.
|
|
* @return bool Whether the API key matches or not.
|
|
*/
|
|
public function check_api_key( WP_REST_Request $request ) {
|
|
$token = $request->get_param( 'token' );
|
|
$data = Admin_Helper::get_registration_data();
|
|
|
|
return isset( $data['api_key'] ) && $token === $data['api_key'];
|
|
}
|
|
|
|
/**
|
|
* Disconnect website.
|
|
*
|
|
* @param WP_REST_Request $request Full details about the request.
|
|
*
|
|
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
|
|
*/
|
|
public function disconnect_site( WP_REST_Request $request ) {
|
|
Admin_Helper::get_registration_data( false );
|
|
|
|
return [
|
|
'code' => 'site_disconnected',
|
|
'message' => esc_html__( 'Site disconnected successfully.', 'rank-math' ),
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Get featured image ID.
|
|
*
|
|
* @param WP_REST_Request $request Should include a postId parameter.
|
|
*
|
|
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
|
|
*/
|
|
public function get_featured_image_id( WP_REST_Request $request ) {
|
|
|
|
$resp = new WP_REST_Response();
|
|
|
|
if ( ! current_theme_supports( 'post-thumbnails' ) ) {
|
|
$resp->set_status( 200 );
|
|
$resp->set_data(
|
|
[
|
|
'success' => false,
|
|
'message' => 'The current theme does not have "post-thumbnails" support.',
|
|
'featImgId' => 0,
|
|
]
|
|
);
|
|
return $resp;
|
|
}
|
|
|
|
$post_id = $request->get_param( 'postId' );
|
|
$feat_img_id = get_post_thumbnail_id( $post_id ? $post_id : null );
|
|
|
|
if ( false === $feat_img_id ) {
|
|
$resp->set_status( 404 );
|
|
$resp->set_data(
|
|
[
|
|
'success' => false,
|
|
'message' => 'The post could not be found.',
|
|
'featImgId' => false,
|
|
]
|
|
);
|
|
return $resp->as_error();
|
|
}
|
|
|
|
$resp->set_status( 200 );
|
|
$resp->set_data(
|
|
[
|
|
'success' => true,
|
|
'featImgId' => $feat_img_id,
|
|
]
|
|
);
|
|
return $resp;
|
|
}
|
|
|
|
/**
|
|
* Get disconnect site endpoint arguments.
|
|
*
|
|
* @return array
|
|
*/
|
|
private function get_disconnect_site_args() {
|
|
return [
|
|
'token' => [
|
|
'type' => 'string',
|
|
'required' => true,
|
|
'description' => esc_html__( 'Site token', 'rank-math' ),
|
|
'validate_callback' => [ '\\RankMath\\Rest\\Rest_Helper', 'is_param_empty' ],
|
|
],
|
|
];
|
|
}
|
|
}
|