laipower/wp-content/plugins/easy-digital-downloads/src/Licensing/Messages.php

261 lines
7.4 KiB
PHP

<?php
/**
* Messages for license key activation results.
*
* @since 3.1.1
* @package EDD
*/
namespace EDD\Licensing;
class Messages {
/**
* The array of license data.
*
* @var array
*/
private $license_data = array();
/**
* The license expiration as a timestamp, or false if no expiration.
*
* @var bool|int
*/
private $expiration = false;
/**
* The current timestamp.
*
* @var int
*/
private $now;
public function __construct( $license_data = array() ) {
$this->license_data = wp_parse_args(
$license_data,
array(
'status' => '',
'expires' => '',
'name' => '',
'license_key' => '',
'subscription' => false,
)
);
$this->now = current_time( 'timestamp' );
if ( ! empty( $this->license_data['expires'] ) && 'lifetime' !== $this->license_data['expires'] ) {
if ( ! is_numeric( $this->license_data['expires'] ) ) {
$this->expiration = strtotime( $this->license_data['expires'], $this->now );
} else {
$this->expiration = $this->license_data['expires'];
}
}
}
/**
* Gets the appropriate licensing message from an array of license data.
*
* @since 3.1.1
* @return string
*/
public function get_message() {
$name = $this->license_data['name'] ?: __( 'license key', 'easy-digital-downloads' );
switch ( $this->license_data['status'] ) {
case 'expired':
$args = array(
'utm_medium' => 'license-notice',
'utm_content' => 'expired',
);
if ( ! empty( $this->license_data['license_key'] ) ) {
$args['license_key'] = $this->license_data['license_key'];
}
$url = edd_link_helper(
'https://easydigitaldownloads.com/checkout/',
$args
);
if ( $this->expiration ) {
$message = sprintf(
/* translators: 1. license expiration date; 2. opening link tag; 3. closing link tag. */
__( 'Your license key expired on %1$s. Please %2$srenew your license key%3$s.', 'easy-digital-downloads' ),
edd_date_i18n( $this->expiration ),
'<a href="' . $url . '" target="_blank">',
'</a>'
);
} else {
$message = sprintf(
/* translators: 1. opening link tag; 2. closing link tag. */
__( 'Your license key has expired. Please %1$srenew your license key%2$s.', 'easy-digital-downloads' ),
'<a href="' . $url . '" target="_blank">',
'</a>'
);
}
break;
case 'revoked':
case 'disabled':
$url = edd_link_helper(
'https://easydigitaldownloads.com/support/',
array(
'utm_medium' => 'license-notice',
'utm_content' => 'revoked',
)
);
$message = sprintf(
/* translators: 1. opening link tag; 2. closing link tag. */
__( 'Your license key has been disabled. Please %1$scontact support%2$s for more information.', 'easy-digital-downloads' ),
'<a href="' . $url . '" target="_blank">',
'</a>'
);
break;
case 'missing':
$url = edd_link_helper(
'https://easydigitaldownloads.com/your-account/',
array(
'utm_medium' => 'license-notice',
'utm_content' => 'missing',
)
);
$message = sprintf(
/* translators: 1. opening link tag; 2. closing link tag. */
__( 'Invalid license. Please %1$svisit your account page%2$s and verify it.', 'easy-digital-downloads' ),
'<a href="' . $url . '" target="_blank">',
'</a>'
);
break;
case 'site_inactive':
$url = edd_link_helper(
'https://easydigitaldownloads.com/your-account/',
array(
'utm_medium' => 'license-notice',
'utm_content' => 'inactive',
)
);
$message = sprintf(
/* translators: 1. the extension name; 2. opening link tag; 3. closing link tag. */
__( 'Your %1$s is not active for this URL. Please %2$svisit your account page%3$s to manage your license keys.', 'easy-digital-downloads' ),
esc_html( $name ),
'<a href="' . $url . '" target="_blank">',
'</a>'
);
break;
case 'invalid':
case 'invalid_item_id':
case 'item_name_mismatch':
case 'key_mismatch':
$message = sprintf(
/* translators: the extension name. */
__( 'This appears to be an invalid license key for %s.', 'easy-digital-downloads' ),
$name
);
break;
case 'no_activations_left':
$url = edd_link_helper(
'https://easydigitaldownloads.com/your-account/',
array(
'utm_medium' => 'license-notice',
'utm_content' => 'at-limit',
)
);
$message = sprintf(
/* translators: 1. opening link tag; 2 closing link tag. */
__( 'Your license key has reached its activation limit. %1$sView possible upgrades%2$s now.', 'easy-digital-downloads' ),
'<a href="' . $url . '">',
'</a>'
);
break;
case 'license_not_activable':
$message = __( 'The key you entered belongs to a bundle, please use the product specific license key.', 'easy-digital-downloads' );
break;
case 'deactivated':
$message = __( 'Your license key has been deactivated.', 'easy-digital-downloads' );
break;
case 'valid':
$message = $this->get_valid_message();
if ( $this->license_data['subscription'] && 'lifetime' !== $this->license_data['subscription'] ) {
$message .= $this->get_subscription_message();
}
break;
default:
$message = __( 'Unlicensed: currently not receiving updates.', 'easy-digital-downloads' );
break;
}
return $message;
}
/**
* Gets the message text for a valid license.
*
* @since 3.1.1
* @return string
*/
private function get_valid_message() {
if ( ! empty( $this->license_data['expires'] ) && 'lifetime' === $this->license_data['expires'] ) {
return __( 'License key never expires.', 'easy-digital-downloads' );
}
if ( ( $this->expiration > $this->now ) && ( $this->expiration - $this->now < ( DAY_IN_SECONDS * 30 ) ) ) {
return sprintf(
/* translators: the license expiration date. */
__( 'Your license key expires soon! It expires on %s.', 'easy-digital-downloads' ),
edd_date_i18n( $this->expiration )
);
}
return sprintf(
/* translators: the license expiration date. */
__( 'Your license key expires on %s.', 'easy-digital-downloads' ),
edd_date_i18n( $this->expiration )
);
}
/**
* Gets the message for a license's subscription.
*
* @since 3.1.1
* @return string
*/
private function get_subscription_message() {
if ( 'active' === $this->license_data['subscription'] ) {
return ' ' . __( 'Your license subscription is active and will automatically renew.', 'easy-digital-downloads' );
}
return ' ' . sprintf(
/* translators: the license subscription status. */
__( 'Your license subscription is %s and will not automatically renew.', 'easy-digital-downloads' ),
$this->get_subscription_status_label( $this->license_data['subscription'] )
);
}
/**
* Gets the subscription status label as a translatable string.
*
* @since 3.1.1
* @param string $status
* @return string
*/
private function get_subscription_status_label( $status ) {
$statii = array(
'pending' => __( 'pending', 'easy-digital-downloads' ),
'active' => __( 'active', 'easy-digital-downloads' ),
'cancelled' => __( 'cancelled', 'easy-digital-downloads' ),
'expired' => __( 'expired', 'easy-digital-downloads' ),
'trialling' => __( 'trialling', 'easy-digital-downloads' ),
'failing' => __( 'failing', 'easy-digital-downloads' ),
'completed' => __( 'completed', 'easy-digital-downloads' ),
);
return array_key_exists( $status, $statii ) ? $statii[ $status ] : $status;
}
}