Make WordPress Core

Changeset 11474


Ignore:
Timestamp:
05/28/2009 11:02:16 AM (16 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.