licenseManager = $licenseManager; $this->registerHooks(); } /** * Register WordPress hooks */ private function registerHooks(): void { // Add license info to order completed email add_action('woocommerce_email_after_order_table', [$this, 'addLicenseInfoToEmail'], 20, 4); // Add license info to order details in emails add_action('woocommerce_order_item_meta_end', [$this, 'addLicenseToOrderItem'], 10, 4); } /** * Add license information to order completed email */ public function addLicenseInfoToEmail(\WC_Order $order, bool $sentToAdmin, bool $plainText, $email): void { // Only add to completed order email sent to customer if ($sentToAdmin || !$email || $email->id !== 'customer_completed_order') { return; } $licenses = $this->getLicensesForOrder($order); if (empty($licenses)) { return; } if ($plainText) { $this->renderPlainTextLicenseInfo($licenses, $order); } else { $this->renderHtmlLicenseInfo($licenses, $order); } } /** * Add license key to order item in email */ public function addLicenseToOrderItem(int $itemId, \WC_Order_Item $item, \WC_Order $order, bool $plainText): void { $product = $item->get_product(); if (!$product || !$product->is_type('licensed')) { return; } $license = $this->licenseManager->getLicenseByOrderAndProduct($order->get_id(), $product->get_id()); if (!$license) { return; } if ($plainText) { echo "\n" . esc_html__('License Key:', 'wc-licensed-product') . ' ' . esc_html($license->getLicenseKey()) . "\n"; } else { ?>
getLicenseKey()); ?>
get_items() as $item) { $product = $item->get_product(); if ($product && $product->is_type('licensed')) { $license = $this->licenseManager->getLicenseByOrderAndProduct($order->get_id(), $product->get_id()); if ($license) { $licenses[] = [ 'license' => $license, 'product_name' => $product->get_name(), ]; } } } return $licenses; } /** * Render license info in HTML format */ private function renderHtmlLicenseInfo(array $licenses, \WC_Order $order): void { $domain = $order->get_meta('_licensed_product_domain'); ?>

getLicenseKey()); ?> getExpiresAt(); echo $expiresAt ? esc_html($expiresAt->format(get_option('date_format'))) : esc_html__('Never', 'wc-licensed-product'); ?>

get_meta('_licensed_product_domain'); echo "\n\n"; echo "==========================================================\n"; echo esc_html__('YOUR LICENSE KEYS', 'wc-licensed-product') . "\n"; echo "==========================================================\n\n"; if ($domain) { echo esc_html__('Licensed Domain:', 'wc-licensed-product') . ' ' . esc_html($domain) . "\n\n"; } foreach ($licenses as $item) { echo esc_html($item['product_name']) . "\n"; echo esc_html__('License Key:', 'wc-licensed-product') . ' ' . esc_html($item['license']->getLicenseKey()) . "\n"; $expiresAt = $item['license']->getExpiresAt(); echo esc_html__('Expires:', 'wc-licensed-product') . ' '; echo $expiresAt ? esc_html($expiresAt->format(get_option('date_format'))) : esc_html__('Never', 'wc-licensed-product'); echo "\n\n"; } echo esc_html__('You can also view your licenses in your account under "Licenses".', 'wc-licensed-product') . "\n"; echo "==========================================================\n\n"; } }