summaryrefslogtreecommitdiffstats
path: root/wp-admin/plugins.php
diff options
context:
space:
mode:
authordonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2007-10-30 16:49:38 +0000
committerdonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2007-10-30 16:49:38 +0000
commitd85d717aedbc7690e2a450e40dab8fcebd94b38c (patch)
treea7340a14bb1192e977fca4f26beef29869e17579 /wp-admin/plugins.php
parent9817ff2d282c68faaa09232845829b96f207e72b (diff)
downloadwordpress-mu-d85d717aedbc7690e2a450e40dab8fcebd94b38c.tar.gz
wordpress-mu-d85d717aedbc7690e2a450e40dab8fcebd94b38c.tar.xz
wordpress-mu-d85d717aedbc7690e2a450e40dab8fcebd94b38c.zip
Merge with WordPress 2.3.1
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@1139 7be80a69-a1ef-0310-a953-fb0f7c49ff36
Diffstat (limited to 'wp-admin/plugins.php')
-rw-r--r--wp-admin/plugins.php33
1 files changed, 28 insertions, 5 deletions
diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php
index 5e7bcf2..8593424 100644
--- a/wp-admin/plugins.php
+++ b/wp-admin/plugins.php
@@ -11,9 +11,22 @@ if( $menu_perms[ 'plugins' ] != 1 )
if ( isset($_GET['action']) ) {
if ('activate' == $_GET['action']) {
check_admin_referer('activate-plugin_' . $_GET['plugin']);
- $result = activate_plugin($_GET['plugin']);
- if( is_wp_error( $result ) )
- wp_die( $result->get_error_message() );
+ $current = get_option('active_plugins');
+ $plugin = trim($_GET['plugin']);
+ if ( validate_file($plugin) )
+ wp_die(__('Invalid plugin.'));
+ if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) )
+ wp_die(__('Plugin file does not exist.'));
+ if (!in_array($plugin, $current)) {
+ wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), 'plugins.php?error=true&plugin=' . $plugin)); // we'll override this later if the plugin can be included without fatal error
+ ob_start();
+ @include(ABSPATH . PLUGINDIR . '/' . $plugin);
+ $current[] = $plugin;
+ sort($current);
+ update_option('active_plugins', $current);
+ do_action('activate_' . $plugin);
+ ob_end_clean();
+ }
wp_redirect('plugins.php?activate=true'); // overrides the ?error=true one above
} elseif ('error_scrape' == $_GET['action']) {
$plugin = trim($_GET['plugin']);
@@ -25,11 +38,21 @@ if ( isset($_GET['action']) ) {
include(ABSPATH . PLUGINDIR . '/' . $plugin);
} elseif ('deactivate' == $_GET['action']) {
check_admin_referer('deactivate-plugin_' . $_GET['plugin']);
- deactivate_plugins($_GET['plugin']);
+ $current = get_option('active_plugins');
+ array_splice($current, array_search( $_GET['plugin'], $current), 1 ); // Array-fu!
+ update_option('active_plugins', $current);
+ do_action('deactivate_' . trim( $_GET['plugin'] ));
wp_redirect('plugins.php?deactivate=true');
} elseif ($_GET['action'] == 'deactivate-all') {
check_admin_referer('deactivate-all');
- deactivate_all_plugins();
+ $current = get_option('active_plugins');
+
+ foreach ($current as $plugin) {
+ array_splice($current, array_search($plugin, $current), 1);
+ do_action('deactivate_' . $plugin);
+ }
+
+ update_option('active_plugins', array());
wp_redirect('plugins.php?deactivate-all=true');
}
exit;