1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
<?php
/**
* Check whether the license key is valid and activate it
*
* @author Tyche Softwares
* @since 1.0
* @category Classes
* @package Deposits-for-WooCommerce/Other
*/
class DFW_License {
/**
* This function adds the license page in the Deposits settings
*/
public static function dfw_get_edd_sample_license_page() {
$license = get_option( 'dfw_edd_license_key' );
$status = get_option( 'dfw_edd_license_status' );
}
/**
* This function will check the license entered using an API call to the store website.
* And if its valid it will activate the license.
*
* @since 1.0
*/
public static function dfw_edd_sample_activate_license() {
// listen for our activate button to be clicked
if( isset( $_POST['dfw_edd_activate_license'] ) ) {
// run a quick security check
if( ! check_admin_referer( 'edd_sample_nonce', 'edd_sample_nonce' ) )
return; // get out if we didn't click the Activate button
// retrieve the license from the database
$license = trim( get_option( 'dfw_edd_license_key' ) );
// data to send in our API request
$api_params = array(
'edd_action' => 'activate_license',
'license' => $license,
'item_name' => urlencode( EDD_SL_ITEM_NAME_DEPOSITS ) // the name of our product in EDD
);
// Call the custom API.
$response = wp_remote_get( esc_url_raw( add_query_arg( $api_params, EDD_SL_STORE_URL_DEPOSITS ) ), array( 'timeout' => 15, 'sslverify' => false ) );
// make sure the response came back okay
if ( is_wp_error( $response ) )
return false;
// decode the license data
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
// $license_data->license will be either "active" or "inactive"
update_option( 'dfw_edd_license_status', $license_data->license );
}
}
/**
* Illustrates how to deactivate a license key.
*
* @since 1.0
*/
public static function dfw_edd_sample_deactivate_license() {
// listen for our activate button to be clicked
if( isset( $_POST['dfw_edd_deactivate_license'] ) ) {
// run a quick security check
if( ! check_admin_referer( 'edd_sample_nonce', 'edd_sample_nonce' ) )
return; // get out if we didn't click the Activate button
// retrieve the license from the database
$license = trim( get_option( 'dfw_edd_license_key' ) );
// data to send in our API request
$api_params = array(
'edd_action' => 'deactivate_license',
'license' => $license,
'item_name' => urlencode( EDD_SL_ITEM_NAME_DEPOSITS ) // the name of our product in EDD
);
// Call the custom API.
$response = wp_remote_get( esc_url_raw( add_query_arg( $api_params, EDD_SL_STORE_URL_DEPOSITS ) ), array( 'timeout' => 15, 'sslverify' => false ) );
// make sure the response came back okay
if ( is_wp_error( $response ) )
return false;
// decode the license data
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
// $license_data->license will be either "deactivated" or "failed"
if( $license_data->license == 'deactivated' )
delete_option( 'dfw_edd_license_status' );
}
}
/**
* This illustrates how to check if a license key is still valid.
*
* @since 1.0
*/
static function dfw_edd_sample_check_license() {
global $wp_version;
$license = trim( get_option( 'dfw_edd_license_key' ) );
$api_params = array(
'edd_action' => 'check_license',
'license' => $license,
'item_name' => urlencode( EDD_SL_ITEM_NAME_DEPOSITS )
);
// Call the custom API.
$response = wp_remote_get( esc_url_raw( add_query_arg( $api_params, EDD_SL_STORE_URL_DEPOSITS ) ), array( 'timeout' => 15, 'sslverify' => false ) );
if ( is_wp_error( $response ) )
return false;
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
if( $license_data->license == 'valid' ) {
echo 'valid'; exit;
// this license is still valid
} else {
echo 'invalid'; exit;
// this license is no longer valid
}
}
/**
* This function checks if a new license has been entered ,
* if yes plugin must be reactivated.
*
* @param string $new License Key
* @return string
* @since 1.0
*/
static function dfw_get_edd_sanitize_license( $new ) {
$old = get_option( 'dfw_edd_license_key' );
if( $old && $old != $new ) {
delete_option( 'dfw_edd_license_status' ); // new license has been entered, so must reactivate
}
return $new;
}
}