File: /datos/www/expodubai/wp-content/plugins/modern-events-calendar-lite/app/libraries/envato.php
<?php
/** no direct access **/
defined('MECEXEC') or die();
/**
* Webnus MEC envato class.
* @author Webnus <[email protected]>
*/
class MEC_envato extends MEC_base
{
/**
* The plugin current version
*/
public $current_version = MEC_VERSION;
/**
* The plugin ite, id
*/
public $itemid = '17731780';
/**
* The plugin url
*/
public $itemurl = '';
/**
* User for cashing directory
*/
public $purchase_code = '';
/**
* Product name
*/
public $product_name = '';
/**
* The plugin remote update path
*/
public $update_path = '';
/**
* Plugin Slug
*/
public $plugin_slug = MEC_BASENAME;
public $options = '';
public $license_status = '';
/**
* Plugin name
*/
public $slug;
public $main;
public $factory;
public $settings;
/**
* MEC update constructor
*/
public function __construct()
{
// Import MEC Main
$this->main = $this->getMain();
// Import MEC Factory
$this->factory = $this->getFactory();
// MEC Settings
$this->options = get_option('mec_options');
$this->license_status = get_option( 'mec_license_status');
// Set user purchase code
$this->set_purchase_code(isset($this->options['purchase_code']) ? $this->options['purchase_code'] : '');
$this->set_product_name(isset($this->options['product_name']) ? $this->options['product_name'] : '');
// Plugin Slug
list($slice1, $slice2) = explode('/', $this->plugin_slug);
$this->slug = str_replace('.php', '', $slice2);
}
/**
* Get API URL.
* @author Webnus <[email protected]>
* @return string $api_url
*/
public static function get_api_url()
{
if(ini_get('allow_url_fopen'))
{
if(get_headers('https://webnus.biz')[0] != 'HTTP/1.1 200 OK') $api_url = 'https://webnus.net/api';
else $api_url = 'http://webnus.biz/webnus.net';
}
else
{
$api_url = 'http://webnus.biz/webnus.net';
}
return $api_url;
}
/**
* Set purchase code.
* @author Webnus <[email protected]>
* @param string $purchase_code
*/
public function set_purchase_code($purchase_code)
{
$this->purchase_code = $purchase_code;
}
/**
* Set product_name.
* @author Webnus <[email protected]>
* @param string $product_name
*/
public function set_product_name($product_name)
{
$this->product_name = $product_name;
}
/**
* Set update path.
* @author Webnus <[email protected]>
* @param string $update_path
*/
public function set_update_path($update_path)
{
$this->update_path = $update_path;
}
/**
* GET purchase code.
* @author Webnus <[email protected]>
*/
public function get_purchase_code()
{
return $this->purchase_code;
}
/**
* GET product_name.
* @author Webnus <[email protected]>
*/
public function get_product_name()
{
return $this->product_name;
}
/**
* Get update path.
* @author Webnus <[email protected]>
*/
public function get_update_path()
{
return $this->update_path;
}
/**
* Initialize the auto update class
* @author Webnus <[email protected]>
*/
public function init()
{
// updating checking
$this->factory->filter('pre_set_site_transient_update_plugins', array($this, 'check_update'));
// information checking
$this->factory->filter('plugins_api', array($this, 'check_info'), 10, 3);
}
/**
* Add our self-hosted autoupdate plugin to the filter transien
* @author Webnus <[email protected]>
* @param object $transient
* @return object
*/
public function check_update($transient)
{
if(empty($transient->checked)) return $transient;
// Get the remote version
$version = (isset($this->get_MEC_info('version')->version) and !empty($this->get_MEC_info('version')->version)) ? json_decode(json_encode($this->get_MEC_info('version')->version), true) : get_option('mec_save_version_number');
// Set mec update path
$dl_link = (!empty($this->options['purchase_code']) && $this->license_status == 'active') ? $this->set_update_path($this->get_MEC_info('dl')) : NULL;
// If a newer version is available, add the update
if(version_compare($this->current_version, $version, '<'))
{
$obj = new stdClass();
$obj->id = $this->itemid;
$obj->slug = $this->slug;
$obj->plugin = $this->plugin_slug;
$obj->requires = '4.0';
$obj->tested = '4.9';
$obj->new_version = $version;
$obj->url = $this->itemurl;
$obj->package = $this->get_update_path();
$obj->upgrade_notice = '';
$obj->icons = array(
'1x' => 'https://ps.w.org/modern-events-calendar-lite/assets/icon-128x128.png',
'2x' => 'https://ps.w.org/modern-events-calendar-lite/assets/icon-128x128.png'
);
$obj->sections = array
(
'description' => 'Modern Events Calendar - Responsive Event Scheduler & Booking For WordPress',
'changelog' => 'Modern Events Calendar - Responsive Event Scheduler & Booking For WordPress'
);
$transient->response[$this->plugin_slug] = $obj;
}
elseif(isset($transient->response[$this->plugin_slug]))
{
unset($transient->response[$this->plugin_slug]);
}
return $transient;
}
/**
* Add our self-hosted description to the filter
* @author Webnus <[email protected]>
*/
public function check_info($false, $action, $arg)
{
$dl_link = !is_null($this->get_MEC_info('dl')) ? $this->set_update_path($this->get_MEC_info('dl')) : NULL;
$version = (isset($this->get_MEC_info('version')->version) and !empty($this->get_MEC_info('version')->version)) ? json_decode(json_encode($this->get_MEC_info('version')->version), true) : get_option('mec_save_version_number');
$data_url = 'https://webnus.net/modern-events-calendar/addons-api/addons-api.json';
if(function_exists('file_get_contents') && ini_get('allow_url_fopen'))
{
$get_data = file_get_contents($data_url);
if($get_data !== false AND !empty($get_data))
{
$obj = json_decode($get_data);
}
}
elseif(function_exists('curl_version'))
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $data_url);
$result = curl_exec($ch);
curl_close($ch);
$obj = json_decode($result);
}
else $obj = '';
$addons = '';
if(!empty($obj))
{
$addons .= '<div class="mec-details-addons-container">';
foreach($obj as $key => $value)
{
$addons .= '
<div class="mec-details-addons-wrap">
<a href="https://webnus.net/modern-events-calendar/addons/" target="_blank"><img alt="'.esc_attr($value->name).'" src="'.$value->img.'" /></a>
<div class="mec-details-addons-title"><a href="https://webnus.net/modern-events-calendar/addons/" target="_blank"><span>'. esc_html__($value->name) .'</span></a></div>
<p>'. esc_html__($value->desc) .'</p>
</div>';
}
$addons .= '</div>';
}
if(isset($arg->slug) and $arg->slug === $this->slug)
{
$information = $this->getRemote_information();
$information = json_decode($information);
$information->name = 'Modern Events Calendar';
$information->slug = 'modern-events-calendar';
$information->plugin_name = 'Modern Events Calendar';
$information->version = $version;
$information->download_link = $this->get_update_path();
$information->banners['low'] = 'https://ps.w.org/modern-events-calendar-lite/assets/banner-772x250.png?rev=1912767';
$information->tested = '5.2.2';
$information->active_installs = '100000';
$information->upgrade_notice = '';
$information->sections = (array) $information->sections;
unset($information->sections['installation']);
unset($information->sections['faq']);
unset($information->sections['screenshots']);
$information->sections['addons'] = $addons;
return $information;
}
return false;
}
/**
* Get information about the remote version
* @return bool|object
*/
public function getRemote_information()
{
$request = wp_remote_post('https://api.wordpress.org/plugins/info/1.0/modern-events-calendar-lite.json', array( 'timeout' => 30 ));
if(!is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200)
{
return $request['body'];
}
return false;
}
/* Save version to database */
public function mec_version_in_database() {
$mec_save_version_date = get_option('mec_save_version_date');
if (!$mec_save_version_date) {
$JSON = wp_remote_retrieve_body(wp_remote_get(self::get_api_url() . '/plugin-api/version', array(
'body' => null,
'timeout' => '120',
'redirection' => '10',
'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
)));
$JSON = json_decode($JSON);
update_option('mec_save_version_number', $JSON->version);
update_option('mec_save_version_date', date("Y-m-d"));
return true;
} else {
if ( strtotime(date("Y-m-d")) > strtotime($mec_save_version_date) ) {
$JSON = wp_remote_retrieve_body(wp_remote_get(self::get_api_url() . '/plugin-api/version', array(
'body' => null,
'timeout' => '120',
'redirection' => '10',
'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
)));
$JSON = json_decode($JSON);
update_option('mec_save_version_number', $JSON->version);
update_option('mec_save_version_date', date("Y-m-d"));
return true;
}
return false;
}
}
/**
* Return details from envato
* @author Webnus <[email protected]>
* @param string $type
* @return mixed
*/
public function get_MEC_info($type = 'dl')
{
// setting the header for the rest of the api
$code = $this->get_purchase_code();
$product_name = $this->get_product_name();
$url = get_home_url();
if($type == 'remove') {
$verify_url = 'https://webnus.net/api/remove?id='.$code;
} elseif($type == 'dl') {
$verify_url = self::get_api_url() . '/plugin-api/verify?item_name=' . urlencode($product_name) . '&id=' . $code . '&url=' . $url;
} elseif($type == 'version') {
if ( $this->mec_version_in_database() ) {
$verify_url = self::get_api_url() . '/plugin-api/version';
} else {
return NULL;
}
} else {
return NULL;
}
$JSON = wp_remote_retrieve_body(wp_remote_get($verify_url, array(
'body' => null,
'timeout' => '120',
'redirection' => '10',
'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
)));
if($JSON != '') return json_decode($JSON);
else return false;
}
}