File "class-licence-activation.php"
Full Path: /home/diablzlo/glucosebalnce.com/wp-content/plugins/seo-by-rank-math-pro/includes/admin/class-licence-activation.php
File size: 5.21 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* License Activation Handler
*
* Handles the site registration process with RankMath.com using the API key and username
* defined in the licence-data.php file. This class is responsible for sending the
* registration request, managing the response, and storing activation status.
*
* @since 3.0.88
* @package RankMathPro
* @subpackage RankMathPro\Admin
* @author Rank Math <support@rankmath.com>
*/
namespace RankMathPro\Admin;
use RankMath\Helper;
use RankMath\Admin\Admin_Helper;
use RankMath\KB;
use RankMath\Traits\Hooker;
defined( 'ABSPATH' ) || exit;
/**
* Licence_Activation class.
*/
class Licence_Activation {
use Hooker;
/**
* The Constructor.
*/
public function __construct() {
$this->action( 'admin_init', 'init', 1 );
}
/**
* Init function.
*/
public function init() {
// Early bail if site is connected or the licence file doesn't exists.
if (
Helper::is_site_connected() ||
! $this->get_licence_file()
) {
return;
}
// Early Bail if constants required to register site are not defined.
if (
! defined( 'RANK_MATH_LICENCE_KEY' ) ||
! RANK_MATH_LICENCE_KEY ||
! defined( 'RANK_MATH_LICENCE_USER' ) ||
! RANK_MATH_LICENCE_USER
) {
$this->delete_licence_file();
return;
}
update_option(
'rank_math_reseller_data',
[
'username' => RANK_MATH_LICENCE_USER,
'api_key' => RANK_MATH_LICENCE_KEY,
],
false
);
$this->enroll_site( RANK_MATH_LICENCE_USER, RANK_MATH_LICENCE_KEY );
$this->delete_licence_file();
}
/**
* On plugin activation call enroll site endpoint.
*/
public static function activate_licence() {
$reseller_data = get_option( 'rank_math_reseller_data', [] );
if ( empty( $reseller_data ) ) {
return;
}
self::enroll_site( $reseller_data['username'], $reseller_data['api_key'] );
}
/**
* Function to enroll site on plugin activation or when Licence file exists in the plugin
*
* @param string $username Username.
* @param string $api_key API key.
*/
private static function enroll_site( $username, $api_key ) {
$params = [
'site_url' => untrailingslashit( is_multisite() ? network_site_url() : home_url() ),
'username' => $username,
'api_key' => $api_key,
];
$response = wp_remote_post(
add_query_arg( 'v', RANK_MATH_PRO_VERSION, 'https://rankmath.com/wp-json/rankmath/v1/enrollSite/' ),
[
'body' => $params,
]
);
$response_code = wp_remote_retrieve_response_code( $response );
if ( $response_code !== 200 ) {
self::add_error_notice();
return false;
}
$response_body = wp_remote_retrieve_body( $response );
$result = json_decode( $response_body, true );
if ( ! empty( $result['error'] ) ) {
self::add_error_notice( $result['error'] );
return false;
}
if ( isset( $result['error'] ) ) {
unset( $result['error'] );
}
$result['connected'] = true;
Admin_Helper::get_registration_data( $result );
return true;
}
/**
* Get the licence data file.
*/
private function get_licence_file() {
if ( ! function_exists( 'WP_Filesystem' ) ) {
require_once ABSPATH . 'wp-admin/includes/file.php'; // @phpstan-ignore-line
}
global $wp_filesystem;
if ( is_null( $wp_filesystem ) ) {
return false;
}
$licence_file = RANK_MATH_PRO_PATH . 'licence-data.php';
return $wp_filesystem->exists( $licence_file ) ? $licence_file : false;
}
/**
* Delete the licence file.
*/
private function delete_licence_file() {
global $wp_filesystem;
$wp_filesystem->delete( $this->get_licence_file() );
}
/**
* Add error notice.
*
* @param string $err_key Error key.
*/
private static function add_error_notice( $err_key = '' ) {
$default_error = __( 'Unable to validate Rank Math SEO registration data.', 'rank-math-pro' ) .
' <a href="' . esc_url( Admin_Helper::get_activate_url() ) . '">' . __( 'Please try reconnecting.', 'rank-math-pro' ) . '</a> ' .
sprintf(
/* translators: KB Link */
__( 'If the issue persists, please try the solution described in our Knowledge Base article: %s', 'rank-math-pro' ),
'<a href="' . KB::get( 'unable-to-encrypt', 'Registration Data' ) . '" target="_blank">' . __( '[3. Unable to Encrypt]', 'rank-math-pro' ) . '</a>'
);
$errors = [
'not_found' => '<strong>' . esc_html__( 'Activation failed: ', 'rank-math-pro' ) . '</strong>' . esc_html__( 'Site not recognized or not registered with your license - please contact your Reseller.', 'rank-math-pro' ),
'invalid_user' => '<strong>' . esc_html__( 'Activation failed: ', 'rank-math-pro' ) . '</strong>' . esc_html__( 'Invalid username or API key - please contact your Reseller.', 'rank-math-pro' ),
'banned_user' => '<strong>' . esc_html__( 'Activation denied: ', 'rank-math-pro' ) . '</strong>' . esc_html__( 'Your account has been banned - please contact your Reseller for assistance.', 'rank-math-pro' ),
'banned_site' => '<strong>' . esc_html__( 'Activation denied: ', 'rank-math-pro' ) . '</strong>' . esc_html__( 'This website is blocked from using the plugin - please contact your Reseller.', 'rank-math-pro' ),
];
$error = ! empty( $errors[ $err_key ] ) ? $errors[ $err_key ] : $default_error;
Helper::add_notification(
$error,
[
'type' => 'error',
'classes' => 'is-dismissible',
]
);
}
}