Make WordPress Core

Changeset 11474


Ignore:
Timestamp:
05/28/2009 11:02:16 AM (17 years ago)
Author:
azaozz
Message:

Adds the bulk actions to the bottom of the plugins listing table and other fixes, props dd32, fixes #9838

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/plugins.php

    r11450 r11474  
    1212if ( isset($_POST['clear-recent-list']) )
    1313        $action = 'clear-recent-list';
    14 elseif ( isset($_REQUEST['action']) )
     14elseif ( !empty($_REQUEST['action']) )
    1515        $action = $_REQUEST['action'];
     16elseif ( !empty($_REQUEST['action2']) )
     17        $action = $_REQUEST['action2'];
    1618else
    1719        $action = false;
    … …  
    3739                case 'activate':
    3840                        check_admin_referer('activate-plugin_' . $plugin);
     41
    3942                        $result = activate_plugin($plugin, 'plugins.php?error=true&plugin=' . $plugin);
    4043                        if ( is_wp_error( $result ) )
    4144                                wp_die($result);
     45
    4246                        $recent = (array)get_option('recently_activated');
    4347                        if ( isset($recent[ $plugin ]) ) {
    … …  
    4549                                update_option('recently_activated', $recent);
    4650                        }
     51
    4752                        wp_redirect("plugins.php?activate=true&plugin_status=$status&paged=$page"); // overrides the ?error=true one above
    4853                        exit;
    … …  
    5055                case 'activate-selected':
    5156                        check_admin_referer('bulk-manage-plugins');
    52                         activate_plugins($_POST['checked'], 'plugins.php?error=true');
     57
     58                        $plugins = (array) $_POST['checked'];
     59                        $plugins = array_filter($plugins, create_function('$plugin', 'return !is_plugin_active($plugin);') ); //Only activate plugins which are not already active.
     60                        if ( empty($plugins) ) {
     61                                wp_redirect("plugins.php?plugin_status=$status&paged=$page");
     62                                exit;
     63                        }
     64
     65                        activate_plugins($plugins, 'plugins.php?error=true');
    5366
    5467                        $recent = (array)get_option('recently_activated');
    55                         foreach( (array)$_POST['checked'] as $plugin => $time) {
     68                        foreach ( $plugins as $plugin => $time)
    5669                                if ( isset($recent[ $plugin ]) )
    5770                                        unset($recent[ $plugin ]);
    58                         }
    59                         if( $recent != get_option('recently_activated') ) //If array changed, update it.
    60                                 update_option('recently_activated', $recent);
     71
     72                        update_option('recently_activated', $recent);
    6173
    6274                        wp_redirect("plugins.php?activate-multi=true&plugin_status=$status&paged=$page");
    … …  
    6577                case 'error_scrape':
    6678                        check_admin_referer('plugin-activation-error_' . $plugin);
     79
    6780                        $valid = validate_plugin($plugin);
    6881                        if ( is_wp_error($valid) )
    6982                                wp_die($valid);
     83
    7084                        error_reporting( E_ALL ^ E_NOTICE );
    7185                        @ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
    … …  
    8397                case 'deactivate-selected':
    8498                        check_admin_referer('bulk-manage-plugins');
    85                         deactivate_plugins($_POST['checked']);
     99
     100                        $plugins = (array) $_POST['checked'];
     101                        $plugins = array_filter($plugins, 'is_plugin_active'); //Do not deactivate plugins which are already deactivated.
     102                        if ( empty($plugins) ) {
     103                                wp_redirect("plugins.php?plugin_status=$status&paged=$page");
     104                                exit;
     105                        }
     106
     107                        deactivate_plugins($plugins);
     108
    86109                        $deactivated = array();
    87                         foreach ( (array)$_POST['checked'] as $plugin )
     110                        foreach ( $plugins as $plugin )
    88111                                $deactivated[ $plugin ] = time();
     112
    89113                        update_option('recently_activated', $deactivated + (array)get_option('recently_activated'));
    90114                        wp_redirect("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page");
    … …  
    97121                        check_admin_referer('bulk-manage-plugins');
    98122
    99                         $plugins = $_REQUEST['checked']; //$_POST = from the plugin form; $_GET = from the FTP details screen.
     123                        $plugins = (array) $_REQUEST['checked']; //$_POST = from the plugin form; $_GET = from the FTP details screen.
     124                        $plugins = array_filter($plugins, create_function('$plugin', 'return !is_plugin_active($plugin);') ); //Do not allow to delete Activated plugins.
     125                        if ( empty($plugins) ) {
     126                                wp_redirect("plugins.php?plugin_status=$status&paged=$page");
     127                                exit;
     128                        }
     129
    100130                        include(ABSPATH . 'wp-admin/update.php');
    101131
    … …  
    364394                if ( $is_active )
    365395                        $actions[] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Deactivate') . '</a>';
    366                 else //Inactive or Recently deactivated
     396                else
    367397                        $actions[] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin') . '" class="edit">' . __('Activate') . '</a>';
    368398
    … …  
    386416                <td></td>
    387417                <td class='plugin-title'>";
    388                 $i = 0;
    389418                echo '<div class="row-actions-visible">';
    390419                foreach ( $actions as $action => $link ) {
    391                         ++$i;
    392                         ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
     420                        $sep = end($actions) == $link ? '' : ' | ';
    393421                        echo "<span class='$action'>$link$sep</span>";
    394422                }
    … …  
    404432                        $plugin_meta[] = sprintf( __('By %s'), $author );
    405433                }
    406                 if ( ! empty($plugin_data['PluginURI']) ) {
     434                if ( ! empty($plugin_data['PluginURI']) )
    407435                        $plugin_meta[] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . __( 'Visit plugin site' ) . '">' . __('Visit plugin site') . '</a>';
    408                 }
     436
    409437                $plugin_meta = apply_filters('plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $context);
    410438                echo implode(' | ', $plugin_meta);
    … …  
    426454 * @param string $context
    427455 */
    428 function print_plugin_actions($context) {
     456function print_plugin_actions($context, $field_name = 'action' ) {
    429457?>
    430458        <div class="alignleft actions">
    431                 <select name="action">
     459                <select name="<?php echo $field_name; ?>">
    432460                        <option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
    433461        <?php if ( 'active' != $context ) : ?>
    … …  
    513541if ( $page_links )
    514542        echo "<div class='tablenav-pages'>$page_links_text</div>";
    515 ?>
    516 <div class="alignleft actions">
    517 <!-- TODO lower bulk actions. -->
    518 </div>
     543
     544print_plugin_actions($status, "action2");
     545?>
    519546</div>
    520547</form>
Note: See TracChangeset for help on using the changeset viewer.