Subversion Repositories public

Rev

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&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);
?>