Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
woocommerce
/
src
/
Blocks
/
BlockTypes
/
OrderConfirmation
:
DownloadsWrapper.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?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; } }