rebase from live enviornment
This commit is contained in:
@@ -0,0 +1,449 @@
|
||||
<?php
|
||||
/**
|
||||
* BSf Evato Activation Class file.
|
||||
*
|
||||
* @package bsf-core
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* BSF_Envato_Activate setup
|
||||
*
|
||||
* @since 1.0
|
||||
*/
|
||||
class BSF_Envato_Activate {
|
||||
|
||||
/**
|
||||
* Instance
|
||||
*
|
||||
* @var BSF_Envato_Activate
|
||||
*/
|
||||
private static $instance;
|
||||
|
||||
/**
|
||||
* Reference to the License manager class.
|
||||
*
|
||||
* @var BSF_License_Manager
|
||||
*/
|
||||
private $license_manager;
|
||||
|
||||
/**
|
||||
* Stores temporary response messsages from the API validations.
|
||||
*
|
||||
* @var array()
|
||||
*/
|
||||
private $message_box;
|
||||
|
||||
/**
|
||||
* Initiator.
|
||||
*/
|
||||
public static function instance() {
|
||||
|
||||
if ( ! isset( self::$instance ) ) {
|
||||
self::$instance = new BSF_Envato_Activate();
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor function that initializes required actions and hooks
|
||||
*
|
||||
* @since 1.0
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->license_manager = new BSF_License_Manager();
|
||||
|
||||
$action = isset( $_GET['license_action'] ) ? esc_attr( $_GET['license_action'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||
|
||||
if ( 'activate_license' === $action ) {
|
||||
$this->process_envato_activation();
|
||||
}
|
||||
|
||||
add_filter( 'update_footer', array( $this, 'alternate_method_link' ), 20 );
|
||||
add_action( 'bsf_inlne_license_envato_after_form', array( $this, 'inline_alternate_method_link' ), 20, 2 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Envato Register.
|
||||
*
|
||||
* @param array $args Arguments.
|
||||
*/
|
||||
public function envato_register( $args ) {
|
||||
|
||||
// Check if alternate method is to be used.
|
||||
$method = ( isset( $_GET['activation_method'] ) && isset( $_GET['bsf_activation_nonce'] ) && wp_verify_nonce( $_GET['bsf_activation_nonce'], 'bsf_activation_nonce' ) ) ? esc_attr( $_GET['activation_method'] ) : 'oauth';
|
||||
|
||||
$html = '';
|
||||
$product_id = isset( $args['product_id'] ) ? $args['product_id'] : '';
|
||||
$is_active = $this->license_manager->bsf_is_active_license( $product_id );
|
||||
$product_name = $this->license_manager->bsf_get_product_info( $product_id, 'name' );
|
||||
$purchase_url = $this->license_manager->bsf_get_product_info( $product_id, 'purchase_url' );
|
||||
|
||||
$bundled = BSF_Update_Manager::bsf_is_product_bundled( $product_id );
|
||||
|
||||
if ( ! empty( $bundled ) ) {
|
||||
$parent_id = $bundled[0];
|
||||
$is_active = $this->license_manager->bsf_is_active_license( $parent_id );
|
||||
$parent_name = brainstrom_product_name( $parent_id );
|
||||
$registration_page = bsf_registration_page_url( '', $parent_id );
|
||||
|
||||
$html .= '<div class="bundled-product-license-registration">';
|
||||
$html .= '<span>';
|
||||
|
||||
if ( $is_active ) {
|
||||
|
||||
$html .= '<h3>License Active!</h3>';
|
||||
|
||||
$html .= '<p>' . sprintf(
|
||||
'Your license is activated, you will receive updates for <i>%s</i> when they are available.',
|
||||
$product_name
|
||||
) . '</p>';
|
||||
} else {
|
||||
|
||||
$html .= '<h3>Updates Unavailable!</h3>';
|
||||
$html .= '<p>' . sprintf(
|
||||
'This plugin is came bundled with the <i>%1$s</i>. For receiving updates, you need to activate license of <i>%2$s</i> <a href="%3$s">here</a>.',
|
||||
$parent_name,
|
||||
$parent_name,
|
||||
$registration_page
|
||||
) . '</p>';
|
||||
}
|
||||
|
||||
$html .= '</span>';
|
||||
$html .= '</div>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
if ( 'license-key' === $method ) {
|
||||
$html .= bsf_license_activation_form( $args );
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
// Licence activation button.
|
||||
$form_action = ( isset( $args['form_action'] ) && ! is_null( $args['form_action'] ) ) ? $args['form_action'] : '';
|
||||
$form_class = ( isset( $args['form_class'] ) && ! is_null( $args['form_class'] ) ) ? $args['form_class'] : "bsf-license-form-{$product_id}";
|
||||
$submit_button_class = ( isset( $args['submit_button_class'] ) && ! is_null( $args['submit_button_class'] ) ) ? $args['submit_button_class'] : '';
|
||||
$license_form_heading_class = ( isset( $args['bsf_license_form_heading_class'] ) && ! is_null( $args['bsf_license_form_heading_class'] ) ) ? $args['bsf_license_form_heading_class'] : '';
|
||||
$license_active_class = ( isset( $args['bsf_license_active_class'] ) && ! is_null( $args['bsf_license_active_class'] ) ) ? $args['bsf_license_active_class'] : '';
|
||||
$license_not_activate_message = ( isset( $args['bsf_license_not_activate_message'] ) && ! is_null( $args['bsf_license_not_activate_message'] ) ) ? $args['bsf_license_not_activate_message'] : '';
|
||||
|
||||
$size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
|
||||
$button_text_activate = ( isset( $args['button_text_activate'] ) && ! is_null( $args['button_text_activate'] ) ) ? __( 'Sign Up & Activate', 'bsf' ) : __( 'Sign Up & Activate', 'bsf' );
|
||||
$button_text_deactivate = ( isset( $args['button_text_deactivate'] ) && ! is_null( $args['button_text_deactivate'] ) ) ? $args['button_text_deactivate'] : __( 'Deactivate License', 'bsf' );
|
||||
$placeholder = ( isset( $args['placeholder'] ) && ! is_null( $args['placeholder'] ) ) ? $args['placeholder'] : 'Enter your license key..';
|
||||
$popup_license_form = ( isset( $args['popup_license_form'] ) ) ? $args['popup_license_form'] : false;
|
||||
$bsf_license_allow_email = ( isset( $args['bsf_license_allow_email'] ) && ! is_null( $args['bsf_license_allow_email'] ) ) ? $args['bsf_license_allow_email'] : true;
|
||||
|
||||
if ( true === $bsf_license_allow_email ) {
|
||||
$form_class .= ' license-form-allow-email ';
|
||||
|
||||
if ( ! $is_active ) {
|
||||
$submit_button_class .= ' button-primary button-hero bsf-envato-form-activation ';
|
||||
}
|
||||
}
|
||||
|
||||
if ( true !== $is_active ) {
|
||||
$form_action = bsf_get_api_site() . 'envato-validation-callback/?wp-envato-validate';
|
||||
} else {
|
||||
$form_action = bsf_registration_page_url( '', $product_id );
|
||||
}
|
||||
|
||||
$html .= '<div class="envato-license-registration">';
|
||||
|
||||
$html .= '<form method="post" class="' . $form_class . '" action="' . $form_action . '">';
|
||||
|
||||
$html .= wp_nonce_field( 'bsf_license_activation_deactivation_nonce', 'bsf_graupi_nonce', true, false );
|
||||
|
||||
if ( $this->get_message( 'message' ) !== '' ) {
|
||||
$html .= '<span class="bsf-license-message license-' . $this->get_message( 'status' ) . '">';
|
||||
$html .= $this->get_message( 'message' );
|
||||
$html .= '</span>';
|
||||
}
|
||||
|
||||
if ( $is_active ) {
|
||||
|
||||
$envato_active_oauth_title = apply_filters( "envato_active_oauth_title_{$product_id}", 'Updates & Support Registration - <span class="active">Active!</span>' );
|
||||
$envato_active_oauth_subtitle = '<span class="active">' . sprintf(
|
||||
'Your license is active.',
|
||||
$product_name
|
||||
) . '</span>';
|
||||
|
||||
$envato_active_oauth_subtitle = apply_filters( "envato_active_oauth_subtitle_{$product_id}", $envato_active_oauth_subtitle );
|
||||
|
||||
if ( $popup_license_form ) {
|
||||
$html .= '<div class="bsf-wrap-title">';
|
||||
$html .= '<h3 class="envato-oauth-heading">' . $product_name . '</h2>';
|
||||
$html .= '<p class="envato-oauth-subheading">' . $envato_active_oauth_subtitle . '</p>';
|
||||
$html .= '</div>';
|
||||
|
||||
} else {
|
||||
$html .= '<div class="bsf-wrap-title">';
|
||||
$html .= '<h3 class="envato-oauth-heading">' . $envato_active_oauth_title . '</h2>';
|
||||
$html .= '<p class="envato-oauth-subheading">' . $envato_active_oauth_subtitle . '</p>';
|
||||
$html .= '</div>';
|
||||
}
|
||||
|
||||
$html .= '<input type="hidden" readonly class="' . $license_active_class . ' ' . $size . '-text" id="bsf_license_manager[license_key]" name="bsf_license_manager[license_key]" value="License Validated"/>';
|
||||
$html .= '<input type="hidden" class="' . $size . '-text" id="bsf_license_manager[product_id]" name="bsf_license_manager[product_id]" value="' . esc_attr( stripslashes( $product_id ) ) . '"/>';
|
||||
|
||||
$html .= '<input type="submit" class="button ' . $submit_button_class . '" name="bsf_deactivate_license" value="' . esc_attr( $button_text_deactivate ) . '"/>';
|
||||
|
||||
} else {
|
||||
|
||||
$envato_not_active_oauth_title = apply_filters( "envato_not_active_oauth_title_{$product_id}", __( 'Updates & Support Registration - <span class="not-active">Not Active!</span>', 'bsf' ) );
|
||||
$envato_not_active_oauth_subtitle = apply_filters( "envato_not_active_oauth_subtitle_{$product_id}", __( 'Click on the button below to activate your license and subscribe to our newsletter.', 'bsf' ) );
|
||||
|
||||
if ( $popup_license_form ) {
|
||||
$html .= '<div class="bsf-wrap-title">';
|
||||
$html .= '<h3 class="envato-oauth-heading">' . $product_name . '</h2>';
|
||||
$html .= '<p class="envato-oauth-subheading">' . $envato_not_active_oauth_subtitle . '</p>';
|
||||
$html .= '</div>';
|
||||
} else {
|
||||
$html .= '<div class="bsf-wrap-title">';
|
||||
$html .= '<h3 class="envato-oauth-heading">' . $envato_not_active_oauth_title . '</h2>';
|
||||
$html .= '<p class="envato-oauth-subheading">' . $envato_not_active_oauth_subtitle . '</p>';
|
||||
$html .= '</div>';
|
||||
}
|
||||
|
||||
$html .= '<input type="hidden" readonly class="' . $license_active_class . ' ' . $size . '-text" id="bsf_license_manager[license_key]" name="url" value="' . get_site_url() . '"/>';
|
||||
$html .= '<input type="hidden" readonly class="' . $license_active_class . ' ' . $size . '-text" id="bsf_license_manager[license_key]" name="redirect" value="' . $this->get_redirect_url( $product_id ) . '"/>';
|
||||
$html .= '<input type="hidden" readonly class="' . $license_active_class . ' ' . $size . '-text" id="bsf_license_manager[license_key]" name="product_id" value="' . $product_id . '"/>';
|
||||
|
||||
$html .= '<input id="bsf-license-privacy-consent" name="bsf_license_manager[privacy_consent]" type="hidden" value="true" />';
|
||||
$html .= '<input id="bsf-license-terms-conditions-consent" name="bsf_license_manager[terms_conditions_consent]" type="hidden" value="true" />';
|
||||
|
||||
$html .= '<div class="submit-button-wrap">';
|
||||
$html .= '<input type="button" class="button ' . $submit_button_class . '" name="bsf_activate_license" value="' . esc_attr( $button_text_activate ) . '"/>';
|
||||
$html .= "<p class='purchase-license'><a target='_blank' href='$purchase_url'>Purchase License »</a></p>";
|
||||
$html .= '</div>';
|
||||
}
|
||||
|
||||
$html .= '</form>';
|
||||
|
||||
$html = apply_filters( 'bsf_inlne_license_envato_after_form', $html, $product_id );
|
||||
|
||||
$html .= '</div> <!-- envato-license-registration -->';
|
||||
|
||||
if ( isset( $_GET['debug'] ) ) {
|
||||
$html .= get_bsf_systeminfo();
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Envato activation URL.
|
||||
*
|
||||
* @param array $form_data Form data.
|
||||
* @return $envato_activation_url.
|
||||
*/
|
||||
public function envato_activation_url( $form_data ) {
|
||||
$product_id = isset( $form_data['product_id'] ) ? esc_attr( $form_data['product_id'] ) : '';
|
||||
|
||||
$form_data['token'] = sha1( $this->create_token( $product_id ) );
|
||||
$url = bsf_get_api_site() . 'envato-validation-callback/?wp-envato-validate';
|
||||
|
||||
$envato_activation_url = add_query_arg(
|
||||
$form_data,
|
||||
$url
|
||||
);
|
||||
|
||||
return $envato_activation_url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get redirect URL.
|
||||
*
|
||||
* @param int $product_id Product ID.
|
||||
* @return $current_url.
|
||||
*/
|
||||
protected function get_redirect_url( $product_id = '' ) {
|
||||
|
||||
if ( is_ssl() ) {
|
||||
$current_url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
} else {
|
||||
$current_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
}
|
||||
|
||||
$current_url = esc_url( remove_query_arg( array( 'license_action', 'token', 'product_id', 'purchase_key', 'success', 'status', 'message' ), $current_url ) );
|
||||
|
||||
if ( '' !== $product_id ) {
|
||||
$current_url = add_query_arg(
|
||||
array(
|
||||
'bsf-inline-license-form' => $product_id,
|
||||
),
|
||||
$current_url
|
||||
);
|
||||
}
|
||||
|
||||
return $current_url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create Token.
|
||||
*
|
||||
* @param int $product_id Product ID.
|
||||
* @return $token.
|
||||
*/
|
||||
protected function create_token( $product_id ) {
|
||||
$token = $product_id . '|' . current_time( 'timestamp' ) . '|' . bsf_generate_rand_token();
|
||||
update_site_option( "bsf_envato_token_$product_id", $token );
|
||||
|
||||
return $token;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Validate Token.
|
||||
*
|
||||
* @param string $token Token.
|
||||
* @param int $product_id Product ID.
|
||||
* @return bool.
|
||||
*/
|
||||
protected function validate_token( $token, $product_id ) {
|
||||
|
||||
$stored_token = get_site_option( "bsf_envato_token_$product_id", '' );
|
||||
|
||||
if ( sha1( $stored_token ) === $token ) {
|
||||
$token_atts = explode( '|', $stored_token );
|
||||
|
||||
$stored_id = $token_atts[0];
|
||||
|
||||
if ( $stored_id !== $product_id ) {
|
||||
// Token is invalid.
|
||||
return false;
|
||||
}
|
||||
|
||||
$timestamp = (int) $token_atts[1];
|
||||
$valid_ultil = $timestamp + 900;
|
||||
|
||||
if ( current_time( 'timestamp' ) > $valid_ultil ) {
|
||||
// Timestamp has expired.
|
||||
return false;
|
||||
}
|
||||
|
||||
// If above conditions did not meet, the token is valid.
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Process envato activation.
|
||||
*/
|
||||
protected function process_envato_activation() {
|
||||
$token = isset( $_GET['token'] ) ? esc_attr( $_GET['token'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||
$product_id = isset( $_GET['product_id'] ) ? esc_attr( $_GET['product_id'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||
|
||||
if ( $this->validate_token( $token, $product_id ) ) {
|
||||
$args = array();
|
||||
$args['purchase_key'] = isset( $_GET['purchase_key'] ) ? esc_attr( $_GET['purchase_key'] ) : '';// phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||
$args['status'] = isset( $_GET['status'] ) ? esc_attr( $_GET['status'] ) : '';// phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||
$this->license_manager->bsf_update_product_info( $product_id, $args );
|
||||
|
||||
$this->set_message(
|
||||
array(
|
||||
'status' => 'success',
|
||||
'message' => 'License successfully activated!',
|
||||
)
|
||||
);
|
||||
|
||||
} else {
|
||||
|
||||
$this->set_message(
|
||||
array(
|
||||
'status' => 'error',
|
||||
'message' => 'The token is invalid or is expired, please try again.',
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set message.
|
||||
*
|
||||
* @param array $message Message.
|
||||
*/
|
||||
protected function set_message( $message = array() ) {
|
||||
$this->message_box = $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get message.
|
||||
*
|
||||
* @param string $key key.
|
||||
* @return $mesage
|
||||
*/
|
||||
protected function get_message( $key ) {
|
||||
$message = $this->message_box;
|
||||
|
||||
return isset( $message[ $key ] ) ? $message[ $key ] : '';
|
||||
}
|
||||
/**
|
||||
* Inline alternate method link.
|
||||
*
|
||||
* @param string $html HTML.
|
||||
* @param int $bsf_product_id Product ID.
|
||||
* @return $html.
|
||||
*/
|
||||
public function inline_alternate_method_link( $html, $bsf_product_id ) {
|
||||
$privacy_policy_link = $this->license_manager->bsf_get_product_info( $bsf_product_id, 'privacy_policy' );
|
||||
$terms_conditions_link = $this->license_manager->bsf_get_product_info( $bsf_product_id, 'terms_conditions' );
|
||||
|
||||
if ( isset( $privacy_policy_link ) ) {
|
||||
$html .= sprintf(
|
||||
'<a class="license-form-external-links" target="_blank" href="%s">Privacy Policy</a> | ',
|
||||
$privacy_policy_link
|
||||
);
|
||||
}
|
||||
|
||||
if ( isset( $terms_conditions_link ) ) {
|
||||
$html .= sprintf(
|
||||
'<a class="license-form-external-links" target="_blank" href="%s">Terms & Conditions</a>',
|
||||
$terms_conditions_link
|
||||
);
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
/**
|
||||
* ALternate method link.
|
||||
*
|
||||
* @param string $content Content.
|
||||
* @return $content.
|
||||
*/
|
||||
public function alternate_method_link( $content ) {
|
||||
|
||||
$bsf_activation_nonce = wp_create_nonce( 'bsf_activation_nonce' );
|
||||
$content = sprintf(
|
||||
'<a href="%s">Activate license using purchase key</a>',
|
||||
add_query_arg(
|
||||
array(
|
||||
'activation_method' => 'license-key',
|
||||
'bsf_activation_nonce' => $bsf_activation_nonce,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* BSF envato register.
|
||||
*
|
||||
* @param string $args Arguments..
|
||||
* @return envato_register().
|
||||
*/
|
||||
function bsf_envato_register( $args ) {
|
||||
$bsf_envato_activate = BSF_Envato_Activate::instance();
|
||||
|
||||
return $bsf_envato_activate->envato_register( $args );
|
||||
}
|
||||
Reference in New Issue
Block a user