View file File name : DownloadsWrapper.php Content :<?php namespace Automattic\WooCommerce\Blocks\BlockTypes\OrderConfirmation; /** * DownloadsWrapper class. */ class DownloadsWrapper extends AbstractOrderConfirmationBlock { /** * Block name. * * @var string */ protected $block_name = 'order-confirmation-downloads-wrapper'; /** * See if the store has a downloadable product. This controls if we bother to show a preview in the editor. * * @return boolean */ protected function store_has_downloadable_products() { $has_downloadable_product = get_transient( 'wc_blocks_has_downloadable_product', false ); if ( false === $has_downloadable_product ) { $product_ids = get_posts( array( 'post_type' => 'product', 'numberposts' => 1, 'post_status' => 'publish', 'fields' => 'ids', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query 'meta_query' => array( array( 'key' => '_downloadable', 'value' => 'yes', 'compare' => '=', ), ), ) ); $has_downloadable_product = ! empty( $product_ids ); set_transient( 'wc_blocks_has_downloadable_product', $has_downloadable_product ? '1' : '0', MONTH_IN_SECONDS ); } return (bool) $has_downloadable_product; } /** * Extra data passed through from server to client for block. * * @param array $attributes Any attributes that currently are available from the block. * Note, this will be empty in the editor context when the block is * not in the post content on editor load. */ protected function enqueue_data( array $attributes = [] ) { parent::enqueue_data( $attributes ); $this->asset_data_registry->add( 'storeHasDownloadableProducts', $this->store_has_downloadable_products() ); } /** * This renders the content of the downloads wrapper. * * @param \WC_Order $order Order object. * @param string|false $permission If the current user can view the order details or not. * @param array $attributes Block attributes. * @param string $content Original block content. */ protected function render_content( $order, $permission = false, $attributes = [], $content = '' ) { $show_downloads = $order && $order->has_downloadable_item() && $order->is_download_permitted(); if ( ! $show_downloads || ! $permission ) { return ''; } return $content; } /** * Get the frontend style handle for this block type. * * @return null */ protected function get_block_type_style() { return null; } }