has_downloadable_item() && $order->is_download_permitted();
$downloads = $order ? $order->get_downloadable_items() : [];
if ( ! $permission || ! $show_downloads ) {
return $this->render_content_fallback();
}
$classes_and_styles = StyleAttributesUtils::get_classes_and_styles_by_attributes( $attributes, [ 'border_color', 'border_radius', 'border_width', 'border_style', 'background_color', 'text_color' ] );
return '
' . $this->render_order_downloads_column_headers() . '
' . $this->render_order_downloads( $order, $downloads ) . '
';
}
/**
* Enqueue frontend assets for this block, just in time for rendering.
*
* @param array $attributes Any attributes that currently are available from the block.
* @return string
*/
protected function get_inline_styles( array $attributes ) {
$link_classes_and_styles = StyleAttributesUtils::get_link_color_class_and_style( $attributes );
$link_hover_classes_and_styles = StyleAttributesUtils::get_link_hover_color_class_and_style( $attributes );
$border_classes_and_styles = StyleAttributesUtils::get_classes_and_styles_by_attributes( $attributes, [ 'border_color', 'border_radius', 'border_width', 'border_style' ] );
return '
.wc-block-order-confirmation-downloads__table a {' . $link_classes_and_styles['style'] . '}
.wc-block-order-confirmation-downloads__table a:hover, .wc-block-order-confirmation-downloads__table a:focus {' . $link_hover_classes_and_styles['style'] . '}
.wc-block-order-confirmation-downloads__table {' . $border_classes_and_styles['styles'] . '}
.wc-block-order-confirmation-downloads__table th, .wc-block-order-confirmation-downloads__table td {' . $border_classes_and_styles['styles'] . '}
';
}
/**
* Enqueue frontend assets for this block, just in time for rendering.
*
* @param array $attributes Any attributes that currently are available from the block.
* @param string $content The block content.
* @param \WP_Block $block The block object.
*/
protected function enqueue_assets( array $attributes, $content, $block ) {
parent::enqueue_assets( $attributes, $content, $block );
$styles = $this->get_inline_styles( $attributes );
wp_add_inline_style( 'wc-blocks-style', $styles );
}
/**
* Render column headers for downloads table.
*
* @return string
*/
protected function render_order_downloads_column_headers() {
$columns = wc_get_account_downloads_columns();
$return = '';
foreach ( $columns as $column_id => $column_name ) {
$return .= '' . esc_html( $column_name ) . ' | ';
}
return $return;
}
/**
* Render downloads.
*
* @param \WC_Order $order Order object.
* @param array $downloads Array of downloads.
* @return string
*/
protected function render_order_downloads( $order, $downloads ) {
$return = '';
foreach ( $downloads as $download ) {
$return .= '' . $this->render_order_download_row( $download ) . '
';
}
return $return;
}
/**
* Render a download row in the table.
*
* @param array $download Download data.
* @return string
*/
protected function render_order_download_row( $download ) {
$return = '';
foreach ( wc_get_account_downloads_columns() as $column_id => $column_name ) {
$return .= '';
if ( has_action( 'woocommerce_account_downloads_column_' . $column_id ) ) {
$return .= $this->get_hook_content( 'woocommerce_account_downloads_column_' . $column_id, [ $download ] );
} else {
switch ( $column_id ) {
case 'download-product':
if ( $download['product_url'] ) {
$return .= '' . esc_html( $download['product_name'] ) . '';
} else {
$return .= esc_html( $download['product_name'] );
}
break;
case 'download-file':
$return .= '' . esc_html( $download['download_name'] ) . '';
break;
case 'download-remaining':
$return .= is_numeric( $download['downloads_remaining'] ) ? esc_html( $download['downloads_remaining'] ) : esc_html__( '∞', 'woocommerce' );
break;
case 'download-expires':
if ( ! empty( $download['access_expires'] ) ) {
$return .= '';
} else {
$return .= esc_html__( 'Never', 'woocommerce' );
}
break;
}
}
$return .= ' | ';
}
return $return;
}
}