You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

138 lines
2.9 KiB
PHP

<?php
/**
* Google Permissions.
*
* @since 1.0.49
* @package RankMath
* @subpackage RankMath\modules
* @author Rank Math <support@rankmath.com>
*/
namespace RankMath\Google;
defined( 'ABSPATH' ) || exit;
/**
* Permissions class.
*/
class Permissions {
const OPTION_NAME = 'rank_math_analytics_permissions';
/**
* Permission info.
*/
public static function fetch() {
$tokens = Authentication::tokens();
if ( empty( $tokens['access_token'] ) ) {
return;
}
$url = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=' . $tokens['access_token'];
$response = wp_remote_get( $url );
if ( 200 !== wp_remote_retrieve_response_code( $response ) ) {
return;
}
$response = wp_remote_retrieve_body( $response );
if ( empty( $response ) ) {
return;
}
$response = \json_decode( $response, true );
$scopes = $response['scope'];
$scopes = explode( ' ', $scopes );
$scopes = str_replace( 'https://www.googleapis.com/auth/', '', $scopes );
update_option( self::OPTION_NAME, $scopes );
}
/**
* Get permissions.
*
* @return array
*/
public static function get() {
return get_option( self::OPTION_NAME, [] );
}
/**
* If user give permission or not.
*
* @param string $permission Permission name.
* @return boolean
*/
public static function has( $permission ) {
$permissions = self::get();
return in_array( $permission, $permissions, true );
}
/**
* If user give permission or not.
*
* @return boolean
*/
public static function has_console() {
return self::has( 'webmasters' );
}
/**
* If user give permission or not.
*
* @return boolean
*/
public static function has_analytics() {
return self::has( 'analytics.readonly' ) ||
self::has( 'analytics.provision' ) ||
self::has( 'analytics.edit' );
}
/**
* If user give permission or not.
*
* @return boolean
*/
public static function has_adsense() {
return self::has( 'adsense.readonly' );
}
/**
* If user give permission or not.
*
* @return string
*/
public static function get_status() {
return [
esc_html__( 'Search Console', 'rank-math' ) => self::get_status_text( self::has_console() ),
];
}
/**
* Status text
*
* @param boolean $check Truthness.
* @return string
*/
public static function get_status_text( $check ) {
return $check ? esc_html__( 'Given', 'rank-math' ) : esc_html__( 'Not Given', 'rank-math' );
}
/**
* Print warning
*/
public static function print_warning() {
?>
<p class="warning">
<strong class="warning">
<?php esc_html_e( 'Warning:', 'rank-math' ); ?>
</strong>
<?php
/* translators: %s is the reconnect link. */
printf( wp_kses_post( __( 'You have not given the permission to fetch this data. Please <a href="%s">reconnect</a> with all required permissions.', 'rank-math' ) ), wp_nonce_url( admin_url( 'admin.php?reconnect=google' ), 'rank_math_reconnect_google' ) );
?>
</p>
<?php
}
}