add wp-rocket
This commit is contained in:
324
wp-content/plugins/wp-rocket/inc/Engine/License/API/Pricing.php
Normal file
324
wp-content/plugins/wp-rocket/inc/Engine/License/API/Pricing.php
Normal file
@@ -0,0 +1,324 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace WP_Rocket\Engine\License\API;
|
||||
|
||||
class PricingClient {
|
||||
const PRICING_ENDPOINT = 'https://wp-rocket.me/stat/1.0/wp-rocket/pricing.php';
|
||||
|
||||
/**
|
||||
* Gets pricing data from cache if it exists, else gets it from the pricing endpoint
|
||||
*
|
||||
* Cache the pricing data for 6 hours in a transient
|
||||
*
|
||||
* @since 3.7.3
|
||||
*
|
||||
* @return bool|object
|
||||
*/
|
||||
public function get_pricing_data() {
|
||||
$cached_data = get_transient( 'wp_rocket_pricing' );
|
||||
|
||||
if ( false !== $cached_data ) {
|
||||
return $cached_data;
|
||||
}
|
||||
|
||||
$data = $this->get_raw_pricing_data();
|
||||
|
||||
if ( false === $data ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
set_transient( 'wp_rocket_pricing', $data, 6 * HOUR_IN_SECONDS );
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the pricing data from the pricing endpoint
|
||||
*
|
||||
* @since 3.7.3
|
||||
*
|
||||
* @return bool|object
|
||||
*/
|
||||
private function get_raw_pricing_data() {
|
||||
$response = wp_safe_remote_get(
|
||||
self::PRICING_ENDPOINT
|
||||
);
|
||||
|
||||
if ( 200 !== wp_remote_retrieve_response_code( $response ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = wp_remote_retrieve_body( $response );
|
||||
|
||||
if ( empty( $body ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return json_decode( $body );
|
||||
}
|
||||
}
|
121
wp-content/plugins/wp-rocket/inc/Engine/License/API/User.php
Normal file
121
wp-content/plugins/wp-rocket/inc/Engine/License/API/User.php
Normal file
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
|
||||
namespace WP_Rocket\Engine\License\API;
|
||||
|
||||
class User {
|
||||
/**
|
||||
* The user object
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* Instantiate the class
|
||||
*
|
||||
* @param object $user The user object.
|
||||
*/
|
||||
public function __construct( $user ) {
|
||||
$this->user = is_object( $user ) ? $user : new \stdClass();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the user license type
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function get_license_type() {
|
||||
if ( ! isset( $this->user->licence_account ) ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (int) $this->user->licence_account;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the user license expiration timestamp
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function get_license_expiration() {
|
||||
if ( ! isset( $this->user->licence_expiration ) ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (int) $this->user->licence_expiration;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the user license is expired
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function is_license_expired() {
|
||||
return time() > $this->get_license_expiration();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the user license creation date
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function get_creation_date() {
|
||||
if ( ! isset( $this->user->date_created ) ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (int) $this->user->date_created;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if user has auto-renew enabled
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function is_auto_renew() {
|
||||
if ( ! isset( $this->user->has_auto_renew ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (bool) $this->user->has_auto_renew;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the upgrade to plus URL
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_upgrade_plus_url() {
|
||||
if ( ! isset( $this->user->upgrade_plus_url ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $this->user->upgrade_plus_url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the upgrade to infinite url
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_upgrade_infinite_url() {
|
||||
if ( ! isset( $this->user->upgrade_infinite_url ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $this->user->upgrade_infinite_url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the renewal url
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_renewal_url() {
|
||||
if ( ! isset( $this->user->renewal_url ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $this->user->renewal_url;
|
||||
}
|
||||
}
|
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace WP_Rocket\Engine\License\API;
|
||||
|
||||
use WP_Rocket\Admin\Options_Data;
|
||||
|
||||
class UserClient {
|
||||
const USER_ENDPOINT = 'https://wp-rocket.me/stat/1.0/wp-rocket/user.php';
|
||||
|
||||
/**
|
||||
* WP Rocket options instance
|
||||
*
|
||||
* @var Options_Data
|
||||
*/
|
||||
private $options;
|
||||
|
||||
/**
|
||||
* Instantiate the class
|
||||
*
|
||||
* @param Options_Data $options WP Rocket options instance.
|
||||
*/
|
||||
public function __construct( Options_Data $options ) {
|
||||
$this->options = $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets user data from cache if it exists, else gets it from the user endpoint
|
||||
*
|
||||
* Cache the user data for 24 hours in a transient
|
||||
*
|
||||
* @since 3.7.3
|
||||
*
|
||||
* @return bool|object
|
||||
*/
|
||||
public function get_user_data() {
|
||||
$cached_data = get_transient( 'wp_rocket_customer_data' );
|
||||
|
||||
if ( false !== $cached_data ) {
|
||||
return $cached_data;
|
||||
}
|
||||
|
||||
$data = $this->get_raw_user_data();
|
||||
|
||||
if ( false === $data ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
set_transient( 'wp_rocket_customer_data', $data, DAY_IN_SECONDS );
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the user data from the user endpoint
|
||||
*
|
||||
* @since 3.7.3
|
||||
*
|
||||
* @return bool|object
|
||||
*/
|
||||
private function get_raw_user_data() {
|
||||
$customer_key = ! empty( $this->options->get( 'consumer_key', '' ) )
|
||||
? $this->options->get( 'consumer_key', '' )
|
||||
: rocket_get_constant( 'WP_ROCKET_KEY', '' );
|
||||
$customer_email = ! empty( $this->options->get( 'consumer_email', '' ) )
|
||||
? $this->options->get( 'consumer_email', '' )
|
||||
: rocket_get_constant( 'WP_ROCKET_EMAIL', '' );
|
||||
|
||||
$response = wp_safe_remote_post(
|
||||
self::USER_ENDPOINT,
|
||||
[
|
||||
'body' => 'user_id=' . rawurlencode( $customer_email ) . '&consumer_key=' . sanitize_key( $customer_key ),
|
||||
]
|
||||
);
|
||||
|
||||
if ( 200 !== wp_remote_retrieve_response_code( $response ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = wp_remote_retrieve_body( $response );
|
||||
|
||||
if ( empty( $body ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return json_decode( $body );
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user