ordersprinter/install/installer.php

624 lines
21 KiB
PHP

<?php
error_reporting(E_ALL);
class Installer {
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 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);
}
}
class ConfigWriter {
function getConfigVals() {
if (is_readable("../php/config.php")) {
include( "../php/config.php" );
$retArray = array(
"host" => MYSQL_HOST,
"db" => MYSQL_DB,
"user" => MYSQL_USER,
"password" => MYSQL_PASSWORD,
"tabprefix" => TAB_PREFIX);
echo json_encode(array("status" => "OK","result" => $retArray));
} else {
echo json_encode(array("status" => "Failed"));
}
}
}
class Admin {
var $prefix = "";
var $pdo;
function setPrefix($pre) {
$this->prefix = $pre;
}
function setPdo($pdo) {
$this->pdo = $pdo;
}
function openDbAndReturnPdo ($host,$db,$user,$password) {
$dsn = 'mysql:host=' . $host . ';dbname=' . $db;
$pdo = null;
try {
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
echo 'Verbindungsproblem: ' . $e->getMessage();
$pdo = null;
}
return $pdo;
}
function createTables()
{
$pdo = $this->pdo;
$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 `%billproducts%`");
$this->doSQLcatch($pdo, "drop TABLE `%queue%`");
$this->doSQLcatch($pdo, "drop TABLE `%printjobs%`");
$this->doSQLcatch($pdo, "drop TABLE `%bill%`");
$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 `%resttables%`");
$this->doSQLcatch($pdo, "drop TABLE `%room%`");
$this->doSQLcatch($pdo, "drop TABLE `%payment%`");
$this->createPaymentTable($pdo);
$this->createUserTable($pdo);
$this->createRoomTable($pdo);
$this->createRestTables($pdo);
$this->createConfigTable($pdo);
$this->createProdTypeTable($pdo);
$this->createProductTable($pdo);
$this->createPriceLevelTable($pdo);
$this->createClosingTable($pdo);
$this->createBillTable($pdo);
$this->createQueueTable($pdo);
$this->createBillProductsTable($pdo);
$this->createHistTables($pdo);
$this->createPrintJobsTable($pdo);
$this->doSQL($pdo,"INSERT INTO `%pricelevel%` (`id` , `name`,`info`) VALUES ('1', 'A', 'Normale Preisstufe')");
$this->doSQL($pdo,"INSERT INTO `%pricelevel%` (`id` , `name`,`info`) VALUES ('2', 'B', 'Wochenendtarif')");
$this->doSQL($pdo,"INSERT INTO `%pricelevel%` (`id` , `name`,`info`) VALUES ('3', 'C', 'Happy Hour')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'pricelevel', '1')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'tax', '19,0')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'togotax', '7,0')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'stornocode', '123')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'printpass', 'printen')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'companyinfo', 'Musterrestaurant\nBeispielstrasse 123\n12345 Musterort')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'serverurl', '')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'email', '')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'logourl', 'customer/logo.png')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'payprinttype', 'l')");
$this->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'version', '1.0')");
$this->readConfigTableAndSendToHist($pdo);
return;
}
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 readConfigTableAndSendToHist($pdo) {
$sql_query = "SELECT * FROM %config%";
$sql_insert_histconfig = "INSERT INTO %histconfig% (id,configid,setting) VALUES (
NULL,?,?)";
$stmt_query = $pdo->prepare($this->resolveTablenamesInSqlString($sql_query));
$stmt_insert_histconfig = $pdo->prepare($this->resolveTablenamesInSqlString($sql_insert_histconfig));
$stmt_query->execute();
$result = $stmt_query->fetchAll();
foreach($result as $row){
$stmt_insert_histconfig->execute(array($row['id'],$row['setting']));
$newRefIdForHist = $pdo->lastInsertId();
$this->insertIntoHist($pdo, '2', $newRefIdForHist);
}
}
private function insertIntoHist($pdo,$action,$refIdForHist) {
date_default_timezone_set('Europe/Berlin');
$currentTime = date('Y-m-d H:i:s');
$sql_insert_hist = "INSERT INTO %hist% (id,date,action,refid) VALUES (NULL,?,?,?)";
$stmt_insert_hist = $pdo->prepare($this->resolveTablenamesInSqlString($sql_insert_hist));
$stmt_insert_hist->execute(array($currentTime, $action, $refIdForHist));
}
function insertAdminUser($adminpass) {
$md5adminpass = md5($adminpass);
$pdo = $this->pdo;
$userInsertSql = "INSERT INTO `%user%` (`id` , `username` , `userpassword`, `is_admin`, `right_waiter`,`right_kitchen`,`right_bar`,`right_supply`,`right_paydesk`,`right_statistics`,`right_bill`,`right_products`,`right_manager`,`active`) VALUES (NULL,?,?,?,?,?,?,?,?,?,?,?,?,'1')";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($userInsertSql));
$stmt->execute(array('admin',$md5adminpass,1,0,0,0,0,0,0,0,0,1));
$newUserIdForHist = $pdo->lastInsertId();
// now insert into hist
$sql_insert_histuser = "INSERT INTO %histuser% (`id` , `userid`, `username` ,
`is_admin`, `right_waiter`,`right_kitchen`,`right_bar`,`right_supply`,`right_paydesk`,
`right_statistics`,`right_bill`,`right_products`,`right_manager`,`active`) VALUES (
NULL,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt_insert_histuser = $pdo->prepare($this->resolveTablenamesInSqlString($sql_insert_histuser));
$stmt_insert_histuser->execute(array($newUserIdForHist,'admin',1,0,0,0,0,0,0,0,0,1,1));
$newRefIdForHist = $pdo->lastInsertId();
$this->insertIntoHist($pdo, '3', $newRefIdForHist);
}
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 (billid) REFERENCES %bill%(id)
) ENGINE = InnoDb ;
";
$this->doSQL($pdo,$sql);
}
/*
* 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 ) NOT NULL ,
`productid` INT( 10 ) NULL ,
`pricelevel` INT( 3 ) NOT NULL ,
`price` DECIMAL (5,2) NOT NULL,
`productname` VARCHAR( 150 ) NULL,
`ordertime` DATETIME NULL ,
`anoption` VARCHAR( 150 ) NULL ,
`readytime` DATETIME NOT NULL,
`delivertime` DATETIME NULL,
`payinprogress` INT(3) NOT NULL,
`paidtime` DATETIME NULL,
`billid` INT(10),
`toremove` INT(3) NOT NULL,
`cooking` INT(10) NULL,
`workprinted` INT(2) NOT NULL,
`action` VARCHAR(3) NOT NULL,
FOREIGN KEY (tablenr) REFERENCES %resttables%(id),
FOREIGN KEY (pricelevel) REFERENCES %pricelevel%(id),
FOREIGN KEY (productid) REFERENCES %products%(id),
FOREIGN KEY (billid) REFERENCES %bill%(id),
FOREIGN KEY (cooking) REFERENCES %user%(id)
) ENGINE = InnoDb ;
";
$this->doSQL($pdo,$sql);
}
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,
`sorting` INT(2) NULL,
`reference` INT (10) NULL,
`removed` INT(1) NULL,
FOREIGN KEY (reference) REFERENCES %prodtype%(id)
) 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,
`category` INT(3) NULL,
`sorting` INT(2) NULL,
`available` INT(2) NOT NULL,
`audio` VARCHAR ( 150 ) NULL,
`removed` INT(1) NULL,
FOREIGN KEY (category) REFERENCES %prodtype%(id)
) ENGINE = InnoDb ;
";
$this->doSQL($pdo,$sql);
}
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 (2) NOT NULL,
`right_waiter` INT (2) NOT NULL,
`right_kitchen` INT (2) NOT NULL,
`right_bar` INT (2) NOT NULL,
`right_supply` INT (2) NOT NULL,
`right_paydesk` INT (2) NOT NULL,
`right_statistics` INT (2) NOT NULL,
`right_bill` INT (2) NOT NULL,
`right_products` INT (2) NOT NULL,
`right_manager` INT (2) NOT NULL,
`lastmodule` VARCHAR ( 30 ) NULL,
`ordervolume` INT (2) NULL,
`active` INT (2) NOT NULL
) ENGINE = InnoDb ;
";
$this->doSQL($pdo,$sql);
}
function createPaymentTable($pdo) {
$sql = "
CREATE TABLE `%payment%` (
`id` INT (3) NOT NULL UNIQUE,
`name` VARCHAR ( 20 ) NOT NULL
) ENGINE = InnoDb
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
$sql = "INSERT INTO %payment% (id,name) VALUES (?,?)";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('1', 'Barzahlung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('2', 'EC-Kartenzahlung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('3', 'Kreditkartenzahlung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('4', 'Rechnung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('5', 'Ueberweisung'));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('6', 'Lastschrift'));
}
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) NOT NULL
) 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,
`sorting` INT(2) NULL,
`available` INT(2) NOT NULL,
`audio` VARCHAR ( 150 ) NULL,
FOREIGN KEY (prodid) REFERENCES %products%(id)
) 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)
) 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 (2) NOT NULL,
`right_waiter` INT (2) NOT NULL,
`right_kitchen` INT (2) NOT NULL,
`right_bar` INT (2) NOT NULL,
`right_supply` INT (2) NOT NULL,
`right_paydesk` INT (2) NOT NULL,
`right_statistics` INT (2) NOT NULL,
`right_bill` INT (2) NOT NULL,
`right_products` INT (2) NOT NULL,
`right_manager` INT (2) NOT NULL,
`active` INT (2) NOT NULL,
FOREIGN KEY (userid) REFERENCES %user%(id)
) ENGINE = InnoDb
";
$this->doSQL($pdo,$sql);
$sql = "
CREATE TABLE `%histactions%` (
`id` INT (3) NOT NULL,
`name` VARCHAR ( 20 ) NOT NULL,
`description` VARCHAR ( 150 ) NULL
) ENGINE = InnoDb
";
$this->doSQL($pdo,$sql);
$this->defineHistActions($pdo);
}
public function defineHistActions ($pdo) {
$sql = "INSERT INTO %histactions% (id,name,description) VALUES (?,?,?)";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('1', 'ProdInit', 'Initiales Befuellen der Produkttabelle'));
$stmt->execute(array('2', 'ConfigInit', 'Initiales Befuellen der Konfigurationstabelle'));
$stmt->execute(array('3', 'UserInit', 'Initiales Befuellen der Benutzertabelle'));
$stmt->execute(array('4', 'ProdChange', 'Modifikation der Produktdaten'));
$stmt->execute(array('5', 'ProdCreation', 'Neues Produkt'));
$stmt->execute(array('6', 'ConfigChange', 'Modifikation der Konfiguration'));
$stmt->execute(array('7', 'UserCreation', 'Neuer Benutzer'));
$stmt->execute(array('8', 'UserChange', 'Modifikation eines Benutzers'));
}
function createRoomTable($pdo)
{
$sql = "
CREATE TABLE `%room%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`roomname` VARCHAR ( 150 ) NOT NULL,
`removed` INT(2) NULL,
`sorting` INT(2) NULL
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($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)
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
$sql = "INSERT INTO `%room%` (`id`, `roomname`) VALUES (NULL,?)";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('Raum 1'));
$roomId = $pdo->lastInsertId();
$sql = "INSERT INTO `%resttables%` (`id` , `tableno`, `roomid`) VALUES (NULL ,?,?)";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('Tisch 1',$roomId));
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute(array('Tisch 2',$roomId));
}
function createBillTable($pdo)
{
$sql = "
CREATE TABLE `%bill%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`billdate` DATETIME NOT NULL ,
`content` VARCHAR ( 50000 ) ,
`brutto` DECIMAL (5,2) NULL,
`netto` DECIMAL (5,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) NOT NULL,
FOREIGN KEY (closingid) REFERENCES %closing%(id),
FOREIGN KEY (paymentid) REFERENCES %payment%(id),
FOREIGN KEY (userid) REFERENCES %user%(id),
FOREIGN KEY (ref) REFERENCES %bill%(id)
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
// insert dummy entry so that select query with closing works
date_default_timezone_set('Europe/Berlin');
$currentTime = date('Y-m-d H:i:s');
$billInsertSql = "INSERT INTO `%bill%` (`id` , `billdate`,`content`,`brutto`,`tableid`,`paymentid`,`tax`) VALUES ( '0', '$currentTime' , '', '', '-1', NULL, '0.00')";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($billInsertSql));
$stmt->execute();
}
function createPriceLevelTable($pdo) {
$sql = "
CREATE TABLE `%pricelevel%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR ( 10000 ) ,
`info` VARCHAR ( 10000 )
) 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 )
) 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 ,
`remark` VARCHAR ( 10000 )
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
}
function createPrintJobsTable($pdo) {
$sql = "
CREATE TABLE `%printjobs%` (
`id` INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`content` VARCHAR ( 50000 ) NOT NULL ,
`type` INT (2) NOT NULL
) ENGINE = InnoDb ;
";
$stmt = $pdo->prepare($this->resolveTablenamesInSqlString($sql));
$stmt->execute();
}
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("%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);
return (str_replace("%prodtype%",$this->prefix . "prodtype",$out));
}
function testDbConnection($host,$dbname,$user,$pass) {
$pdo = $this->openDbAndReturnPdo($host,$dbname,$user,$pass);
if (!is_null($pdo)) {
echo json_encode("OK");
} else {
echo json_encode("ERROR");
}
}
function writeConfigFile($host,$db,$user,$password,$prefix) {
$errorlevel = "<?php\nerror_reporting(E_ERROR);\n\n"; // development: E_ALL
$hostlines = "// Zum Aufbau der Verbindung zur Datenbank\n";
$hostlines .= "// die Daten erhalten Sie von Ihrem Provider\n";
$hostlines .= "define ( 'MYSQL_HOST','$host' );";
$userlines = "define ( 'MYSQL_USER', '$user' );";
$dbpasslines = "define ( 'MYSQL_PASSWORD', '$password' );";
$dblines = "define ( 'MYSQL_DB', '$db' );";
$prefixlines = "define ('TAB_PREFIX', '$prefix');";
$configText = "$errorlevel\n$hostlines\n$userlines\n$dbpasslines\n$dblines\n$prefixlines\n?>";
file_put_contents("../php/config.php", $configText);
}
}
$command = $_GET["command"];
if ($command == 'checkWriteAccess') {
$checker = new Installer();
$checker->checkWriteAccess();
} else if ($command == 'testDbConnection') {
$admin = new Admin();
try {
if (isset($_POST['host']) && isset($_POST['dbname']) && isset($_POST['user']) && isset($_POST['pass'])) {
$admin->testDbConnection($_POST['host'],$_POST['dbname'],$_POST['user'],$_POST['pass']);
} else {
echo json_encode("ERROR");
}
} catch (Exception $e) {
echo json_encode("ERROR");
}
} else if ($command == 'getConfig') {
$configWriter = new ConfigWriter();
$configWriter->getConfigVals();
} else if ($command == 'install') {
$admin = new Admin();
$pdo = $admin->openDbAndReturnPdo($_POST['host'],$_POST['db'],$_POST['user'],$_POST['password']);
$admin->setPdo($pdo);
$admin->setPrefix($_POST['prefix']);
$admin->createTables();
$admin->insertAdminUser($_POST['adminpass']);
$admin->writeConfigFile($_POST['host'],$_POST['db'],$_POST['user'],$_POST['password'],$_POST['prefix']);
echo json_encode("OK");
}
?>