setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { if ($doEchoError) { echo 'Connection failed: ' . $e->getMessage(); } } return $pdo; } function openDbAndReturnPdo () { $dsn = 'mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DB; $user = MYSQL_USER; $password = MYSQL_PASSWORD; $pdo = null; try { $pdo = new PDO($dsn, $user, $password); $pdo ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } return $pdo; } function testDbAccess($host,$dbname,$user,$pass) { $dsn = 'mysql:host=' . $host . ';dbname=' . $dbname; $password = $pass; $pdo = null; try { $pdo = new PDO($dsn, $user, $password); $pdo ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { // } if ($pdo != null) { return true; } else { return false; } } /* * To use sql strings that are easy to read the table names are used * without variables. But since the user can specify a prefix for all * tables the substitution must be done somewhere. This is the function * that replaces the %TABLE% by $prefix_table */ public static function substTableAlias($sqlString) { $prefix = TAB_PREFIX; if (!is_null(self::$prefix)) { $prefix = self::$prefix; } return self::substTableAliasCore($sqlString, $prefix); } public static function substTableAliasCore($sqlString,$prefix) { $out = str_replace("%queue%",$prefix . 'queue',$sqlString); $out = str_replace("%products%",$prefix . 'products',$out); $out = str_replace("%user%",$prefix . 'user',$out); $out = str_replace("%room%",$prefix . 'room',$out); $out = str_replace("%resttables%",$prefix . 'resttables',$out); $out = str_replace("%bill%",$prefix . 'bill',$out); $out = str_replace("%customerlog%", $prefix . 'customerlog', $out); $out = str_replace("%customers%",$prefix . 'customers',$out); $out = str_replace("%groups%",$prefix . 'groups',$out); $out = str_replace("%groupcustomer%",$prefix . 'groupcustomer',$out); $out = str_replace("%vacations%", $prefix .'vacations',$out); $out = str_replace("%tablemaps%",$prefix . "tablemaps",$out); $out = str_replace("%tablepos%",$prefix . "tablepos",$out); $out = str_replace("%pricelevel%",$prefix . 'pricelevel',$out); $out = str_replace("%config%",$prefix . 'config',$out); $out = str_replace("%closing%",$prefix . 'closing',$out); $out = str_replace("%printjobs%",$prefix . 'printjob',$out); $out = str_replace("%hist%",$prefix . 'hist',$out); $out = str_replace("%histprod%",$prefix . 'histprod',$out); $out = str_replace("%histconfig%",$prefix . 'histconfig',$out); $out = str_replace("%histuser%",$prefix . 'histuser',$out); $out = str_replace("%histactions%",$prefix . 'histactions',$out); $out = str_replace("%payment%",$prefix . 'payment',$out); $out = str_replace("%billproducts%", $prefix . 'billproducts',$out); $out = str_replace("%work%",$prefix . 'work',$out); $out = str_replace("%comments%",$prefix . 'comments',$out); $out = str_replace("%hsin%",$prefix . 'hsin',$out); $out = str_replace("%hsout%",$prefix . 'hsout',$out); $out = str_replace("%reservations%",$prefix . 'reservations',$out); $out = str_replace("%logo%",$prefix . 'logo',$out); $out = str_replace("%log%",$prefix . 'log',$out); $out = str_replace("%extras%", $prefix . 'extras',$out); $out = str_replace("%extrasprods%",$prefix . 'extrasprods', $out); $out = str_replace("%queueextras%",$prefix . 'queueextras', $out); $out = str_replace("%ratings%",$prefix . 'ratings', $out); $out = str_replace("%prodimages%",$prefix . 'prodimages', $out); $out = str_replace("%roles%",$prefix . 'roles', $out); $out = str_replace("%recordsqueue%",$prefix . 'recordsqueue', $out); $out = str_replace("%records%",$prefix . 'records', $out); $out = str_replace("%times%",$prefix . 'times', $out); $out = str_replace("%tasks%",$prefix . 'tasks', $out); $out = str_replace("%taskhist%",$prefix . 'taskhist', $out); return (str_replace("%prodtype%",$prefix . 'prodtype',$out)); } public function resolveTablenamesInSqlString($sqlString) { return DbUtils::substTableAlias($sqlString); } public static function getTimeZone() { if (is_null(self::$timezone)) { if(session_id() == '') { session_start(); } if (isset($_SESSION['timezone'])) { return $_SESSION['timezone']; } else { return "Europe/Berlin"; } } else { return self::$timezone; } } public static function getTimeZoneDb($pdo) { if (is_null($pdo)) { return "Europe/Berlin"; } try { return CommonUtils::getConfigValue($pdo, 'timezone', "Europe/Berlin"); } catch (Exception $ex) { return "Europe/Berlin"; } } public static $userCols = array( array("col" => 'id', "hist" => 1, "new" => null, "update" => null), array("col" => 'username', "hist" => 1, "new" => 'username', "update" => null), array("col" => 'userpassword', "hist" => 0, "new" => null, "update" => null), array("col" => 'is_admin', "hist" => 1, "new" => 'isAdmin', "update" => 'isAdmin'), array("col" => 'right_waiter', "hist" => 1, "new" => 'rWaiter', "update" => 'rWaiter'), array("col" => 'right_kitchen', "hist" => 1, "new" => 'rKitchen', "update" => 'rKitchen'), array("col" => 'right_bar', "hist" => 1, "new" => 'rBar', "update" => 'rBar'), array("col" => 'right_supply', "hist" => 1, "new" => 'rSupply', "update" => 'rSupply'), array("col" => 'right_paydesk', "hist" => 1, "new" => 'rPayDesk', "update" => 'rPayDesk'), array("col" => 'right_statistics', "hist" => 1, "new" => 'rStat', "update" => 'rStat'), array("col" => 'right_bill', "hist" => 1, "new" => 'rBill', "update" => 'rBill'), array("col" => 'right_products', "hist" => 1, "new" => 'rProducts', "update" => 'rProducts'), array("col" => 'right_reservation', "hist" => 1, "new" => 'rReservation', "update" => 'rReservation'), array("col" => 'right_rating', "hist" => 1, "new" => 'rRating', "update" => 'rRating'), array("col" => 'right_changeprice', "hist" => 1, "new" => 'rChangeprice', "update" => 'rChangeprice'), array("col" => 'right_customers', "hist" => 1, "new" => 'rCustomers', "update" => 'rCustomers'), array("col" => 'right_pickups', "hist" => 1, "new" => 'rPickups', "update" => 'rPickups'), array("col" => 'right_manager', "hist" => 1, "new" => 'rManager', "update" => 'rManager'), array("col" => 'right_closing', "hist" => 1, "new" => 'rClosing', "update" => 'rClosing'), array("col" => 'right_dash', "hist" => 1, "new" => 'rDash', "update" => 'rDash'), array("col" => 'right_timetracking',"hist" => 1, "new" => 'rTimetracking', "update" => 'rTimetracking'), array("col" => 'right_timemanager', "hist" => 1, "new" => 'rTimemanager', "update" => 'rTimemanager'), array("col" => 'right_tasks', "hist" => 1, "new" => 'rTasks', "update" => 'rTasks'), array("col" => 'right_tasksmanagement',"hist" => 1,"new" => 'rTasksmanagement', "update" => 'rTasksmanagement'), array("col" => 'quickcash', "hist" => 1, "new" => null, "update" => null), array("col" => 'active', "hist" => 1, "new" => null ,"default" => 1, "update" => null), array("col" => 'area', "hist" => 1, "new" => null ,"default" => null, "update" => null), array("col" => 'lastmodule', "hist" => 0, "new" => null ,"default" => null, "update" => null), array("col" => 'ordervolume', "hist" => 0, "new" => null ,"default" => null, "update" => null), array("col" => 'language', "hist" => 0, "new" => null, "update" => null), array("col" => 'receiptprinter', "hist" => 0, "new" => null ,"default" => null, "update" => null), array("col" => 'roombtnsize', "hist" => 0, "new" => null ,"default" => null, "update" => null), array("col" => 'tablebtnsize', "hist" => 0, "new" => null ,"default" => null, "update" => null), array("col" => 'prodbtnsize', "hist" => 0, "new" => null ,"default" => null, "update" => null), array("col" => 'prefertablemap', "hist" => 0, "new" => null ,"default" => 1, "update" => null), array("col" => 'preferimgdesk', "hist" => 0, "new" => null ,"default" => null, "update" => null), array("col" => 'preferimgmobile', "hist" => 0, "new" => null ,"default" => null, "update" => null), array("col" => 'showplusminus', "hist" => 0, "new" => null ,"default" => null, "update" => null), array("col" => 'keeptypelevel', "hist" => 0, "new" => null ,"default" => 0, "update" => null), array("col" => 'extrasapplybtnpos', "hist" => 0, "new" => null ,"default" => 1, "update" => null) ); public static $prodCols = array( array("col" => 'id', "hist" => 1, "property" => "prodid"), array("col" => 'shortname', "hist" => 1, "property" => "shortName"), array("col" => 'longname', "hist" => 1, "property" => "longName"), array("col" => 'priceA', "hist" => 1, "property" => "priceA"), array("col" => 'priceB', "hist" => 1, "property" => "priceB"), array("col" => 'priceC', "hist" => 1, "property" => "priceC"), array("col" => 'barcode', "hist" => 1, "property" => "barcode"), array("col" => 'unit', "hist" => 1, "property" => "unit"), array("col" => 'days', "hist" => 1, "property" => "days"), array("col" => 'tax', "hist" => 1, "property" => "tax"), array("col" => 'taxaustria', "hist" => 1, "property" => "taxaustria"), array("col" => 'amount', "hist" => 0, "property" => "amount"), array("col" => 'category', "hist" => 0, "property" => "category"), array("col" => 'favorite', "hist" => 1, "property" => "favorite"), array("col" => 'sorting', "hist" => 1), array("col" => 'available', "hist" => 1, "property" => "available"), array("col" => 'audio', "hist" => 1, "property" => "audio"), array("col" => 'prodimageid', "hist" => 1, "property" => "prodimageid"), array("col" => 'display', "hist" => 1, "property" => "display"), array("col" => 'removed', "hist" => 0) ); }