HEX
Server: nginx/1.27.1
System: Linux in-3 5.15.0-161-generic #171-Ubuntu SMP Sat Oct 11 08:17:01 UTC 2025 x86_64
User: ivenus-clone (3297)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source
Upload Files
File: /storage/v4513/tepnot/public_html/wp-content/plugins/dokan-pro/includes/Blocks/Product.php
<?php

namespace WeDevs\DokanPro\Blocks;

use WC_Product;

defined( 'ABSPATH' ) || exit;

class Product {

    /**
     * Constructor class.
     *
     * @since 3.7.13
     */
    public function __construct() {
        add_filter( 'dokan_rest_get_product_block_data', [ $this, 'set_block_data' ], 10, 3 );
    }

    /**
     * Set product block data for Dokan-pro.
     *
     * @since 3.7.13
     *
     * @param array      $block
     * @param WC_Product $product
     * @param string     $context
     *
     * @return array
     */
    public function set_block_data( $block, $product, $context = 'view' ) {
        // External product type.
        $block['general']['external_url'] = $product->is_type( 'external' ) ? $product->get_product_url( $context ) : '';
        $block['general']['button_text'] = $product->is_type( 'external' ) ? $product->get_button_text( $context ) : '';

        // Linked section.
        $block['linked']['upsell_ids']       = $this->get_formatted_products( array_map( 'absint', $product->get_upsell_ids( $context ) ) );
        $block['linked']['cross_sell_ids']   = $this->get_formatted_products( array_map( 'absint', $product->get_cross_sell_ids( $context ) ) );
        $block['linked']['grouped_products'] = $product->is_type( 'grouped' ) ? $this->get_formatted_products( $product->get_children() ) : [];

        return $block;
    }

    /**
     * Get formatted products from IDS with name and id.
     *
     * @since 3.7.13
     *
     * @param array $product_ids
     *
     * @return array
     */
    private function get_formatted_products( $product_ids = [] ) {
        if ( ! is_array( $product_ids ) || ! count( $product_ids ) ) {
            return [];
        }

        $products = wc_get_products(
            [
				'include' => $product_ids,
			]
        );

        $formatted_products = [];
        foreach ( $products as $product ) {
            $formatted_products[] = [
                'label' => $product->get_name(),
                'value' => $product->get_id(),
            ];
        }

        return $formatted_products;
    }
}