-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathforce-deactivate.txt
More file actions
136 lines (115 loc) · 3.78 KB
/
force-deactivate.txt
File metadata and controls
136 lines (115 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
/*
* Deactivation page to simply deactivate the plugin when backend is not accessible anymore
* To deactivate:
* 1) rename this file to force-deactivate.php
* 2) Go in your browser to (note use of http, not https) http://yourdomain.com/wp-content/plugins/really-simple-ssl/force-deactivate.php.
* 3) IMPORTANT! On execution, this file will automatically get renamed to .txt. If you do not run it, don't forget to change it back.
*/
?>
<html>
<body>
<?php
# No need for the template engine
define( 'WP_USE_THEMES', false );
#find the base path
define( 'BASE_PATH', find_wordpress_base_path() . "/" );
# Load WordPress Core
if ( !file_exists(BASE_PATH . 'wp-load.php') ) {
die("WordPress not installed here");
}
//make sure the files are loaded
if (!defined('RSSSL_DOING_SYSTEM_STATUS')) define( 'RSSSL_DOING_SYSTEM_STATUS' , true);
define('RSSSL_LEARNING_MODE', true);
# Load WordPress Core
require_once( BASE_PATH . 'wp-load.php' );
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
rsssl_run_force_deactivate();
function rsssl_run_force_deactivate() {
$core_plugin = 'really-simple-ssl/rlrsssl-really-simple-ssl.php';
if ( ! is_plugin_active( $core_plugin ) ) {
echo "<h1>Really Simple Security is already deactivated!</h1>";
exit;
}
$step = 1;
echo "<h1>Force deactivation of Really Simple Security</h1>";
echo $step . ". Resetting options" . "<br>";
//ensure we can run the code
define( 'WP_CLI',true );
RSSSL()->admin->deactivate();
$step ++;
echo $step . ". Deactivating plugin" . "<br>";
rl_deactivate_plugin( RSSSL()->admin->plugin_dir . "/"
. RSSSL()->admin->plugin_filename );
$step ++;
echo $step . ". Completed<b>";
rename('force-deactivate.php' , 'force-deactivate.txt');
}
function rl_remove_plugin_from_array( $plugin, $current ) {
$key = array_search( $plugin, $current );
if ( false !== $key ) {
unset( $current[ $key ] );
}
return $current;
}
function rl_deactivate_plugin( $plugin ) {
$plugin = plugin_basename( trim( $plugin ) );
if ( is_multisite() ) {
$network_current = get_site_option( 'active_sitewide_plugins', array() );
if ( is_plugin_active_for_network( $plugin ) ) {
unset( $network_current[ $plugin ] );
}
update_site_option( 'active_sitewide_plugins', $network_current );
//remove plugin one by one on each site
$args = array(
'public' => 1,
);
$sites = get_sites($args);
foreach ( $sites as $site ) {
switch_to_blog($site->blog_id);
$current = get_option( 'active_plugins', array() );
$current = rl_remove_plugin_from_array( $plugin, $current );
update_option( 'active_plugins', $current );
restore_current_blog(); //switches back to previous blog, not current, so we have to do it each loop
}
} else {
$current = get_option( 'active_plugins', array() );
$current = rl_remove_plugin_from_array( $plugin, $current );
update_option( 'active_plugins', $current );
}
update_option( 'active_plugins', $current );
}
/**
* Helper function to find Wordpress base path.
*/
function find_wordpress_base_path()
{
$path = __DIR__;
do {
if (file_exists($path . "/wp-config.php")) {
//check if the wp-load.php file exists here. If not, we assume it's in a subdir.
if ( file_exists( $path . '/wp-load.php') ) {
return $path;
} else {
//wp not in this directory. Look in each folder to see if it's there.
if ( file_exists( $path ) && $handle = opendir( $path ) ) {
while ( false !== ( $file = readdir( $handle ) ) ) {
if ( $file != "." && $file != ".." ) {
$file = $path .'/' . $file;
if ( is_dir( $file ) && file_exists( $file . '/wp-load.php') ) {
$path = $file;
break;
}
}
}
closedir( $handle );
}
}
return $path;
}
} while ($path = realpath("$path/.."));
return false;
}
?>
</body>
</html>