<?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 );
}
}