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'); +} ?>
@@ -18,17 +50,9 @@ if ($plugins_dir) { } if ('' != trim(get_settings('active_plugins'))) { - $current_plugins = unserialize(get_settings('active_plugins')); + $current_plugins = explode("\n", (get_settings('active_plugins'))); } -/* -Plugin Name: matt's cool plugin -Plugin URI: http://photomatt.net/plugins/cool-plugin -Description: blah blah blah anything until a newline -Author: photo matt -Author URI: http://photomatt.net -*/ - if (!$plugins_dir || !$plugin_files) { echo "

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 " $plugin $author $description - activate + $action "; } ?> diff --git a/wp-settings.php b/wp-settings.php index 49b75d1178..4f83cf3062 100644 --- a/wp-settings.php +++ b/wp-settings.php @@ -68,6 +68,12 @@ if (get_settings('hack_file')) { require(ABSPATH . '/my-hacks.php'); } +if (!strstr($_SERVER['REQUEST_URI'], 'wp-admin/plugins.php') && get_settings('active_plugins')) { + $current_plugins = explode("\n", (get_settings('active_plugins'))); + foreach ($current_plugins as $plugin) { + if (file_exists(ABSPATH . 'wp-content/plugins/' . $plugin)) + include(ABSPATH . 'wp-content/plugins/' . $plugin); + } +} - -?> +?> \ No newline at end of file