2020-03-02 22:22:32 +00:00
< ? php
/**
* WooCommerce Admin : Update version reminder note .
*
* Creates a note to nudge users to use the newer version when two are installed .
*/
2022-03-08 13:55:27 +00:00
namespace Automattic\WooCommerce\Internal\Admin\Notes ;
2020-03-02 22:22:32 +00:00
defined ( 'ABSPATH' ) || exit ;
2022-03-08 13:55:27 +00:00
use \Automattic\WooCommerce\Admin\Notes\Note ;
use \Automattic\WooCommerce\Admin\Notes\Notes ;
use \Automattic\WooCommerce\Admin\Notes\NoteTraits ;
2020-03-02 22:22:32 +00:00
/**
2020-09-28 04:35:10 +00:00
* Deactivate_Plugin .
2020-03-02 22:22:32 +00:00
*/
2020-10-28 17:12:14 +00:00
class DeactivatePlugin {
2020-05-22 13:48:40 +00:00
/**
* Note traits .
*/
use NoteTraits ;
/**
* Name of the note for use in the database .
*/
2020-03-02 22:22:32 +00:00
const NOTE_NAME = 'wc-admin-deactivate-plugin' ;
/**
* Attach hooks .
*/
public function __construct () {
add_action ( 'init' , array ( $this , 'deactivate_feature_plugin' ) );
}
/**
2020-05-22 13:48:40 +00:00
* Get the note .
2020-09-28 04:35:10 +00:00
*
* @ return Note
2020-03-02 22:22:32 +00:00
*/
2020-05-22 13:48:40 +00:00
public static function get_note () {
2020-09-28 04:35:10 +00:00
$note = new Note ();
2020-03-02 22:22:32 +00:00
$note -> set_title ( __ ( 'Deactivate old WooCommerce Admin version' , 'woocommerce-admin' ) );
2021-08-19 15:07:37 +00:00
$note -> set_content ( __ ( 'Your current version of WooCommerce Admin is outdated and a newer version is included with WooCommerce. We recommend deactivating the plugin and using the stable version included with WooCommerce.' , 'woocommerce-admin' ) );
2020-09-28 04:35:10 +00:00
$note -> set_type ( Note :: E_WC_ADMIN_NOTE_INFORMATIONAL );
2020-03-02 22:22:32 +00:00
$note -> set_name ( self :: NOTE_NAME );
$note -> set_content_data ( ( object ) array () );
$note -> set_source ( 'woocommerce-admin' );
$note -> add_action (
'deactivate-feature-plugin' ,
__ ( 'Deactivate' , 'woocommerce-admin' ),
wc_admin_url ( '&action=deactivate-feature-plugin' ),
2020-09-28 04:35:10 +00:00
Note :: E_WC_ADMIN_NOTE_UNACTIONED ,
2020-03-02 22:22:32 +00:00
true
);
2022-02-23 17:04:59 +00:00
$note -> add_nonce_to_action ( 'deactivate-feature-plugin' , 'deactivate-plugin_' . WC_ADMIN_PLUGIN_FILE , '' );
2020-05-22 13:48:40 +00:00
return $note ;
2020-03-02 22:22:32 +00:00
}
/**
* Delete the note if the version is higher than the included .
*/
public static function delete_note () {
2020-09-28 04:35:10 +00:00
Notes :: delete_notes_with_name ( self :: NOTE_NAME );
2020-03-02 22:22:32 +00:00
}
/**
* Deactivate feature plugin .
*/
public function deactivate_feature_plugin () {
if (
! isset ( $_GET [ 'page' ] ) ||
'wc-admin' !== $_GET [ 'page' ] ||
! isset ( $_GET [ 'action' ] ) ||
'deactivate-feature-plugin' !== $_GET [ 'action' ] ||
! defined ( 'WC_ADMIN_PLUGIN_FILE' )
) {
return ;
}
2022-02-23 17:04:59 +00:00
$note = self :: get_note ();
$action = $note -> get_action ( 'deactivate-feature-plugin' );
// Preserve compatability with notes populated before nonce implementation.
if ( ! isset ( $_GET [ '_wpnonce' ] ) && ( ! $action || ! isset ( $action -> nonce_action ) ) ) {
self :: deactivate_redirect ( wp_create_nonce ( 'deactivate-plugin_' . WC_ADMIN_PLUGIN_FILE ) );
return ;
}
$nonce = isset ( $_GET [ '_wpnonce' ] ) ? sanitize_text_field ( wp_unslash ( $_GET [ '_wpnonce' ] ) ) : '' ;
if ( ! wp_verify_nonce ( $nonce , 'deactivate-plugin_' . WC_ADMIN_PLUGIN_FILE ) ) {
return ;
}
self :: deactivate_redirect ( $nonce );
}
/**
* Deactivation redirect
*
* @ param string $nonce The nonce .
*/
public static function deactivate_redirect ( $nonce ) {
$deactivate_url = admin_url ( 'plugins.php?action=deactivate&plugin=' . rawurlencode ( WC_ADMIN_PLUGIN_FILE ) . '&plugin_status=all&paged=1&_wpnonce=' . $nonce );
2020-03-02 22:22:32 +00:00
wp_safe_redirect ( $deactivate_url );
2022-02-23 17:04:59 +00:00
2020-03-02 22:22:32 +00:00
exit ;
}
}