<?php
// Increase verbosity
error_reporting(E_ALL);
ini_set("display_errors",1);

// All notices and warnings shall be fatal
set_error_handler("onError");
function onError($severity, $message, $file, $line) {
	throw new ErrorException($message, 0, $severity, $file, $line);
}

// Autoload classes if available
spl_autoload_register(function ($class_name) {
	include(str_replace('Post\\','',$class_name).'.php');
});

session_start();

$form = new Post\Form(array(
		"string" => new Post\FormField(),
		"secret" => new Post\SecretFormField(),
		"file" => new Post\FileUpload(),
		"select" => new Post\SelectField(array("options"=>array("0"=>"false","1"=>"true")))
	));

$form->denyCsrf();

if ($_SERVER["REQUEST_METHOD"]=="POST") {
	$form->loadFromEnv();
	$t=$form;
}

?><!DOCTYPE html>
<html>
<body>
<form method=POST enctype="<?php echo($form->getEnctype()); ?>" action="<?php echo($form->action); ?>">
<table border=1>
<?php foreach($form->fields as $name=>$field) { ?>
<tr>
<td><?php echo($name); ?></td>
<td>
<?php
if ($field instanceof Post\FileUpload) {
  echo('<input name='.$name.' type=file />');
} elseif ($field instanceof Post\HiddenFormField) {
  echo('<input name='.$name.' type=hidden value="'.htmlspecialchars($field->getValue()).'"  />');
} elseif ($field instanceof Post\SelectField) {
  echo('<select name='.$name.'>');
  foreach ($field->options as $k=>$v) {
    echo('<option value="'.htmlspecialchars($k).'"'.($k==$field->getValue()?" selected=selected":"").'>'.htmlspecialchars($v).'</option>');
  }
  echo('</select>');
} elseif ($field instanceof Post\SecretFormField) {
  echo('<input name='.$name.' type=password />');
} else {
  echo('<input name='.$name.' type=text value="'.htmlspecialchars($field->getValue()).'"  />');
}
?>
</td>
</tr>
<?php } ?>
<tr><td></td><td><button type=submit>submit</button></td></tr>
</table>
</form>
<?php
if (isset($t)) {
	echo("<pre>".htmlspecialchars(var_export($form, true))."</pre>");
}
?>
</body>
</html>