summaryrefslogtreecommitdiffstats
path: root/wp-admin/includes/plugin.php
diff options
context:
space:
mode:
authordonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2007-10-23 18:28:40 +0000
committerdonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2007-10-23 18:28:40 +0000
commit87bb8cd69cc593fe6bed330fb1791eac9df87167 (patch)
tree6b2ad252df89d2a1863198fd44b321b59e42ef54 /wp-admin/includes/plugin.php
parent0cbda3349a2571904ea063fdd73e018299919589 (diff)
downloadwordpress-mu-87bb8cd69cc593fe6bed330fb1791eac9df87167.tar.gz
wordpress-mu-87bb8cd69cc593fe6bed330fb1791eac9df87167.tar.xz
wordpress-mu-87bb8cd69cc593fe6bed330fb1791eac9df87167.zip
Merge with WordPress, rev 6285 and untested
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@1125 7be80a69-a1ef-0310-a953-fb0f7c49ff36
Diffstat (limited to 'wp-admin/includes/plugin.php')
-rw-r--r--wp-admin/includes/plugin.php42
1 files changed, 42 insertions, 0 deletions
diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php
index e5911bd..3c4f474 100644
--- a/wp-admin/includes/plugin.php
+++ b/wp-admin/includes/plugin.php
@@ -86,6 +86,48 @@ function get_plugins() {
return $wp_plugins;
}
+function activate_plugin($plugin) {
+ $current = get_option('active_plugins');
+ $plugin = trim($plugin);
+
+ if ( validate_file($plugin) )
+ return new WP_Error('plugin_invalid', __('Invalid plugin.'));
+ if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) )
+ return new WP_Error('plugin_not_found', __('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();
+ }
+
+ return null;
+}
+
+function deactivate_plugins($plugins) {
+ $current = get_option('active_plugins');
+
+ if(!is_array($plugins))
+ $plugins = array($plugins);
+
+ foreach($plugins as $plugin) {
+ array_splice($current, array_search( $plugin, $current), 1 ); // Array-fu!
+ do_action('deactivate_' . trim( $plugin ));
+ }
+
+ update_option('active_plugins', $current);
+}
+
+function deactivate_all_plugins() {
+ $current = get_option('active_plugins');
+ deactivate_plugins($current);
+}
+
//
// Menu
//