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

File 20578-delete-files-or-both.patch, 4.5 KB (added by kurtpayne, 11 months 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) );