/home/ramtczxy/emilypoultryfarm.com/wp-content/plugins/external-importer/application/Autoupdate.php
<?php
namespace ExternalImporter\application;
defined('\ABSPATH') || exit;
use ExternalImporter\application\admin\LicConfig;
/**
* Autoupdate class file
*
* @author keywordrush.com <support@keywordrush.com>
* @link https://www.keywordrush.com
* @copyright Copyright © 2020 keywordrush.com
*/
class Autoupdate {
private $current_version;
private $api_base;
/**
* Plugin filename relative to the plugins directory.
* @var type String
*/
private $plugin_file;
private $slug;
public function __construct($current_version, $plugin_file, $api_base, $slug = null)
{
if (!LicConfig::getInstance()->option('license_key'))
return;
$this->current_version = $current_version;
$this->plugin_file = $plugin_file;
$this->api_base = $api_base;
if (!$slug)
$this->slug = $slug;
else
$this->slug = basename($this->plugin_file, '.php');
\add_filter('pre_set_site_transient_update_plugins', array($this, 'checkUpdate'));
\add_filter('plugins_api', array($this, 'getRemoteInfo'), 10, 3);
}
public function checkUpdate($transient)
{
// prevent updates from wp catalog
if (isset($transient->response[$this->plugin_file]))
unset($transient->response[$this->plugin_file]);
$remote_version = $this->getRemoteVersion();
if ($remote_version && version_compare($this->current_version, $remote_version, '<'))
{
$plugin_data = get_plugin_data(\ExternalImporter\PLUGIN_FILE);
$res = new \stdClass();
$res->slug = $this->slug;
$res->new_version = $remote_version;
$res->url = $plugin_data['PluginURI'];
$res->package = $this->api_base . '?' . http_build_query($this->getRequestArray('download'));
$transient->response[$this->plugin_file] = $res;
}
return $transient;
}
/**
* Add our self-hosted description
*/
public function getRemoteInfo($false, $action, $arg)
{
if (!is_object($arg) || !isset($arg->slug) || $arg->slug != $this->slug)
return false;
if (!$response = $this->getRemote('info'))
return false;
$result = json_decode($response['body'], true);
if ($result && isset($result['info']))
{
$plugin_data = get_plugin_data(\ExternalImporter\PLUGIN_FILE);
$res = (object) $result['info'];
$res->slug = $this->slug;
$res->name = $plugin_data['Name'];
$res->plugin_name = $plugin_data['Name'];
$res->download_link = Plugin::getApiBase() . '?' . http_build_query($this->getRequestArray('download'));
$res->sections = array(
'description' => sprintf(__('New version of %s plugin.', 'external-importer'), $plugin_data['Name']) . ' ' .
sprintf(__('Please <a target="_blank" href="%s">find here</a> the releases notes.', 'external-importer'), \esc_url(Plugin::getWebsite() . '/changelog/' . Plugin::getSlug() . '/readme.txt'))
);
return $res;
} else
return false;
}
public function getRemoteVersion()
{
if (!$response = $this->getRemote('version'))
return false;
$result = json_decode($response['body'], true);
if ($result && !empty($result['version']))
return $result['version'];
else
return false;
}
private function getRemote($cmd)
{
$response = \wp_remote_post(Plugin::getApiBase(), array(
'method' => 'POST', 'timeout' => 15, 'httpversion' => '1.0', 'blocking' => true, 'body' => $this->getRequestArray($cmd))
);
if (\is_wp_error($response))
return false;
$response_code = (int) \wp_remote_retrieve_response_code($response);
if ($response_code != 200)
return false;
return $response;
}
private function getRequestArray($cmd)
{
return array('cmd' => $cmd, 'd' => parse_url(site_url(), PHP_URL_HOST), 'p' => Plugin::product_id, 'v' => Plugin::version(), 'key' => LicConfig::getInstance()->option('license_key'));
}
}