'; // Fetch CSS for inlining $cssContent = file_get_contents('assets/css/custom.css'); // Prepare image for embedding or linking $imageFilename = basename(parse_url($imageUrl, PHP_URL_PATH)); if (empty($imageFilename)) { $imageFilename = 'featured-image.jpg'; } // Generate the final HTML content from the selected template structure $templateId = (int)($_POST['template_id'] ?? 1); $selectedTemplate = null; foreach ($templates as $t) { if ($t['id'] === $templateId) { $selectedTemplate = $t; break; } } $templateHtml = $selectedTemplate ? file_get_contents($selectedTemplate['file']) : '
Ebook Cover

' . $title . '

' . $description . '

' . $checkoutHtml . '
'; $templateDom = new DOMDocument(); @$templateDom->loadHTML($templateHtml, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $imgTag = $templateDom->getElementById('previewImage'); if ($imgTag) $imgTag->setAttribute('src', $imageUrl); $titleTag = $templateDom->getElementById('previewTitle'); if ($titleTag) $titleTag->nodeValue = $title; $descTag = $templateDom->getElementById('previewDescription'); if ($descTag) $descTag->nodeValue = $description; $ctaContainer = $templateDom->getElementById('previewCtaContainer'); if ($ctaContainer) { while ($ctaContainer->hasChildNodes()) { $ctaContainer->removeChild($ctaContainer->firstChild); } if (!empty(trim($checkoutHtml))) { $fragment = $templateDom->createDocumentFragment(); @$fragment->appendXML($checkoutHtml); $ctaContainer->appendChild($fragment); } else { $ctaContainer->nodeValue = $ctaText; // Fallback to simple text if no HTML } } $finalPreviewHtml = $templateDom->saveHTML(); $htmlContent = << $title
$finalPreviewHtml
HTML; // Save the page $publishedDir = 'published'; if (!is_dir($publishedDir)) { mkdir($publishedDir, 0755, true); } $pageId = uniqid(); $filename = $publishedDir . '/' . $pageId . '.html'; file_put_contents($filename, $htmlContent); $pageUrl = 'http://' . $_SERVER['HTTP_HOST'] . '/' . $filename; // Database interaction require_once 'db/config.php'; $management_token = bin2hex(random_bytes(16)); $expires_at = date('Y-m-d H:i:s', strtotime('+60 days')); try { $pdo = db(); $stmt = $pdo->prepare("INSERT INTO published_pages (filename, management_token, expires_at) VALUES (?, ?, ?)"); $stmt->execute([$pageId . '.html', $management_token, $expires_at]); } catch (PDOException $e) { // Log error, but don't show to user error_log("DB Error: " . $e->getMessage()); // Fallback to just showing the page URL without management link echo "
"; echo "

Your page has been published!

"; echo "

You can view it here:

"; echo "{$pageUrl}"; echo "
"; exit; } $managementUrl = 'http://' . $_SERVER['HTTP_HOST'] . '/manage.php?token=' . $management_token; // Display the success message and URL echo "
"; echo "

Your page has been published!

"; echo "

You can view it here:

"; echo "

{$pageUrl}

"; echo "
"; echo "

Manage your page:

"; echo "

To prevent your page from being deleted after 60 days, use the following link to extend its lifetime:

"; echo "

{$managementUrl}

"; echo "
"; } else { header('Location: index.php'); exit; } ?>