150 lines
3.8 KiB
PHP
150 lines
3.8 KiB
PHP
<?php
|
|
namespace FortAwesome;
|
|
|
|
require_once trailingslashit( FONTAWESOME_DIR_PATH ) . 'includes/class-fontawesome-rest-response.php';
|
|
use \WP_REST_Controller, \WP_Error, \Error, \Exception;
|
|
|
|
/**
|
|
* Controller class for REST endpoint
|
|
*
|
|
* Internal use only, not part of this plugin's public API.
|
|
*
|
|
* @ignore
|
|
* @internal
|
|
*/
|
|
class FontAwesome_V3Deprecation_Controller extends WP_REST_Controller {
|
|
|
|
// phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
|
/**
|
|
* @ignore
|
|
*/
|
|
private $plugin_slug = null;
|
|
|
|
// phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
|
/**
|
|
* @ignore
|
|
*/
|
|
protected $namespace = null;
|
|
|
|
|
|
// phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
|
/**
|
|
* @ignore
|
|
*/
|
|
public function __construct( $plugin_slug, $namespace ) {
|
|
$this->plugin_slug = $plugin_slug;
|
|
|
|
$this->namespace = $namespace;
|
|
}
|
|
|
|
// phpcs:ignore Generic.Commenting.DocComment.MissingShort
|
|
/**
|
|
* @ignore
|
|
*/
|
|
public function register_routes() {
|
|
$route_base = 'v3deprecation';
|
|
|
|
register_rest_route(
|
|
$this->namespace,
|
|
'/' . $route_base,
|
|
array(
|
|
array(
|
|
'methods' => 'GET',
|
|
'callback' => array( $this, 'get_item' ),
|
|
'permission_callback' => function() {
|
|
return current_user_can( 'manage_options' ); },
|
|
'args' => array(),
|
|
),
|
|
array(
|
|
'methods' => 'POST',
|
|
'callback' => array( $this, 'update_item' ),
|
|
'permission_callback' => function() {
|
|
return current_user_can( 'manage_options' ); },
|
|
'args' => array(),
|
|
),
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Internal use only.
|
|
*
|
|
* @internal
|
|
* @ignore
|
|
*/
|
|
protected function build_item() {
|
|
return array(
|
|
'v3DeprecationWarning' => fa()->get_v3deprecation_warning_data(),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get the deprecation data, a singleton resource.
|
|
*
|
|
* Internal use only, not part of this plugin's public API.
|
|
*
|
|
* @ignore
|
|
* @internal
|
|
* @param WP_REST_Request $request Full data about the request.
|
|
* @return FontAwesome_REST_Response
|
|
*/
|
|
public function get_item( $request ) {
|
|
try {
|
|
$data = $this->build_item();
|
|
|
|
return new FontAwesome_REST_Response( $data, 200 );
|
|
} catch ( FontAwesome_ServerException $e ) {
|
|
return new FontAwesome_REST_Response( wpe_fontawesome_server_exception( $e ), 500 );
|
|
} catch ( FontAwesome_Exception $e ) {
|
|
return new FontAwesome_REST_Response( wpe_fontawesome_client_exception( $e ), 400 );
|
|
} catch ( Exception $e ) {
|
|
return new FontAwesome_REST_Response( wpe_fontawesome_unknown_error( $e ), 500 );
|
|
} catch ( Error $e ) {
|
|
return new FontAwesome_REST_Response( wpe_fontawesome_unknown_error( $e ), 500 );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Update the singleton resource.
|
|
*
|
|
* Internal use only, not part of this plugin's public API.
|
|
*
|
|
* @ignore
|
|
* @internal
|
|
* @param WP_REST_Request $request Full data about the request.
|
|
* @return FontAwesome_REST_Response
|
|
*/
|
|
public function update_item( $request ) {
|
|
try {
|
|
$item = $this->prepare_item_for_database( $request );
|
|
|
|
if ( isset( $item['snooze'] ) && $item['snooze'] ) {
|
|
fa()->snooze_v3deprecation_warning();
|
|
}
|
|
|
|
$return_data = $this->build_item( fa() );
|
|
|
|
return new FontAwesome_REST_Response( $return_data, 200 );
|
|
} catch ( FontAwesome_ServerException $e ) {
|
|
return new FontAwesome_REST_Response( wpe_fontawesome_server_exception( $e ), 500 );
|
|
} catch ( FontAwesome_Exception $e ) {
|
|
return new FontAwesome_REST_Response( wpe_fontawesome_client_exception( $e ), 400 );
|
|
} catch ( Exception $e ) {
|
|
return new FontAwesome_REST_Response( wpe_fontawesome_unknown_error( $e ), 500 );
|
|
} catch ( Error $e ) {
|
|
return new FontAwesome_REST_Response( wpe_fontawesome_unknown_error( $e ), 500 );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Internal use only.
|
|
*
|
|
* @internal
|
|
* @ignore
|
|
*/
|
|
protected function prepare_item_for_database( $request ) {
|
|
$body = $request->get_json_params();
|
|
return array_merge( array(), $body );
|
|
}
|
|
}
|