@@ -860,6 +860,8 @@ function _thickbox_path_admin_subfolder() {
860860 * @return bool
861861 */
862862function 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