Changeset 1361

Show
Ignore:
Timestamp:
07/09/08 19:27:00 (5 months ago)
Author:
donncha
Message:

Allow posts to be transfered to different users before deleting users, fixes #668

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-admin/includes/mu.php

    r1351 r1361  
    126126 
    127127        return true; 
     128} 
     129 
     130function confirm_delete_users( $users ) { 
     131        if( !is_array( $users ) ) 
     132                return; 
     133        echo '<p>Transfer posts before deleting users:</p>'; 
     134        echo '<form action="wpmu-edit.php?action=allusers" method="post">'; 
     135        echo '<input type="hidden" name="alluser_transfer_delete" />'; 
     136        wp_nonce_field( 'allusers' ); 
     137        foreach ( (array) $_POST['allusers'] as $key => $val ) { 
     138                if( $val != '' && $val != '0' && $val != '1' ) { 
     139                        $blogs = get_blogs_of_user( $val, true ); 
     140                        foreach ( (array) $blogs as $key => $details ) { 
     141                                $blog_users = get_users_of_blog( $details->userblog_id ); 
     142                                if( is_array( $blog_users ) && !empty( $blog_users ) ) { 
     143                                        echo "<p><a href='http://{$details->domain}{$details->path}'>{$details->blogname}</a> "; 
     144                                        echo "<select name='blog[$val][{$key}]'>"; 
     145                                        $out = ''; 
     146                                        foreach( $blog_users as $user ) { 
     147                                                if( $user->user_id != $val ) 
     148                                                        $out .= "<option value='{$user->user_id}'> {$user->user_login}"; 
     149                                        } 
     150                                        if( $out == '' ) 
     151                                                $out = "<option value='1'> admin"; 
     152                                        echo $out; 
     153                                        echo "</select>\n"; 
     154                                } 
     155                        } 
     156                } 
     157        } 
     158        echo "<br /><input type='submit' value='Delete user and transfer posts' />"; 
     159        echo "</form>"; 
    128160} 
    129161 
  • trunk/wp-admin/wpmu-edit.php

    r1303 r1361  
    402402        case "allusers": 
    403403                check_admin_referer('allusers'); 
     404                if ( isset($_POST['alluser_delete']) ) { 
     405                        require_once('admin-header.php'); 
     406                        echo '<div class="wrap" style="position:relative;">'; 
     407                        confirm_delete_users( $_POST['allusers'] ); 
     408                        echo '</div>'; 
     409                } elseif( isset( $_POST[ 'alluser_transfer_delete' ] ) ) { 
     410                        if( is_array( $_POST[ 'blog' ] ) && !empty( $_POST[ 'blog' ] ) ) { 
     411                                foreach( $_POST[ 'blog' ] as $id => $users ) { 
     412                                        foreach( $users as $blogid => $user_id ) { 
     413                                                $wpdb->query( "UPDATE {$wpdb->base_prefix}{$blogid}_posts SET post_author = '{$user_id}' WHERE post_author = '{$id}'" ); 
     414                                        } 
     415                                        wpmu_delete_user( $id ); 
     416                                } 
     417                        } 
     418                        wp_redirect( add_query_arg( array('updated' => 'true', 'action' => 'all_delete'), 'wpmu-users.php' ) ); 
     419                } else { 
    404420                foreach ( (array) $_POST['allusers'] as $key => $val ) { 
    405421                        if( $val != '' && $val != '0' && $val != '1' ) { 
    406422                                $user_details = get_userdata( $val ); 
    407                                 if ( isset($_POST['alluser_delete']) ) { 
    408                                         wpmu_delete_user($val); 
    409                                         $userfunction = 'all_delete'; 
    410                                 } elseif ( isset($_POST['alluser_spam']) ) { 
     423                                if ( isset($_POST['alluser_spam']) ) { 
    411424                                        $userfunction = 'all_spam'; 
    412425                                        $blogs = get_blogs_of_user( $val, true ); 
     
    428441                } 
    429442                wp_redirect( add_query_arg( array('updated' => 'true', 'action' => $userfunction), $_SERVER['HTTP_REFERER'] ) ); 
     443                } 
    430444                exit(); 
    431445        break;