Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
gplvault-updater
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?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; } }