File "InstalledPlugin.php"
Full Path: /home/aiclgcwq/photonindustriespvt.com/wp-content/plugins/tenweb-speed-optimizer/vendor/10web/authorization/src/InstalledPlugin.php
File size: 6.06 KB
MIME-type: text/x-c++
Charset: utf-8
<?php
namespace Tenweb_Authorization {
use Tenweb_Authorization\Product;
class InstalledPlugin extends Product implements ProductActions
{
public $state = null;
public $wp_slug = "";
public function __construct($state, $id, $slug, $title, $description, $wp_slug)
{
$this->state = $state;
parent::__construct($id, $slug, $title, $description);
$this->installed = true;
$this->wp_slug = $wp_slug;
}
public function get_state()
{
return $this->state;
}
/**
* @param $network_wide
*
* @return boolean true on success, false on fail
**/
public function activate($network_wide = false)
{
$result = activate_plugin($this->wp_slug, '', $network_wide, false);
$is_active = is_plugin_active($this->wp_slug);
if ($is_active == false) {
if (is_wp_error($result)) {
$this->set_error('failed_to_activate', $result->get_error_message());
return false;
} else {
$this->set_error('failed_to_activate', 'Failed to activate.');
return false;
}
} else {
return true;
}
}
public function deactivate($network_wide = false)
{
deactivate_plugins($this->wp_slug, false, $network_wide);
if (is_plugin_active($this->wp_slug)) {
$this->set_error('failed_to_deactivate', 'Failed to deactivate.');
return false;
}
return true;
}
public function update()
{
$is_active = $this->state->active;
$is_network_active = is_plugin_active_for_network($this->wp_slug);
$this->include_upgrade_libs();
$skin = $this->get_skin();
if ($skin == null) {
return false;
}
$upgrader = new \Plugin_Upgrader($skin);
$fs_options = apply_filters('upgrader_package_options', array('destination' => WP_PLUGIN_DIR));
if ($upgrader->fs_connect(array(WP_CONTENT_DIR, $fs_options['destination'])) !== true) {
$this->set_error('fs_error', "File system error. Invalid file permissions or FTP credentials.");
return false;
}
if ($this->set_download_data() == false) {
return false;
}
$update_plugins = get_site_transient('update_plugins');
if (is_object($update_plugins)) {
$old_update_plugins = clone $update_plugins;
} else {
$old_update_plugins = $update_plugins;
$update_plugins = new \stdClass();
}
if (!isset($update_plugins->response)) {
$update_plugins->response = array();
}
$plugin_object = new \stdClass();
$plugin_object->package = $this->download_data['url'];
$update_plugins->response[$this->wp_slug] = $plugin_object;
$GLOBALS['tenweb_update_process'] = true;
set_site_transient('update_plugins', $update_plugins, 60 * 60);
add_filter('http_request_args', array($this, 'add_headers'), 9999, 2);
$result = $upgrader->upgrade($this->wp_slug);
$GLOBALS['tenweb_update_process'] = false;
set_site_transient('update_plugins', $old_update_plugins, 60 * 60);
if ($is_active == 1) {
$this->activate($is_network_active);
}
if ($result === true) {
return true;
} else if (is_wp_error($result)) {
$this->set_error('failed_to_install', $result->get_error_message());
return false;
} else {
$this->set_error('failed_to_install', 'Something went wrong.');
return false;
}
}
public function delete()
{
if ($this->state->active == 1 && !$this->deactivate()) {
$this->set_error('failed_to_delete', 'You cannot delete a plugin while it is active.');
return false;
}
// Check filesystem credentials. `delete_plugins()` will bail otherwise.
$url = wp_nonce_url('plugins.php?action=delete-selected&verify-delete=1&checked[]=' . $this->wp_slug, 'bulk-plugins');
ob_start();
$credentials = request_filesystem_credentials($url);
ob_end_clean();
if (false === $credentials || !WP_Filesystem($credentials)) {
global $wp_filesystem;
// Pass through the error from WP_Filesystem if one was raised.
if ($wp_filesystem instanceof \WP_Filesystem_Base && is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
$this->set_error('fs_error', esc_html($wp_filesystem->errors->get_error_message()));
} else {
$this->set_error('fs_error', 'Unable to connect to the filesystem. Please confirm your credentials.');
}
return false;
}
$result = delete_plugins(array($this->wp_slug));
if (is_wp_error($result)) {
$this->set_error('failed_to_delete', $result->get_error_message());
return false;
} else if (false === $result) {
$this->set_error('failed_to_delete', 'Plugin could not be deleted.');
return false;
}
return true;
}
public function has_update()
{
$av_version = ($this->state->is_paid) ? $this->latest_versions['paid'] : $this->latest_versions['free'];
$av_version = ltrim($av_version, 'v');
return version_compare($this->state->version, $av_version, "<");
}
public function get_wp_slug()
{
return $this->wp_slug;
}
}
}