[
'title' => __( 'Your License Has Expired', 'elementor-pro' ),
'description' => sprintf( __( 'Renew your license today, to keep getting feature updates, premium support and unlimited access to the template library.', 'elementor-pro' ), API::RENEW_URL ),
'button_text' => __( 'Renew License', 'elementor-pro' ),
'button_url' => API::RENEW_URL,
],
API::STATUS_DISABLED => [
'title' => __( 'Your License Is Inactive', 'elementor-pro' ),
'description' => __( 'Your license key has been cancelled (most likely due to a refund request). Please consider acquiring a new license.', 'elementor-pro' ),
'button_text' => __( 'Activate License', 'elementor-pro' ),
'button_url' => $license_page_link,
],
API::STATUS_INVALID => [
'title' => __( 'License Invalid', 'elementor-pro' ),
'description' => __( 'Your license key doesn\'t match your current domain. This is most likely due to a change in the domain URL of your site (including HTTPS/SSL migration). Please deactivate the license and then reactivate it again.', 'elementor-pro' ),
'button_text' => __( 'Reactivate License', 'elementor-pro' ),
'button_url' => $license_page_link,
],
API::STATUS_SITE_INACTIVE => [
'title' => __( 'License Mismatch', 'elementor-pro' ),
'description' => __( 'Your license key doesn\'t match your current domain. This is most likely due to a change in the domain URL. Please deactivate the license and then reactivate it again.', 'elementor-pro' ),
'button_text' => __( 'Reactivate License', 'elementor-pro' ),
'button_url' => $license_page_link,
],
];
}
public static function deactivate() {
API::deactivate_license();
delete_option( 'elementor_pro_license_key' );
delete_transient( 'elementor_pro_license_data' );
}
private function print_admin_message( $title, $description, $button_text = '', $button_url = '', $button_class = '' ) {
?>
true,
] );
}
$license_key = trim( $_POST['elementor_pro_license_key'] );
$data = API::activate_license( $license_key );
if ( is_wp_error( $data ) ) {
wp_die( sprintf( '%s (%s) ', $data->get_error_message(), $data->get_error_code() ), __( 'Elementor Pro', 'elementor-pro' ), [
'back_link' => true,
] );
}
if ( API::STATUS_VALID !== $data['license'] ) {
$error_msg = API::get_error_message( $data['error'] );
wp_die( $error_msg, __( 'Elementor Pro', 'elementor-pro' ), [
'back_link' => true,
] );
}
self::set_license_key( $license_key );
API::set_license_data( $data );
wp_safe_redirect( $_POST['_wp_http_referer'] );
die;
}
public function action_deactivate_license() {
check_admin_referer( 'elementor-pro-license' );
$this->deactivate();
wp_safe_redirect( $_POST['_wp_http_referer'] );
die;
}
public function register_page() {
$menu_text = __( 'License', 'elementor-pro' );
add_submenu_page(
Settings::PAGE_ID,
$menu_text,
$menu_text,
'manage_options',
self::PAGE_ID,
[ $this, 'display_page' ]
);
}
public static function get_url() {
return admin_url( 'admin.php?page=' . self::PAGE_ID );
}
public function display_page() {
$license_key = self::get_license_key();
$is_manual_mode = ( isset( $_GET['mode'] ) && 'manually' === $_GET['mode'] );
if ( $is_manual_mode ) {
$this->render_manually_activation_widget( $license_key );
return;
}
?>
is_block_editor() ) {
return true;
}
if ( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() ) {
return true;
}
return false;
}
/**
* @deprecated 2.9.0 Use ElementorPro\License\API::is_license_about_to_expire() instead
*
* @return bool
*/
public function is_license_about_to_expire() {
return Api::is_license_about_to_expire();
}
public function admin_license_details() {
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
if ( $this->is_block_editor_page() ) {
return;
}
$renew_url = API::RENEW_URL;
$license_key = self::get_license_key();
if ( empty( $license_key ) ) {
?>
get_activate_message(); ?>
'valid',
'payment_id' => '10230',
'license_limit' => '0',
'site_count' => '1',
'activations_left' => '999990',
'expires','lifetime',
'subscriptions','enable'];
$errors = '';
}
public function filter_library_get_templates_args( $body_args ) {
$license_key = self::get_license_key();
if ( ! empty( $license_key ) ) {
$body_args['license'] = $license_key;
$body_args['url'] = home_url();
}
return $body_args;
}
public function handle_tracker_actions() {
// Show tracker notice after 24 hours from Pro installed time.
$is_need_to_show = ( $this->get_installed_time() < strtotime( '-24 hours' ) );
$is_dismiss_notice = ( '1' === get_option( 'elementor_tracker_notice' ) );
$is_dismiss_pro_notice = ( '1' === get_option( 'elementor_pro_tracker_notice' ) );
if ( $is_need_to_show && $is_dismiss_notice && ! $is_dismiss_pro_notice ) {
delete_option( 'elementor_tracker_notice' );
}
if ( ! isset( $_GET['elementor_tracker'] ) ) {
return;
}
if ( 'opt_out' === $_GET['elementor_tracker'] ) {
update_option( 'elementor_pro_tracker_notice', '1' );
}
}
private function get_installed_time() {
$installed_time = get_option( '_elementor_pro_installed_time' );
if ( ! $installed_time ) {
$installed_time = time();
update_option( '_elementor_pro_installed_time', $installed_time );
}
return $installed_time;
}
public function plugin_action_links( $links ) {
$license_key = self::get_license_key();
if ( empty( $license_key ) ) {
$links['active_license'] = sprintf( '%s', self::get_connect_url(), __( 'Connect & Activate', 'elementor-pro' ) );
}
return $links;
}
private function handle_dashboard_admin_widget() {
add_action( 'elementor/admin/dashboard_overview_widget/after_version', function() {
/* translators: %s: Elementor Pro version. */
echo '' . sprintf( __( 'Elementor Pro v%s', 'elementor-pro' ), ELEMENTOR_PRO_VERSION ) . '';
} );
add_filter( 'elementor/admin/dashboard_overview_widget/footer_actions', function( $additions_actions ) {
unset( $additions_actions['go-pro'] );
return $additions_actions;
}, 550 );
}
public function add_finder_item( array $categories ) {
$categories['settings']['items']['license'] = [
'title' => __( 'License', 'elementor-pro' ),
'url' => self::get_url(),
];
return $categories;
}
private function render_manually_activation_widget( $license_key ) {
?>
30,
'body' => [
'api_version' => ELEMENTOR_PRO_VERSION,
'site_lang' => get_bloginfo( 'language' ),
],
] );
}
private function is_connected() {
return true;
}
public function get_connect_url( $params = [] ) {
$action = $this->is_connected() ? 'activate_pro' : 'authorize';
return $this->get_app()->get_admin_url( $action, $params );
}
private function get_switch_license_url() {
return $this->get_app()->get_admin_url( 'switch_license' );
}
private function get_connected_account() {
$user = $this->get_app()->get( 'user' );
$email = '';
if ( $user ) {
$email = $user->email;
}
return $email;
}
private function get_deactivate_url() {
return $this->get_app()->get_admin_url( 'deactivate' );
}
private function get_activate_message() {
return __( 'Please activate your license to get feature updates, premium support and unlimited access to the template library.', 'elementor-pro' );
}
/**
* @return Activate
*/
private function get_app() {
return Plugin::elementor()->common->get_component( 'connect' )->get_app( 'activate' );
}
public function __construct() {
add_action( 'admin_menu', [ $this, 'register_page' ], 800 );
add_action( 'admin_init', [ $this, 'handle_tracker_actions' ], 9 );
add_action( 'admin_post_elementor_pro_activate_license', [ $this, 'action_activate_license' ] );
add_action( 'admin_post_elementor_pro_deactivate_license', [ $this, 'action_deactivate_license' ] );
add_action( 'admin_notices', [ $this, 'admin_license_details' ], 20 );
add_action( 'deactivate_plugin', [ $this, 'on_deactivate_plugin' ] );
// Add the license key to Templates Library requests
add_filter( 'elementor/api/get_templates/body_args', [ $this, 'filter_library_get_templates_args' ] );
add_filter( 'elementor/finder/categories', [ $this, 'add_finder_item' ] );
add_filter( 'plugin_action_links_' . ELEMENTOR_PRO_PLUGIN_BASE, [ $this, 'plugin_action_links' ], 50 );
$this->handle_dashboard_admin_widget();
self::get_updater_instance();
}
}