Subversion Repositories public

Compare Revisions

Ignore whitespace Rev 3 → Rev 4

/pm/trunk/dbaccess.inc
0,0 → 1,275
<?
$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&ouml;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&ouml;ffnet!</p>\n";
return NULL;
}
 
if (!isset($db) || !isset($qstr) || $qstr == "") {
echo "<p class=\"error\">ERROR: Keine g&uuml;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&ouml;ffnet!</p>\n";
return NULL;
}
 
if (!isset($db) || !isset($qstr) || $qstr == "") {
echo "<p class=\"error\">ERROR: Keine g&uuml;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&ouml;ffnet!</p>\n";
return false;
}
 
if (!isset($result)) {
Error("fetchDB: Es wurde kein Ergebnisset &uuml;bergeben!");
return false;
}
 
if (!isset($pos) || $pos < 0) {
Error("fetchDB: Keine oder ung&uuml;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&ouml;ffnet!</p>\n";
return -1;
}
 
if (!isset($result)) {
Error("numrowDB: Es wurde kein Ergebnisset &uuml;bergeben!");
return -1;
}
 
if (($rows = pg_num_rows($result)) == -1) {
Error("numrowDB: Anzahl Datens&auml;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&uuml;ltige Versionsnummer!");
closeDB($dbver);
exit;
}
 
closeDB($dbver);
unset($dbver);
unset($erg);
unset($qs);
unset($data);
?>