diff options
| author | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2007-10-23 18:28:40 +0000 |
|---|---|---|
| committer | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2007-10-23 18:28:40 +0000 |
| commit | 87bb8cd69cc593fe6bed330fb1791eac9df87167 (patch) | |
| tree | 6b2ad252df89d2a1863198fd44b321b59e42ef54 /wp-admin/includes/plugin.php | |
| parent | 0cbda3349a2571904ea063fdd73e018299919589 (diff) | |
| download | wordpress-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.php | 42 |
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 // |
