Include VZ Bereinigung

This commit is contained in:
Andreas Österreicher
2006-12-11 16:06:13 +00:00
parent c205e0c153
commit c5fb04adb5
73 changed files with 9975 additions and 10542 deletions
+371 -193
View File
@@ -1,194 +1,372 @@
<?php
/**
* Basisklasse für Personen. Für Mitarbeiter gibt es die Klasse Mitarbeiter und
* für Studenten Studenten
* @author Christian Paminger, Werner Masik
* @version 1.0
* @updated 23-Okt-2004: Funktion getConnection() hinzugefügt
*/
class person
{
var $uid;
var $titel;
var $vornamen;
var $nachname;
var $gebdatum;
var $gebort;
var $gebzeit;
/**
* @var int
*/
var $foto;
var $anmerkungen;
/**
* @var boolean Person ist noch gültig oder nicht (~nicht mehr am Technikum)
*/
var $aktiv;
var $email;
var $alias;
var $homepage;
/**
* Funktionen liefern <code>false</code> wenn Fehler auftritt und schreiben
* die Fehlermeldung in diese Variable
* @var string enthält Fehlermeldung
*/
var $errormsg;
/**
* @var boolean true=Person neu anlegen (INSERT), false=UPDATE
*/
var $new=true;
/**
* @var person Person (todo: wozu?)
*/
var $person;
/**
* @var resource
*/
var $conn;
var $updateamum;
var $updatevon;
function person($conn)
{
$this->conn = $conn;
}
/**
* Verbindung zur Datenbank herstellen
* @return PostgreSQL-Connection oder NULL
*/
function getConnection() {
return $this->conn;
}
/**
* Speichert die Person in die Datenbank. INSERT oder DELETE wird durch 'new'
* bestimmt.
* @return boolean false, wenn's nicht funtkioniert hat (Fehlermeldung steht
* in errormsg)
*/
function save()
{
if (is_null($conn=$this->getConnection())) {
return false;
}
if (strlen($this->uid)==0)
{
$this->errormsg="<i>uid</i> nicht gesetzt";
return false;
}
if ($this->new)
{
$qry="insert into tbl_person(uid,titel,vornamen,nachname,gebdatum,".
"gebort,gebzeit,anmerkungen,aktiv,".
"email,alias,homepage) ".
"values('".$this->uid."','".$this->titel."',".
"'".$this->vornamen."','".$this->nachname."',".
(strlen($this->gebdatum)>0?"'".$this->gebdatum."'":'NULL').
",'".$this->gebort."',".
(strlen($this->gebzeit)>0?"'".$this->gebzeit."'":'NULL').
",'".$this->anmerkungen."',".($this->aktiv?'true':'false').",".
"'".$this->email."',".($this->alias==''?'null':"'$this->alias'").",'".$this->homepage."'".
")";
}
else
{
$qry="update tbl_person set ".
"titel='".$this->titel."',".
"vornamen='".$this->vornamen."',".
"nachname='".$this->nachname."',".
"gebdatum=".(strlen($this->gebdatum)>0?"'".$this->gebdatum."'":'NULL').",".
"gebort='".$this->gebort."',".
"gebzeit=".(strlen($this->gebzeit)>0?"'".$this->gebzeit."'":'NULL').",".
"anmerkungen='".$this->anmerkungen."',".
"aktiv=".($this->aktiv?'true':'false').",".
"email='".$this->email."',alias=".($this->alias==''?'null':"'$this->alias'").",".
"homepage='".$this->homepage."' ".
"where uid='".$this->uid."'";
}
$qry="set datestyle to german;".$qry;
//echo $qry;
if(!($erg=pg_exec($conn, $qry)))
{
$this->errormsg=pg_errormessage($conn);
return false;
}
return true;
}
/**
* Ladet die Attribute der Person aus der Datenbank. Bei Fehler ist der
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true, wenn's funktioniert hat; false bei Fehler
*/
function load($uid='')
{
// optional: uid setzen
if (strlen($uid)>0)
$this->uid=$uid;
// uid vorhanden?
if (strlen($this->uid)==0) {
$this->errormsg='<i>uid</i> nicht gesetzt';
return false;
}
if (is_null($conn=$this->getConnection())) {
return false;
}
$sql_query="set datestyle to german;SELECT tbl_person.* ".
"FROM tbl_person ".
"WHERE uid='".addslashes($this->uid)."'";
if(!($erg=pg_exec($conn, $sql_query))) {
$this->errormsg=pg_errormessage($conn);
return false;
}
$num_rows=pg_numrows($erg);
if($num_rows!=1)
{
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->titel=$row->titel;
$this->vornamen=$row->vornamen;
$this->nachname=$row->nachname;
$this->gebdatum=$row->gebdatum;
$this->gebort=$row->gebort;
$this->gebzeit=$row->gebzeit;
$this->foto=$row->foto;
$this->anmerkungen=$row->anmerkungen;
$this->aktiv=$row->aktiv=='t'?true:false;
$this->email=$row->email;
$this->alias=$row->alias;
$this->homepage=$row->homepage;
$this->updateamum=$row->updateamum;
$this->updatevon=$row->updatevon;
$this->new=false;
return true;
}
/**
* Löscht die Person aus der Datenbank. Bei Fehler ist der Rueckgabewert 'false'
* und die Fehlermeldung steht in 'errormsg'.
* @return boolean true bei Erfolg, false bei Fehler
*/
function delete()
{
if (is_null($conn=$this->getConnection()))
{
return false;
}
$qry="delete from tbl_person where uid='".$this->uid."'";
if(!($erg=pg_exec($conn, $sql_query)))
{
$this->errormsg=pg_errormessage($conn);
return false;
}
return true;
}
}
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
class person
{
var $conn; // resource DB-Handle
var $errormsg; // string
var $new; // boolean
var $personen = array(); // person Objekt
//Tabellenspalten
var $person_id; // integer
var $sprache; // varchar(16)
var $anrede; // varchar(16)
var $titelpost; // varchar(32)
var $titelpre; // varchar(64)
var $nachname; // varchar(64)
var $vorname; // varchar(32)
var $vornamen; // varchar(128)
var $gebdatum; // date
var $gebort; // varchar(128)
var $gebzeit; // time
var $foto; // oid
var $anmerkungen; // varchar(256)
var $homepage; // varchar(256)
var $svnr; // char(10)
var $ersatzkennzeichen; // char(10)
var $familienstand; // char(1)
var $anzahlkinder; // smalint
var $aktiv; // boolean
var $insertamum; // timestamp
var $insertvon; // varchar(16)
var $updateamum; // timestamp
var $updatevon; // varchar(16)
var $ext_id; // bigint
// *************************************************************************
// * Konstruktor - Uebergibt die Connection und laedt optional eine Person
// * @param $conn Datenbank-Connection
// * $person_id Person die geladen werden soll (default=null)
// * $unicode Gibt an ob die Daten mit UNICODE Codierung
// * oder LATIN9 Codierung verarbeitet werden sollen
// *************************************************************************
function person($conn, $person_id=null, $unicode=false)
{
$this->conn = $conn;
if($unicode)
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
else
$qry = "SET CLIENT_ENCODING TO 'LATIN9';";
if(!pg_query($conn,$qry))
{
$this->errormsg = 'Encoding konnte nicht gesetzt werden';
return false;
}
if($person_id != null)
$this->load($person_id);
}
// *********************************************************
// * Laedt Person mit der uebergebenen ID
// * @param $person_id ID der Person die geladen werden soll
// *********************************************************
function load($person_id)
{
//person_id auf gueltigkeit pruefen
if(is_numeric($person_id) && $person_id!='')
{
$qry = "SELECT person_id, sprache, anrede, titelpost, titelpre, nachname, vorname, vornamen,
gebdatum, gebort, gebzeit, foto, anmerkungen, homepage, svnr, ersatzkennzeichen,
familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon, ext_id
FROM tbl_person WHERE person_id='$person_id'";
if(!$result=pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler beim lesen der Personendaten';
return false;
}
if($row = pg_fetch_object($result))
{
$this->person_id = $row->person_id;
$this->sprache = $row->sprache;
$this->anrede = $row->anrede;
$this->titelpost = $row->titelpost;
$this->titelpre = $row->titelpre;
$this->nachname = $row->nachname;
$this->vorname = $row->vorname;
$this->vornamen = $row->vornamen;
$this->gebdatum = $row->gebdatum;
$this->gebort = $row->gebort;
$this->gebzeit = $row->gebzeit;
$this->foto = $row->foto;
$this->anmerkungen = $row->anmerkungen;
$this->homepage = $row->homepage;
$this->svnr = $row->svnr;
$this->ersatzkennzeichen = $row->ersatzkennzeichen;
$this->familienstand = $row->familienstand;
$this->anzahlkinder = $row->anzahlkinder;
$this->aktiv = ($row->aktiv=='t'?true:false);
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->ext_id = $row->ext_id;
}
else
{
$this->errormsg = 'Es ist kein Personendatensatz mit der ID '.$person_id.' vorhanden';
return false;
}
return true;
}
else
{
$this->errormsg = 'Die person_id muss eine gueltige Zahl sein';
return false;
}
}
// *******************************************
// * Prueft die Variablen vor dem Speichern
// * auf Gueltigkeit.
// * @return true wenn ok, false im Fehlerfall
// *******************************************
function validate()
{
if(strlen($this->sprache)>16)
{
$this->errormsg = 'Sprache darf nicht laenger als 16 Zeichen sein';
return false;
}
if(strlen($this->anrede)>16)
{
$this->errormsg = 'Anrede darf nicht laenger als 16 Zeichen sein';
return false;
}
if(strlen($this->titelpost)>32)
{
$this->errormsg = 'Titelpost darf nicht laenger als 32 Zeichen sein';
return false;
}
if(strlen($this->titelpre)>64)
{
$this->errormsg = 'Titelpre darf nicht laenger als 64 Zeichen sein';
return false;
}
if(strlen($this->nachname)>64)
{
$this->errormsg = 'Nachname darf nicht laenger als 64 Zeichen sein';
return false;
}
if($this->nachname=='' || is_null($this->nachname))
{
$this->errormsg = 'Nachname muss eingegeben werden';
return false;
}
if(strlen($this->vorname)>32)
{
$this->errormsg = 'Vorname darf nicht laenger als 32 Zeichen sein';
return false;
}
if(strlen($this->vornamen)>128)
{
$this->errormsg = 'Vornamen darf nicht laenger als 128 Zeichen sein';
return false;
}
//ToDo Gebdatum pruefen -> laut bis muss er aelter als 10 Jahre sein
if(strlen($this->gebdatum)==0 || is_null($this->gebdatum))
{
$this->errormsg = 'Geburtsdatum muss eingegeben werden';
return false;
}
if(strlen($this->gebort)>128)
{
$this->errormsg = 'Geburtsort darf nicht laenger als 128 Zeichen sein';
return false;
}
if($this->foto!='' && !is_numeric($this->foto))
{
$this->errormsg = 'FotoOID ist ungueltig';
return false;
}
if(strlen($this->anmerkungen)>256)
{
$this->errormsg = 'Anmerkungen darf nicht laenger als 256 Zeichen sein';
return false;
}
if(strlen($this->homepage)>256)
{
$this->errormsg = 'Homepage darf nicht laenger als 256 Zeichen sein';
return false;
}
if(strlen($this->svnr)>10)
{
$this->errormsg = 'SVNR darf nicht laenger als 10 Zeichen sein';
return false;
}
if(strlen($this->ersatzkennzeichen)>10)
{
$this->errormsg = 'Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein';
return false;
}
if(strlen($this->familienstand)>1)
{
$this->errormsg = 'Familienstand ist ungueltig';
return false;
}
if($this->anzahlkinder!='' && !is_numeric($this->anzahlkinder))
{
$this->errormsg = 'Anzahl der Kinder ist ungueltig';
return false;
}
if(!is_bool($this->aktiv))
{
$this->errormsg = 'Aktiv ist ungueltig';
return false;
}
if(strlen($this->insertvon)>16)
{
$this->errormsg = 'Insertvon darf nicht laenger als 16 Zeichen sien';
return false;
}
if(strlen($this->updatevon)>16)
{
$this->errormsg = 'Updatevon darf nicht laenger als 16 Zeichen sein';
return false;
}
if($this->ext_id!='' && !is_numeric($this->ext_id))
{
$this->errormsg = 'Ext_ID ist keine gueltige Zahl';
return false;
}
return true;
}
// ************************************************
// * wenn $var '' ist wird "null" zurueckgegeben
// * wenn $var !='' ist werden Datenbankkritische
// * zeichen mit backslash versehen und das ergbnis
// * unter hochkomma gesetzt.
// ************************************************
function addslashes($var)
{
return ($var!=''?"'".addslashes($var)."'":'null');
}
// ************************************************************
// * Speichert die Personendaten in die Datenbank
// * Wenn $new auf true gesetzt ist wird ein neuer Datensatz
// * angelegt, ansonsten der Datensatz mit $person_id upgedated
// * @return true wenn erfolgreich, false im Fehlerfall
// ************************************************************
function save()
{
//Variablen auf Gueltigkeit pruefen
if(!person::validate())
return false;
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'INSERT INTO tbl_person (sprache, anrede, titelpost, titelpre, nachname, vorname, vornamen,
gebdatum, gebort, gebzeit, foto, anmerkungen, homepage, svnr, ersatzkennzeichen,
familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon , ext_id)
VALUES('.$this->addslashes($this->sprache).','.
$this->addslashes($this->anrede).','.
$this->addslashes($this->titelpost).','.
$this->addslashes($this->titelpre).','.
$this->addslashes($this->nachname).','.
$this->addslashes($this->vorname).','.
$this->addslashes($this->vornamen).','.
$this->addslashes($this->gebdatum).','.
$this->addslashes($this->gebort).','.
$this->addslashes($this->gebzeit).','.
$this->addslashes($this->foto).','.
$this->addslashes($this->anmerkungen).','.
$this->addslashes($this->homepage).','.
$this->addslashes($this->svnr).','.
$this->addslashes($this->ersatzkennzeichen).','.
$this->addslashes($this->familienstand).','.
$this->addslashes($this->anzahlkinder).','.
($this->aktiv?'true':'false').','.
$this->addslashes($this->insertamum).','.
$this->addslashes($this->insertvon).','.
$this->addslashes($this->updateamum).','.
$this->addslashes($this->updatevon).','.
$this->addslashes($this->ext_id).');';
}
else
{
//person_id auf gueltigkeit pruefen
if(!is_numeric($this->person_id))
{
$this->errormsg = 'person_id muss eine gueltige Zahl sein';
return false;
}
$qry = 'UPDATE tbl_person SET'.
' sprache='.$this->addslashes($this->sprache).','.
' anrede='.$this->addslashes($this->anrede).','.
' titelpost='.$this->addslashes($this->titelpost).','.
' titelpre='.$this->addslashes($this->titelpre).','.
' nachname='.$this->addslashes($this->nachname).','.
' vorname='.$this->addslashes($this->vorname).','.
' vornamen='.$this->addslashes($this->vornamen).','.
' gebdatum='.$this->addslashes($this->gebdatum).','.
' gebort='.$this->addslashes($this->gebort).','.
' gebzeit='.$this->addslashes($this->gebzeit).','.
' foto='.$this->addslashes($this->foto).','.
' anmerkungen='.$this->addslashes($this->anmerkungen).','.
' homepage='.$this->addslashes($this->homepage).','.
' svnr='.$this->addslashes($this->svnr).','.
' ersatzkennzeichen='.$this->addslashes($this->ersatzkennzeichen).','.
' familienstand='.$this->addslashes($this->familienstand).','.
' anzahlkinder='.$this->addslashes($this->anzahlkinder).','.
' aktiv='.($this->aktiv?'true':'false').','.
' updateamum='.$this->addslashes($this->updateamum).','.
' updatevon='.$this->addslashes($this->updatevon).','.
' ext_id='.$this->addslashes($this->ext_id).
" WHERE person_id='$this->person_id'";
}
if(pg_query($this->conn,$qry))
{
if($this->new)
{
$qry = "SELECT currval('tbl_person_person_id_seq') AS id;";
if($row=pg_fetch_object(pg_query($this->conn,$qry)))
$this->person_id=$row->id;
else
{
$this->errormsg = 'Sequence konnte nicht ausgelesen werden';
return false;
}
}
//Log schreiben
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern des Person-Datensatzes:'.$this->nachname.' '.$qry;
return false;
}
}
}
?>