File "LicensedProduct.php"
Full Path: /home/tekvhqgl/public_html/dev2024_old_skip/wp-content/plugins/presto-player/inc/Models/LicensedProduct.php
File size: 4.64 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace PrestoPlayer\Models;
use PrestoPlayer\Models\Setting;
class LicensedProduct
{
/**
* The api url
*
* @return string
*/
public static function apiUrl()
{
return 'http://my.prestomade.com/index.php';
}
/**
* The product id
*
* @return string
*/
public static function id()
{
return 'presto-player-pro';
}
/**
* This domain
*
* @return string
*/
public static function domain()
{
$protocol = is_ssl() ? "https://" : "http://";
return str_replace($protocol, "", get_bloginfo('wpurl'));
}
/**
* Save the key
*
* @param string $key
* @return bool
*/
public static function saveKey($key)
{
return Setting::update('license', 'key', $key);
}
/**
* Get the key
*
* @return string
*/
public static function getKey()
{
return Setting::get('license', 'key');
}
/**
* Activate a license
*
* @param string $key
* @return string|\WP_Error
*/
public static function activate($key)
{
$request_uri = add_query_arg([
'woo_sl_action' => 'activate',
'licence_key' => wp_kses_post($key),
'product_unique_id' => self::id(),
'domain' => self::domain()
], self::apiUrl());
$data = wp_remote_get($request_uri);
// error
if (is_wp_error($data) || $data['response']['code'] != 200) {
return new \WP_Error('connection_error', 'There was a problem establishing a connection to the licensing server. Please try again in a few minutes.');
}
// check body
$data_body = json_decode($data['body']);
$data_body = $data_body[0] ?? $data_body;
if (isset($data_body->status)) {
if ($data_body->status == 'success' && ($data_body->status_code == 's100' || $data_body->status_code == 's101')) {
self::saveKey($key);
if ($data_body->message) {
return $data_body->message;
}
return __('Activated', 'presto-player');
} else {
if ($data_body->message) {
$code = $data_body->status_code ?? 'error';
return new \WP_Error($code, $data_body->message);
}
return new \WP_Error('activation_error', 'There was a problem activating the license. Please check your license expiration.');
}
}
return new \WP_Error('connection_error', 'There was a problem establishing a connection to the licensing server. Please try again in a few minutes.');
}
/**
* Deactivate license on this site
*
* @return string|\WP_Error
*/
public static function deactivate()
{
$request_uri = add_query_arg([
'woo_sl_action' => 'deactivate',
'licence_key' => wp_kses_post(self::getKey()),
'product_unique_id' => self::id(),
'domain' => self::domain()
], self::apiUrl());
$data = wp_remote_get($request_uri);
// error
if (is_wp_error($data) || $data['response']['code'] != 200) {
return new \WP_Error('connection_error', 'There was a problem establishing a connection to the licensing server. Please try again in a few minutes.');
}
$data_body = json_decode($data['body']);
$data_body = $data_body[0] ?? $data_body;
if (isset($data_body->status)) {
if ($data_body->status == 'success' && $data_body->status_code == 's201') {
self::saveKey('');
Setting::update('license_data', 'last_check', time());
return $data_body->message;
} else //if message code is e104 force de-activation
if ($data_body->status_code == 'e002' || $data_body->status_code == 'e104' || $data_body->status_code == 'e211') {
self::saveKey('');
Setting::update('license_data', 'last_check', time());
return __('Deactivated', 'presto-player');
} else {
self::saveKey('');
if ($data_body->message) {
$code = $data_body->status_code ?? 'error';
return new \WP_Error($code, $data_body->message);
}
return new \WP_Error('error', 'There was a problem deactivating the licence');
}
} else {
return new \WP_Error('error', 'There was a problem with the connecting to the licensing server.');
}
}
}