diff options
author | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2008-07-09 19:27:00 +0000 |
---|---|---|
committer | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2008-07-09 19:27:00 +0000 |
commit | a2e55a4284eaff9de0778805697f82216596b846 (patch) | |
tree | 08782750c18b4fa4ea087b9accb224ea19bd6cf4 | |
parent | 6211685ea85940b5cd34a850f3f1de9d483dd4df (diff) | |
download | wordpress-mu-a2e55a4284eaff9de0778805697f82216596b846.tar.gz wordpress-mu-a2e55a4284eaff9de0778805697f82216596b846.tar.xz wordpress-mu-a2e55a4284eaff9de0778805697f82216596b846.zip |
Allow posts to be transfered to different users before deleting users, fixes #668
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@1361 7be80a69-a1ef-0310-a953-fb0f7c49ff36
-rw-r--r-- | wp-admin/includes/mu.php | 32 | ||||
-rw-r--r-- | wp-admin/wpmu-edit.php | 22 |
2 files changed, 50 insertions, 4 deletions
diff --git a/wp-admin/includes/mu.php b/wp-admin/includes/mu.php index 15cc9c6..746cdcd 100644 --- a/wp-admin/includes/mu.php +++ b/wp-admin/includes/mu.php @@ -127,6 +127,38 @@ function wpmu_delete_user($id) { return true; } +function confirm_delete_users( $users ) { + if( !is_array( $users ) ) + return; + echo '<p>Transfer posts before deleting users:</p>'; + echo '<form action="wpmu-edit.php?action=allusers" method="post">'; + echo '<input type="hidden" name="alluser_transfer_delete" />'; + wp_nonce_field( 'allusers' ); + foreach ( (array) $_POST['allusers'] as $key => $val ) { + if( $val != '' && $val != '0' && $val != '1' ) { + $blogs = get_blogs_of_user( $val, true ); + foreach ( (array) $blogs as $key => $details ) { + $blog_users = get_users_of_blog( $details->userblog_id ); + if( is_array( $blog_users ) && !empty( $blog_users ) ) { + echo "<p><a href='http://{$details->domain}{$details->path}'>{$details->blogname}</a> "; + echo "<select name='blog[$val][{$key}]'>"; + $out = ''; + foreach( $blog_users as $user ) { + if( $user->user_id != $val ) + $out .= "<option value='{$user->user_id}'> {$user->user_login}"; + } + if( $out == '' ) + $out = "<option value='1'> admin"; + echo $out; + echo "</select>\n"; + } + } + } + } + echo "<br /><input type='submit' value='Delete user and transfer posts' />"; + echo "</form>"; +} + function wpmu_get_blog_allowedthemes( $blog_id = 0 ) { $themes = get_themes(); if( $blog_id == 0 ) diff --git a/wp-admin/wpmu-edit.php b/wp-admin/wpmu-edit.php index 5895532..234006c 100644 --- a/wp-admin/wpmu-edit.php +++ b/wp-admin/wpmu-edit.php @@ -401,13 +401,26 @@ switch( $_GET['action'] ) { case "allusers": check_admin_referer('allusers'); + if ( isset($_POST['alluser_delete']) ) { + require_once('admin-header.php'); + echo '<div class="wrap" style="position:relative;">'; + confirm_delete_users( $_POST['allusers'] ); + echo '</div>'; + } elseif( isset( $_POST[ 'alluser_transfer_delete' ] ) ) { + if( is_array( $_POST[ 'blog' ] ) && !empty( $_POST[ 'blog' ] ) ) { + foreach( $_POST[ 'blog' ] as $id => $users ) { + foreach( $users as $blogid => $user_id ) { + $wpdb->query( "UPDATE {$wpdb->base_prefix}{$blogid}_posts SET post_author = '{$user_id}' WHERE post_author = '{$id}'" ); + } + wpmu_delete_user( $id ); + } + } + wp_redirect( add_query_arg( array('updated' => 'true', 'action' => 'all_delete'), 'wpmu-users.php' ) ); + } else { foreach ( (array) $_POST['allusers'] as $key => $val ) { if( $val != '' && $val != '0' && $val != '1' ) { $user_details = get_userdata( $val ); - if ( isset($_POST['alluser_delete']) ) { - wpmu_delete_user($val); - $userfunction = 'all_delete'; - } elseif ( isset($_POST['alluser_spam']) ) { + if ( isset($_POST['alluser_spam']) ) { $userfunction = 'all_spam'; $blogs = get_blogs_of_user( $val, true ); foreach ( (array) $blogs as $key => $details ) { @@ -427,6 +440,7 @@ switch( $_GET['action'] ) { } } wp_redirect( add_query_arg( array('updated' => 'true', 'action' => $userfunction), $_SERVER['HTTP_REFERER'] ) ); + } exit(); break; |