PasswordCards/index.php

61 lines
1.7 KiB
PHP

<?php
namespace raphiz\passwordcards;
require_once 'vendor/autoload.php';
use \Rain\Tpl;
Tpl::configure(
array(
"tpl_dir" => __DIR__ . "/resources/",
)
);
if (!RequestUtils::isPost()) {
$tpl = new Tpl;
$tpl->draw('index');
} else {
$spamPrevention = RequestUtils::preventSpam();
if ($spamPrevention !== true) {
$tpl = new Tpl;
$tpl->assign('seconds', $spamPrevention);
$tpl->draw('spam');
} else {
// Parse request
$pattern = RequestUtils::parsePattern();
$keyboardLayout = RequestUtils::parseKeyboardLayout();
$seed = RequestUtils::parseSeed();
$text = RequestUtils::parseText();
$primary = RequestUtils::parsePrimaryColor();
$secondary = RequestUtils::parseSecondaryColor();
$spaceBarSize = RequestUtils::parseSpacebarSize();
// Setup configuration
$cfg = new Configuration($seed, $pattern, $keyboardLayout, $spaceBarSize, $text, $primary, $secondary);
$creator = new CardCreator($cfg);
// Load SVG templates
$front_template = $creator->getSvgTemplate('simple_back');
$back_template = $creator->getSvgTemplate('simple_front');
// Render SVG into tempfiles
$front = $creator->renderIntoTempfile($front_template);
$back = $creator->renderIntoTempfile($back_template);
// Render the PDF
$doc = PDFRenderer::render($front, $back);
// Prepare response PDF file header
RequestUtils::preparePdfHeader(strlen($doc));
// Ignore user abort to cleanup afterwards
ignore_user_abort(true);
// Strem the PDF
echo $doc;
// Cleanup temporary SVG images
unlink($back);
unlink($front);
}
}