WordPress.org

Make WordPress Core

Ticket #20578: 20578-delete-files-or-both.patch

File 20578-delete-files-or-both.patch, 4.5 KB (added by kurtpayne, 8 years ago)

Separate buttons for delete files and delete files + data

  • wp-admin/plugins.php

     
    197197                        exit;
    198198                        break;
    199199                case 'delete-selected':
     200                case 'delete-selected-no-uninstall':
    200201                        if ( ! current_user_can('delete_plugins') )
    201202                                wp_die(__('You do not have sufficient permissions to delete plugins for this site.'));
    202203
     
    282283                                else
    283284                                        _e('Are you sure you wish to delete these files?');
    284285                                ?></p>
    285                                 <form method="post" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
    286                                         <input type="hidden" name="verify-delete" value="1" />
    287                                         <input type="hidden" name="action" value="delete-selected" />
    288                                         <?php
    289                                                 foreach ( (array) $plugins as $plugin )
    290                                                         echo '<input type="hidden" name="checked[]" value="' . esc_attr($plugin) . '" />';
    291                                         ?>
    292                                         <?php wp_nonce_field('bulk-plugins') ?>
    293                                         <?php submit_button( $data_to_delete ? __( 'Yes, Delete these files and data' ) : __( 'Yes, Delete these files' ), 'button', 'submit', false ); ?>
    294                                 </form>
     286                                <?php if ( $data_to_delete  ) : ?>
     287                                        <form method="post" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
     288                                                <input type="hidden" name="verify-delete" value="1" />
     289                                                <input type="hidden" name="action" value="delete-selected" />
     290                                                <?php
     291                                                        foreach ( (array) $plugins as $plugin )
     292                                                                echo '<input type="hidden" name="checked[]" value="' . esc_attr($plugin) . '" />';
     293                                                ?>
     294                                                <?php wp_nonce_field('bulk-plugins') ?>
     295                                                <?php submit_button( __( 'Yes, Delete these files and data' ) , 'button', 'submit', false ); ?>
     296                                        </form>
     297                                        <form method="post" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
     298                                                <input type="hidden" name="verify-delete" value="1" />
     299                                                <input type="hidden" name="action" value="delete-selected-no-uninstall" />
     300                                                <?php
     301                                                        foreach ( (array) $plugins as $plugin )
     302                                                                echo '<input type="hidden" name="checked[]" value="' . esc_attr($plugin) . '" />';
     303                                                ?>
     304                                                <?php wp_nonce_field('bulk-plugins') ?>
     305                                                <?php submit_button( __( 'Yes, Delete only the files' ) , 'button', 'submit', false ); ?>
     306                                        </form>
     307                                <?php else : ?>
     308                                        <form method="post" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
     309                                                <input type="hidden" name="verify-delete" value="1" />
     310                                                <input type="hidden" name="action" value="delete-selected" />
     311                                                <?php
     312                                                        foreach ( (array) $plugins as $plugin )
     313                                                                echo '<input type="hidden" name="checked[]" value="' . esc_attr($plugin) . '" />';
     314                                                ?>
     315                                                <?php wp_nonce_field('bulk-plugins') ?>
     316                                                <?php submit_button( __( 'Yes, Delete these files' ), 'button', 'submit', false ); ?>
     317                                        </form>
     318                                <?php endif; ?>                         
    295319                                <form method="post" action="<?php echo esc_url(wp_get_referer()); ?>" style="display:inline;">
    296320                                        <?php submit_button( __( 'No, Return me to the plugin list' ), 'button', 'submit', false ); ?>
    297321                                </form>
     
    310334                                require_once(ABSPATH . 'wp-admin/admin-footer.php');
    311335                                exit;
    312336                        } //Endif verify-delete
    313                         $delete_result = delete_plugins($plugins);
     337                        $delete_result = delete_plugins($plugins, '', ( 'delete-selected' == $action ) );
    314338
    315339                        set_transient('plugins_delete_result_' . $user_ID, $delete_result); //Store the result in a cache rather than a URL param due to object type & length
    316340                        wp_redirect( self_admin_url("plugins.php?deleted=true&plugin_status=$status&paged=$page&s=$s") );
  • wp-admin/includes/plugin.php

     
    666666 *
    667667 * @param array $plugins List of plugin
    668668 * @param string $redirect Redirect to page when complete.
     669 * @param bool $run_uninstall Should the plugin's uninstall routine be run?
    669670 * @return mixed
    670671 */
    671 function delete_plugins($plugins, $redirect = '' ) {
     672function delete_plugins($plugins, $redirect = '', $run_uninstall = true ) {
    672673        global $wp_filesystem;
    673674
    674675        if ( empty($plugins) )
     
    722723
    723724        foreach( $plugins as $plugin_file ) {
    724725                // Run Uninstall hook
    725                 if ( is_uninstallable_plugin( $plugin_file ) )
     726                if ( $run_uninstall && is_uninstallable_plugin( $plugin_file ) )
    726727                        uninstall_plugin($plugin_file);
    727728
    728729                $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin_file) );