b0y-101 Mini Shell


Current Path : E:/www2/kidsbangna/wp-content/plugins/dw-question-answer/inc/
File Upload :
Current File : E:/www2/kidsbangna/wp-content/plugins/dw-question-answer/inc/Updater.php

<?php  
if( !class_exists( 'EDD_SL_Plugin_Updater' ) ) {
	// load our custom updater
	include( DWQA_DIR . '/lib/easy-digital-downloads/EDD_SL_Plugin_Updater.php' );
}

class DWQA_Updater {
	protected $store = 'http://dwqa.local/';
	protected $name = '';
	protected $slug = '';
	protected $file = __FILE__;
	protected $version = '1.0.0';
	protected $license_option_key;
	protected $license_status_key;
	protected $description = '';


	public function __construct() {
		$this->license_option_key = $this->slug . '_license_key';
		$this->license_status_key = $this->slug . '_license_status';
		add_action( 'admin_init', array( $this, 'plugin_updater' ), 0 );
		add_action('admin_init', array( $this, 'register_option' ) );
		// add_action('admin_init', array( $this, 'deactivate_license' ) );

		add_action( 'wp_ajax_'.$this->slug.'_activate_license', array( $this, 'activate_license' ) );
	}

	public function get_key() {
		return $this->license_option_key;
	}

	public function get_status_key() {
		return $this->license_status_key;
	}

	public function get_name() {
		return $this->name;
	}

	public function plugin_updater() {
		// retrieve our license key from the DB
		$license_key = trim( get_option( $this->license_option_key ) );

		// setup the updater
		$edd_updater = new EDD_SL_Plugin_Updater( $this->store, $this->file, array(
				'version' 	=> $this->version, 				// current version number
				'license' 	=> $license_key, 		// license key (used get_option above to retrieve from DB)
				'item_name' => $this->name, 	// name of this plugin
				'author' 	=> 'DesignWall'  // author of this plugin
			)
		);
	}


	/************************************
	* 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
	*************************************/

	public function check_license() {

		global $wp_version;

		$license = trim( get_option( $this->license_option_key ) );

		$api_params = array(
			'edd_action' => 'check_license',
			'license' => $license,
			'item_name' => urlencode( EDD_SAMPLE_ITEM_NAME ),
			'url'       => home_url()
		);

		// Call the custom API.
		$response = wp_remote_post( EDD_SAMPLE_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
		}
	}

	public function register_option() {
		add_settings_section( $this->slug, $this->name, array( $this, 'display_description' ), 'dwqa-addons-settings' );
		// creates our settings in the options table
		register_setting( 'dwqa-addons', $this->license_option_key, array( $this, 'sanitize_license' ) );
		add_settings_field( $this->license_option_key, __( 'License Key', 'dw-question-answer' ), array( $this, 'license_setting_field' ), 'dwqa-addons-settings', $this->slug );
	}

	public function display_description() {
		if( $this->description ) {
			echo '<p class="description">'.$this->description.'</p>';
		}
	}

	public function sanitize_license( $new ) {
		$old = get_option( $this->license_option_key );
		if( $old && $old != $new ) {
			delete_option( $this->license_status_key ); // new license has been entered, so must reactivate
		}
		return $new;
	}

	public function license_setting_field() {
		$license_key = get_option( $this->license_option_key );
		$status = get_option( $this->license_status_key );
		echo '<input type="text" name="'.$this->license_option_key.'" id="'.$this->license_option_key.'" class="regular-text" value="'.$license_key.'" >';
		if ( 'valid' == $status ) {
			echo '<p class="description">Your license key was activated</p>';
		}
		if ( $license_key && 'valid' != $status ) {
			echo '<br><button id="'.$this->slug.'-activate-license" class="button btn" type="button">'.__('Activate','dw-question-answer').'</button>';
			?>
			<script type="text/javascript">
			jQuery('#<?php echo $this->slug ?>-activate-license').on('click', function(e){
				e.preventDefault();
				jQuery.ajax({
					url: '<?php echo admin_url('admin-ajax.php'); ?>',
					type: 'POST',
					dataType: 'json',
					data: {
						action: '<?php echo $this->slug ?>_activate_license',
						nonce: '<?php echo wp_create_nonce( $this->slug . '_activate_license' ) ?>'
					},
				})
				.done(function() {
					document.location.href = document.location.href;
				});
			});
			</script>
			<?php
		}
	}

	public function activate_license() {
		// run a quick security check
	 	if( ! check_admin_referer( $this->slug . '_activate_license', 'nonce' ) ) {
	 		return;
	 	}

		// retrieve the license from the database
		$license = trim( get_option( $this->license_option_key ) );

		// data to send in our API request
		$api_params = array(
			'edd_action'=> 'activate_license',
			'license' 	=> $license,
			'item_name' => urlencode( $this->name ), // the name of our product in EDD
			'url'       => home_url()
		);

		// Call the custom API.
		$response = wp_remote_post( $this->store, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );

		// 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 "valid" or "invalid"

		update_option( $this->license_status_key, $license_data->license );

		wp_send_json_success( array( 'message' => __( 'Plugin was activated', 'dw-question-answer' ) ) );
	}

	public function deactivate_license() {

		// listen for our activate button to be clicked
		if( isset( $_POST['edd_license_deactivate'] ) ) {

			// 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( 'edd_sample_license_key' ) );


			// data to send in our API request
			$api_params = array(
				'edd_action'=> 'deactivate_license',
				'license' 	=> $license,
				'item_name' => urlencode( $this->name ), // the name of our product in EDD
				'url'       => home_url()
			);

			// Call the custom API.
			$response = wp_remote_post( $this->store, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );

			// 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( 'edd_sample_license_status' );

		}
	}
}
?>

Copyright © 2019 by b0y-101