248 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			248 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
	/**
 | 
						|
	 * @package     Freemius
 | 
						|
	 * @copyright   Copyright (c) 2015, Freemius, Inc.
 | 
						|
	 * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
 | 
						|
	 * @since       1.2.0
 | 
						|
	 */
 | 
						|
 | 
						|
	if ( ! defined( 'ABSPATH' ) ) {
 | 
						|
		exit;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @var array $VARS
 | 
						|
	 * @var Freemius $fs
 | 
						|
	 */
 | 
						|
	$fs   = freemius( $VARS['id'] );
 | 
						|
 | 
						|
	$slug = $fs->get_slug();
 | 
						|
 | 
						|
	$send_button_text          = fs_text_inline( 'Send License Key', 'send-license-key', $slug );
 | 
						|
	$cancel_button_text        = fs_text_inline( 'Cancel', 'cancel', $slug );
 | 
						|
	$email_address_placeholder = fs_esc_attr_inline( 'Email address', 'email-address', $slug );
 | 
						|
	$other_text                = fs_text_inline( 'Other', 'other', $slug );
 | 
						|
 | 
						|
	$is_freemium = $fs->is_freemium();
 | 
						|
 | 
						|
	$send_button_text_html = esc_html($send_button_text);
 | 
						|
 | 
						|
	$button_html = <<< HTML
 | 
						|
<div class="button-container">
 | 
						|
    <a href="#" class="button button-primary button-send-license-key" tabindex="2">{$send_button_text_html}</a>
 | 
						|
</div>
 | 
						|
HTML;
 | 
						|
 | 
						|
	if ( $is_freemium ) {
 | 
						|
		$current_user          = Freemius::_get_current_wp_user();
 | 
						|
		$email                 = $current_user->user_email;
 | 
						|
		$esc_email             = esc_attr( $email );
 | 
						|
		$form_html      = <<< HTML
 | 
						|
<div class="email-address-container">
 | 
						|
    <label><input name="email-address" type="radio" checked="checked" tabindex="1" value="{$esc_email}"> {$email}</label>
 | 
						|
    <label><input name="email-address" type="radio" tabindex="1" value="other">{$other_text}: <input class="email-address" type="text" placeholder="{$email_address_placeholder}"></label>
 | 
						|
</div>
 | 
						|
{$button_html}
 | 
						|
HTML;
 | 
						|
	} else {
 | 
						|
		$email = '';
 | 
						|
		$form_html      = <<< HTML
 | 
						|
{$button_html}
 | 
						|
<div class="email-address-container">
 | 
						|
    <input class="email-address" type="text" placeholder="{$email_address_placeholder}" tabindex="1">
 | 
						|
</div>
 | 
						|
HTML;
 | 
						|
	}
 | 
						|
 | 
						|
	$message_above_input_field = fs_esc_html_inline( "Enter the email address you've used for the upgrade below and we will resend you the license key.", 'ask-for-upgrade-email-address', $slug );
 | 
						|
	$modal_content_html = <<< HTML
 | 
						|
    <div class="notice notice-error inline license-resend-message"><p></p></div>
 | 
						|
    <p>{$message_above_input_field}</p>
 | 
						|
    <div class="input-container">
 | 
						|
        {$form_html}
 | 
						|
    </div>
 | 
						|
HTML;
 | 
						|
 | 
						|
	fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' );
 | 
						|
?>
 | 
						|
<script type="text/javascript">
 | 
						|
	(function ($) {
 | 
						|
		$(document).ready(function () {
 | 
						|
			var contentHtml      = <?php echo json_encode( $modal_content_html ); ?>,
 | 
						|
			    modalHtml        =
 | 
						|
				    '<div class="fs-modal fs-modal-license-key-resend <?php echo $is_freemium ? 'fs-freemium' : 'fs-premium' ?>">'
 | 
						|
				    + ' <div class="fs-modal-dialog">'
 | 
						|
				    + '     <div class="fs-modal-header">'
 | 
						|
				    + '         <h4><?php echo esc_js( $send_button_text ) ?></h4>'
 | 
						|
				    + '         <a href="#!" class="fs-close" tabindex="3" title="Close"><i class="dashicons dashicons-no" title="<?php echo esc_js( fs_text_x_inline( 'Dismiss', 'as close a window', 'dismiss', $slug ) ) ?>"></i></a>'
 | 
						|
				    + '     </div>'
 | 
						|
				    + '     <div class="fs-modal-body">'
 | 
						|
				    + '         <div class="fs-modal-panel active">' + contentHtml + '</div>'
 | 
						|
				    + '     </div>'
 | 
						|
				    + ' </div>'
 | 
						|
				    + '</div>',
 | 
						|
			    $modal           = $(modalHtml),
 | 
						|
			    $sendButton      = $modal.find('.button-send-license-key'),
 | 
						|
			    $emailInput      = $modal.find('input.email-address'),
 | 
						|
			    $feedbackMessage = $modal.find('.license-resend-message'),
 | 
						|
			    isFreemium       = <?php echo json_encode( $is_freemium ) ?>,
 | 
						|
			    userEmail        = <?php echo json_encode( $email ) ?>,
 | 
						|
			    moduleID         = '<?php echo $fs->get_id() ?>',
 | 
						|
			    isChild          = false;
 | 
						|
 | 
						|
 | 
						|
			$modal.appendTo($('body'));
 | 
						|
 | 
						|
			function registerEventHandlers() {
 | 
						|
				$('a.show-license-resend-modal-<?php echo $fs->get_unique_affix() ?>').click(function (evt) {
 | 
						|
					evt.preventDefault();
 | 
						|
 | 
						|
					showModal();
 | 
						|
				});
 | 
						|
 | 
						|
				if (isFreemium) {
 | 
						|
					$modal.on('change', 'input[type=radio][name=email-address]', function () {
 | 
						|
						updateButtonState();
 | 
						|
					});
 | 
						|
 | 
						|
					$modal.on('focus', 'input.email-address', function () {
 | 
						|
						// Check custom email radio button on email input focus.
 | 
						|
						$($modal.find('input[type=radio]')[1]).prop('checked', true);
 | 
						|
 | 
						|
						updateButtonState();
 | 
						|
					});
 | 
						|
				}
 | 
						|
 | 
						|
				$modal.on('input propertychange', 'input.email-address', function () {
 | 
						|
					updateButtonState();
 | 
						|
				});
 | 
						|
 | 
						|
				$modal.on('blur', 'input.email-address', function () {
 | 
						|
					updateButtonState();
 | 
						|
				});
 | 
						|
 | 
						|
				$modal.on('click', '.fs-close', function (){
 | 
						|
					closeModal();
 | 
						|
					return false;
 | 
						|
				});
 | 
						|
 | 
						|
				$modal.on('click', '.button', function (evt) {
 | 
						|
					evt.preventDefault();
 | 
						|
 | 
						|
					if ($(this).hasClass('disabled')) {
 | 
						|
						return;
 | 
						|
					}
 | 
						|
 | 
						|
					var email = getEmail();
 | 
						|
 | 
						|
					disableButton();
 | 
						|
 | 
						|
					if (!(-1 < email.indexOf('@'))) {
 | 
						|
						return;
 | 
						|
					}
 | 
						|
 | 
						|
					$.ajax({
 | 
						|
						url       : ajaxurl,
 | 
						|
						method    : 'POST',
 | 
						|
						data      : {
 | 
						|
							action     : '<?php echo $fs->get_ajax_action( 'resend_license_key' ) ?>',
 | 
						|
							security   : '<?php echo $fs->get_ajax_security( 'resend_license_key' ) ?>',
 | 
						|
							module_id  : moduleID,
 | 
						|
							email      : email
 | 
						|
						},
 | 
						|
						beforeSend: function () {
 | 
						|
							$sendButton.text('<?php fs_esc_js_echo_inline( 'Sending license key', 'sending-license-key', $slug ) ?>...');
 | 
						|
						},
 | 
						|
						success   : function (result) {
 | 
						|
							var resultObj = $.parseJSON(result);
 | 
						|
							if (resultObj.success) {
 | 
						|
								closeModal();
 | 
						|
							} else {
 | 
						|
								showError(resultObj.error);
 | 
						|
								resetButton();
 | 
						|
							}
 | 
						|
						}
 | 
						|
					});
 | 
						|
				});
 | 
						|
			}
 | 
						|
 | 
						|
			registerEventHandlers();
 | 
						|
 | 
						|
			resetButton();
 | 
						|
 | 
						|
			function showModal() {
 | 
						|
				resetModal();
 | 
						|
 | 
						|
				// Display the dialog box.
 | 
						|
				$modal.addClass('active');
 | 
						|
 | 
						|
				if (!isFreemium)
 | 
						|
					$emailInput.focus();
 | 
						|
 | 
						|
				var $body = $('body');
 | 
						|
 | 
						|
				isChild = $body.hasClass('has-fs-modal');
 | 
						|
				if (isChild) {
 | 
						|
					return;
 | 
						|
				}
 | 
						|
 | 
						|
				$body.addClass('has-fs-modal');
 | 
						|
			}
 | 
						|
 | 
						|
			function closeModal() {
 | 
						|
				$modal.removeClass('active');
 | 
						|
 | 
						|
				// If child modal, do not remove the "has-fs-modal" class of the <body> element to keep its scrollbars hidden.
 | 
						|
				if (isChild) {
 | 
						|
					return;
 | 
						|
				}
 | 
						|
 | 
						|
				$('body').removeClass('has-fs-modal');
 | 
						|
			}
 | 
						|
 | 
						|
			function resetButton() {
 | 
						|
				updateButtonState();
 | 
						|
				$sendButton.text(<?php echo json_encode($send_button_text) ?>);
 | 
						|
			}
 | 
						|
 | 
						|
			function resetModal() {
 | 
						|
				hideError();
 | 
						|
				resetButton();
 | 
						|
				$emailInput.val('');
 | 
						|
			}
 | 
						|
 | 
						|
			function getEmail() {
 | 
						|
				var email = $emailInput.val().trim();
 | 
						|
 | 
						|
				if (isFreemium) {
 | 
						|
					if ('other' != $modal.find('input[type=radio][name=email-address]:checked').val()) {
 | 
						|
						email = userEmail;
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
				return email;
 | 
						|
			}
 | 
						|
 | 
						|
			function updateButtonState() {
 | 
						|
				/**
 | 
						|
				 * If email address is not empty, enable the send license key button.
 | 
						|
				 */
 | 
						|
				$sendButton.toggleClass('disabled', !( -1 < getEmail().indexOf('@') ));
 | 
						|
			}
 | 
						|
 | 
						|
			function disableButton() {
 | 
						|
				$sendButton.addClass('disabled');
 | 
						|
			}
 | 
						|
 | 
						|
			function hideError() {
 | 
						|
				$feedbackMessage.hide();
 | 
						|
			}
 | 
						|
 | 
						|
			function showError(msg) {
 | 
						|
				$feedbackMessage.find(' > p').html(msg);
 | 
						|
				$feedbackMessage.show();
 | 
						|
			}
 | 
						|
		});
 | 
						|
	})(jQuery);
 | 
						|
</script>
 |