| Current Path : /home/quelfutuu/www/blog/wp-content/plugins/wp-spamshield/ |
| Current File : /home/quelfutuu/www/blog/wp-content/plugins/wp-spamshield/uninstall.php |
<?php
/**
* WP-SpamShield - uninstall.php
* Version: 1.9.20
*
* This script uninstalls WP-SpamShield and removes all options and traces of its existence.
*/
if( !defined( 'ABSPATH' ) || !defined( 'WP_UNINSTALL_PLUGIN' ) ) {
if( !headers_sent() ) { @header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden',TRUE,403); @header('X-Robots-Tag: noindex',TRUE); }
die( 'ERROR: This plugin requires WordPress and will not function if called directly.' );
}
if( !defined( 'WPSS_DEBUG' ) ) { define( 'WPSS_DEBUG', FALSE ); }
if( !defined( 'WPSS_CONTENT_DIR_PATH' ) ) { define( 'WPSS_CONTENT_DIR_PATH', WP_CONTENT_DIR ); }
if( !defined( 'WPSS_PLUGIN_PATH' ) ) { define( 'WPSS_PLUGIN_PATH', untrailingslashit( plugin_dir_path( __FILE__ ) ) ); }
if( !defined( 'WPSS_DS' ) ) { $wpss_ds = ( defined( 'DIRECTORY_SEPARATOR' ) && ( '/' === DIRECTORY_SEPARATOR || '\\' === DIRECTORY_SEPARATOR ) ) ? DIRECTORY_SEPARATOR : rs_wpss_un_ds(); define( 'WPSS_DS', $wpss_ds ); }
function rs_wpss_uninstall_plugin() {
/* Delete Options */
$del_options = array( 'wp_spamshield_version', 'spamshield_options', 'spamshield_widget_settings', 'spamshield_last_admin', 'spamshield_admins', 'spamshield_admin_notices', 'spamshield_count', 'spamshield_reg_count', 'spamshield_procdat', 'spamshield_install_status', 'spamshield_warning_status', 'spamshield_regalert_status', 'spamshield_nonces', 'spamshield_wpssmid_cache', 'spamshield_ubl_cache', 'spamshield_ubl_cache_disable', 'spamshield_ip_ban_disable', 'spamshield_ip_ban', 'spamshield_whitelist_keys', 'ak_count_pre', 'spamshield_init_user_approve_run' );
foreach( $del_options as $i => $option ) { delete_option( $option ); } /* TO DO: When Network Activation enabled, add Multisite - delete_site_option() */
/* Delete Transients */
$del_trans = array( 'wpss_iswpv_check', );
foreach( $del_trans as $i => $transient ) { delete_transient( $transient ); delete_site_transient( $transient ); }
/* Unregister Widgets */
$unreg_widgets = array( 'WP_SpamShield_Counter_LG', 'WP_SpamShield_Counter_CG', 'WP_SpamShield_End_Blog_Spam' );
foreach( $unreg_widgets as $i => $widget ) { unregister_widget( $widget ); }
/* Clean Up Widget Options */
$all_widgets = get_option('sidebars_widgets');
foreach( $all_widgets as $i => $s ) {
if( is_array( $s ) ) {
foreach( $s as $k => $v ) {
if( FALSE !== strpos( $v, 'spamshield' ) ) { unset( $all_widgets[$i][$k] ); }
}
$all_widgets[$i] = array_values( $all_widgets[$i] );
}
}
update_option( 'sidebars_widgets', $all_widgets );
/* Delete Orphaned Options */
$all_options = wp_load_alloptions();
foreach( $all_options as $option => $value ) {
if( FALSE !== strpos( $option, 'spamshield' ) ) { delete_option( $option ); } /* TO DO: When Network Activation enabled, add Multisite - delete_site_option() */
}
/* Delete User Meta */
$del_user_meta = array( 'wpss_user_ip', 'wpss_admin_status', 'wpss_new_user_approved', 'wpss_new_user_email_sent', 'wpss_cpn_status', 'wpss_cpn_notices', 'wpss_nag_status', 'wpss_nag_notices', );
$user_ids = get_users( array( 'blog_id' => '', 'fields' => 'ID' ) );
foreach ( $user_ids as $user_id ) { foreach( $del_user_meta as $i => $key ) { delete_user_meta( $user_id, $key ); } }
/* Clear Banned IP Info */
rs_wpss_uninstall_ip_ban_htaccess();
}
function rs_wpss_un_ds() {
global $is_IIS; return !empty( $is_IIS ) ? '\\' : '/';
}
function rs_wpss_uninstall_ip_ban_htaccess() {
/**
* Clear banned IP info from .htaccess during uninstall.
*/
$hta_bak_dir = WPSS_CONTENT_DIR_PATH.WPSS_DS.'backup';
$hta_wpss_bak_dir = $hta_bak_dir.WPSS_DS.'wp-spamshield';
$hta_file = ABSPATH.WPSS_DS.'.htaccess';
$hta_bak_file = $hta_wpss_bak_dir.WPSS_DS.'original.htaccess';
$wpss_index_file = WPSS_PLUGIN_PATH.WPSS_DS.'index.php';
$bak_dir_hta_file = WPSS_PLUGIN_PATH.WPSS_DS.'lib'.WPSS_DS.'sec'.WPSS_DS.'.htaccess';
$wpss_dirs = array( $hta_wpss_bak_dir.WPSS_DS.'' );
foreach( $wpss_dirs as $d => $dir ) {
if( @is_dir( $wpss_dirs[$d] ) ) {
$filelist = rs_wpss_un_scandir( $wpss_dirs[$d] );
foreach( $filelist as $f => $filename ) {
$file = $wpss_dirs[$d].$filename;
if( @is_file( $file ) ){
rs_wpss_un_chmod( $file, 775 ); @unlink( $file );
if( @file_exists( $file ) ) { rs_wpss_un_chmod( $file, 644 ); @unlink( $file ); }
}
}
rs_wpss_un_chmod( $wpss_dirs[$d], 775 ); @rmdir( $wpss_dirs[$d] );
if( @file_exists( $wpss_dirs[$d] ) ) { rs_wpss_un_chmod( $wpss_dirs[$d], 755 ); @rmdir( $wpss_dirs[$d] ); }
}
}
$wpss_files = array( $hta_bak_dir.WPSS_DS.'.htaccess', $hta_bak_dir.WPSS_DS.'index.php', WPMU_PLUGIN_DIR.WPSS_DS.'am-integrity-scanner.php' );
foreach( $wpss_files as $f => $file ) {
if( @is_file( $file ) ){
rs_wpss_un_chmod( $file, 775 ); @unlink( $file );
if( @file_exists( $file ) ) { rs_wpss_un_chmod( $file, 644 ); @unlink( $file ); }
}
}
$hta_contents = @file_get_contents( $hta_file );
if( FALSE !== strpos( $hta_contents, '# BEGIN WP-SpamShield' ) && FALSE !== strpos( $hta_contents, '# END WP-SpamShield' ) ) {
$hta_contents_mod = @preg_replace( "~".PHP_EOL."#\ BEGIN\ WP-SpamShield[\w\W]+#\ END\ WP-SpamShield".PHP_EOL."~i", '', $hta_contents );
if( $hta_contents_mod !== $hta_contents ) {
@file_put_contents( $hta_file, $hta_contents_mod, LOCK_EX );
}
}
}
function rs_wpss_un_scandir( $dir ) {
if( empty( $dir ) || ! @is_string( $dir ) ) { return $dir; }
@clearstatcache();
$dot_files = array( '..', '.' );
$dir_listr = (array) @scandir( $dir );
$dir_list = array_values( array_diff( $dir_listr, $dot_files ) );
return $dir_list;
}
function rs_wpss_un_chmod( $file, $mode ) {
@chmod( $file, octdec( $mode ) );
}
function rs_wpss_un_filter_null( $str ) {
return str_replace( chr(0), '', $str );
}
function rs_wpss_un_append_log_data( $str = NULL, $rsds_only = FALSE ) {
if ( TRUE === WP_DEBUG && TRUE === WPSS_DEBUG ) {
$wpss_log_str = 'WP-SpamShield UN DEBUG: ';
@error_log( rs_wpss_un_filter_null( $wpss_log_str ), 0 );
}
}
rs_wpss_uninstall_plugin();
/**
* "...Then it's time I disappear..."
*/