Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/woocomme.../src/Admin
File: PluginsInstaller.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* PluginsInstaller
[2] Fix | Delete
*
[3] Fix | Delete
* Installer to allow plugin installation via URL query.
[4] Fix | Delete
*/
[5] Fix | Delete
[6] Fix | Delete
namespace Automattic\WooCommerce\Admin;
[7] Fix | Delete
[8] Fix | Delete
defined( 'ABSPATH' ) || exit;
[9] Fix | Delete
[10] Fix | Delete
use Automattic\WooCommerce\Admin\API\Plugins;
[11] Fix | Delete
use Automattic\WooCommerce\Admin\Features\TransientNotices;
[12] Fix | Delete
[13] Fix | Delete
/**
[14] Fix | Delete
* Class PluginsInstaller
[15] Fix | Delete
*/
[16] Fix | Delete
class PluginsInstaller {
[17] Fix | Delete
[18] Fix | Delete
/**
[19] Fix | Delete
* Constructor
[20] Fix | Delete
*/
[21] Fix | Delete
public static function init() {
[22] Fix | Delete
add_action( 'admin_init', array( __CLASS__, 'possibly_install_activate_plugins' ) );
[23] Fix | Delete
}
[24] Fix | Delete
[25] Fix | Delete
/**
[26] Fix | Delete
* Check if an install or activation is being requested via URL query.
[27] Fix | Delete
*/
[28] Fix | Delete
public static function possibly_install_activate_plugins() {
[29] Fix | Delete
/* phpcs:disable WordPress.Security.NonceVerification.Recommended */
[30] Fix | Delete
if (
[31] Fix | Delete
! isset( $_GET['plugin_action'] ) ||
[32] Fix | Delete
! isset( $_GET['plugins'] ) ||
[33] Fix | Delete
! current_user_can( 'install_plugins' ) ||
[34] Fix | Delete
! isset( $_GET['nonce'] )
[35] Fix | Delete
) {
[36] Fix | Delete
return;
[37] Fix | Delete
}
[38] Fix | Delete
[39] Fix | Delete
$nonce = sanitize_text_field( wp_unslash( $_GET['nonce'] ) );
[40] Fix | Delete
[41] Fix | Delete
if ( ! wp_verify_nonce( $nonce, 'install-plugin' ) ) {
[42] Fix | Delete
wp_nonce_ays( 'install-plugin' );
[43] Fix | Delete
}
[44] Fix | Delete
[45] Fix | Delete
$plugins = sanitize_text_field( wp_unslash( $_GET['plugins'] ) );
[46] Fix | Delete
$plugin_action = sanitize_text_field( wp_unslash( $_GET['plugin_action'] ) );
[47] Fix | Delete
/* phpcs:enable WordPress.Security.NonceVerification.Recommended */
[48] Fix | Delete
[49] Fix | Delete
$plugins_api = new Plugins();
[50] Fix | Delete
$install_result = null;
[51] Fix | Delete
$activate_result = null;
[52] Fix | Delete
[53] Fix | Delete
switch ( $plugin_action ) {
[54] Fix | Delete
case 'install':
[55] Fix | Delete
$install_result = $plugins_api->install_plugins( array( 'plugins' => $plugins ) );
[56] Fix | Delete
break;
[57] Fix | Delete
case 'activate':
[58] Fix | Delete
$activate_result = $plugins_api->activate_plugins( array( 'plugins' => $plugins ) );
[59] Fix | Delete
break;
[60] Fix | Delete
case 'install-activate':
[61] Fix | Delete
$install_result = $plugins_api->install_plugins( array( 'plugins' => $plugins ) );
[62] Fix | Delete
$activate_result = $plugins_api->activate_plugins( array( 'plugins' => implode( ',', $install_result['data']['installed'] ) ) );
[63] Fix | Delete
break;
[64] Fix | Delete
}
[65] Fix | Delete
[66] Fix | Delete
self::cache_results( $plugins, $install_result, $activate_result );
[67] Fix | Delete
self::redirect_to_referer();
[68] Fix | Delete
}
[69] Fix | Delete
[70] Fix | Delete
/**
[71] Fix | Delete
* Display the results of installation and activation on the page.
[72] Fix | Delete
*
[73] Fix | Delete
* @param string $plugins Comma separated list of plugins.
[74] Fix | Delete
* @param array $install_result Result of installation.
[75] Fix | Delete
* @param array $activate_result Result of activation.
[76] Fix | Delete
*/
[77] Fix | Delete
public static function cache_results( $plugins, $install_result, $activate_result ) {
[78] Fix | Delete
if ( ! $install_result && ! $activate_result ) {
[79] Fix | Delete
return;
[80] Fix | Delete
}
[81] Fix | Delete
[82] Fix | Delete
if ( is_wp_error( $install_result ) || is_wp_error( $activate_result ) ) {
[83] Fix | Delete
$message = $activate_result ? $activate_result->get_error_message() : $install_result->get_error_message();
[84] Fix | Delete
} else {
[85] Fix | Delete
$message = $activate_result ? $activate_result['message'] : $install_result['message'];
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
TransientNotices::add(
[89] Fix | Delete
array(
[90] Fix | Delete
'user_id' => get_current_user_id(),
[91] Fix | Delete
'id' => 'plugin-installer-' . str_replace( ',', '-', $plugins ),
[92] Fix | Delete
'status' => 'success',
[93] Fix | Delete
'content' => $message,
[94] Fix | Delete
)
[95] Fix | Delete
);
[96] Fix | Delete
}
[97] Fix | Delete
[98] Fix | Delete
/**
[99] Fix | Delete
* Redirect back to the referring page if one exists.
[100] Fix | Delete
*/
[101] Fix | Delete
public static function redirect_to_referer() {
[102] Fix | Delete
$referer = wp_get_referer();
[103] Fix | Delete
if ( $referer && 0 !== strpos( $referer, wp_login_url() ) ) {
[104] Fix | Delete
wp_safe_redirect( $referer );
[105] Fix | Delete
exit();
[106] Fix | Delete
}
[107] Fix | Delete
[108] Fix | Delete
if ( ! isset( $_SERVER['REQUEST_URI'] ) ) {
[109] Fix | Delete
return;
[110] Fix | Delete
}
[111] Fix | Delete
[112] Fix | Delete
$url = remove_query_arg( 'plugin_action', wp_unslash( $_SERVER['REQUEST_URI'] ) ); // phpcs:ignore sanitization ok.
[113] Fix | Delete
$url = remove_query_arg( 'plugins', $url );
[114] Fix | Delete
wp_safe_redirect( $url );
[115] Fix | Delete
exit();
[116] Fix | Delete
}
[117] Fix | Delete
}
[118] Fix | Delete
[119] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function