Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/includes/class-otgs-installer-subscription.php
2023-09-12 21:41:04 +02:00

156 lines
3.7 KiB
PHP

<?php
class OTGS_Installer_Subscription {
const SUBSCRIPTION_STATUS_INACTIVE = 0;
const SUBSCRIPTION_STATUS_ACTIVE = 1;
const SUBSCRIPTION_STATUS_EXPIRED = 2;
const SUBSCRIPTION_STATUS_INACTIVE_UPGRADED = 3;
const SUBSCRIPTION_STATUS_ACTIVE_NO_EXPIRATION = 4;
const SITE_KEY_TYPE_PRODUCTION = 0;
const SITE_KEY_TYPE_DEVELOPMENT = 1;
const SUBSCRIPTION_STATUS_TEXT_EXPIRED = 'expired';
const SUBSCRIPTION_STATUS_TEXT_VALID = 'valid';
const SUBSCRIPTION_STATUS_TEXT_REFUNDED = 'refunded';
const SUBSCRIPTION_STATUS_TEXT_MISSING = 'missing';
private $status;
private $expires;
private $site_key;
private $site_key_type;
private $site_url;
private $type;
private $registered_by;
private $data;
private $notes;
/**
* WPML_Installer_Subscription constructor.
*
* @param array|null $subscription
*/
public function __construct( $subscription = array() ) {
if ( $subscription ) {
if ( isset( $subscription['data'] ) ) {
$this->data = $subscription['data'];
}
if ( isset( $subscription['data']->status ) ) {
$this->status = (int) $subscription['data']->status;
}
if ( isset( $subscription['data']->expires ) ) {
$this->expires = $subscription['data']->expires;
}
if ( isset( $subscription['data']->notes ) ) {
$this->notes = $subscription['data']->notes;
}
if ( isset( $subscription['key'] ) ) {
$this->site_key = $subscription['key'];
}
if ( isset( $subscription['site_url'] ) ) {
$this->site_url = $subscription['site_url'];
}
if ( isset( $subscription['registered_by'] ) ) {
$this->registered_by = $subscription['registered_by'];
}
if ( isset( $subscription['data']->subscription_type ) ) {
$this->type = $subscription['data']->subscription_type;
}
$this->site_key_type = isset($subscription['key_type'])
? $subscription['key_type'] : self::SITE_KEY_TYPE_PRODUCTION;
}
}
public function get_subscription_status_text() {
if ( $this->is_expired() ) {
return self::SUBSCRIPTION_STATUS_TEXT_EXPIRED;
}
if ( $this->is_valid() ) {
return self::SUBSCRIPTION_STATUS_TEXT_VALID;
}
if ( $this->is_refunded() ) {
return self::SUBSCRIPTION_STATUS_TEXT_REFUNDED;
}
return self::SUBSCRIPTION_STATUS_TEXT_MISSING;
}
/**
* @param int $expiredForPeriod
* @return bool
*/
private function is_expired( $expiredForPeriod = 0 ) {
return ! $this->is_lifetime()
&& (
self::SUBSCRIPTION_STATUS_EXPIRED === $this->get_status()
|| ( $this->get_expiration() && strtotime( $this->get_expiration() ) <= time() - $expiredForPeriod )
);
}
/**
* @return bool
*/
private function is_lifetime() {
return $this->get_status() === self::SUBSCRIPTION_STATUS_ACTIVE_NO_EXPIRATION;
}
private function get_status() {
return $this->status;
}
private function get_expiration() {
return $this->expires;
}
public function get_site_key() {
return $this->site_key;
}
public function get_site_url() {
return $this->site_url;
}
public function get_type() {
return $this->type;
}
public function get_site_key_type() {
return $this->site_key_type;
}
public function get_registered_by() {
return $this->registered_by;
}
public function get_data() {
return $this->data;
}
/**
* @param int $expiredForPeriod
* @return bool
*/
public function is_valid( $expiredForPeriod = 0 ) {
return ( $this->is_lifetime()
|| ( $this->get_status() === self::SUBSCRIPTION_STATUS_ACTIVE && ! $this->is_expired( $expiredForPeriod ) ) );
}
public function is_refunded() {
return ! $this->is_lifetime() &&
$this->get_status() === self::SUBSCRIPTION_STATUS_INACTIVE &&
$this->notes === 'Payment refunded to user';
}
}