diff -r be944660c56a -r 3d72ae0968f4 wp/wp-includes/blocks/avatar.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-includes/blocks/avatar.php Tue Sep 27 16:37:53 2022 +0200 @@ -0,0 +1,146 @@ + $value ) { + if ( null !== $value ) { + $name = _wp_to_kebab_case( $key ); + // Add shared styles for individual border radii. + $border_style = sprintf( + 'border-%s-radius: %s;', + esc_attr( $name ), + esc_attr( $value ) + ); + $image_styles[] = $border_style; + } + } + } else { + $border_style = sprintf( 'border-radius: %s;', esc_attr( $border_radius ) ); + $image_styles[] = $border_style; + } + } + + // Add border color styles. + $has_border_color = ! empty( $attributes['style']['border']['color'] ); + + if ( $has_border_color ) { + $border_color = $attributes['style']['border']['color']; + $image_styles[] = sprintf( 'border-color: %s;', esc_attr( $border_color ) ); + } + + // Add border style (solid, dashed, dotted ). + $has_border_style = ! empty( $attributes['style']['border']['style'] ); + + if ( $has_border_style ) { + $border_style = $attributes['style']['border']['style']; + $image_styles[] = sprintf( 'border-style: %s;', esc_attr( $border_style ) ); + } + + // Add border classes to the avatar image for both custom colors and palette colors. + $image_classes = ''; + if ( $has_border_color || isset( $attributes['borderColor'] ) ) { + $image_classes .= 'has-border-color'; + } + if ( isset( $attributes['borderColor'] ) ) { + $image_classes .= ' has-' . $attributes['borderColor'] . '-border-color'; + } + + if ( ! isset( $block->context['commentId'] ) ) { + $author_id = isset( $attributes['userId'] ) ? $attributes['userId'] : get_post_field( 'post_author', $block->context['postId'] ); + $author_name = get_the_author_meta( 'display_name', $author_id ); + // translators: %s is the Author name. + $alt = sprintf( __( '%s Avatar' ), $author_name ); + $avatar_block = get_avatar( + $author_id, + $size, + '', + $alt, + array( + 'extra_attr' => isset( $image_styles ) ? sprintf( ' style="%s"', safecss_filter_attr( implode( ' ', $image_styles ) ) ) : '', + 'class' => "wp-block-avatar__image $image_classes ", + ) + ); + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) { + $label = ''; + if ( '_blank' === $attributes['linkTarget'] ) { + // translators: %s is the Author name. + $label = 'aria-label="' . sprintf( esc_attr__( '(%s author archive, opens in a new tab)' ), $author_name ) . '"'; + } + // translators: %1$s: Author archive link. %2$s: Link target. %3$s Aria label. %4$s Avatar image. + $avatar_block = sprintf( '%4$s', get_author_posts_url( $author_id ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block ); + } + return sprintf( '
%2s
', $wrapper_attributes, $avatar_block ); + } + $comment = get_comment( $block->context['commentId'] ); + /* translators: %s is the Comment Author name */ + $alt = sprintf( __( '%s Avatar' ), $comment->comment_author ); + if ( ! $comment ) { + return ''; + } + $avatar_block = get_avatar( + $comment, + $size, + '', + $alt, + array( + 'extra_attr' => isset( $image_styles ) ? sprintf( ' style="%s"', safecss_filter_attr( implode( ' ', $image_styles ) ) ) : '', + 'class' => "wp-block-avatar__image $image_classes", + ) + ); + if ( isset( $attributes['isLink'] ) && $attributes['isLink'] && isset( $comment->comment_author_url ) && '' !== $comment->comment_author_url ) { + $label = ''; + if ( '_blank' === $attributes['linkTarget'] ) { + // translators: %s is the Comment Author name. + $label = 'aria-label="' . sprintf( esc_attr__( '(%s website link, opens in a new tab)' ), $comment->comment_author ) . '"'; + } + // translators: %1$s: Comment Author website link. %2$s: Link target. %3$s Aria label. %4$s Avatar image. + $avatar_block = sprintf( '%4$s', $comment->comment_author_url, esc_attr( $attributes['linkTarget'] ), $label, $avatar_block ); + } + return sprintf( '
%2s
', $wrapper_attributes, $avatar_block ); +} + +/** + * Registers the `core/avatar` block on the server. + */ +function register_block_core_avatar() { + register_block_type_from_metadata( + __DIR__ . '/avatar', + array( + 'render_callback' => 'render_block_core_avatar', + ) + ); +} +add_action( 'init', 'register_block_core_avatar' );