summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2008-07-09 19:27:00 +0000
committerdonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2008-07-09 19:27:00 +0000
commita2e55a4284eaff9de0778805697f82216596b846 (patch)
tree08782750c18b4fa4ea087b9accb224ea19bd6cf4
parent6211685ea85940b5cd34a850f3f1de9d483dd4df (diff)
downloadwordpress-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.php32
-rw-r--r--wp-admin/wpmu-edit.php22
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;