';
// 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']) : '
' . $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
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;
}
?>