initial commit

This commit is contained in:
2021-12-20 12:50:53 +01:00
commit 839913d51a
51 changed files with 13051 additions and 0 deletions

10
web/errors.php Normal file
View File

@ -0,0 +1,10 @@
<?php
include ('template.inc');
ob_start();
$l = file_get_contents("../data/isbn-error.txt");
print "<pre>";
print_r($l);
print "</pre>";
$output = ob_get_clean();
Template::render( $output);
?>

46
web/index.php Normal file
View File

@ -0,0 +1,46 @@
<?php
include ('template.inc');
$rets = ['OK'=>'OK', 'ERROR'=>'ERROR'];
ob_start();
print "<h2>Book ID input</h2>";
print "<div class='isbn-input'>";
print '<form action="/scan.php" method="POST">';
print '<dl>';
print '<h3>ID type</h3>';
print '<input type="radio" id="isbn" name="idtype" value="isbn" checked="checked">';
print '<label for="isbn">ISBN</label><br>';
print '<input type="radio" id="moly" name="idtype" value="moly">';
print '<label for="moly">Moly.hu</label><br>';
print '</dl>';
print '<label for="content">ID:</label>';
print '<input type="text" id="isbn-content" name="content" inputmode="tel" autofocus>';
print '<input type="hidden" id="manual" name="manual" value="1">';
print '<input class="hidden" type="submit" value="Submit">';
print '</form>';
if (isset ($_GET['ret'])){
if (array_key_exists($_GET['ret'],$rets)){
$r = $rets[$_GET['ret']];
print "<p class='retek $r'>$r</p>";
}
}
print "</div>";
print "<h2>Errors</h2>";
print "<div class='errors'>".errors()."</div>";
$output = ob_get_clean();
Template::render($output);
function errors(){
ob_start();
$a = file("../data/isbn-error.txt");
$r = array_reverse($a);
print "<pre>";
foreach ($r as $l){
print($l);
}
print "</pre>";
return ob_get_clean();
}

17
web/scan.php Normal file
View File

@ -0,0 +1,17 @@
<?php
include_once('template.inc');
include_once ('store.inc');
if (isset($_POST['content'])){
$m = isset($_POST['manual']);
if (isset($_POST['idtype']) && $_POST['idtype'] === 'moly'){
StoreMoly::save($_POST['content'],$m);
} else{
Store::save($_POST['content'],$m);
}
}else {
header("Location: /index.php");
exit();
}
?>

51
web/store.inc Normal file
View File

@ -0,0 +1,51 @@
<?php
include ('../vendor/autoload.php');
use Biblys\Isbn\Isbn;
class Store{
const DATAFILE = '/opt/konyvleltar/data/isbn.txt';
const ERRORFILE = '/opt/konyvleltar/data/isbn-error.txt';
public static function save($v,$manual=false){
if (Isbn::isParsable($v)){
$outputfile = self::DATAFILE;
$ret = 'OK';
}else{
$outputfile = self::ERRORFILE;
$ret = 'ERROR';
}
$o = self::sanitize($v);
file_put_contents($outputfile,$o."\n",FILE_APPEND);
if ($manual) { header("Location: /index.php?ret=$ret");}
else { print $ret;}
}
public static function sanitize($string){
$sx = preg_replace("/\.$/", "X", $string);
return preg_replace("/[^a-zA-Z0-9-]/", "", $sx);
}
}
class StoreMoly extends Store{
const DATAFILE = '/opt/konyvleltar/data/moly.txt';
const ERRORFILE = '/opt/konyvleltar/data/moly-error.txt';
public static function save($v,$manual=false){
$outputfile = self::DATAFILE;
$ret = 'OK';
$o = self::sanitize($v);
file_put_contents($outputfile,$o."\n",FILE_APPEND);
if ($manual) { header("Location: /index.php?ret=$ret");}
else { print $ret;}
}
public static function sanitize($string){
$sx = preg_replace("/\.$/", "X", $string);
return preg_replace("/[^a-zA-Z0-9-]/", "", $sx);
}
}

28
web/template.inc Normal file
View File

@ -0,0 +1,28 @@
<?php
class Template{
public static function render($content){
print "<!DOCTYPE html>";
print "<html>";
print " <head>";
print ' <meta name="viewport" content="width=device-width, initial-scale=1.0">';
print ' <style>
.errors{
width: 100%;
}
.ERROR{
background-color: #FAA;
}
.OK{
background-color: #AFA;
}
</style';
print " </head>";
print " <body>";
print $content;
print " </body>";
print "</html>";
}
}
?>