Files
laipower/wp-content/plugins/activitypub/build/extra-fields/render.php

82 lines
2.5 KiB
PHP

<?php
/**
* Server-side rendering for the Extra Fields block.
*
* @package Activitypub
*/
use Activitypub\Blocks;
use Activitypub\Collection\Extra_Fields;
use function Activitypub\is_activitypub_request;
if ( is_activitypub_request() || is_feed() ) {
return '';
}
/**
* Render callback for the Extra Fields block.
*
* @var array $attributes Block attributes.
*/
$attributes = wp_parse_args( $attributes );
$user_id = Blocks::get_user_id( $attributes['selectedUser'] ?? 'blog' );
// If user ID couldn't be determined, return empty.
if ( null === $user_id ) {
return '';
}
// Get extra fields for this user.
$fields = Extra_Fields::get_actor_fields( $user_id );
// Apply max fields limit if set.
$max_fields = $attributes['maxFields'] ?? 0;
if ( $max_fields > 0 && count( $fields ) > $max_fields ) {
$fields = array_slice( $fields, 0, $max_fields );
}
// Return empty on frontend if no fields (hide block).
if ( empty( $fields ) ) {
return '';
}
// Get block wrapper attributes.
$wrapper_attributes = get_block_wrapper_attributes(
array(
'class' => 'activitypub-extra-fields-block-wrapper',
)
);
// Extract background color for cards style.
$background_color = '';
$card_style = '';
// Check if this is the cards style by looking at className attribute or wrapper classes.
$is_cards_style = ( isset( $attributes['className'] ) && str_contains( $attributes['className'], 'is-style-cards' ) )
|| str_contains( $wrapper_attributes, 'is-style-cards' );
if ( $is_cards_style ) {
// Check for background color in various formats.
if ( isset( $attributes['backgroundColor'] ) ) {
$background_color = sprintf( 'var(--wp--preset--color--%s)', $attributes['backgroundColor'] );
} elseif ( isset( $attributes['style']['color']['background'] ) ) {
$background_color = $attributes['style']['color']['background'];
}
if ( $background_color ) {
$card_style = sprintf( ' style="background-color: %s;"', esc_attr( $background_color ) );
}
}
?>
<div <?php echo $wrapper_attributes; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
<dl class="activitypub-extra-fields">
<?php foreach ( $fields as $field ) : ?>
<div class="activitypub-extra-field"<?php echo $card_style; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
<dt><?php echo esc_html( $field->post_title ); ?></dt>
<dd><?php echo Extra_Fields::get_formatted_content( $field ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></dd>
</div>
<?php endforeach; ?>
</dl>
</div>