Skip to content

Commit d542c24

Browse files
committed
When deleting users, check if user has content, otherwise hide attribution selection.
1 parent 97bd5c1 commit d542c24

File tree

1 file changed

+81
-33
lines changed

1 file changed

+81
-33
lines changed

src/wp-admin/includes/ms.php

Lines changed: 81 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,8 @@ function _thickbox_path_admin_subfolder() {
860860
* @return bool
861861
*/
862862
function confirm_delete_users( $users ) {
863+
global $wpdb;
864+
863865
$current_user = wp_get_current_user();
864866
if ( ! is_array( $users ) || empty( $users ) ) {
865867
return false;
@@ -906,7 +908,6 @@ function confirm_delete_users( $users ) {
906908
);
907909
}
908910

909-
// TODO: Check if user has content.
910911
?>
911912
<tr>
912913
<th scope="row"><?php echo $delete_user->user_login; ?>
@@ -940,43 +941,90 @@ function confirm_delete_users( $users ) {
940941

941942
if ( is_array( $blog_users ) && ! empty( $blog_users ) ) {
942943
$user_site = "<a href='" . esc_url( get_home_url( $details->userblog_id ) ) . "'>{$details->blogname}</a>";
943-
944-
?>
945-
<ul>
946-
<li>
944+
switch_to_blog( $details->userblog_id );
945+
/**
946+
* Filters whether the users being deleted have additional content
947+
* associated with them outside of the `post_author` and `link_owner` relationships.
948+
*
949+
* @since 5.2.0
950+
*
951+
* @param bool $users_have_additional_content Whether the users have additional content. Default false.
952+
* @param int[] $user_ids Array of IDs for users being deleted.
953+
*/
954+
$user_has_content = (bool) apply_filters( 'users_have_additional_content', false, array( $delete_user->ID ) );
955+
956+
if ( ! $user_has_content ) {
957+
if ( $wpdb->get_var(
958+
$wpdb->prepare(
959+
"SELECT ID FROM {$wpdb->posts}
960+
WHERE post_author = %d
961+
LIMIT 1",
962+
$delete_user->ID
963+
)
964+
) ) {
965+
$user_has_content = true;
966+
} elseif ( $wpdb->get_var(
967+
$wpdb->prepare(
968+
"SELECT link_id FROM {$wpdb->links}
969+
WHERE link_owner = %d
970+
LIMIT 1",
971+
$delete_user->ID
972+
)
973+
) ) {
974+
$user_has_content = true;
975+
}
976+
}
977+
restore_current_blog();
978+
979+
if ( ! $user_has_content ) {
980+
?>
981+
<p>
982+
<?php
983+
/* translators: %s: Link to user's site. */
984+
printf( __( 'Site: %s' ), $user_site );
985+
?>
986+
</p>
987+
<input type="hidden" id="delete_option_<?php echo esc_attr( $details->userblog_id . '_' . $delete_user->ID ); ?>" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID; ?>]" value="delete" required />
988+
<p><?php _e( 'This user does not have any content.' ); ?></p>
989+
<?php
990+
} else {
991+
?>
992+
<p>
947993
<?php
948994
/* translators: %s: Link to user's site. */
949995
printf( __( 'Site: %s' ), $user_site );
950996
?>
997+
</p>
998+
<ul>
999+
<li>
1000+
<label>
1001+
<input type="radio" id="delete_option_<?php echo esc_attr( $details->userblog_id . '_' . $delete_user->ID ); ?>" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID; ?>]" value="delete" required />
1002+
<?php _e( 'Delete all content.' ); ?>
1003+
</label>
1004+
</li>
1005+
<li>
1006+
<label>
1007+
<input type="radio" id="reassign_option_<?php echo esc_attr( $details->userblog_id . '_' . $delete_user->ID ); ?>" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID; ?>]" value="reassign" required />
1008+
<?php _e( 'Attribute all content to:' ); ?>
1009+
</label>
1010+
1011+
<?php
1012+
wp_dropdown_users(
1013+
array(
1014+
'show_option_none' => __( 'Select a user' ),
1015+
'name' => "blog[$user_id][$key]",
1016+
'include' => $blog_users,
1017+
'show' => 'display_name_with_login',
1018+
'id' => "reassign_user_{$details->userblog_id}_{$delete_user->ID}",
1019+
)
1020+
);
1021+
?>
1022+
1023+
</li>
9511024
</li>
952-
<li>
953-
<label>
954-
<input type="radio" id="delete_option_<?php echo esc_attr( $details->userblog_id . '_' . $delete_user->ID ); ?>" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID; ?>]" value="delete" required />
955-
<?php _e( 'Delete all content.' ); ?>
956-
</label>
957-
</li>
958-
<li>
959-
<label>
960-
<input type="radio" id="reassign_option_<?php echo esc_attr( $details->userblog_id . '_' . $delete_user->ID ); ?>" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID; ?>]" value="reassign" required />
961-
<?php _e( 'Attribute all content to:' ); ?>
962-
</label>
963-
964-
<?php
965-
wp_dropdown_users(
966-
array(
967-
'show_option_none' => __( 'Select a user' ),
968-
'name' => "blog[$user_id][$key]",
969-
'include' => $blog_users,
970-
'show' => 'display_name_with_login',
971-
'id' => "reassign_user_{$details->userblog_id}_{$delete_user->ID}",
972-
)
973-
);
974-
?>
975-
976-
</li>
977-
</li>
978-
</ul>
979-
<?php
1025+
</ul>
1026+
<?php
1027+
}
9801028
}
9811029
}
9821030
echo '</fieldset></td></tr>';

0 commit comments

Comments
 (0)