/wp-content/plugins/wordpress-seo/admin/google_search_console/class-gsc-ajax.php
https://bitbucket.org/carloskikea/helpet · PHP · 110 lines · 52 code · 19 blank · 39 comment · 4 complexity · 699a8a51b04f8b64b199b67ea9f873b4 MD5 · raw file
- <?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() ) );
- }
- }