BSF_License_Manager::get_remote_license_status( string $purchase_key, int $product_id )

Get remote license status.


Description


Parameters

$purchase_key

(string) (Required) Purchase Key.

$product_id

(int) (Required) Product ID.


Source

File: admin/bsf-core/class-bsf-license-manager.php

		public function get_remote_license_status( $purchase_key, $product_id ) {

			$transient_key = $product_id . '_license_status';

			// Check if license status is cached.
			if ( false !== get_transient( $transient_key ) ) {
				return (bool) get_transient( $transient_key );
			}

			// Set default license to license status stored in the database.
			$license_status = $this->bsf_get_product_info( $product_id, 'status' );
			if ( 'registered' === $license_status ) {
				$license_status = '1';
			} else {
				$license_status = '0';
			}

			$path = bsf_get_api_url() . '?referer=license-status-' . $product_id;

			// Using Brainstorm API v2.
			$data = array(
				'action'       => 'bsf_license_status',
				'purchase_key' => $purchase_key,
				'site_url'     => get_site_url(),
			);

			$data     = apply_filters( 'bsf_license_status_args', $data );
			$response = wp_remote_post(
				$path,
				array(
					'body'    => $data,
					'timeout' => '10',
				)
			);

			// Try to make a second request to unsecure URL.
			if ( is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) !== 200 ) {
				$path     = bsf_get_api_url( true ) . '?referer=license-status-' . $product_id;
				$response = wp_remote_post(
					$path,
					array(
						'body'    => $data,
						'timeout' => '8',
					)
				);
			}

			if ( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) === 200 ) {
				$response_body = json_decode( wp_remote_retrieve_body( $response ), true );

				// Check if status received from API is true.
				if ( isset( $response_body['status'] ) && true === $response_body['status'] ) {
					$license_status = '1';
				} else {
					$license_status = '0';
				}
			}

			// Save license status in transient which will expire in 6 hours.
			set_transient( $transient_key, $license_status, 6 * HOUR_IN_SECONDS );

			return (bool) $license_status;
		}


User Contributed Notes

You must log in before being able to contribute a note or feedback.