can_delete_by_registered_date( $delete_options, $user ) ) { continue; } if ( ! $this->can_delete_by_logged_date( $delete_options, $user ) ) { continue; } if ( ! $this->can_delete_by_post_count( $delete_options, $user ) ) { continue; } $deleted = wp_delete_user( $user->ID ); if ( $deleted ) { $count ++; } } return $count; } /** * Can the user be deleted based on the 'post count' option? * * @since 5.5.2 * @access protected * * @param array $delete_options Delete Options. * @param object $user User object that needs to be deleted. * * @return bool True if the user can be deleted, false otherwise. */ protected function can_delete_by_post_count( $delete_options, $user ) { return ! ( $delete_options['no_posts'] && count_user_posts( $user->ID, $delete_options['no_posts_post_types'] ) > 0 ); } /** * Can the user be deleted based on the 'registered date' option? * * @since 5.5.3 * @access protected * * @param array $delete_options Delete Options. * @param object $user User object that needs to be deleted. * * @return bool True if the user can be deleted, false otherwise. */ protected function can_delete_by_registered_date( $delete_options, $user ) { if ( $delete_options['registered_restrict'] ) { $registered_days = $delete_options['registered_days']; if ( $registered_days > 0 ) { $user_meta = get_userdata( $user->ID ); if ( strtotime( $user_meta->user_registered ) > strtotime( '-' . $registered_days . 'days' ) ) { return false; } } } return true; } /** * Can the user be deleted based on the 'logged in date' option? * * @since 5.5.2 * @access protected * * @param array $delete_options Delete Options. * @param object $user User object that needs to be deleted. * * @return bool True if the user can be deleted, false otherwise. */ protected function can_delete_by_logged_date( $delete_options, $user ) { if ( $delete_options['login_restrict'] ) { $login_days = $delete_options['login_days']; $last_login = bd_get_last_login( $user->ID ); if ( null !== $last_login ) { // we have a logged-in entry for the user in simple login log plugin. if ( strtotime( $last_login ) > strtotime( '-' . $login_days . 'days' ) ) { return false; } } else { // we don't have a logged-in entry for the user in simple login log plugin. if ( $login_days > 0 ) { // non-zero value for login date. So don't delete this user. return false; } } } return true; } /** * Process user delete form. * * Helper function to handle common delete user fields. * Nonce verification is done in the hook that calls this function. * phpcs:disable WordPress.CSRF.NonceVerification.NoNonceVerification * * @since 5.5.3 * @access protected * * @param array $delete_options Delete Options. */ protected function process_user_delete( $delete_options ) { $delete_options['login_restrict'] = array_get_bool( $_POST, "smbd_{$this->field_slug}_login_restrict", false ); $delete_options['login_days'] = absint( array_get( $_POST, "smbd_{$this->field_slug}_login_days", 0 ) ); $delete_options['registered_restrict'] = array_get_bool( $_POST, "smbd_{$this->field_slug}_registered_restrict", false ); $delete_options['registered_days'] = absint( array_get( $_POST, "smbd_{$this->field_slug}_registered_days", 0 ) ); $delete_options['no_posts'] = array_get_bool( $_POST, "smbd_{$this->field_slug}_no_posts", false ); $delete_options['no_posts_post_types'] = bd_array_get( $_POST, "smbd_{$this->field_slug}_no_post_post_types", array() ); $delete_options['limit_to'] = absint( array_get( $_POST, "smbd_{$this->field_slug}_limit_to", 0 ) ); $this->process_delete( $delete_options ); } // phpcs:disable /** * Render User Login restrict settings. * * @since 5.5 */ protected function render_user_login_restrict_settings() { ?> > . Install now render_post_type_checkboxes( "smbd_{$this->field_slug}_no_post_post_types" ); ?>