File: /home/dmhkjfau/public_html/wp-content/plugins/wp-seopress/src/Actions/Api/Options/ProSettings.php
<?php // phpcs:ignore
namespace SEOPress\Actions\Api\Options;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use SEOPress\Core\Hooks\ExecuteHooks;
/**
* Pro Settings
*/
class ProSettings implements ExecuteHooks {
/**
* The Pro Settings hooks.
*
* @since 5.0.0
*/
public function hooks() {
add_action( 'rest_api_init', array( $this, 'register' ) );
}
/**
* The Pro Settings permission check.
*
* @param \WP_REST_Request $request The request.
*
* @since 5.5
*
* @return boolean
*/
public function permissionCheck( \WP_REST_Request $request ) {
return current_user_can( seopress_capability( 'manage_options', 'pro' ) );
}
/**
* The Pro Settings register.
*
* @since 5.5
*
* @return void
*/
public function register() {
register_rest_route(
'seopress/v1',
'/options/pro-settings',
array(
'methods' => 'GET',
'callback' => array( $this, 'processGet' ),
'permission_callback' => array( $this, 'permissionCheck' ),
)
);
register_rest_route(
'seopress/v1',
'/options/pro-settings',
array(
'methods' => 'POST',
'callback' => array( $this, 'processPost' ),
'permission_callback' => array( $this, 'permissionCheck' ),
)
);
}
/**
* The Pro Settings process post.
*
* @param \WP_REST_Request $request The request.
*
* @since 9.8
*
* @return \WP_REST_Response|\WP_Error
*/
public function processPost( \WP_REST_Request $request ) {
$new_options = $request->get_json_params();
if ( empty( $new_options ) || ! is_array( $new_options ) ) {
return new \WP_Error(
'invalid_data',
__( 'Invalid data provided.', 'wp-seopress' ),
array( 'status' => 400 )
);
}
// Sanitize using the same function as PHP form saves.
$sanitized_options = seopress_sanitize_options_fields( $new_options );
// Update the option.
update_option( 'seopress_pro_option_name', $sanitized_options );
/**
* Fires after Pro settings are updated via REST API.
*
* @since 9.8
*
* @param array $sanitized_options The updated options.
*/
do_action( 'seopress_pro_settings_updated', $sanitized_options );
return new \WP_REST_Response(
array(
'success' => true,
'message' => __( 'Settings saved successfully.', 'wp-seopress' ),
'data' => $sanitized_options,
),
200
);
}
/**
* The Pro Settings process get.
*
* @param \WP_REST_Request $request The request.
*
* @since 5.5
*/
public function processGet( \WP_REST_Request $request ) {
$options = get_option( 'seopress_pro_option_name' );
if ( empty( $options ) ) {
return new \WP_REST_Response( array() );
}
$data = array();
foreach ( $options as $key => $value ) {
$data[ $key ] = $value;
}
return new \WP_REST_Response( $data );
}
}