diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php index a85c7b85a4..c7d3bdbec8 100644 --- a/wp-admin/plugins.php +++ b/wp-admin/plugins.php @@ -3,8 +3,40 @@ $title = 'Manage Plugins'; require_once('admin-header.php'); -if ($user_level == 0) //Checks to see if user has logged in - die ("Cheatin' uh ?"); +if ($user_level < 9) // Must be at least level 9 + die ("Sorry, you must be at least a level 8 user to modify plugins."); + +// Clean up options +// if any files are in the option that don't exist, axe 'em + +$check_plugins = explode("\n", (get_settings('active_plugins'))); +foreach ($check_plugins as $check_plugin) { + if (!file_exists(ABSPATH . 'wp-content/plugins/' . $check_plugin)) { + $current = get_settings('active_plugins') . "\n"; + $current = str_replace($check_plugin . "\n", '', $current); + $current = preg_replace("|\n+|", "\n", $current); + update_option('active_plugins', trim($current)); + } +} + + +if ('activate' == $_GET['action']) { + $current = "\n" . get_settings('active_plugins') . "\n"; + $current = preg_replace("|(\n)+\s*|", "\n", $current); + $current = trim($current) . "\n " . trim($_GET['plugin']); + $current = trim($current); + $current = preg_replace('|\n\s*|', '\n', $current); // I don't know where this is coming from + update_option('active_plugins', $current); + header('Location: plugins.php'); +} + +if ('deactivate' == $_GET['action']) { + $current = "\n" . get_settings('active_plugins') . "\n"; + $current = str_replace("\n" . $_GET['plugin'], '', $current); + $current = preg_replace("|(\n)+\s*|", "\n", $current); + update_option('active_plugins', trim($current)); + header('Location: plugins.php'); +} ?>
Couldn't open plugins directory or there are no plugins available.
"; // TODO: make more helpful } else { @@ -66,12 +90,18 @@ if (!$plugins_dir || !$plugin_files) { $style = ('class="alternate"' == $style) ? '' : 'class="alternate"'; + + if (!empty($current_plugins) && in_array($plugin_file, $current_plugins)) { + $action = "Deactivate"; + } else { + $action = "Activate"; + } echo "