Blame | Last modification | View Log | RSS feed
<?
$dbversion = "2.6";
$_Handle = -1;
$_hCount = 0;
function OpenDB($host = "", $dbname = "") {
global $_Handle;
global $_hCount;
if ($_hCount > 0) {
$_hCount++;
return $_Handle;
}
if (!strlen($host) || !strlen($dbname)) {
$ini_array = parse_ini_file("setup/setup.dat");
$dbname = $ini_array['dbname'];
$host = $ini_array['domain'];
$port = $ini_array['port'];
$user = $ini_array['dbuser'];
$passwd = $ini_array['dbpasswd'];
}
if (isset($host) && strlen($host) > 0)
$connStr = "host=$host ";
else
$connStr = "host=localhost";
if (isset($dbname) && strlen($dbname) > 0)
$connStr .= " dbname=$dbname";
if (isset($port) && strlen($port) > 0)
$connStr .= " port=$port";
if (isset($user) && strlen($user) > 0)
$connStr .= " user=$user";
if (isset($passwd) && strlen($passwd) > 0)
$connStr .= " password=$passwd";
$db = pg_connect($connStr);
if ($db == false) {
echo "<p class=\"error\">OpenDB Error: Datenbank $dbname konnte nicht geöffnet werden!</p>\n";
return false;
}
$_Handle = $db;
$_hCount++;
return $db;
}
function QueryDB($db, $qstr) {
global $_hCount;
if ($_hCount == 0) {
echo "<p class=\"error\">ERROR: Es ist keine Datenbank geöffnet!</p>\n";
return NULL;
}
if (!isset($db) || !isset($qstr) || $qstr == "") {
echo "<p class=\"error\">ERROR: Keine gültige SQL-Abfrage!</p>\n";
return NULL;
}
$result = pg_query($db, $qstr);
if (!$result) {
$errormessage = pg_errormessage($db);
echo "<p class=\"error\">ERROR: $errormessage<br>\n";
echo "<br>SQL-Error: $qstr</p>\n";
return NULL;
}
return $result;
}
function TQueryDB($db, $qstr) {
global $_hCount;
if ($_hCount == 0) {
echo "<p class=\"error\">ERROR: Es ist keine Datenbank geöffnet!</p>\n";
return NULL;
}
if (!isset($db) || !isset($qstr) || $qstr == "") {
echo "<p class=\"error\">ERROR: Keine gültige SQL-Abfrage!</p>\n";
return NULL;
}
$result = pg_query($db, "BEGIN");
if (!$result) {
$errormessage = pg_errormessage($db);
echo "<p class=\"error\">ERROR: $errormessage</td>\n";
return NULL;
}
$result = pg_query($db, $qstr);
if (!$result) {
$errormessage = pg_errormessage($db);
echo "<p class=\"error\">ERROR: $errormessage<br>\n";
echo "<br>SQL-Error: $qstr</p>\n";
pg_query($db, "ROLLBACK");
return NULL;
}
$result = pg_query($db, "COMMIT");
if (!$result) {
$errormessage = pg_errormessage($db);
echo "<p class=\"error\">ERROR: $errormessage</p>\n";
return NULL;
}
return $result;
}
function fetchDB($result, $pos) {
global $_hCount;
if ($_hCount == 0) {
echo "<p class=\"error\">ERROR: Es ist keine Datenbank geöffnet!</p>\n";
return false;
}
if (!isset($result)) {
Error("fetchDB: Es wurde kein Ergebnisset übergeben!");
return false;
}
if (!isset($pos) || $pos < 0) {
Error("fetchDB: Keine oder ungültige Position!");
return false;
}
if (($erg = pg_fetch_row($result, $pos)) == false) {
Error("fetchDB: Fehler beim Auslesen eines Datensatzes!");
return false;
}
return $erg;
}
function numrowsDB($result) {
global $_hCount;
if ($_hCount == 0) {
echo "<p class=\"error\">ERROR: Es ist keine Datenbank geöffnet!</p>\n";
return -1;
}
if (!isset($result)) {
Error("numrowDB: Es wurde kein Ergebnisset übergeben!");
return -1;
}
if (($rows = pg_num_rows($result)) == -1) {
Error("numrowDB: Anzahl Datensätze konnte nicht bestimmt werden!");
return -1;
}
return $rows;
}
function numrowDB($result) {
return numrowsDB($result);
}
function closeDB($db) {
global $_hCount;
global $_Handle;
if ($_hCount > 1) {
$_hCount--;
return true;
}
$_hCount = 0;
$_Handle = -1;
return pg_close($db);
}
function Journal($typ, $message, $db=NULL) {
global $unum;
$dbflag = false;
if (!isset($unum) || $unum <= 0)
return;
if ($db == NULL) {
$db = OpenDB();
$dbflag = true;
}
$query = "select kj_num from key_jtype where kj_num = $typ";
$result = QueryDB($db, $query);
if (!$result) {
closeDB($db);
return;
}
if (pg_num_rows($result) <= 0)
$typ = 999;
$query = "select co_ejournal from counter";
$result = QueryDB($db, $query);
if (!$result) {
closeDB($db);
return;
}
$data = pg_fetch_row($result, 0);
$co_ejournal = $data[0] + 1;
$zeit = time();
$query = "insert into ejournal (ej_num, ej_date, ej_uid, ej_type,";
$query .= "ej_text) values ($co_ejournal, $zeit, $unum, $typ, '$message')";
if (!QueryDB($db, "begin")) {
closeDB($db);
return;
}
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return;
}
$query = "update counter set co_ejournal = $co_ejournal";
if (!QueryDB($db, $query)) {
QueryDB($db, "rollback");
closeDB($db);
return;
}
QueryDB($db, "commit");
if ($dbflag)
closeDB($db);
}
function Error($message) {
echo "<p class=\"error\">$message</p>\n";
}
# Pruefen der Datenbankversion:
#
$dbver = OpenDB();
$qs = "select version from counter";
if (!($erg = QueryDB($dbver, $qs))) {
Error("Falsche oder keine Datenbank!");
exit;
}
$data = pg_fetch_row($erg, 0);
if ($data[0] != $dbversion) {
Error("Die Datenbank hat eine ungültige Versionsnummer!");
closeDB($dbver);
exit;
}
closeDB($dbver);
unset($dbver);
unset($erg);
unset($qs);
unset($data);
?>