738 lines
23 KiB
PHP
738 lines
23 KiB
PHP
<?php
|
|
|
|
class Checks {
|
|
private function checkwriteaccessconfigfolder() {
|
|
return (is_writable("../php"));
|
|
}
|
|
|
|
private function checkwriteaccessconfigfile() {
|
|
if (file_exists("../php/config.php")) {
|
|
return (is_writable("../php/config.php"));
|
|
} else {
|
|
return (is_writable("../php"));
|
|
}
|
|
}
|
|
|
|
private function checkwriteaccessprivkey() {
|
|
if (file_exists("../php/privkey.pem")) {
|
|
return (is_writable("../php/privkey.pem"));
|
|
} else {
|
|
return (is_writable("../php"));
|
|
}
|
|
}
|
|
|
|
private function checkwriteaccesspubkey() {
|
|
if (file_exists("../php/cert.pem")) {
|
|
return (is_writable("../php/cert.pem"));
|
|
} else {
|
|
return (is_writable("../php"));
|
|
}
|
|
}
|
|
|
|
private function checkwritecustomerfolder() {
|
|
return (is_writable("../customer"));
|
|
}
|
|
|
|
private function checkwritespeisekarte() {
|
|
if (file_exists("../customer/speisekarte.txt")) {
|
|
return (is_writable("../customer/speisekarte.txt"));
|
|
} else {
|
|
return (is_writable("../customer"));
|
|
}
|
|
}
|
|
|
|
function checkWriteAccess() {
|
|
$retArray = array(
|
|
"configfolder" => $this->checkwriteaccessconfigfolder(),
|
|
"configfile" => $this->checkwriteaccessconfigfile(),
|
|
"customerfolder" => $this->checkwritecustomerfolder(),
|
|
"speisekarte" => $this->checkwritespeisekarte()
|
|
);
|
|
echo json_encode($retArray);
|
|
}
|
|
|
|
function checkWriteAccessNoJson() {
|
|
return(array(
|
|
"configfolder" => $this->checkwriteaccessconfigfolder(),
|
|
"configfile" => $this->checkwriteaccessconfigfile(),
|
|
"customerfolder" => $this->checkwritecustomerfolder(),
|
|
"speisekarte" => $this->checkwritespeisekarte(),
|
|
"privkey" => $this->checkwriteaccessprivkey(),
|
|
"pubkey" => $this->checkwriteaccesspubkey()
|
|
));
|
|
}
|
|
|
|
}
|
|
|
|
class Basedb {
|
|
var $prefix = "";
|
|
var $timezone = "Europe/Berlin";
|
|
|
|
function setPrefix($pre) {
|
|
$this->prefix = $pre;
|
|
}
|
|
|
|
function setTimeZone($zone) {
|
|
$this->timezone = $zone;
|
|
}
|
|
|
|
function doSQL($pdo,$sql) {
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function doSQLcatch($pdo,$sql) {
|
|
try {
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
} catch (Exception $e) {
|
|
// nothing - table not present or whatever...
|
|
}
|
|
}
|
|
|
|
function resolveTablenamesInSqlString($sqlString) {
|
|
$out = str_replace("%queue%",$this->prefix . "queue",$sqlString);
|
|
$out = str_replace("%products%",$this->prefix . "products",$out);
|
|
$out = str_replace("%user%",$this->prefix . "user",$out);
|
|
$out = str_replace("%room%",$this->prefix . "room",$out);
|
|
$out = str_replace("%resttables%",$this->prefix . "resttables",$out);
|
|
$out = str_replace("%tablemaps%",$this->prefix . "tablemaps",$out);
|
|
$out = str_replace("%tablepos%",$this->prefix . "tablepos",$out);
|
|
$out = str_replace("%bill%",$this->prefix . "bill",$out);
|
|
$out = str_replace("%pricelevel%",$this->prefix . "pricelevel",$out);
|
|
$out = str_replace("%config%",$this->prefix . "config",$out);
|
|
$out = str_replace("%closing%",$this->prefix . "closing",$out);
|
|
$out = str_replace("%printjobs%",$this->prefix . "printjob",$out);
|
|
$out = str_replace("%hist%",$this->prefix . "hist",$out);
|
|
$out = str_replace("%histprod%",$this->prefix . "histprod",$out);
|
|
$out = str_replace("%histconfig%",$this->prefix . "histconfig",$out);
|
|
$out = str_replace("%histuser%",$this->prefix . "histuser",$out);
|
|
$out = str_replace("%histactions%",$this->prefix . "histactions",$out);
|
|
$out = str_replace("%payment%",$this->prefix . "payment",$out);
|
|
$out = str_replace("%billproducts%",$this->prefix . "billproducts",$out);
|
|
$out = str_replace("%work%",$this->prefix . "work",$out);
|
|
$out = str_replace("%comments%",$this->prefix . "comments",$out);
|
|
$out = str_replace("%reservations%",$this->prefix . "reservations",$out);
|
|
$out = str_replace("%logo%",$this->prefix . "logo",$out);
|
|
$out = str_replace("%extras%",$this->prefix . "extras",$out);
|
|
$out = str_replace("%extrasprods%",$this->prefix . "extrasprods", $out);
|
|
$out = str_replace("%queueextras%",$this->prefix . "queueextras", $out);
|
|
$out = str_replace("%ratings%",$this->prefix . "ratings", $out);
|
|
return (str_replace("%prodtype%",$this->prefix . "prodtype",$out));
|
|
}
|
|
|
|
function dropTables($pdo) {
|
|
$this->doSQLcatch($pdo, "DROP TABLE `%comments%`");
|
|
$this->doSQLcatch($pdo, "DROP TABLE `%reservations%`");
|
|
$this->doSQLcatch($pdo, "DROP TABLE `%work%`");
|
|
$this->doSQLcatch($pdo, "DROP TABLE `%hist%`");
|
|
$this->doSQLcatch($pdo, "DROP TABLE `%histprod%`");
|
|
$this->doSQLcatch($pdo, "DROP TABLE `%histconfig%`");
|
|
$this->doSQLcatch($pdo, "DROP TABLE `%histuser%`");
|
|
$this->doSQLcatch($pdo, "DROP TABLE `%histactions%`");
|
|
|
|
$this->doSQLcatch($pdo, "drop TABLE `%queueextras%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%extrasprods%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%extras%`");
|
|
|
|
$this->doSQLcatch($pdo, "drop TABLE `%billproducts%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%queue%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%printjobs%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%bill%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%ratings%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%user%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%closing%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%config%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%products%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%prodtype%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%pricelevel%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%tablepos%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%tablemaps%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%resttables%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%room%`");
|
|
$this->doSQLcatch($pdo, "drop TABLE `%payment%`");
|
|
|
|
$this->doSQLcatch($pdo, "drop TABLE `%logo%`");
|
|
}
|
|
|
|
function dropTablesNoCatch($pdo) {
|
|
$this->doSQL($pdo, "DROP TABLE `%comments%`");
|
|
$this->doSQL($pdo, "DROP TABLE `%reservations%`");
|
|
$this->doSQL($pdo, "DROP TABLE `%work%`");
|
|
$this->doSQL($pdo, "DROP TABLE `%hist%`");
|
|
$this->doSQL($pdo, "DROP TABLE `%histprod%`");
|
|
$this->doSQL($pdo, "DROP TABLE `%histconfig%`");
|
|
$this->doSQL($pdo, "DROP TABLE `%histuser%`");
|
|
$this->doSQL($pdo, "DROP TABLE `%histactions%`");
|
|
|
|
$this->doSQL($pdo, "drop TABLE `%queueextras%`");
|
|
$this->doSQL($pdo, "drop TABLE `%extrasprods%`");
|
|
$this->doSQL($pdo, "drop TABLE `%extras%`");
|
|
|
|
$this->doSQL($pdo, "drop TABLE `%billproducts%`");
|
|
$this->doSQL($pdo, "drop TABLE `%queue%`");
|
|
$this->doSQL($pdo, "drop TABLE `%printjobs%`");
|
|
$this->doSQL($pdo, "drop TABLE `%bill%`");
|
|
$this->doSQL($pdo, "drop TABLE `%ratings%`");
|
|
$this->doSQL($pdo, "drop TABLE `%user%`");
|
|
$this->doSQL($pdo, "drop TABLE `%closing%`");
|
|
$this->doSQL($pdo, "drop TABLE `%config%`");
|
|
$this->doSQL($pdo, "drop TABLE `%products%`");
|
|
$this->doSQL($pdo, "drop TABLE `%prodtype%`");
|
|
$this->doSQL($pdo, "drop TABLE `%pricelevel%`");
|
|
$this->doSQL($pdo, "drop TABLE `%tablepos%`");
|
|
$this->doSQL($pdo, "drop TABLE `%tablemaps%`");
|
|
$this->doSQL($pdo, "drop TABLE `%resttables%`");
|
|
$this->doSQL($pdo, "drop TABLE `%room%`");
|
|
$this->doSQL($pdo, "drop TABLE `%payment%`");
|
|
$this->doSQL($pdo, "drop TABLE `%logo%`");
|
|
}
|
|
|
|
function createPaymentTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%payment%` (
|
|
`id` INT (3) NOT NULL UNIQUE,
|
|
`name` VARCHAR ( 20 ) NOT NULL,
|
|
`name_en` VARCHAR ( 20 ) NOT NULL,
|
|
`name_esp` VARCHAR ( 20 ) NOT NULL
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createUserTable($pdo)
|
|
{
|
|
$sql = "
|
|
CREATE TABLE `%user%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`username` VARCHAR ( 150 ) NOT NULL,
|
|
`userpassword` VARCHAR ( 150 ) NOT NULL,
|
|
`is_admin` INT (1) NOT NULL,
|
|
`right_waiter` INT (1) NOT NULL,
|
|
`right_kitchen` INT (1) NOT NULL,
|
|
`right_bar` INT (1) NOT NULL,
|
|
`right_supply` INT (1) NOT NULL,
|
|
`right_paydesk` INT (1) NOT NULL,
|
|
`right_statistics` INT (1) NOT NULL,
|
|
`right_bill` INT (1) NOT NULL,
|
|
`right_products` INT (1) NOT NULL,
|
|
`right_manager` INT (1) NOT NULL,
|
|
`right_closing` INT (1) NOT NULL,
|
|
`right_reservation` INT (1) NOT NULL,
|
|
`right_rating` INT (1) NOT NULL,
|
|
`right_changeprice` INT (1) NOT NULL,
|
|
`lastmodule` VARCHAR ( 30 ) NULL,
|
|
`ordervolume` INT (2) NULL,
|
|
`language` INT (2) NULL,
|
|
`receiptprinter` INT (1) NULL,
|
|
`roombtnsize` INT(1) NULL,
|
|
`tablebtnsize` INT(1) NULL,
|
|
`prodbtnsize` INT(1) NULL,
|
|
`prefertablemap` INT(1) NULL,
|
|
`keeptypelevel` INT(1) NOT NULL,
|
|
`extrasapplybtnpos` INT(1) NOT NULL,
|
|
`active` INT (2) NOT NULL
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createRoomTable($pdo)
|
|
{
|
|
$sql = "
|
|
CREATE TABLE `%room%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`roomname` VARCHAR ( 150 ) NOT NULL,
|
|
`abbreviation` VARCHAR (10) NULL,
|
|
`printer` INT(2) NULL,
|
|
`removed` INT(2) NULL,
|
|
`sorting` INT(2) NULL
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createTableMapsTable($pdo)
|
|
{
|
|
$sql = "
|
|
CREATE TABLE `%tablemaps%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`roomid` INT (10) NOT NULL,
|
|
`img` MEDIUMBLOB,
|
|
`sizex` INT(4) NULL,
|
|
`sizey` INT(4) NULL,
|
|
FOREIGN KEY (roomid) REFERENCES %room%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createTablePosTable($pdo)
|
|
{
|
|
$sql = "
|
|
CREATE TABLE `%tablepos%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`tableid` INT (10) NOT NULL,
|
|
`x` INT(4) NULL,
|
|
`y` INT(4) NULL,
|
|
FOREIGN KEY (tableid) REFERENCES %resttables%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createRestTables($pdo)
|
|
{
|
|
$sql = "
|
|
CREATE TABLE `%resttables%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`tableno` VARCHAR ( 150 ) NOT NULL,
|
|
`roomid` INT ( 10 ) NOT NULL,
|
|
`removed` INT(2) NULL,
|
|
`sorting` INT(2) NULL,
|
|
FOREIGN KEY (roomid) REFERENCES %room%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createConfigTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%config%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`name` VARCHAR ( 1000 ) ,
|
|
`setting` VARCHAR ( 10000 )
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createLogoTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%logo%` (
|
|
`id` INT (2) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`name` VARCHAR ( 100 ) ,
|
|
`setting` BLOB
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createProdTypeTable($pdo)
|
|
{
|
|
$sql = "
|
|
CREATE TABLE `%prodtype%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`name` VARCHAR ( 150 ) NOT NULL,
|
|
`usekitchen` INT(1) NOT NULL,
|
|
`usesupplydesk` INT(1) NOT NULL,
|
|
`kind` INT(2) NOT NULL,
|
|
`printer` INT(2) NULL,
|
|
`sorting` INT(2) NULL,
|
|
`reference` INT (10) NULL,
|
|
`removed` INT(1) NULL,
|
|
FOREIGN KEY (reference) REFERENCES %prodtype%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createExtrasTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%extras%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`name` VARCHAR ( 150 ) NOT NULL,
|
|
`price` DECIMAL (5,2) NOT NULL,
|
|
`removed` INT(1) NULL
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createExtrasprodsTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%extrasprods%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`extraid` INT (10) NOT NULL,
|
|
`prodid` INT (10) NOT NULL,
|
|
FOREIGN KEY (extraid) REFERENCES %extras%(id),
|
|
FOREIGN KEY (prodid) REFERENCES %products%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createQueueExtrasTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%queueextras%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`queueid` INT (10) NOT NULL,
|
|
`extraid` INT (10) NOT NULL,
|
|
`name` VARCHAR (200) NOT NULL,
|
|
FOREIGN KEY (extraid) REFERENCES %extras%(id),
|
|
FOREIGN KEY (queueid) REFERENCES %queue%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createProductTable($pdo)
|
|
{
|
|
$sql = "
|
|
CREATE TABLE `%products%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`shortname` VARCHAR ( 150 ) NOT NULL,
|
|
`longname` VARCHAR ( 150 ) NOT NULL,
|
|
`priceA` DECIMAL (5,2) NULL,
|
|
`priceB` DECIMAL (5,2) NULL,
|
|
`priceC` DECIMAL (5,2) NULL,
|
|
`tax` DECIMAL (5,2) NULL,
|
|
`category` INT(3) NULL,
|
|
`favorite` INT(1) NULL,
|
|
`sorting` INT(2) NULL,
|
|
`available` INT(2) NOT NULL,
|
|
`audio` VARCHAR ( 150 ) NULL,
|
|
`removed` INT(1) NULL,
|
|
FOREIGN KEY (category) REFERENCES %prodtype%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createPriceLevelTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%pricelevel%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`name` VARCHAR ( 1000 ) ,
|
|
`info` VARCHAR ( 1000 ),
|
|
`info_en` VARCHAR ( 1000 ) ,
|
|
`info_esp` VARCHAR ( 1000 )
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createClosingTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%closing%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`closingdate` DATETIME NOT NULL ,
|
|
`billcount` INT(5) NOT NULL ,
|
|
`billsum` DECIMAL (9,2) NOT NULL ,
|
|
`signature` blob NULL,
|
|
`remark` VARCHAR ( 1000 )
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createRatingsTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%ratings%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`date` DATETIME NOT NULL ,
|
|
`service` INT(2) NULL,
|
|
`kitchen` INT(2) NULL,
|
|
`remark` VARCHAR ( 200 ) NULL
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createBillTable($pdo)
|
|
{
|
|
$sql = "
|
|
CREATE TABLE `%bill%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`billdate` DATETIME NOT NULL ,
|
|
`brutto` DECIMAL (7,2) NULL,
|
|
`netto` DECIMAL (7,2) NULL,
|
|
`prevbrutto` DECIMAL (9,2) NULL,
|
|
`prevnetto` DECIMAL (9,2) NULL,
|
|
`tableid` VARCHAR ( 150 ) NOT NULL,
|
|
`closingid` INT(4) NULL,
|
|
`status` VARCHAR(2) NULL,
|
|
`paymentid` INT(2) NULL,
|
|
`userid` INT(3) NULL,
|
|
`ref` INT(10) NULL,
|
|
`tax` DECIMAL (5,2) NULL,
|
|
`host` INT(2) NULL,
|
|
`reason` VARCHAR ( 150 ) NULL,
|
|
`signature`blob NULL,
|
|
FOREIGN KEY billclosingref (closingid) REFERENCES %closing%(id),
|
|
FOREIGN KEY (paymentid) REFERENCES %payment%(id),
|
|
FOREIGN KEY (userid) REFERENCES %user%(id),
|
|
FOREIGN KEY billbillref (ref) REFERENCES %bill%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
/*
|
|
* Create the queue table:
|
|
* action: P=Pay, S=Storno
|
|
*/
|
|
function createQueueTable($pdo)
|
|
{
|
|
$sql = "
|
|
CREATE TABLE `%queue%` (
|
|
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`tablenr` INT( 3 ) NULL ,
|
|
`productid` INT( 10 ) NULL ,
|
|
`pricelevel` INT( 3 ) NOT NULL ,
|
|
`price` DECIMAL (5,2) NOT NULL,
|
|
`tax` DECIMAL (5,2) NOT NULL,
|
|
`productname` VARCHAR( 150 ) NULL,
|
|
`ordertime` DATETIME NULL ,
|
|
`orderuser` INT(10) NOT NULL ,
|
|
`anoption` VARCHAR( 150 ) NULL ,
|
|
`pricechanged` INT(1) NULL ,
|
|
`togo` INT(1) NULL ,
|
|
`readytime` DATETIME NOT NULL,
|
|
`delivertime` DATETIME NULL,
|
|
`paidtime` DATETIME NULL,
|
|
`billid` INT(10),
|
|
`toremove` INT(3) NOT NULL,
|
|
`cooking` INT(10) NULL,
|
|
`workprinted` INT(2) NOT NULL,
|
|
`isclosed` INT(1) NULL,
|
|
FOREIGN KEY (tablenr) REFERENCES %resttables%(id),
|
|
FOREIGN KEY (pricelevel) REFERENCES %pricelevel%(id),
|
|
FOREIGN KEY (productid) REFERENCES %products%(id),
|
|
FOREIGN KEY queuebillref (billid) REFERENCES %bill%(id),
|
|
FOREIGN KEY (cooking) REFERENCES %user%(id),
|
|
FOREIGN KEY (orderuser) REFERENCES %user%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createBillProductsTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%billproducts%` (
|
|
`queueid` INT( 10 ) NOT NULL,
|
|
`billid` INT(10) NOT NULL,
|
|
FOREIGN KEY (queueid) REFERENCES %queue%(id),
|
|
FOREIGN KEY billprodref (billid) REFERENCES %bill%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createHistTables($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%hist%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`date` DATETIME NOT NULL ,
|
|
`action` INT ( 2 ) NOT NULL,
|
|
`refid` INT (10) NULL
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
|
|
$sql = "
|
|
CREATE TABLE `%histprod%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`prodid` INT (10) NOT NULL,
|
|
`shortname` VARCHAR ( 150 ) NOT NULL,
|
|
`longname` VARCHAR ( 150 ) NOT NULL,
|
|
`priceA` DECIMAL (5,2) NULL,
|
|
`priceB` DECIMAL (5,2) NULL,
|
|
`priceC` DECIMAL (5,2) NULL,
|
|
`tax` DECIMAL (5,2) NULL,
|
|
`sorting` INT(2) NULL,
|
|
`available` INT(2) NOT NULL,
|
|
`favorite` INT(1) NULL,
|
|
`audio` VARCHAR ( 150 ) NULL,
|
|
`extras` VARCHAR ( 250 ) NULL,
|
|
FOREIGN KEY (prodid) REFERENCES %products%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
|
|
$sql = "
|
|
CREATE TABLE `%histconfig%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`configid` INT (10) ,
|
|
`setting` VARCHAR ( 10000 ),
|
|
FOREIGN KEY (configid) REFERENCES %config%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
|
|
$sql = "
|
|
CREATE TABLE `%histuser%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`userid` INT (10) ,
|
|
`username` VARCHAR ( 150 ) NOT NULL,
|
|
`is_admin` INT (1) NOT NULL,
|
|
`right_waiter` INT (1) NOT NULL,
|
|
`right_kitchen` INT (1) NOT NULL,
|
|
`right_bar` INT (1) NOT NULL,
|
|
`right_supply` INT (1) NOT NULL,
|
|
`right_paydesk` INT (1) NOT NULL,
|
|
`right_statistics` INT (1) NOT NULL,
|
|
`right_bill` INT (1) NOT NULL,
|
|
`right_products` INT (1) NOT NULL,
|
|
`right_manager` INT (1) NOT NULL,
|
|
`right_closing` INT (1) NOT NULL,
|
|
`right_reservation` INT (1) NOT NULL,
|
|
`right_rating` INT (1) NOT NULL,
|
|
`right_changeprice` INT (1) NOT NULL,
|
|
`active` INT (2) NOT NULL,
|
|
FOREIGN KEY (userid) REFERENCES %user%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
|
|
$sql = "
|
|
CREATE TABLE `%histactions%` (
|
|
`id` INT (3) NOT NULL,
|
|
`name` VARCHAR ( 20 ) NOT NULL,
|
|
`description` VARCHAR ( 150 ) NULL
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createPrintJobsTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%printjobs%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`content` TEXT NOT NULL ,
|
|
`type` INT (2) NOT NULL ,
|
|
`printer` INT(2) NULL
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function createWorkTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%work%` (
|
|
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`item` VARCHAR ( 20 ) NOT NULL ,
|
|
`value` VARCHAR ( 20 ) NOT NULL ,
|
|
`signature` blob NULL
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
}
|
|
|
|
function getPrivkey($pdo) {
|
|
$sql = "SELECT signature FROM %work% WHERE item=?";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute(array("privkey"));
|
|
$row = $stmt->fetchObject();
|
|
$privkey = $row->signature;
|
|
return(openssl_get_privatekey($privkey));
|
|
}
|
|
|
|
function signLastBillid($pdo) {
|
|
$sql = "SELECT MAX(id) as maxbillid FROM %bill%";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute();
|
|
$row =$stmt->fetchObject();
|
|
if ($row != null) {
|
|
$lastBillId = $row->maxbillid;
|
|
} else {
|
|
$lastBillId = 0;
|
|
}
|
|
$pkeyid = $this->getPrivkey($pdo);
|
|
$lastBillId = intval($lastBillId);
|
|
openssl_sign("B($lastBillId)", $signature, $pkeyid);
|
|
openssl_free_key($pkeyid);
|
|
$signature = base64_encode($signature);
|
|
|
|
$sql = "SELECT id FROM %work% WHERE item=?";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute(array("lastbillid"));
|
|
if ($stmt->rowCount() > 0) {
|
|
$sql = "UPDATE %work% SET value=?, signature=? WHERE item=?";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute(array($lastBillId,$signature,"lastbillid"));
|
|
} else {
|
|
$sql = "INSERT INTO `%work%` (`id` , `item`,`value`,`signature`) VALUES ( NULL,?,?,?)";
|
|
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
|
|
$stmt->execute(array("lastbillid",$lastBillId,$signature));
|
|
}
|
|
}
|
|
|
|
function createCommentsTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%comments%` (
|
|
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
|
`comment` VARCHAR( 150 ) NULL ,
|
|
`prodid` INT (10) NULL ,
|
|
`sorting` INT(2) NULL,
|
|
`active` INT (2) NOT NULL,
|
|
FOREIGN KEY (prodid) REFERENCES %products%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createReservationsTable($pdo) {
|
|
$sql = "
|
|
CREATE TABLE `%reservations%` (
|
|
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`creator` INT (10) NOT NULL,
|
|
`creationdate` DATETIME NOT NULL,
|
|
`scheduledate` DATETIME NOT NULL,
|
|
`name` VARCHAR( 100 ) NULL,
|
|
`email` VARCHAR( 100 ) NULL,
|
|
`starttime` INT (3) NOT NULL,
|
|
`duration` INT (3) NOT NULL,
|
|
`persons` INT (10) NULL,
|
|
`phone` VARCHAR( 40 ) NULL,
|
|
`remark` VARCHAR( 400 ) NULL,
|
|
FOREIGN KEY (creator) REFERENCES %user%(id)
|
|
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
|
";
|
|
$this->doSQL($pdo,$sql);
|
|
}
|
|
|
|
function createEmptyTables($pdo)
|
|
{
|
|
$this->createPaymentTable($pdo);
|
|
$this->createUserTable($pdo);
|
|
$this->createRoomTable($pdo);
|
|
$this->createRestTables($pdo);
|
|
$this->createTableMapsTable($pdo);
|
|
$this->createTablePosTable($pdo);
|
|
$this->createConfigTable($pdo);
|
|
$this->createProdTypeTable($pdo);
|
|
$this->createProductTable($pdo);
|
|
$this->createPriceLevelTable($pdo);
|
|
$this->createClosingTable($pdo);
|
|
$this->createRatingsTable($pdo);
|
|
$this->createBillTable($pdo);
|
|
$this->createQueueTable($pdo);
|
|
$this->createBillProductsTable($pdo);
|
|
$this->createHistTables($pdo);
|
|
$this->createPrintJobsTable($pdo);
|
|
$this->createWorkTable($pdo);
|
|
$this->createCommentsTable($pdo);
|
|
$this->createReservationsTable($pdo);
|
|
$this->createLogoTable($pdo);
|
|
$this->createExtrasTable($pdo);
|
|
$this->createExtrasprodsTable($pdo);
|
|
$this->createQueueExtrasTable($pdo);
|
|
}
|
|
}
|
|
|
|
?>
|