Changeset 6259

Show
Ignore:
Timestamp:
10/17/07 17:14:58 (1 year ago)
Author:
ryan
Message:

activate_plugin(), deactivate_plugins(), and deactivate_all_plugins() from Quandary. fixes #5210

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-admin/includes/plugin.php

    r6026 r6259  
    8787} 
    8888 
     89function activate_plugin($plugin) { 
     90        $current = get_option('active_plugins'); 
     91        $plugin = trim($plugin); 
     92 
     93        if ( validate_file($plugin) ) 
     94            return new WP_Error('plugin_invalid', __('Invalid plugin.')); 
     95        if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) ) 
     96            return new WP_Error('plugin_not_found', __('Plugin file does not exist.')); 
     97 
     98        if (!in_array($plugin, $current)) { 
     99            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 
     100            ob_start(); 
     101            @include(ABSPATH . PLUGINDIR . '/' . $plugin); 
     102            $current[] = $plugin; 
     103            sort($current); 
     104            update_option('active_plugins', $current); 
     105            do_action('activate_' . $plugin); 
     106            ob_end_clean(); 
     107        } 
     108 
     109        return null; 
     110} 
     111 
     112function deactivate_plugins($plugins) { 
     113    $current = get_option('active_plugins'); 
     114 
     115    if(!is_array($plugins)) 
     116        $plugins = array($plugins); 
     117 
     118    foreach($plugins as $plugin) { 
     119        array_splice($current, array_search( $plugin, $current), 1 ); // Array-fu! 
     120        do_action('deactivate_' . trim( $plugin )); 
     121    } 
     122 
     123    update_option('active_plugins', $current); 
     124} 
     125 
     126function deactivate_all_plugins() { 
     127    $current = get_option('active_plugins'); 
     128    deactivate_plugins($current); 
     129} 
     130 
    89131// 
    90132// Menu 
  • trunk/wp-admin/plugins.php

    r6060 r6259  
    55    if ('activate' == $_GET['action']) { 
    66        check_admin_referer('activate-plugin_' . $_GET['plugin']); 
    7         $current = get_option('active_plugins'); 
    8         $plugin = trim($_GET['plugin']); 
    9         if ( validate_file($plugin) ) 
    10             wp_die(__('Invalid plugin.')); 
    11         if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) ) 
    12             wp_die(__('Plugin file does not exist.')); 
    13         if (!in_array($plugin, $current)) { 
    14             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 
    15             ob_start(); 
    16             @include(ABSPATH . PLUGINDIR . '/' . $plugin); 
    17             $current[] = $plugin; 
    18             sort($current); 
    19             update_option('active_plugins', $current); 
    20             do_action('activate_' . $plugin); 
    21             ob_end_clean(); 
    22         } 
     7        $result = activate_plugin($_GET['plugin']); 
     8        if( is_wp_error( $result ) ) 
     9            wp_die( $result->get_error_message() ); 
    2310        wp_redirect('plugins.php?activate=true'); // overrides the ?error=true one above 
    2411    } elseif ('error_scrape' == $_GET['action']) { 
     
    3219    } elseif ('deactivate' == $_GET['action']) { 
    3320        check_admin_referer('deactivate-plugin_' . $_GET['plugin']); 
    34         $current = get_option('active_plugins'); 
    35         array_splice($current, array_search( $_GET['plugin'], $current), 1 ); // Array-fu! 
    36         update_option('active_plugins', $current); 
    37         do_action('deactivate_' . trim( $_GET['plugin'] )); 
     21        deactivate_plugins($_GET['plugin']); 
    3822        wp_redirect('plugins.php?deactivate=true'); 
    3923    } elseif ($_GET['action'] == 'deactivate-all') { 
    4024        check_admin_referer('deactivate-all'); 
    41         $current = get_option('active_plugins'); 
    42  
    43         foreach ($current as $plugin) { 
    44             array_splice($current, array_search($plugin, $current), 1); 
    45             do_action('deactivate_' . $plugin); 
    46         } 
    47  
    48         update_option('active_plugins', array()); 
     25        deactivate_all_plugins(); 
    4926        wp_redirect('plugins.php?deactivate-all=true'); 
    5027    }