WordPress.org

Make WordPress Core

Changeset 8095


Ignore:
Timestamp:
06/16/08 18:35:48 (6 years ago)
Author:
ryan
Message:

Delete plugin confirmation from DD32. see #7091

Location:
trunk/wp-admin
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/file.php

    r8053 r8095  
    4141 
    4242    return $real_file; 
     43} 
     44//$folder = Full path to folder 
     45//$levels = Levels of folders to follow, Default: 100 (PHP Loop limit) 
     46function list_files( $folder = '', $levels = 100 ) { 
     47    if( empty($folder) ) 
     48        return false; 
     49 
     50    if( ! $levels ) 
     51        return false; 
     52 
     53    $files = array(); 
     54    if ( $dir = @opendir( $folder ) ) { 
     55        while (($file = readdir( $dir ) ) !== false ) { 
     56            if ( in_array($file, array('.', '..') ) ) 
     57                continue; 
     58            if ( is_dir( $folder . '/' . $file ) ) { 
     59                $files2 = list_files( $folder . '/' . $file, $levels - 1); 
     60                if( $files2 ) 
     61                    $files = array_merge($files, $files2 ); 
     62                else 
     63                    $files[] = $folder . '/' . $file . '/'; 
     64            } else { 
     65                $files[] = $folder . '/' . $file; 
     66            } 
     67        } 
     68    } 
     69    @closedir( $dir ); 
     70    return $files; 
    4371} 
    4472 
  • trunk/wp-admin/includes/plugin.php

    r8068 r8095  
    137137} 
    138138 
    139 //Replaces reactivate_all_plugins() / deactivate_all_plugins()  = 'deactivated_plugins' is now useless 
    140139function activate_plugins($plugins, $redirect = '') { 
    141140    if ( !is_array($plugins) ) 
     
    168167 
    169168    ob_start(); 
    170     $url = wp_nonce_url('plugins.php?action=delete-selected&' . implode('&', $checked), 'mass-manage-plugins'); 
     169    $url = wp_nonce_url('plugins.php?action=delete-selected&verify-delete=1&' . implode('&', $checked), 'bulk-manage-plugins'); 
    171170    if ( false === ($credentials = request_filesystem_credentials($url)) ) { 
    172171        $data = ob_get_contents(); 
     
    244243    // plugins. 
    245244    foreach ( $check_plugins as $check_plugin ) { 
    246         if ( !file_exists(WP_PLUGIN_DIR . '/' . $check_plugin) ) { 
    247             $current = get_option('active_plugins'); 
    248             $key = array_search($check_plugin, $current); 
    249             if ( false !== $key && NULL !== $key ) { 
    250                 unset($current[$key]); 
    251                 update_option('active_plugins', $current); 
    252             } 
     245        $result = validate_plugin($check_plugin); 
     246        if ( is_wp_error( $result ) ) { 
     247            deactivate_plugins( $check_plugin, true); 
    253248        } 
    254249    } 
  • trunk/wp-admin/plugins.php

    r8068 r8095  
    3131            break; 
    3232        case 'activate-selected': 
    33             check_admin_referer('mass-manage-plugins'); 
     33            check_admin_referer('bulk-manage-plugins'); 
    3434            activate_plugins($_POST['checked'], 'plugins.php?error=true'); 
    3535 
     
    6363            break; 
    6464        case 'deactivate-selected': 
    65             check_admin_referer('mass-manage-plugins'); 
     65            check_admin_referer('bulk-manage-plugins'); 
    6666            deactivate_plugins($_POST['checked']); 
    6767            $deactivated = array(); 
     
    7575            if( ! current_user_can('delete_plugins') ) 
    7676                wp_die(__('You do not have sufficient permissions to delete plugins for this blog.')); 
    77             check_admin_referer('mass-manage-plugins'); 
    78             $plugins = $_REQUEST['checked']; 
     77             
     78            check_admin_referer('bulk-manage-plugins'); 
     79             
     80            $plugins = $_REQUEST['checked']; //$_POST = from the plugin form; $_GET = from the FTP details screen. 
    7981            include(ABSPATH . 'wp-admin/update.php'); 
    8082 
    8183            $title = __('Delete Plugin'); 
    8284            $parent_file = 'plugins.php'; 
    83  
     85             
     86            if( ! isset($_REQUEST['verify-delete']) ) { 
     87                wp_enqueue_script('jquery'); 
     88                require_once('admin-header.php'); 
     89                ?> 
     90            <div class="wrap"> 
     91                <h2><?php _e('Delete Plugin(s)'); ?></h2>        
     92                <?php 
     93                    $files_to_delete = $plugin_info = array(); 
     94                    foreach( (array) $plugins as $plugin ) { 
     95                        if( '.' == dirname($plugin) ) { 
     96                            $files_to_delete[] = WP_PLUGIN_DIR . '/' . $plugin; 
     97                            if( $data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin) ) 
     98                                $plugin_info[ $plugin ] = $data; 
     99                        } else { 
     100                            //Locate all the files in that folder: 
     101                            $files = list_files( WP_PLUGIN_DIR . '/' . dirname($plugin) ); 
     102                            if( $files ) { 
     103                                $files_to_delete = array_merge($files_to_delete, $files); 
     104                            } 
     105                            //Get plugins list from that folder 
     106                            if ( $folder_plugins = get_plugins( '/' . dirname($plugin)) ) 
     107                                $plugin_info = array_merge($plugin_info, $folder_plugins); 
     108                        } 
     109                    } 
     110                ?> 
     111                <p><?php _e('Deleting the selected plugins will remove the following plugin(s) and their files:'); ?></p> 
     112                <p> 
     113                    <ul> 
     114                        <?php  
     115                        foreach( $plugin_info as $plugin ) 
     116                            echo '<li>', $plugin['Title'], ' ', __('By'), ' ', $plugin['Author'], '</li>'; 
     117                        ?> 
     118                    </ul> 
     119                </p> 
     120                <p><?php _e('Are you sure you wish to delete these files?') ?></p> 
     121                <form method="post" action="<?php echo clean_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;"> 
     122                    <input type="hidden" name="verify-delete" value="1" /> 
     123                    <input type="hidden" name="delete-selected" value="1" /> 
     124                    <?php 
     125                        foreach( (array)$plugins as $plugin ) { 
     126                            $plugin = attribute_escape($plugin); 
     127                            echo "<input type='hidden' name='checked[]' value='$plugin' />"; 
     128                        } 
     129                    ?> 
     130                    <?php wp_nonce_field('bulk-manage-plugins') ?> 
     131                    <input type="submit" name="submit" value="<?php _e('Yes, Delete these files') ?>" class="button" /> 
     132                </form> 
     133                <form method="post" action="<?php echo clean_url(wp_get_referer()); ?>" style="display:inline;"> 
     134                    <input type="submit" name="submit" value="<?php _e('No, Return me to the plugin list') ?>" class="button" /> 
     135                </form> 
     136 
     137                <p><a href="#" onclick="jQuery('#files-list').toggle(); return false;"><?php _e('Click to view entire list of files which will be deleted'); ?></a></p> 
     138                <div id="files-list" style="display:none;"> 
     139                    <ul> 
     140                    <?php 
     141                        foreach( (array)$files_to_delete as $file ) { 
     142                            $file = str_replace(ABSPATH, '', $file); 
     143                            echo "<li>$file</li>"; 
     144                        } 
     145                    ?> 
     146                    </ul> 
     147                </div>               
     148            </div> 
     149                <?php 
     150                require_once('admin-footer.php'); 
     151                exit; 
     152            } 
    84153            $delete_result = delete_plugins($plugins); 
    85154 
     
    87156 
    88157            break; 
    89         default: 
    90             var_dump("Unknown Action $action"); 
    91158    } 
    92159} 
     
    225292<h3 id="currently-active"><?php _e('Currently Active Plugins') ?></h3> 
    226293<form method="post" action="<?php echo admin_url('plugins.php') ?>"> 
    227 <?php wp_nonce_field('mass-manage-plugins') ?> 
     294<?php wp_nonce_field('bulk-manage-plugins') ?> 
    228295 
    229296<div class="tablenav"> 
     
    241308<h3 id="recent-plugins"><?php _e('Recently Active Plugins') ?></h3> 
    242309<form method="post" action="<?php echo admin_url('plugins.php') ?>"> 
    243 <?php wp_nonce_field('mass-manage-plugins') ?> 
     310<?php wp_nonce_field('bulk-manage-plugins') ?> 
    244311 
    245312<div class="tablenav"> 
     
    258325<h3 id="available-plugins"><?php _e('Available Plugins') ?></h3> 
    259326<form method="post" action="<?php echo admin_url('plugins.php') ?>"> 
    260 <?php wp_nonce_field('mass-manage-plugins') ?> 
    261  
     327<?php wp_nonce_field('bulk-manage-plugins') ?> 
     328 
     329<?php if ( ! empty($available_plugins) ) : ?> 
    262330<div class="tablenav"> 
    263331    <div class="alignleft"> 
     
    271339<?php print_plugins_table($available_plugins, 'available') ?> 
    272340</form> 
     341<?php endif; ?> 
    273342 
    274343<h2><?php _e('Get More Plugins'); ?></h2> 
Note: See TracChangeset for help on using the changeset viewer.