324 lines
5.9 KiB
PHP
324 lines
5.9 KiB
PHP
<?php
|
|
|
|
namespace WP_Rocket\Engine\License\API;
|
|
|
|
class Pricing {
|
|
/**
|
|
* The pricing data object
|
|
*
|
|
* @var object
|
|
*/
|
|
private $pricing;
|
|
|
|
/**
|
|
* Instantiate the class
|
|
*
|
|
* @param object $pricing The pricing object.
|
|
*/
|
|
public function __construct( $pricing ) {
|
|
$this->pricing = $pricing;
|
|
}
|
|
|
|
/**
|
|
* Gets the single license pricing data
|
|
*
|
|
* @return null|object
|
|
*/
|
|
public function get_single_pricing() {
|
|
if (
|
|
! isset( $this->pricing->licenses->single )
|
|
||
|
|
! is_object( $this->pricing->licenses->single )
|
|
) {
|
|
return null;
|
|
}
|
|
|
|
return $this->pricing->licenses->single;
|
|
}
|
|
|
|
/**
|
|
* Gets the plus license pricing data
|
|
*
|
|
* @return null|object
|
|
*/
|
|
public function get_plus_pricing() {
|
|
if (
|
|
! isset( $this->pricing->licenses->plus )
|
|
||
|
|
! is_object( $this->pricing->licenses->plus )
|
|
) {
|
|
return null;
|
|
}
|
|
|
|
return $this->pricing->licenses->plus;
|
|
}
|
|
|
|
/**
|
|
* Gets the infinite license pricing data
|
|
*
|
|
* @return null|object
|
|
*/
|
|
public function get_infinite_pricing() {
|
|
if (
|
|
! isset( $this->pricing->licenses->infinite )
|
|
||
|
|
! is_object( $this->pricing->licenses->infinite )
|
|
) {
|
|
return null;
|
|
}
|
|
|
|
return $this->pricing->licenses->infinite;
|
|
}
|
|
|
|
/**
|
|
* Gets the license renewal pricing data
|
|
*
|
|
* @return null|object
|
|
*/
|
|
public function get_renewals_data() {
|
|
if (
|
|
! isset( $this->pricing->renewals )
|
|
||
|
|
! is_object( $this->pricing->renewals )
|
|
) {
|
|
return null;
|
|
}
|
|
|
|
return $this->pricing->renewals;
|
|
}
|
|
|
|
/**
|
|
* Gets the promotion data
|
|
*
|
|
* @return null|object
|
|
*/
|
|
public function get_promo_data() {
|
|
if (
|
|
! isset( $this->pricing->promo )
|
|
||
|
|
! is_object( $this->pricing->promo )
|
|
) {
|
|
return null;
|
|
}
|
|
|
|
return $this->pricing->promo;
|
|
}
|
|
|
|
/**
|
|
* Checks if a promotion is currently active
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function is_promo_active() {
|
|
$promo_data = $this->get_promo_data();
|
|
|
|
if ( is_null( $promo_data ) ) {
|
|
return false;
|
|
}
|
|
|
|
if ( ! isset( $promo_data->start_date, $promo_data->end_date ) ) {
|
|
return false;
|
|
}
|
|
|
|
$current_time = time();
|
|
|
|
return (
|
|
absint( $promo_data->start_date ) < $current_time
|
|
&&
|
|
absint( $promo_data->end_date ) > $current_time
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Gets promotion end date
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_promo_end() {
|
|
$promo = $this->get_promo_data();
|
|
|
|
if (
|
|
is_null( $promo )
|
|
||
|
|
! isset( $promo->end_date )
|
|
) {
|
|
return 0;
|
|
}
|
|
|
|
return absint( $promo->end_date );
|
|
}
|
|
|
|
/**
|
|
* Gets the regular upgrade price from single to plus
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_regular_single_to_plus_price() {
|
|
$plus_pricing = $this->get_plus_pricing();
|
|
|
|
if (
|
|
is_null( $plus_pricing )
|
|
||
|
|
! isset( $plus_pricing->prices->from_single->regular )
|
|
) {
|
|
return 0;
|
|
}
|
|
|
|
return $plus_pricing->prices->from_single->regular;
|
|
}
|
|
|
|
/**
|
|
* Gets the current upgrade price from single to plus
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_single_to_plus_price() {
|
|
$plus_pricing = $this->get_plus_pricing();
|
|
$regular = $this->get_regular_single_to_plus_price();
|
|
|
|
if (
|
|
is_null( $plus_pricing )
|
|
||
|
|
! isset( $plus_pricing->prices->from_single->sale )
|
|
) {
|
|
return $regular;
|
|
}
|
|
|
|
return $this->is_promo_active() ? $plus_pricing->prices->from_single->sale : $regular;
|
|
}
|
|
|
|
/**
|
|
* Gets the regular upgrade price from single to infinite
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_regular_single_to_infinite_price() {
|
|
$infinite_pricing = $this->get_infinite_pricing();
|
|
|
|
if (
|
|
is_null( $infinite_pricing )
|
|
||
|
|
! isset( $infinite_pricing->prices->from_single->regular )
|
|
) {
|
|
return 0;
|
|
}
|
|
|
|
return $infinite_pricing->prices->from_single->regular;
|
|
}
|
|
|
|
/**
|
|
* Gets the current upgrade price from single to plus
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_single_to_infinite_price() {
|
|
$infinite_pricing = $this->get_infinite_pricing();
|
|
$regular = $this->get_regular_single_to_infinite_price();
|
|
|
|
if (
|
|
is_null( $infinite_pricing )
|
|
||
|
|
! isset( $infinite_pricing->prices->from_single->sale )
|
|
) {
|
|
return $regular;
|
|
}
|
|
|
|
return $this->is_promo_active() ? $infinite_pricing->prices->from_single->sale : $regular;
|
|
}
|
|
|
|
/**
|
|
* Gets the regular upgrade price from plus to infinite
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_regular_plus_to_infinite_price() {
|
|
$infinite_pricing = $this->get_infinite_pricing();
|
|
|
|
if (
|
|
is_null( $infinite_pricing )
|
|
||
|
|
! isset( $infinite_pricing->prices->from_plus->regular )
|
|
) {
|
|
return 0;
|
|
}
|
|
|
|
return $infinite_pricing->prices->from_plus->regular;
|
|
}
|
|
|
|
/**
|
|
* Gets the current upgrade price from plus to infinite
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_plus_to_infinite_price() {
|
|
$infinite_pricing = $this->get_infinite_pricing();
|
|
$regular = $this->get_regular_plus_to_infinite_price();
|
|
|
|
if (
|
|
is_null( $infinite_pricing )
|
|
||
|
|
! isset( $infinite_pricing->prices->from_plus->sale )
|
|
) {
|
|
return $regular;
|
|
}
|
|
|
|
return $this->is_promo_active() ? $infinite_pricing->prices->from_plus->sale : $regular;
|
|
}
|
|
|
|
/**
|
|
* Gets the number of websites allowed for the single license
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_single_websites_count() {
|
|
$single_pricing = $this->get_single_pricing();
|
|
|
|
if (
|
|
is_null( $single_pricing )
|
|
||
|
|
! isset( $single_pricing->websites )
|
|
) {
|
|
return 0;
|
|
}
|
|
|
|
return (int) $single_pricing->websites;
|
|
}
|
|
|
|
/**
|
|
* Gets the number of websites allowed for the plus license
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_plus_websites_count() {
|
|
$plus_pricing = $this->get_plus_pricing();
|
|
|
|
if (
|
|
is_null( $plus_pricing )
|
|
||
|
|
! isset( $plus_pricing->websites )
|
|
) {
|
|
return 0;
|
|
}
|
|
|
|
return (int) $plus_pricing->websites;
|
|
}
|
|
|
|
/**
|
|
* Gets the number of websites allowed for the infinite license
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_infinite_websites_count() {
|
|
$infinite_pricing = $this->get_infinite_pricing();
|
|
|
|
if (
|
|
is_null( $infinite_pricing )
|
|
||
|
|
! isset( $infinite_pricing->websites )
|
|
) {
|
|
return 0;
|
|
}
|
|
|
|
return (int) $infinite_pricing->websites;
|
|
}
|
|
}
|