ADBC_PLUGIN_VERSION, // current version number 'license' => $license_key, // license key (used get_option above to retrieve from DB) 'item_id' => ADBC_EDD_ITEM_ID, // ID of the product 'item_name' => ADBC_EDD_ITEM_NAME, // name of the product 'author' => 'Younes JFR.', // author of this plugin 'beta' => false, ) ); } add_action('admin_init', 'aDBc_edd_sl_plugin_updater', 0); /************************************************************************** * the code below is just a standard options page. Substitute with your own. **************************************************************************/ function aDBc_edd_license_page() { $license = get_option( 'aDBc_edd_license_key' ); $status = get_option( 'aDBc_edd_license_status' ); // When the user activates the license, hide it by stars like passwords if(!empty(trim($license)) && $status !== false && $status == 'valid'){ $license_key_hidden = substr(trim($license), 0, 4) . "************************" . substr(trim($license), -4); }else{ $license_key_hidden = esc_attr($license); } ?>
'activate_license', 'license' => $license, 'item_id' => ADBC_EDD_ITEM_ID, 'item_name' => urlencode( ADBC_EDD_ITEM_NAME ), // the name of our product in EDD 'url' => home_url() ); // Call the custom API. $response = wp_remote_post( ADBC_EDD_STORE_URL, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); // make sure the response came back okay if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { if ( is_wp_error( $response ) ) { $message = $response->get_error_message(); } else { $message = __('An error occurred, please try again.', 'advanced-database-cleaner'); } } else { $license_data = json_decode( wp_remote_retrieve_body( $response ) ); if ( false === $license_data->success ) { switch( $license_data->error ) { case 'expired' : $message = sprintf( __('Your license key expired on %s.', 'advanced-database-cleaner'), date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) ) ); break; case 'disabled' : case 'revoked' : $message = __('Your license key has been disabled.', 'advanced-database-cleaner'); break; case 'missing' : $message = __('Invalid license key', 'advanced-database-cleaner'); break; case 'invalid' : case 'site_inactive' : $message = __('Your license is not active for this URL.', 'advanced-database-cleaner'); break; case 'item_name_mismatch' : $message = sprintf( __('This appears to be an invalid license key for %s.', 'advanced-database-cleaner'), ADBC_EDD_ITEM_NAME); break; case 'no_activations_left': $message = __('Your license key has reached its activation limit.', 'advanced-database-cleaner'); break; default : $message = __('An error occurred, please try again.', 'advanced-database-cleaner'); break; } } } // Check if anything passed on a message constituting a failure if ( ! empty( $message ) ) { $base_url = admin_url( 'admin.php?page=' . ADBC_EDD_PLUGIN_LICENSE_PAGE ); $redirect = add_query_arg( array( 'sl_activation' => 'false', 'message' => urlencode( $message ) ), $base_url ); wp_redirect( $redirect ); exit(); } // $license_data->license will be either "valid" or "invalid" update_option('aDBc_edd_license_status', $license_data->license); wp_redirect(admin_url('admin.php?page=' . ADBC_EDD_PLUGIN_LICENSE_PAGE)); exit(); } } add_action('admin_init', 'aDBc_edd_activate_license'); /*********************************************** * Illustrates how to deactivate a license key. * This will decrease the site count ***********************************************/ function aDBc_edd_deactivate_license() { // listen for our activate button to be clicked if( isset( $_POST['aDBc_edd_license_deactivate'] ) ) { // run a quick security check if( ! check_admin_referer( 'aDBc_edd_nonce', 'aDBc_edd_nonce' ) ) return; // get out if we didn't click the Activate button // retrieve the license from the database $license = trim( get_option( 'aDBc_edd_license_key' ) ); // data to send in our API request $api_params = array( 'edd_action' => 'deactivate_license', 'license' => $license, 'item_id' => ADBC_EDD_ITEM_ID, 'item_name' => urlencode( ADBC_EDD_ITEM_NAME ), // the name of our product in EDD 'url' => home_url() ); // Call the custom API. $response = wp_remote_post( ADBC_EDD_STORE_URL, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); // make sure the response came back okay if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { if ( is_wp_error( $response ) ) { $message = $response->get_error_message(); } else { $message = __('An error occurred, please try again.', 'advanced-database-cleaner'); } $base_url = admin_url( 'admin.php?page=' . ADBC_EDD_PLUGIN_LICENSE_PAGE ); $redirect = add_query_arg( array( 'sl_activation' => 'false', 'message' => urlencode( $message ) ), $base_url ); wp_redirect( $redirect ); exit(); } // 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( 'aDBc_edd_license_status' ); delete_option( 'aDBc_edd_license_key' ); } wp_redirect( admin_url( 'admin.php?page=' . ADBC_EDD_PLUGIN_LICENSE_PAGE ) ); exit(); } } add_action('admin_init', 'aDBc_edd_deactivate_license'); /*********************************************** * Deactivate a license key after uninstall. * This will descrease the site count ***********************************************/ function aDBc_edd_deactivate_license_after_uninstall() { // retrieve the license from the database $license = trim( get_option( 'aDBc_edd_license_key' ) ); // data to send in our API request $api_params = array( 'edd_action'=> 'deactivate_license', 'license' => $license, 'item_id' => ADBC_EDD_ITEM_ID, 'item_name' => urlencode( ADBC_EDD_ITEM_NAME ), // the name of our product in EDD 'url' => home_url() ); // Call the custom API. $response = wp_remote_post( ADBC_EDD_STORE_URL, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); } /********************************************************************************************* * this illustrates how to check if a license key is still valid the updater does this for you, * so this is only needed if you want to do something custom *********************************************************************************************/ function aDBc_edd_check_license(){ global $wp_version; $license = trim(get_option('aDBc_edd_license_key')); $api_params = array( 'edd_action' => 'check_license', 'license' => $license, 'item_id' => ADBC_EDD_ITEM_ID, 'item_name' => urlencode( ADBC_EDD_ITEM_NAME ), 'url' => home_url() ); // Call the custom API. $response = wp_remote_post(ADBC_EDD_STORE_URL, array('timeout' => 15, 'sslverify' => false, 'body' => $api_params)); 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 is a means of catching errors from the activation method above and displaying it to the customer *******************************************************************************************************/ function aDBc_edd_admin_notices(){ if(isset($_GET['sl_activation']) && ! empty($_GET['message'])){ switch($_GET['sl_activation']){ case 'false': $message = urldecode($_GET['message']); ?>