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