registerScripts(); $this->registerBlockExtensionData(); } /** * Register scripts for the checkout block */ private function registerScripts(): void { $scriptPath = WC_LICENSED_PRODUCT_PLUGIN_DIR . 'assets/js/checkout-blocks.js'; $scriptUrl = WC_LICENSED_PRODUCT_PLUGIN_URL . 'assets/js/checkout-blocks.js'; if (file_exists($scriptPath)) { wp_register_script( 'wc-licensed-product-checkout-blocks', $scriptUrl, ['wc-blocks-checkout', 'wp-element', 'wp-components', 'wp-i18n'], WC_LICENSED_PRODUCT_VERSION, true ); wp_set_script_translations( 'wc-licensed-product-checkout-blocks', 'wc-licensed-product', WC_LICENSED_PRODUCT_PLUGIN_DIR . 'languages' ); } } /** * Register block extension data */ private function registerBlockExtensionData(): void { // Pass data to the checkout block script add_filter( 'woocommerce_blocks_checkout_block_registration_data', function (array $data): array { $data['wc-licensed-product'] = [ 'hasLicensedProducts' => $this->cartHasLicensedProducts(), ]; return $data; } ); } /** * Returns an array of script handles to enqueue in the frontend context */ public function get_script_handles(): array { return ['wc-licensed-product-checkout-blocks']; } /** * Returns an array of script handles to enqueue in the editor context */ public function get_editor_script_handles(): array { return []; } /** * Returns script data to pass to the frontend scripts */ public function get_script_data(): array { return [ 'hasLicensedProducts' => $this->cartHasLicensedProducts(), 'fieldLabel' => __('Domain for License Activation', 'wc-licensed-product'), 'fieldPlaceholder' => __('example.com', 'wc-licensed-product'), 'fieldDescription' => __('Enter the domain where you will use this license (without http:// or www).', 'wc-licensed-product'), 'sectionTitle' => __('License Domain', 'wc-licensed-product'), 'validationError' => __('Please enter a valid domain for your license activation.', 'wc-licensed-product'), ]; } /** * Check if cart contains licensed products */ private function cartHasLicensedProducts(): bool { if (!WC()->cart) { return false; } foreach (WC()->cart->get_cart() as $cartItem) { $product = $cartItem['data']; if ($product && $product->is_type('licensed')) { return true; } } return false; } }