WordPress.org

Make WordPress Core

Ticket #4176: reactivate-plugins.2.diff

File reactivate-plugins.2.diff, 5.6 KB (added by DD32, 8 years ago)

Reactivate All Plugins against 2.3beta

  • wp-admin/plugins.php

     
    1111                if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) ) 
    1212                        wp_die(__('Plugin file does not exist.')); 
    1313                if (!in_array($plugin, $current)) { 
    14                         wp_redirect('plugins.php?error=true'); // we'll override this later if the plugin can be included without fatal error 
     14                        wp_redirect('plugins.php?error=true&plugin='.urlencode($plugin)); // we'll override this later if the plugin can be included without fatal error 
    1515                        ob_start(); 
    1616                        @include(ABSPATH . PLUGINDIR . '/' . $plugin); 
    1717                        $current[] = $plugin; 
     
    2121                        ob_end_clean(); 
    2222                } 
    2323                wp_redirect('plugins.php?activate=true'); // overrides the ?error=true one above 
    24         } else if ('deactivate' == $_GET['action']) { 
     24        } elseif ('deactivate' == $_GET['action']) { 
    2525                check_admin_referer('deactivate-plugin_' . $_GET['plugin']); 
    2626                $current = get_option('active_plugins'); 
    2727                array_splice($current, array_search( $_GET['plugin'], $current), 1 ); // Array-fu! 
    2828                update_option('active_plugins', $current); 
    2929                do_action('deactivate_' . trim( $_GET['plugin'] )); 
    3030                wp_redirect('plugins.php?deactivate=true'); 
    31         } elseif ($_GET['action'] == 'deactivate-all') { 
     31        } elseif ('deactivate-all' == $_GET['action']) { 
    3232                check_admin_referer('deactivate-all'); 
    3333                $current = get_option('active_plugins'); 
    3434                 
    3535                foreach ($current as $plugin) { 
    36                         array_splice($current, array_search($plugin, $current), 1); 
    3736                        do_action('deactivate_' . $plugin); 
    3837                } 
    3938                 
    4039                update_option('active_plugins', array()); 
     40                update_option('deactivated_plugins', $current); 
    4141                wp_redirect('plugins.php?deactivate-all=true'); 
     42        } elseif ('reactivate-all' == $_GET['action']) { 
     43                check_admin_referer('reactivate-all'); 
     44                $prev_plugins = get_option('deactivated_plugins'); 
     45                $current = array(); 
     46                $errors = array(); 
     47                 
     48                // We'll keep track of errors in the $errors array, 
     49                // and report them after we're done. 
     50                foreach ($prev_plugins as $plugin) { 
     51                        if ( validate_file($plugin) ) 
     52                                $errors[$plugin] = __('Invalid plugin.'); 
     53                        elseif ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) ) 
     54                                $errors[$plugin] = __('Plugin file does not exist.'); 
     55                        elseif (!in_array($plugin, $current)) { 
     56                                // A fatal error in any one plugin means NO 
     57                                // plugins will be reactivated. Sorry, but that's 
     58                                // just the way it is. :-/ 
     59                                wp_redirect('plugins.php?error=true&plugin='.urlencode($plugin)); // we'll override this later if the plugin can be included without fatal error 
     60                                $errors[$plugin] = __('Plugin generated a fatal error.'); // we'll override this later if the plugin can be included without fatal error 
     61                                ob_start(); 
     62                                @include(ABSPATH . PLUGINDIR . '/' . $plugin); 
     63                                $current[] = $plugin; 
     64                                do_action('activate_' . $plugin); 
     65                                unset($errors[$plugin]); 
     66                                ob_end_clean(); 
     67                        } 
     68                } 
     69                 
     70                sort($current); 
     71                 
     72                update_option('deactivated_plugins', array()); 
     73                update_option('active_plugins', $current); 
     74                update_option('problem_plugins', $errors); 
     75                wp_redirect('plugins.php?reactivate-all=true'); // overrides the ?error=true one above 
     76         
    4277        } 
    4378        exit; 
    4479} 
     
    73108?> 
    74109 
    75110<?php if ( isset($_GET['error']) ) : ?> 
    76         <div id="message" class="updated fade"><p><?php _e('Plugin could not be activated because it triggered a <strong>fatal error</strong>.') ?></p></div> 
     111        <?php  
     112        $plugin = $_GET['plugin']; 
     113        $plugin = wp_specialchars($plugin); 
     114        ?> 
     115        <div id="message" class="updated fade"><p><?php _e('Plugin could not be activated because it triggered a <strong>fatal error</strong>. ('. $plugin . ')') ?></p></div> 
    77116<?php elseif ( isset($_GET['activate']) ) : ?> 
    78117        <div id="message" class="updated fade"><p><?php _e('Plugin <strong>activated</strong>.') ?></p></div> 
    79118<?php elseif ( isset($_GET['deactivate']) ) : ?> 
    80119        <div id="message" class="updated fade"><p><?php _e('Plugin <strong>deactivated</strong>.') ?></p></div> 
    81120<?php elseif (isset($_GET['deactivate-all'])) : ?> 
    82121        <div id="message" class="updated fade"><p><?php _e('All plugins <strong>deactivated</strong>.'); ?></p></div> 
     122<?php elseif (isset($_GET['reactivate-all'])) : ?> 
     123        <div id="message" class="updated fade"> 
     124        <p><?php _e('All plugins <strong>reactivated</strong>.'); ?></p> 
     125<?php 
     126 $errors = get_option('problem_plugins'); 
     127 if (! empty($errors)) { 
     128        // Display any errors: 
     129        ?> 
     130        <p><?php _e('The following plugins generated errors:'); ?></p> 
     131        <ul> 
     132        <?php foreach ($errors as $plugin => $errmsg) { 
     133        ?> 
     134        <li><?php echo $plugin . ': ' . $errmsg ?></li> 
     135        <?php 
     136        } 
     137        ?> 
     138        </ul> 
     139        <?php 
     140 } 
     141?> 
     142        </div> 
    83143<?php endif; ?> 
    84144 
    85145<div class="wrap"> 
     
    152212 
    153213<tr> 
    154214        <td colspan="3">&nbsp;</td> 
    155         <td colspan="2" style="width:12em;"><a href="<?php echo wp_nonce_url('plugins.php?action=deactivate-all', 'deactivate-all'); ?>" class="delete"><?php _e('Deactivate All Plugins'); ?></a></td> 
     215        <td colspan="2" style="width:12em;"> 
     216        <?php  
     217        $active = get_option('active_plugins'); 
     218        $inactive = get_option('deactivated_plugins'); 
     219        if (!empty($active)) { 
     220        ?> 
     221        <a href="<?php echo wp_nonce_url('plugins.php?action=deactivate-all', 'deactivate-all'); ?>" class="delete"><?php _e('Deactivate All Plugins'); ?></a> 
     222        <?php  
     223        } elseif (empty($active) && !empty($inactive)) { 
     224        ?> 
     225        <a href="<?php echo wp_nonce_url('plugins.php?action=reactivate-all', 'reactivate-all'); ?>" class="delete"><?php _e('Reactivate All Plugins'); ?></a> 
     226        <?php 
     227        } // endif active/inactive plugin check 
     228        ?> 
     229        </td> 
    156230</tr> 
    157231 
    158232</table>