display_name ) ) { return $user->display_name; } if ( 'first_last_name' === self::$user_label_setting && ( ! empty( $user->first_name ) || ! empty( $user->last_name ) ) ) { return trim( implode( ' ', array( $user->first_name, $user->last_name, ) ) ); } return $user->user_login; } /** * Returns user object using alert metadata array (or any array which contains 'Username' or 'CurrentUserID' keys). * * @param array $meta - Metadata array with user data. * * @return \WP_User|null|string User object. * * @since 5.3.0 */ public static function get_user_object_from_meta( $meta = null ) { if ( ! is_array( $meta ) ) { return null; } if ( isset( $meta['Username'] ) ) { if ( \in_array( $meta['Username'], self::$internal_user_names ) ) { return null; } return \get_user_by( 'login', $meta['Username'] ); } elseif ( isset( $meta['CurrentUserID'] ) ) { $data = \get_userdata( $meta['CurrentUserID'] ); return $data; } return null; } /** * Gets the username. * * @param array $meta - Event meta data. * * @return string User's username. * * @since 4.6.0 */ public static function get_username( $meta = null ) { if ( ! is_array( $meta ) ) { return ''; } if ( isset( $meta['Username'] ) ) { return $meta['Username']; } elseif ( isset( $meta['CurrentUserID'] ) ) { $data = \get_userdata( $meta['CurrentUserID'] ); return $data ? $data->user_login : ''; } return ''; } /** * Get the user details for the tooltip. * * @param WP_User $user - User data. * * @return string HTML representing a tooltip with user's details. * * @since 4.6.0 */ public static function get_tooltip_user_content( $user ) { if ( ! isset( $user->ID ) ) { return ''; } $tooltip = '' . esc_attr__( 'Username: ', 'wp-security-audit-log' ) . '' . $user->data->user_login . '
'; $tooltip .= ( ! empty( $user->data->first_name ) ) ? '' . esc_attr__( 'First name: ', 'wp-security-audit-log' ) . '' . $user->data->first_name . '
' : ''; $tooltip .= ( ! empty( $user->data->last_name ) ) ? '' . esc_attr__( 'Last Name: ', 'wp-security-audit-log' ) . '' . $user->data->last_name . '
' : ''; $tooltip .= '' . esc_attr__( 'Email: ', 'wp-security-audit-log' ) . '' . $user->data->user_email . '
'; $tooltip .= '' . esc_attr__( 'Nickname: ', 'wp-security-audit-log' ) . '' . $user->data->user_nicename . '

'; /** * WSAL Filter: `wsal_additional_user_tooltip_content' * * Allows 3rd parties to append HTML to the user tooltip content in audit log viewer. * * @since 4.4.0 * * @param string $content Blank string to append to. * @param object $user - User object. */ $additional_content = apply_filters( 'wsal_additional_user_tooltip_content', '', $user ); $tooltip .= $additional_content; return $tooltip; } /** * Retrieves user ID using either the username of user ID. * * @param int|string $user_login User login or ID. * * @return int|null * * @since 4.6.0 */ public static function swap_login_for_id( $user_login ) { if ( isset( self::$cached_users[ $user_login ] ) ) { return self::$cached_users[ $user_login ]; } global $wpdb; $user_id = $wpdb->get_var( // phpcs:ignore $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE user_login = %s OR ID = %d;", $user_login, $user_login ) ); if ( false === $user_id || 0 === strlen( $user_id ) ) { return null; } self::$cached_users[ $user_login ] = intval( $user_id ); return self::$cached_users[ $user_login ]; } /** * Populates the label showing user roles in audit log, sessions list, etc. * * @param string|string[] $roles User roles. * * @return string * * @since 4.6.0 */ public static function get_roles_label( $roles ): string { global $wp_roles; $role_names = array(); if ( is_array( $roles ) && count( $roles ) ) { foreach ( $roles as $index => $role_slug ) { $role_names[ $index ] = ( isset( $wp_roles->roles[ $role_slug ] ) ) ? translate_user_role( $wp_roles->roles[ $role_slug ]['name'] ) : ucwords( $role_slug ); } return esc_html( implode( ', ', $role_names ) ); } if ( is_string( $roles ) && '' !== $roles ) { $roles = trim( str_replace( array( '"', '[', ']' ), ' ', $roles ) ); $role_name = ( isset( $wp_roles->roles[ $roles ] ) ) ? translate_user_role( $wp_roles->roles[ $roles ]['name'] ) : ucwords( $roles ); return esc_html( $role_name ); } return '' . esc_html__( 'Unknown', 'wp-security-audit-log' ) . ''; } } }