setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { 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; $user = $user; $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; } } function performSqlCommand($sqlCommand) { $sqlCommand = $this->resolveTablenamesInSqlString($sqlCommand); $con=mysqli_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASSWORD,MYSQL_DB); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,$sqlCommand); // Execute query if ($result) { //echo "SQL command could be executed successful"; } else { echo "Error executing SQL command: " . mysqli_error($con); } mysqli_close($con); return $result; } /* * A prepared statement has several advantages. In this SW it is mainly * used to avoid quoting of strings */ function performPreparedStatementCreateClosing($closingTime,$remark) { date_default_timezone_set(self::getTimeZone()); $closingTime = date('Y-m-d H:i:s'); $closingEntrySql = $this->resolveTablenamesInSqlString("INSERT INTO `%closing%` (`id` , `closingdate`,`remark`) VALUES (NULL , ?,?)"); $mysqli = new mysqli(MYSQL_HOST,MYSQL_USER,MYSQL_PASSWORD,MYSQL_DB); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; } if (!($stmt = $mysqli->prepare($closingEntrySql))) { echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error; } if (!$stmt->bind_param("ss", $closingTime, $remark)) { echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error; } if (!$stmt->execute()) { echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error; } $id = mysqli_insert_id($mysqli); $stmt->close(); mysqli_close($mysqli); return $id; } function performSqlCommandRetLastId($sqlCommand) { $sqlCommand = $this->resolveTablenamesInSqlString($sqlCommand); $con=mysqli_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASSWORD,MYSQL_DB); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,$sqlCommand); // Execute query if ($result) { //echo "SQL command could be executed successful"; } else { echo "Error executing SQL command: " . mysqli_error($con); } $id = mysqli_insert_id($con); mysqli_close($con); return array("result" => $result, "id" => $id); } /* * Filter out escape sequences. The method requires an open db connection */ function filterString($aString) { $mysqli = new mysqli(MYSQL_HOST, MYSQL_USER,MYSQL_PASSWORD,MYSQL_DB); /* check connection */ if (mysqli_connect_errno()) { exit(); } $filteredString = $mysqli->real_escape_string($aString); $mysqli->close(); return $filteredString; } /* * 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; } $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("%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("%reservations%",$prefix . 'reservations',$out); $out = str_replace("%logo%",$prefix . 'logo',$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); 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; } } } ?>