File "class-gplvault-updater.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/gplvault-updater/includes/class-gplvault-updater.php
File
size: 3.57 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class GPLVault_Updater
{
private static $instance;
private $basename;
public static function instance()
{
if (null === self::$instance) {
self::$instance = new static();
}
return self::$instance;
}
private function __construct()
{
$this->basename = GPLVault()->plugin_basename();
}
public function init()
{
if (!is_admin()) {
return;
}
if (gv_settings_manager()->license_is_activated()) {
$this->init_hooks();
} else {
$this->remove_hooks();
}
}
private function init_hooks()
{
add_action('gplvault_six_hours_cron', array($this, 'update_client_schema'));
add_filter('http_request_args', array($this, 'update_check'), 5, 2);
add_filter('plugins_api', array($this, 'plugins_api'), 10, 3);
add_filter('pre_set_site_transient_update_plugins', array($this, 'update_plugins'));
add_filter('pre_set_transient_update_plugins', array($this, 'update_plugins'));
add_filter('pre_site_transient_update_plugins', array($this, 'update_plugins'));
add_filter('pre_transient_update_plugins', array($this, 'update_plugins'));
}
private function remove_hooks()
{
remove_action('gplvault_six_hours_cron', array($this, 'update_client_schema'));
remove_filter('http_request_args', array($this, 'update_check'), 5, 2);
remove_filter('plugins_api', array($this, 'plugins_api'), 10, 3);
remove_filter('pre_set_site_transient_update_plugins', array($this, 'update_plugins'));
remove_filter('pre_set_transient_update_plugins', array($this, 'update_plugins'));
remove_filter('pre_site_transient_update_plugins', array($this, 'update_plugins'));
remove_filter('pre_transient_update_plugins', array($this, 'update_plugins'));
}
public function update_client_schema()
{
$schema = gv_api_manager()->client_schema();
if (!is_wp_error($schema) && isset($schema['data'])) {
gv_settings_manager()->save_client_schema($schema['data']);
}
}
public function update_check($request, $url)
{
if (false !== strpos($url, '//api.wordpress.org/plugins/update-check/1.1/')) {
$data = json_decode($request['body']['plugins']);
unset($data->plugins->{$this->basename});
$request['body']['plugins'] = wp_json_encode($data);
}
return $request;
}
public function plugins_api($result, $action, $args)
{
if (isset($args->slug) && GV_UPDATER_SLUG === $args->slug) {
$schema = $this->get_schema();
if ($schema) {
$result = (object) $schema;
}
}
return $result;
}
public function update_plugins($transient)
{
$schema = $this->get_schema();
if ($schema && version_compare(GPLVault()->version(), $schema['new_version'], '<')) {
$transient = is_object($transient) ? $transient : new stdClass();
$transient->response[GPLVault()->plugin_basename()] = (object) $schema;
}
return $transient;
}
private function get_schema()
{
$schema = gv_settings_manager()->client_schema();
if (empty($schema)) {
$schema_response = gv_api_manager()->client_schema();
if (is_wp_error($schema_response)) {
return false;
}
$schema = $schema_response['data'];
gv_settings_manager()->save_client_schema($schema);
}
return $schema;
}
}