88 lines
2.3 KiB
PHP
88 lines
2.3 KiB
PHP
<?php
|
|
namespace FortAwesome;
|
|
|
|
require_once trailingslashit( FONTAWESOME_DIR_PATH ) . 'includes/class-fontawesome-exception.php';
|
|
require_once trailingslashit( FONTAWESOME_DIR_PATH ) . 'includes/class-fontawesome-rest-response.php';
|
|
|
|
use \WP_REST_Controller, \WP_Error, \Error, \Exception;
|
|
|
|
/**
|
|
* Module for this plugin's Preference Check controller
|
|
*
|
|
* @noinspection PhpIncludeInspection
|
|
*/
|
|
|
|
/**
|
|
* Controller class for REST endpoint
|
|
*/
|
|
class FontAwesome_Preference_Check_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 = 'preference-check';
|
|
|
|
register_rest_route(
|
|
$this->namespace,
|
|
'/' . $route_base,
|
|
array(
|
|
array(
|
|
'methods' => 'POST',
|
|
'callback' => array( $this, 'check_preferences' ),
|
|
'permission_callback' => function() {
|
|
return current_user_can( 'manage_options' ); },
|
|
'args' => array(),
|
|
),
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get conflicts.
|
|
*
|
|
* @param WP_REST_Request $request Full data about the request.
|
|
* @return FontAwesome_REST_Response
|
|
*/
|
|
public function check_preferences( $request ) {
|
|
try {
|
|
fa()->gather_preferences();
|
|
|
|
$conflicts = fa()->conflicts_by_option( $request->get_json_params() );
|
|
|
|
return new FontAwesome_REST_Response( $conflicts, 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 );
|
|
}
|
|
}
|
|
}
|