| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- /**
- * WPSEO plugin file.
- *
- * @package WPSEO\Admin\Google_Search_Console
- */
- /**
- * Class WPSEO_GSC_Ajax
- */
- class WPSEO_GSC_Ajax {
- /**
- * Setting the AJAX hooks for GSC
- */
- public function __construct() {
- add_action( 'wp_ajax_wpseo_mark_fixed_crawl_issue', array( $this, 'ajax_mark_as_fixed' ) );
- add_action( 'wp_ajax_wpseo_dismiss_gsc', array( $this, 'dismiss_notice' ) );
- add_action( 'wp_ajax_wpseo_save_auth_code', array( $this, 'save_auth_code' ) );
- add_action( 'wp_ajax_wpseo_clear_auth_code', array( $this, 'clear_auth_code' ) );
- add_action( 'wp_ajax_wpseo_get_profiles', array( $this, 'get_profiles' ) );
- }
- /**
- * This method will be access by an AJAX request and will mark an issue as fixed.
- *
- * First it will do a request to the Google API
- */
- public function ajax_mark_as_fixed() {
- if ( $this->valid_nonce() ) {
- $marker = new WPSEO_GSC_Marker( filter_input( INPUT_POST, 'url' ) );
- wp_die( $marker->get_response() );
- }
- wp_die( 'false' );
- }
- /**
- * Handle the AJAX request and dismiss the GSC notice
- */
- public function dismiss_notice() {
- check_ajax_referer( 'dismiss-gsc-notice' );
- update_user_meta( get_current_user_id(), 'wpseo_dismissed_gsc_notice', true );
- wp_die( 'true' );
- }
- /**
- * Saves the authorization code.
- */
- public function save_auth_code() {
- if ( ! $this->valid_nonce() ) {
- wp_die( '0' );
- }
- // Validate the authorization.
- $service = $this->get_service();
- $authorization_code = filter_input( INPUT_POST, 'authorization' );
- $is_authorization_valid = WPSEO_GSC_Settings::validate_authorization( $authorization_code, $service->get_client() );
- if ( ! $is_authorization_valid ) {
- wp_die( '0' );
- }
- $this->get_profiles();
- }
- /**
- * Clears all authorization data.
- */
- public function clear_auth_code() {
- if ( ! $this->valid_nonce() ) {
- wp_die( '0' );
- }
- $service = $this->get_service();
- WPSEO_GSC_Settings::clear_data( $service );
- $this->get_profiles();
- }
- /**
- * Check if posted nonce is valid and return true if it is
- *
- * @return mixed
- */
- private function valid_nonce() {
- return wp_verify_nonce( filter_input( INPUT_POST, 'ajax_nonce' ), 'wpseo-gsc-ajax-security' );
- }
- /**
- * Returns an instance of the Google Search Console service.
- *
- * @return WPSEO_GSC_Service
- */
- private function get_service() {
- return new WPSEO_GSC_Service();
- }
- /**
- * Prints a JSON encoded string with the current profile config.
- */
- private function get_profiles() {
- $component = new WPSEO_Config_Component_Connect_Google_Search_Console();
- wp_die( wp_json_encode( $component->get_data() ) );
- }
- }
|