mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Synchro Vilesci->Portal Mitarbeiter
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
/**
|
||||
* Synchronisiert Personendatensaetze von Vilesci DB in PORTAL DB
|
||||
*
|
||||
*/
|
||||
include('../../vilesci/config.inc.php');
|
||||
include('../../include/fas/person.class.php');
|
||||
include('../../include/fas/benutzer.class.php');
|
||||
include('../../include/fas/mitarbeiter.class.php');
|
||||
|
||||
$conn=pg_connect(CONN_STRING) or die("Connection zur Portal Datenbank fehlgeschlagen");
|
||||
$conn_vilesci=pg_connect(CONN_STRING_VILESCI) or die("Connection zur Vilesci Datenbank fehlgeschlagen");
|
||||
|
||||
$adress='oesi@technikum-wien.at';
|
||||
//$adress='fas_sync@technikum-wien.at';
|
||||
|
||||
$error_log='';
|
||||
$text = '';
|
||||
function validate($row)
|
||||
{
|
||||
}
|
||||
|
||||
/*************************
|
||||
* VILESCI-PORTAL - Synchronisation
|
||||
*/
|
||||
|
||||
//Mitarbeiter
|
||||
$qry = "SELECT * FROM tbl_person join tbl_mitarbeiter using(uid) WHERE personalnummer<>'OFF'";
|
||||
|
||||
if($result = pg_query($conn_vilesci, $qry))
|
||||
{
|
||||
$text.="Mitarbeiter Sync\n----------------\n";
|
||||
while($row = pg_fetch_object($result))
|
||||
{
|
||||
$mitarbeiter = new mitarbeiter($conn);
|
||||
$qry = "Select count(*) from tbl_benutzer where uid='$row->uid'";
|
||||
if($result1 = pg_query($conn, $qry))
|
||||
{
|
||||
if($row->personalnummer!='')
|
||||
{
|
||||
$mitarbeiter->sprache='German';
|
||||
$mitarbeiter->anrede='';
|
||||
$mitarbeiter->titelpost='';
|
||||
$mitarbeiter->titelpre=$row->titel;
|
||||
$mitarbeiter->nachname=$row->nachname;
|
||||
if(!$len=strpos($row->vornamen,' '))
|
||||
$len = strlen($row->vornamen);
|
||||
$mitarbeiter->vorname=substr($row->vornamen,0,$len);
|
||||
$mitarbeiter->gebdatum=$row->gebdatum;
|
||||
$mitarbeiter->gebort=$row->gebort;
|
||||
$mitarbeiter->gebzeit=$row->gebzeit;
|
||||
$mitarbeiter->foto='';
|
||||
$mitarbeiter->anmerkungen=$row->anmerkungen;
|
||||
$mitarbeiter->homepage=$row->homepage;
|
||||
$mitarbeiter->svnr='';
|
||||
$mitarbeiter->ersatzkennzeichen='';
|
||||
$mitarbeiter->familienstand='';
|
||||
$mitarbeiter->anzahlkinder='';
|
||||
$mitarbeiter->aktiv=($row->aktiv=='t'?true:false);
|
||||
$mitarbeiter->insertvon='SYNC';
|
||||
$mitarbeiter->updatevon=$row->updatevon;
|
||||
$mitarbeiter->ext_id='';
|
||||
|
||||
$mitarbeiter->uid=$row->uid;
|
||||
$mitarbeiter->bnaktiv=$row->aktiv;
|
||||
$mitarbeiter->alias=$row->alias;
|
||||
|
||||
$mitarbeiter->ausbildungcode='';
|
||||
$mitarbeiter->personalnummer=$row->personalnummer;
|
||||
$mitarbeiter->kurzbz=$row->kurzbz;
|
||||
$mitarbeiter->lektor=($row->lektor=='t'?true:false);
|
||||
$mitarbeiter->fixangestellt=($row->fixangestellt=='t'?true:false);
|
||||
$mitarbeiter->telefonklappe=$row->telefonklappe;
|
||||
|
||||
if(pg_fetch_object($result1)->count>0) //Wenn dieser eintrag schon vorhanden ist
|
||||
{
|
||||
//Mitarbeiterdaten updaten
|
||||
$mitarbeiter->new=false;
|
||||
//Person_id ermitteln
|
||||
$qry = "Select person_id from tbl_benutzer where uid='$row->uid'";
|
||||
if($row2=pg_fetch_object(pg_query($conn,$qry)))
|
||||
$mitarbeiter->person_id=$row2->person_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Mitarbeiter neu anlegen
|
||||
$mitarbeiter->new=true;
|
||||
}
|
||||
if(!$mitarbeiter->save())
|
||||
$error_log.=$mitarbeiter->errormsg."\n";
|
||||
}
|
||||
else
|
||||
$error_log .= "$row->nachname ($row->uid) hat keine Personalnummer";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
$error_log .= 'Mitarbeiterdatensaetze konnten nicht geladen werden';
|
||||
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Synchro - Vilesci -> Portal - Personen</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
|
||||
echo nl2br($text);
|
||||
echo nl2br($error_log);
|
||||
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
+104
-362
@@ -1,386 +1,128 @@
|
||||
<?php
|
||||
/**
|
||||
* Klasse fuer Berechtigungen der User
|
||||
* @author Christian Paminger
|
||||
* @version 1.0
|
||||
* @updated 11-Feb-2004
|
||||
* Benutzer (PORTAL)
|
||||
* @create 27-11-2006
|
||||
*/
|
||||
class benutzer
|
||||
|
||||
class benutzer extends person
|
||||
{
|
||||
/**
|
||||
* interne userberechtigung_id (Zaehler aus DB)
|
||||
* @var integer
|
||||
*/
|
||||
var $userberechtigung_id;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $studiengang_kz;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $fachbereich_id;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $berechtigung_kurzbz;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $uid;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $studiensemester_kurzbz;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $start;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $ende;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $starttimestamp;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $endetimestamp;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $art;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $berechtigungen=array();
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
||||
var $variable;
|
||||
//var $conn; // @var resource DB-Handle
|
||||
//var $errormsg; // @var string
|
||||
//var $new; // @var boolean
|
||||
//var $benutzer = array(); // @var person Objekt
|
||||
|
||||
var $conn; //Vilesci Connection
|
||||
/**
|
||||
* @var boolean
|
||||
*/
|
||||
var $new;
|
||||
var $errormsg;
|
||||
|
||||
function benutzer($conn)
|
||||
{
|
||||
$this->conn=$conn;
|
||||
$this->new=true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ladet die Attribute der Berechtigung aus der Datenbank. Bei Fehler ist der
|
||||
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
|
||||
* @return boolean true=ok, false=fehler
|
||||
*/
|
||||
function load($id)
|
||||
{
|
||||
// Berechtigung holen
|
||||
$sql_query="SELECT * FROM tbl_userberechtigung WHERE userberechtigung_id=$id";
|
||||
//echo $sql_query;
|
||||
if(!($erg=pg_exec($this->conn, $sql_query)))
|
||||
{
|
||||
$this->errormsg=pg_errormessage($this->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->userberechtigung_id=$row->userberechtigung_id;
|
||||
$this->studiengang_kz=$row->studiengang_kz;
|
||||
$this->fachbereich_id=$row->fachbereich_id;
|
||||
$this->berechtigung_kurzbz=$row->berechtigung_kurzbz;
|
||||
$this->uid=$row->uid;
|
||||
$this->studiensemester_kurzbz=$row->studiensemester_kurzbz;
|
||||
$this->start=$row->start;
|
||||
$this->ende=$row->ende;
|
||||
$this->art=$row->art;
|
||||
$this->new=false;
|
||||
//Tabellenspalten
|
||||
var $uid; // varchar(16)
|
||||
var $bnaktiv; // boolean
|
||||
var $alias; // varchar(256)
|
||||
//var $person_id; // integer
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return boolean true=ok, false=fehler
|
||||
* Konstruktor - Uebergibt die Connection und laedt optional einen benutzer
|
||||
* @param $conn Datenbank-Connection
|
||||
* $benutzer_id Benutzer der geladen werden soll (default=null)
|
||||
*/
|
||||
function benutzer($conn, $unicode=false, $benutzer_id=null)
|
||||
{
|
||||
$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($benutzer_id != null)
|
||||
$this->load($benutzer_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt Benutzer mit der uebergebenen ID
|
||||
* @param $benutzer_id ID der Person die geladen werden soll
|
||||
*/
|
||||
function load($benutzer_id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft die Variablen auf gueltigkeit
|
||||
*/
|
||||
function validate()
|
||||
{
|
||||
if(strlen($this->uid)>16)
|
||||
{
|
||||
$this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if($this->uid == '')
|
||||
{
|
||||
$this->errormsg = 'UID muss eingegeben werden';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->alias)>256)
|
||||
{
|
||||
$this->errormsg = 'Alias darf nicht laenger als 256 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->person_id))
|
||||
{
|
||||
$this->errormsg = 'person_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_bool($this->aktiv))
|
||||
{
|
||||
$this->errormsg = 'aktiv muss ein boolscher wert sein';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert die Benutzerdaten in die Datenbank
|
||||
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt
|
||||
* ansonsten der Datensatz mit $uid upgedated
|
||||
* @return true wenn erfolgreich, false im Fehlerfall
|
||||
*/
|
||||
function save()
|
||||
{
|
||||
/*
|
||||
// Connection holen
|
||||
if (is_null($conn=$this->getConnection()))
|
||||
{
|
||||
//Variablen auf Gueltigkeit pruefen
|
||||
if(!$this->validate())
|
||||
return false;
|
||||
}
|
||||
// Daten zur Person speichern
|
||||
|
||||
if (!person::save()) {
|
||||
$this->errormsg.="Daten zur LVA konnten nicht gespeichert werden.";
|
||||
return false;
|
||||
}
|
||||
if ($this->new) {
|
||||
$qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,".
|
||||
"lektor,lehrfach_nr,studiengang_kz,fachbereich_id,semester,verband,".
|
||||
"gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,".
|
||||
"wochenrythmus,start_kw,anmerkung)".
|
||||
"values(".
|
||||
"'".$this->lvnr."',".
|
||||
"'".$this->unr."',".
|
||||
"'".$this->einheit_kurzbz."',".
|
||||
"'".$this->lektor."',".
|
||||
(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
|
||||
(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
|
||||
(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
|
||||
(strlen($this->semester)>0?$this->semester:NULL).",".
|
||||
"'".$this->verband."',".
|
||||
"'".$this->gruppe."',".
|
||||
(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
|
||||
(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
|
||||
(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
|
||||
(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
|
||||
(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
|
||||
(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
|
||||
(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",".
|
||||
")";
|
||||
} else
|
||||
{
|
||||
$qry="UPDATE tbl_lehrveranstaltung ".
|
||||
"SET lvnr='".$this->lvnr."',".
|
||||
"unr='".$this->unr."',".
|
||||
"einheit_kurzbz='".$this->einheit_kurzbz."',".
|
||||
"lektor='".$this->lehrfach_nr."',".
|
||||
"lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
|
||||
"studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
|
||||
"fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
|
||||
"semester=".(strlen($this->semester)>0?$this->semester:NULL).",".
|
||||
"verband='".$this->verband."',".
|
||||
"gruppe='".$this->gruppe."',".
|
||||
"raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
|
||||
"raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
|
||||
"semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
|
||||
"stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
|
||||
"wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
|
||||
"start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
|
||||
"anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).
|
||||
" WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'";
|
||||
}
|
||||
//echo "<br>".$qry;
|
||||
if(!@pg_query($conn, $qry))
|
||||
{
|
||||
$this->errormsg=pg_errormessage($conn);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die
|
||||
* Fehlermeldung liegt in errormsg.
|
||||
* Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft.
|
||||
* @param string $uid UserID
|
||||
* @return variabel Array mit LVA; <b>false</b> bei Fehler
|
||||
*/
|
||||
function getBerechtigungen($uid)
|
||||
{
|
||||
// Berechtigungen holen
|
||||
$sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (start<now() OR start IS NULL) AND (ende>now() OR ende IS NULL)";
|
||||
//echo $sql_query;
|
||||
if(!$erg=@pg_query($this->conn, $sql_query))
|
||||
{
|
||||
$this->errormsg=pg_errormessage($this->conn);
|
||||
return false;
|
||||
}
|
||||
//$num_rows=pg_numrows($erg);
|
||||
while($row=pg_fetch_object($erg))
|
||||
{
|
||||
$b=new berechtigung($this->conn);
|
||||
$b->userberechtigung_id=$row->userberechtigung_id;
|
||||
$b->studiengang_kz=$row->studiengang_kz;
|
||||
$b->fachbereich_id=$row->fachbereich_id;
|
||||
$b->berechtigung_kurzbz=$row->berechtigung_kurzbz;
|
||||
$b->uid=$row->uid;
|
||||
$b->studiensemester_kurzbz=$row->studiensemester_kurzbz;
|
||||
$b->start=$row->start;
|
||||
if ($row->start!=null)
|
||||
$b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4));
|
||||
else
|
||||
$b->starttimestamp=null;
|
||||
$b->ende=$row->ende;
|
||||
if ($row->ende!=null)
|
||||
$b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4));
|
||||
else
|
||||
$b->endetimestamp=null;
|
||||
$b->art=$row->art;
|
||||
$this->berechtigungen[]=$b;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null)
|
||||
{
|
||||
$timestamp=time();
|
||||
foreach ($this->berechtigungen as $b)
|
||||
//Personen Datensatz speichern
|
||||
if(!person::save())
|
||||
return false;
|
||||
|
||||
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
|
||||
{
|
||||
if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null)
|
||||
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
|
||||
{
|
||||
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
|
||||
if ($berechtigung==$b->berechtigung_kurzbz
|
||||
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null)
|
||||
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
|
||||
{
|
||||
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
|
||||
if ($berechtigung==$b->berechtigung_kurzbz
|
||||
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0)
|
||||
&& strstr($b->art,$art))
|
||||
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
|
||||
{
|
||||
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
$qry = "INSERT INTO tbl_benutzer (uid, aktiv, alias, person_id) VALUES(".
|
||||
"'".addslashes($this->uid)."',".($this->aktiv?'true':'false').",".
|
||||
$this->addslashes($this->alias).",'".$this->person_id."');";
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = "UPDATE tbl_benutzer SET".
|
||||
" aktiv=".($this->aktiv?'true':'false').",".
|
||||
" alias=".$this->addslashes($this->alias).",".
|
||||
" person_id='".$this->person_id."'".
|
||||
" WHERE uid='".addslashes($this->uid)."';";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck.
|
||||
* Optional wird auf Berechtigung eingeschraenkt.
|
||||
* Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0.
|
||||
*/
|
||||
function getStgKz($berechtigung=null)
|
||||
{
|
||||
$studiengang_kz=array();
|
||||
$timestamp=time();
|
||||
|
||||
foreach ($this->berechtigungen as $b)
|
||||
if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null)
|
||||
$studiengang_kz[]=$b->studiengang_kz;
|
||||
$studiengang_kz=array_unique($studiengang_kz);
|
||||
sort($studiengang_kz);
|
||||
return $studiengang_kz;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die Studiensemester Variable
|
||||
*/
|
||||
function setVariableStudiensemester($user,$stsem)
|
||||
{
|
||||
//Vorhandende Variable aendern
|
||||
$qry = "Update tbl_variable SET wert='$stsem' WHERE uid='$user' AND name='semester_aktuell'";
|
||||
if($result = pg_query($this->conn,$qry))
|
||||
if(pg_query($this->conn,$qry))
|
||||
{
|
||||
if(pg_affected_rows($result)==0)
|
||||
{
|
||||
//Falls Variable nicht vorhanden ist eine neue anlegen
|
||||
$qry = "INSERT INTO tbl_variable(uid, name, wert) values('$user', 'semester_aktuell', '$stsem')";
|
||||
if(pg_query($this->conn,$qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg.=pg_errormessage($this->conn);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
return true;
|
||||
//Log schreiben
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg.=pg_errormessage($this->conn);
|
||||
$this->errormsg = "Fehler beim Speichern des Person-Datensatzes:".$qry;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function getpossibilities($variable)
|
||||
{
|
||||
$ret = array();
|
||||
|
||||
switch($variable)
|
||||
{
|
||||
case 'semester_aktuell':
|
||||
$qry = "Select * from tbl_studiensemester order by start";
|
||||
if($result = pg_query($this->conn,$qry))
|
||||
{
|
||||
while($row=pg_fetch_object($result))
|
||||
$ret[] = $row->studiensemester_kurzbz;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function loadVariables($user)
|
||||
{
|
||||
if(!($result=@pg_query($this->conn, "SELECT * FROM tbl_variable WHERE uid='$user'")))
|
||||
{
|
||||
$this->errormsg.=pg_errormessage($this->conn);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
$num_rows=@pg_numrows($result);
|
||||
|
||||
while($row=pg_fetch_object($result))
|
||||
{
|
||||
$this->variable->{$row->name}=$row->wert;
|
||||
}
|
||||
|
||||
if (!isset($this->variable->semester_aktuell))
|
||||
{
|
||||
if(!($result=@pg_query($this->conn, 'SELECT * FROM tbl_studiensemester WHERE ende>now() ORDER BY start LIMIT 1')))
|
||||
{
|
||||
$this->errormsg.=pg_errormessage($this->conn);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$num_rows=@pg_numrows($result);
|
||||
if ($num_rows>0)
|
||||
{
|
||||
$row=pg_fetch_object($result);
|
||||
$this->variable->semester_aktuell=$row->studiensemester_kurzbz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($this->variable->db_stpl_table))
|
||||
$this->variable->db_stpl_table='stundenplan';
|
||||
|
||||
if (!isset($this->variable->fas_id))
|
||||
$this->variable->fas_id=0;
|
||||
|
||||
if (!isset($this->variable->sleep_time))
|
||||
$this->variable->sleep_time=300;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,386 @@
|
||||
<?php
|
||||
/**
|
||||
* Klasse fuer Berechtigungen der User
|
||||
* @author Christian Paminger
|
||||
* @version 1.0
|
||||
* @updated 11-Feb-2004
|
||||
*/
|
||||
class benutzer
|
||||
{
|
||||
/**
|
||||
* interne userberechtigung_id (Zaehler aus DB)
|
||||
* @var integer
|
||||
*/
|
||||
var $userberechtigung_id;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $studiengang_kz;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $fachbereich_id;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $berechtigung_kurzbz;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $uid;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $studiensemester_kurzbz;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $start;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $ende;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $starttimestamp;
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
var $endetimestamp;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
var $art;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
var $berechtigungen=array();
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
||||
var $variable;
|
||||
|
||||
var $conn; //Vilesci Connection
|
||||
/**
|
||||
* @var boolean
|
||||
*/
|
||||
var $new;
|
||||
var $errormsg;
|
||||
|
||||
function benutzer($conn)
|
||||
{
|
||||
$this->conn=$conn;
|
||||
$this->new=true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ladet die Attribute der Berechtigung aus der Datenbank. Bei Fehler ist der
|
||||
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
|
||||
* @return boolean true=ok, false=fehler
|
||||
*/
|
||||
function load($id)
|
||||
{
|
||||
// Berechtigung holen
|
||||
$sql_query="SELECT * FROM tbl_userberechtigung WHERE userberechtigung_id=$id";
|
||||
//echo $sql_query;
|
||||
if(!($erg=pg_exec($this->conn, $sql_query)))
|
||||
{
|
||||
$this->errormsg=pg_errormessage($this->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->userberechtigung_id=$row->userberechtigung_id;
|
||||
$this->studiengang_kz=$row->studiengang_kz;
|
||||
$this->fachbereich_id=$row->fachbereich_id;
|
||||
$this->berechtigung_kurzbz=$row->berechtigung_kurzbz;
|
||||
$this->uid=$row->uid;
|
||||
$this->studiensemester_kurzbz=$row->studiensemester_kurzbz;
|
||||
$this->start=$row->start;
|
||||
$this->ende=$row->ende;
|
||||
$this->art=$row->art;
|
||||
$this->new=false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return boolean true=ok, false=fehler
|
||||
*/
|
||||
function save()
|
||||
{
|
||||
/*
|
||||
// Connection holen
|
||||
if (is_null($conn=$this->getConnection()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// Daten zur Person speichern
|
||||
|
||||
if (!person::save()) {
|
||||
$this->errormsg.="Daten zur LVA konnten nicht gespeichert werden.";
|
||||
return false;
|
||||
}
|
||||
if ($this->new) {
|
||||
$qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,".
|
||||
"lektor,lehrfach_nr,studiengang_kz,fachbereich_id,semester,verband,".
|
||||
"gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,".
|
||||
"wochenrythmus,start_kw,anmerkung)".
|
||||
"values(".
|
||||
"'".$this->lvnr."',".
|
||||
"'".$this->unr."',".
|
||||
"'".$this->einheit_kurzbz."',".
|
||||
"'".$this->lektor."',".
|
||||
(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
|
||||
(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
|
||||
(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
|
||||
(strlen($this->semester)>0?$this->semester:NULL).",".
|
||||
"'".$this->verband."',".
|
||||
"'".$this->gruppe."',".
|
||||
(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
|
||||
(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
|
||||
(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
|
||||
(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
|
||||
(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
|
||||
(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
|
||||
(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",".
|
||||
")";
|
||||
} else
|
||||
{
|
||||
$qry="UPDATE tbl_lehrveranstaltung ".
|
||||
"SET lvnr='".$this->lvnr."',".
|
||||
"unr='".$this->unr."',".
|
||||
"einheit_kurzbz='".$this->einheit_kurzbz."',".
|
||||
"lektor='".$this->lehrfach_nr."',".
|
||||
"lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
|
||||
"studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
|
||||
"fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
|
||||
"semester=".(strlen($this->semester)>0?$this->semester:NULL).",".
|
||||
"verband='".$this->verband."',".
|
||||
"gruppe='".$this->gruppe."',".
|
||||
"raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
|
||||
"raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
|
||||
"semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
|
||||
"stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
|
||||
"wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
|
||||
"start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
|
||||
"anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).
|
||||
" WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'";
|
||||
}
|
||||
//echo "<br>".$qry;
|
||||
if(!@pg_query($conn, $qry))
|
||||
{
|
||||
$this->errormsg=pg_errormessage($conn);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die
|
||||
* Fehlermeldung liegt in errormsg.
|
||||
* Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft.
|
||||
* @param string $uid UserID
|
||||
* @return variabel Array mit LVA; <b>false</b> bei Fehler
|
||||
*/
|
||||
function getBerechtigungen($uid)
|
||||
{
|
||||
// Berechtigungen holen
|
||||
$sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (start<now() OR start IS NULL) AND (ende>now() OR ende IS NULL)";
|
||||
//echo $sql_query;
|
||||
if(!$erg=@pg_query($this->conn, $sql_query))
|
||||
{
|
||||
$this->errormsg=pg_errormessage($this->conn);
|
||||
return false;
|
||||
}
|
||||
//$num_rows=pg_numrows($erg);
|
||||
while($row=pg_fetch_object($erg))
|
||||
{
|
||||
$b=new berechtigung($this->conn);
|
||||
$b->userberechtigung_id=$row->userberechtigung_id;
|
||||
$b->studiengang_kz=$row->studiengang_kz;
|
||||
$b->fachbereich_id=$row->fachbereich_id;
|
||||
$b->berechtigung_kurzbz=$row->berechtigung_kurzbz;
|
||||
$b->uid=$row->uid;
|
||||
$b->studiensemester_kurzbz=$row->studiensemester_kurzbz;
|
||||
$b->start=$row->start;
|
||||
if ($row->start!=null)
|
||||
$b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4));
|
||||
else
|
||||
$b->starttimestamp=null;
|
||||
$b->ende=$row->ende;
|
||||
if ($row->ende!=null)
|
||||
$b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4));
|
||||
else
|
||||
$b->endetimestamp=null;
|
||||
$b->art=$row->art;
|
||||
$this->berechtigungen[]=$b;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null)
|
||||
{
|
||||
$timestamp=time();
|
||||
foreach ($this->berechtigungen as $b)
|
||||
{
|
||||
if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null)
|
||||
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
|
||||
{
|
||||
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
|
||||
if ($berechtigung==$b->berechtigung_kurzbz
|
||||
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null)
|
||||
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
|
||||
{
|
||||
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
|
||||
if ($berechtigung==$b->berechtigung_kurzbz
|
||||
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0)
|
||||
&& strstr($b->art,$art))
|
||||
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
|
||||
{
|
||||
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck.
|
||||
* Optional wird auf Berechtigung eingeschraenkt.
|
||||
* Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0.
|
||||
*/
|
||||
function getStgKz($berechtigung=null)
|
||||
{
|
||||
$studiengang_kz=array();
|
||||
$timestamp=time();
|
||||
|
||||
foreach ($this->berechtigungen as $b)
|
||||
if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null)
|
||||
$studiengang_kz[]=$b->studiengang_kz;
|
||||
$studiengang_kz=array_unique($studiengang_kz);
|
||||
sort($studiengang_kz);
|
||||
return $studiengang_kz;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die Studiensemester Variable
|
||||
*/
|
||||
function setVariableStudiensemester($user,$stsem)
|
||||
{
|
||||
//Vorhandende Variable aendern
|
||||
$qry = "Update tbl_variable SET wert='$stsem' WHERE uid='$user' AND name='semester_aktuell'";
|
||||
if($result = pg_query($this->conn,$qry))
|
||||
{
|
||||
if(pg_affected_rows($result)==0)
|
||||
{
|
||||
//Falls Variable nicht vorhanden ist eine neue anlegen
|
||||
$qry = "INSERT INTO tbl_variable(uid, name, wert) values('$user', 'semester_aktuell', '$stsem')";
|
||||
if(pg_query($this->conn,$qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg.=pg_errormessage($this->conn);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg.=pg_errormessage($this->conn);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function getpossibilities($variable)
|
||||
{
|
||||
$ret = array();
|
||||
|
||||
switch($variable)
|
||||
{
|
||||
case 'semester_aktuell':
|
||||
$qry = "Select * from tbl_studiensemester order by start";
|
||||
if($result = pg_query($this->conn,$qry))
|
||||
{
|
||||
while($row=pg_fetch_object($result))
|
||||
$ret[] = $row->studiensemester_kurzbz;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function loadVariables($user)
|
||||
{
|
||||
if(!($result=@pg_query($this->conn, "SELECT * FROM tbl_variable WHERE uid='$user'")))
|
||||
{
|
||||
$this->errormsg.=pg_errormessage($this->conn);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
$num_rows=@pg_numrows($result);
|
||||
|
||||
while($row=pg_fetch_object($result))
|
||||
{
|
||||
$this->variable->{$row->name}=$row->wert;
|
||||
}
|
||||
|
||||
if (!isset($this->variable->semester_aktuell))
|
||||
{
|
||||
if(!($result=@pg_query($this->conn, 'SELECT * FROM tbl_studiensemester WHERE ende>now() ORDER BY start LIMIT 1')))
|
||||
{
|
||||
$this->errormsg.=pg_errormessage($this->conn);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$num_rows=@pg_numrows($result);
|
||||
if ($num_rows>0)
|
||||
{
|
||||
$row=pg_fetch_object($result);
|
||||
$this->variable->semester_aktuell=$row->studiensemester_kurzbz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($this->variable->db_stpl_table))
|
||||
$this->variable->db_stpl_table='stundenplan';
|
||||
|
||||
if (!isset($this->variable->fas_id))
|
||||
$this->variable->fas_id=0;
|
||||
|
||||
if (!isset($this->variable->sleep_time))
|
||||
$this->variable->sleep_time=300;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,49 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* Klasse Mitarbeiter abgeleitet von Person (FAS-Online)
|
||||
* @create 06-03-2006
|
||||
* Klasse Mitarbeiter abgeleitet von Benutzer (Portal)
|
||||
* @create 27-11-2006
|
||||
*/
|
||||
|
||||
class mitarbeiter extends person
|
||||
class mitarbeiter extends benutzer
|
||||
{
|
||||
|
||||
//Tabellenspalten
|
||||
var $mitarbeiter_id; // @var bigint
|
||||
var $beginndatum; // @var timestamp
|
||||
var $akadgrad; // @var boolean
|
||||
var $akadgrad_bezeichnung; // @var boolean
|
||||
var $habilitation; // @var boolean
|
||||
var $mitgliedentwicklungsteam; // @var boolean
|
||||
var $qualifikation; // @var integer
|
||||
var $hauptberuflich; // @var boolean
|
||||
var $hauptberuf; // @var integer
|
||||
var $semesterwochenstunden; // @var float
|
||||
var $persnr; // @var string
|
||||
var $beendigungsdatum; // @var timestamp
|
||||
var $ausgeschieden; // @var boolean
|
||||
var $ausgeschieden_bezeichnung; // @var string
|
||||
var $kurzbez; // @var string
|
||||
var $stundensatz; // @var float
|
||||
var $ausbildung; // @var integer
|
||||
var $ausbildung_bezeichnung; // @var string
|
||||
var $aktiv; // @var boolean
|
||||
var $aktiv_bezeichnung; // @var boolean
|
||||
var $zustelladresse_plz;
|
||||
var $zustelladresse_strasse;
|
||||
var $zustelladresse_ort;
|
||||
|
||||
//var $uid;
|
||||
var $ausbildungcode;
|
||||
var $personalnummer;
|
||||
var $kurzbz;
|
||||
var $lektor;
|
||||
var $fixangestellt;
|
||||
var $telefonklappe;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
function mitarbeiter($conn, $person_id=null)
|
||||
function mitarbeiter($conn, $unicode=false, $person_id=null)
|
||||
{
|
||||
$this->conn = $conn;
|
||||
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
//Mitarbeiter laden
|
||||
if($person_id!=null)
|
||||
$this->load($person_id);
|
||||
@@ -53,52 +43,49 @@ class mitarbeiter extends person
|
||||
* ueberprueft die Variablen auf Gueltigkeit
|
||||
* @return true wenn gueltig, false im Fehlerfall
|
||||
*/
|
||||
function checkvars()
|
||||
{
|
||||
//Hochkomma herausfiltern
|
||||
$this->persnr = str_replace("'","`", $this->persnr);
|
||||
$this->kurzbez = str_replace("'","`", $this->kurzbez);
|
||||
|
||||
//Maximallaenge pruefen
|
||||
$this->errormsg='Die Maximallaenge eines Feldes wurde ueberschritten';
|
||||
if(strlen($this->persnr)>20)
|
||||
function validate()
|
||||
{
|
||||
if(strlen($this->uid)>16)
|
||||
{
|
||||
$this->errormsg='PersonalNr darf nicht länger als 20 Zeichen sein';
|
||||
$this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->kurzbez)>10)
|
||||
if($this->uid=='')
|
||||
{
|
||||
$this->errormsg="Kurzbezeichnung darf nicht länger als 10 Zeichen sein:".strlen($this->kurzbez);
|
||||
$this->errormsg = 'UID muss eingegeben werden';
|
||||
return false;
|
||||
}
|
||||
|
||||
//Zahlenwerte ueberpruefen
|
||||
$this->errormsg='Ein Zahlenfeld enthaelt ungueltige Zeichen';
|
||||
//if(!is_numeric($this->qualifikation)) return false;
|
||||
//if(!is_numeric($this->hauptberuf)) return false;
|
||||
if(!is_numeric($this->stundensatz) && $this->stundensatz!='')
|
||||
if($this->ausbildungcode!='' && !is_numeric($this->ausbildungcode))
|
||||
{
|
||||
$this->errormsg='Stundensatz muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->ausbildung) && $this->ausbildung!='')
|
||||
{
|
||||
$this->errormsg='ausbildung muss eine gueltige Zahl sein';
|
||||
$this->errormsg = 'Ausbildungscode ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
/*if(!is_numeric($this->semesterwochenstunden))
|
||||
if(strlen($this->kurzbz)>8)
|
||||
{
|
||||
$this->errormsg='SWS muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}*/
|
||||
|
||||
if($this->kurzbz_exists($this->kurzbez, $this->mitarbeiter_id))
|
||||
{
|
||||
$this->errormsg = 'Diese Kurzbezeichnung wird bereits verwendet';
|
||||
$this->errormsg = 'kurzbz darf nicht laenger als 8 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->errormsg = '';
|
||||
if(!is_bool($this->lektor))
|
||||
{
|
||||
$this->errormsg = 'lektor muss boolean sein'.$this->lektor;
|
||||
return false;
|
||||
}
|
||||
if(!is_bool($this->fixangestellt))
|
||||
{
|
||||
$this->errormsg = 'fixangestellt muss boolean sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->telefonklappe)>25)
|
||||
{
|
||||
$this->errormsg = 'telefonklappe darf nicht laenger als 25 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->updatevon)>32)
|
||||
{
|
||||
$this->errormsg = 'updatevon darf nicht laenger als 32 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -110,12 +97,12 @@ class mitarbeiter extends person
|
||||
function save()
|
||||
{
|
||||
//Variablen checken
|
||||
if(!$this->checkvars())
|
||||
if(!$this->validate())
|
||||
return false;
|
||||
|
||||
pg_query($this->conn,"Begin;");
|
||||
//Basisdaten speichern
|
||||
if(!person::save())
|
||||
if(!benutzer::save())
|
||||
{
|
||||
pg_query($this->conn,"Rollback;");
|
||||
return false;
|
||||
@@ -123,620 +110,42 @@ class mitarbeiter extends person
|
||||
|
||||
if($this->new)
|
||||
{
|
||||
//Neuen Datensatz einfuegen
|
||||
|
||||
//naechste ID aus Sequence auslesen
|
||||
$qry = "SELECT nextval('mitarbeiter_seq') as id;";
|
||||
if(!$row = pg_fetch_object(pg_query($this->conn,$qry)))
|
||||
{
|
||||
$this->errormsg = 'Fehler beim auslesen der Sequence';
|
||||
return false;
|
||||
}
|
||||
$this->mitarbeiter_id = $row->id;
|
||||
|
||||
$qry = "INSERT INTO mitarbeiter (mitarbeiter_pk, beginndatum, akadgrad, habilitation,".
|
||||
//" mitgliedentwicklungsteam,".
|
||||
//" qualifikation, hauptberuflich, hauptberuf, semesterwochenstunden,".
|
||||
" creationdate, creationuser, persnr,".
|
||||
" person_fk, beendigungsdatum, ausgeschieden, kurzbez, stundensatz, ausbildung, aktiv) VALUES (".
|
||||
" '$this->mitarbeiter_id',".
|
||||
(strlen($this->beginndatum)>0?"'$this->beginndatum'":"NULL") .", '".($this->akadgrad?'J':'N')."',".
|
||||
" '".($this->habilitation?'J':'N')."', ".
|
||||
//"'".($this->mitgliedentwicklungsteam?'J':'N')."',".
|
||||
//" '$this->qualifikation', '".($this->hauptberuflich?'J':'N')."', '$this->hauptberuf', '$this->semesterwochenstunden',".
|
||||
" now(),".
|
||||
" '$this->updatevon', '$this->persnr', '$this->person_id',".
|
||||
(strlen($this->beendigungsdatum)>0?"'$this->beendigungsdatum'":"null").",".
|
||||
" '".($this->ausgeschieden?'J':'N')."',".
|
||||
(strlen($this->kurzbez)>0?"'$this->kurzbez'":"null").", '$this->stundensatz',".
|
||||
($this->ausbildung!=''?"'$this->ausbildung'":'null').",'$this->aktiv');";
|
||||
//Neuen Datensatz anlegen
|
||||
$qry = "INSERT INTO tbl_mitarbeiter(uid, ausbildungcode, personalnummer, kurzbz, lektor,
|
||||
fixangestellt, telefonklappe, updateamum, updatevon)
|
||||
VALUES('".addslashes($this->uid)."',".
|
||||
$this->addslashes($this->ausbildungcode).",'".$this->personalnummer."',".
|
||||
$this->addslashes($this->kurzbz).",".($this->lektor?'true':'false').",".
|
||||
($this->fixangestellt?'true':'false').",".$this->addslashes($this->telefonklappe).
|
||||
",now(),'".$this->updatevon."');";
|
||||
}
|
||||
else
|
||||
{
|
||||
//Bestehenden Datensatz ueberschreiben
|
||||
|
||||
//mitarbeiter_id auf Gueltigkeit pruefen
|
||||
if(!is_numeric($this->mitarbeiter_id))
|
||||
{
|
||||
$this->errormsg = 'mitarbeiter_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "UPDATE mitarbeiter SET".
|
||||
" beginndatum=".($this->beginndatum!=''?"'$this->beginndatum'":'null').",".
|
||||
" akadgrad='".($this->akadgrad?'J':'N')."',".
|
||||
" habilitation='".($this->habilitation?'J':'N')."',".
|
||||
//" mitgliedentwicklungsteam='".($this->mitgliedentwicklungsteam?'J':'N')."',".
|
||||
//" qualifikation='$this->qualifikation', hauptberuflich='".($this->hauptberuflich?'J':'N')."',".
|
||||
//" hauptberuf='$this->hauptberuf', semesterwochenstunden='$this->semesterwochenstunden',".
|
||||
" persnr=".($this->persnr!=''?"'$this->persnr'":'null').",".
|
||||
" person_fk='$this->person_id',".
|
||||
" beendigungsdatum=".($this->beendigungsdatum!=''?"'$this->beendigungsdatum'":'null').",".
|
||||
" ausgeschieden='".($this->ausgeschieden?'J':'N')."',".
|
||||
" kurzbez=".($this->kurzbez!=''?"'$this->kurzbez'":'null').",".
|
||||
" stundensatz=".($this->stundensatz!=''?"'$this->stundensatz'":'null').",".
|
||||
" ausbildung=".($this->ausbildung!=''?"'$this->ausbildung'":'null').",".
|
||||
" aktiv='$this->aktiv'".
|
||||
" WHERE mitarbeiter_pk=$this->mitarbeiter_id;";
|
||||
//Bestehenden Datensatz updaten
|
||||
$qry = "UPDATE tbl_mitarbeiter SET".
|
||||
" ausbildungcode=".$this->addslashes($this->ausbildungcode).",".
|
||||
//" personalnummer='$this->personalnummer',".
|
||||
" kurzbz=".$this->addslashes($this->kurzbz).",".
|
||||
" lektor=".($this->lektor?'true':'false').",".
|
||||
" fixangestellt=".($this->fixangestellt?'true':'false').",".
|
||||
" telefonklappe=".$this->addslashes($this->telefonklappe).",".
|
||||
" updateamum=now(),".
|
||||
" updatevon=".$this->addslashes($this->updatevon).
|
||||
" WHERE uid='".addslashes($this->uid)."';";
|
||||
}
|
||||
|
||||
if(pg_query($this->conn,$qry))
|
||||
{
|
||||
//Wenn nicht ausgeschieden dann den Status neu setzen
|
||||
//Da sonst beim ruecksetzen des Hakerls ausgeschieden der status bleibt
|
||||
if(!$this->ausgeschieden)
|
||||
{
|
||||
if(!person::updateaktstatus($this->person_id))
|
||||
{
|
||||
pg_query($this->conn,"Rollback;");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!person::setaktstatus(150,$this->person_id))
|
||||
{
|
||||
pg_query($this->conn,"Rollback;");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
pg_query($this->conn,"Commit;");
|
||||
//Log schreiben
|
||||
$sql = $qry;
|
||||
$qry = "SELECT nextval('log_seq') as id;";
|
||||
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
|
||||
if(pg_query($this->conn, $qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
pg_query($this->conn,"Rollback;");
|
||||
$this->errormsg = 'Fehler beim Speichern des Mitarbeiter-Datensatzes';
|
||||
$this->errormsg = 'Fehler beim Speichern des Mitarbeiter-Datensatzes'.$qry;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ladet die Daten aus der Datenbank
|
||||
* @param $fix wenn 'true' Fixangestellte laden
|
||||
* wenn 'false' Freie MA laden
|
||||
* $stgl wenn 'true' Studiengangsleiter laden
|
||||
* $fbl wenn 'true' Fachbereichsleiter laden
|
||||
* $aktiv wenn 'true' Aktive MA laden
|
||||
* $karrenziert wenn 'true' Karenzierte laden
|
||||
* $ausgesch wenn 'true' Ausgeschiedene laden
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
function getMitarbeiter($mitarbeiter_id='', $fix='', $stgl='', $fbl='', $aktiv='', $karenziert='', $ausgesch='', $adresse=false, $studiensemester_id='')
|
||||
{
|
||||
$qry = "SELECT * FROM (mitarbeiter JOIN person ON (person_pk=mitarbeiter.person_fk))";
|
||||
if($adresse)
|
||||
$qry .= " LEFT JOIN adresse on(person_pk=adresse.person_fk)";
|
||||
$qry .= " WHERE true";
|
||||
|
||||
if($mitarbeiter_id!='')
|
||||
if(is_numeric($mitarbeiter_id))
|
||||
$qry .= " AND mitarbeiter_pk = $mitarbeiter_id";
|
||||
else
|
||||
{
|
||||
$this->errormsg = "mitarbeiter_id muss eine gueltige Zahl sein";
|
||||
return false;
|
||||
}
|
||||
|
||||
if($studiensemester_id=='')
|
||||
{
|
||||
$query = "Select studiensemester_pk FROM studiensemester WHERE aktuell='J'";
|
||||
if($row = pg_fetch_object(pg_query($this->conn, $query)))
|
||||
$studiensemester_id = $row->studiensemester_pk;
|
||||
}
|
||||
|
||||
if($fix=='true') // Alle Fixangestellten
|
||||
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.beschart1=3 AND funktion.studiensemester_fk='$studiensemester_id')";
|
||||
|
||||
if($fix=='false') // Freie Mitarbeiter
|
||||
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.beschart1=4 AND funktion.studiensemester_fk='$studiensemester_id')";
|
||||
|
||||
if($stgl=='true') //Alle Studiengangsleiter
|
||||
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.funktion=5 AND funktion.studiensemester_fk='$studiensemester_id')";
|
||||
|
||||
|
||||
if($fbl=='true') //Alle Fachbereichsleiter
|
||||
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.funktion=6 AND funktion.studiensemester_fk='$studiensemester_id')";
|
||||
|
||||
if($aktiv=='true') //Alle aktiven
|
||||
$qry .= " AND aktiv=true";
|
||||
|
||||
if($karenziert=='true') //Alle Karenzierten
|
||||
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.ausmass=5 AND funktion.studiensemester_fk='$studiensemester_id')";
|
||||
|
||||
if($ausgesch=='true') // Alle Ausgeschiedenen
|
||||
$qry .= " AND beendigungsdatum is not null";
|
||||
|
||||
$qry .= " ORDER BY familienname";
|
||||
if(!$res = pg_query($this->conn,$qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
|
||||
while($row = pg_fetch_object($res))
|
||||
{
|
||||
$mitarb = new mitarbeiter($this->conn);
|
||||
//Personendaten
|
||||
$mitarb->person_id = $row->person_pk;
|
||||
$mitarb->familienname = $row->familienname;
|
||||
$mitarb->angelegtam = $row->angelegtam;
|
||||
$mitarb->vorname = $row->vorname;
|
||||
$mitarb->anrede = $row->anrede;
|
||||
$mitarb->vornamen = $row->vornamen;
|
||||
$mitarb->geschlecht = $row->geschlecht;
|
||||
$mitarb->gebdat = $row->gebdat;
|
||||
$mitarb->gebort = $row->gebort;
|
||||
$mitarb->staatsbuergerschaft = $row->staatsbuergerschaft;
|
||||
$mitarb->familienstand = $row->familienstand;
|
||||
$mitarb->familienstand_bezeichnung = $this->getFamilienstandBezeichnung($row->familienstand);
|
||||
$mitarb->svnr = $row->svnr;
|
||||
$mitarb->anzahlderkinder = $row->anzahlderkinder;
|
||||
$mitarb->ersatzkennzeichen = $row->ersatzkennzeichen;
|
||||
$mitarb->bemerkung = $row->bemerkung;
|
||||
$mitarb->aktstatus = $row->aktstatus;
|
||||
$mitarb->aktstatus_bezeichnung = $this->getAktstatusBezeichnung($row->aktstatus);
|
||||
$mitarb->bismelden = ($row->bismelden=='J'?true:false);
|
||||
$mitarb->bismelden_bezeichnung = ($row->bismelden=='J'?'Ja':'Nein');
|
||||
$mitarb->titelpre = $row->titel;
|
||||
$mitarb->titelpost = $row->postnomentitel;
|
||||
$mitarb->uid = $row->uid;
|
||||
$mitarb->gebnation = $row->gebnation;
|
||||
|
||||
//Mitarbeiterdaten
|
||||
$mitarb->mitarbeiter_id = $row->mitarbeiter_pk;
|
||||
$mitarb->beginndatum = $row->beginndatum;
|
||||
$mitarb->akadgrad = ($row->akadgrad=='J'?true:false);
|
||||
$mitarb->akadgrad_bezeichnung = ($row->akadgrad=='J'?'Ja':'Nein');
|
||||
$mitarb->habilitation = ($row->habilitation=='J'?true:false);
|
||||
$mitarb->habilitation_bezeichnung = ($row->habilitation=='J'?'Ja':'Nein');
|
||||
$mitarb->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false);
|
||||
$mitarb->qualifikation = $row->qualifikation;
|
||||
$mitarb->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
|
||||
$mitarb->hauptberuf = $row->hauptberuf;
|
||||
$mitarb->updateamum = $row->creationdate;
|
||||
$mitarb->updatevon = $row->creationuser;
|
||||
$mitarb->semesterwochenstunden = $row->semesterwochenstunden;
|
||||
$mitarb->persnr = $row->persnr;
|
||||
$mitarb->beendigungsdatum = $row->beendigungsdatum;
|
||||
$mitarb->ausgeschieden = ($row->ausgeschieden=='J'?true:false);
|
||||
$mitarb->ausgeschieden_bezeichnung = ($row->ausgeschieden=='J'?'Ja':'Nein');
|
||||
$mitarb->kurzbez = $row->kurzbez;
|
||||
$mitarb->stundensatz = $row->stundensatz;
|
||||
$mitarb->ausbildung = $row->ausbildung;
|
||||
$mitarb->ausbildung_bezeichnung = $this->getAusbildungBezeichnung($row->ausbildung);
|
||||
$mitarb->aktiv = ($row->aktiv=='t'?true:false);
|
||||
$mitarb->aktiv_bezeichnung = ($row->aktiv=='t'?'Ja':'Nein');
|
||||
|
||||
if($adresse)
|
||||
{
|
||||
$mitarb->zustelladresse_plz = $row->plz;
|
||||
$mitarb->zustelladresse_strasse = $row->strasse;
|
||||
$mitarb->zustelladresse_ort = $row->ort;
|
||||
}
|
||||
$this->result[] = $mitarb;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert alle Mitarbeiter
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
function getAll()
|
||||
{
|
||||
|
||||
$qry = "Select person_pk, familienname, angelegtam, vorname, anrede, vornamen, geschlecht, gebdat, gebort, staatsbuergerschaft, ".
|
||||
"familienstand, svnr, anzahlderkinder, ersatzkennzeichen, bemerkung, aktstatus, bismelden, titel, postnomentitel, uid, gebnation, ".
|
||||
"mitarbeiter_pk, beginndatum, akadgrad, habilitation, mitgliedentwicklungsteam, qualifikation, hauptberuflich, hauptberuf, ".
|
||||
"mitarbeiter.creationdate, mitarbeiter.creationuser, semesterwochenstunden, persnr, beendigungsdatum, ausgeschieden, ".
|
||||
"kurzbez, stundensatz, ausbildung, aktiv FROM mitarbeiter JOIN person ON(person_pk=person_fk)";
|
||||
if(!$res = pg_query($this->conn,$qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
|
||||
while($row = pg_fetch_object($res))
|
||||
{
|
||||
$mitarb = new mitarbeiter($this->conn);
|
||||
//Personendaten
|
||||
$mitarb->person_id = $row->person_pk;
|
||||
$mitarb->familienname = $row->familienname;
|
||||
$mitarb->angelegtam = $row->angelegtam;
|
||||
$mitarb->vorname = $row->vorname;
|
||||
$mitarb->anrede = $row->anrede;
|
||||
$mitarb->vornamen = $row->vornamen;
|
||||
$mitarb->geschlecht = $row->geschlecht;
|
||||
$mitarb->gebdat = $row->gebdat;
|
||||
$mitarb->gebort = $row->gebort;
|
||||
$mitarb->staatsbuergerschaft = $row->staatsbuergerschaft;
|
||||
$mitarb->familienstand = $row->familienstand;
|
||||
$mitarb->svnr = $row->svnr;
|
||||
$mitarb->anzahlderkinder = $row->anzahlderkinder;
|
||||
$mitarb->ersatzkennzeichen = $row->ersatzkennzeichen;
|
||||
$mitarb->bemerkung = $row->bemerkung;
|
||||
$mitarb->aktstatus = $row->aktstatus;
|
||||
$mitarb->bismelden = ($row->bismelden=='J'?true:false);
|
||||
$mitarb->titelpre = $row->titel;
|
||||
$mitarb->titelpost = $row->postnomentitel;
|
||||
$mitarb->uid = $row->uid;
|
||||
$mitarb->gebnation = $row->gebnation;
|
||||
//Mitarbeiterdaten
|
||||
$mitarb->mitarbeiter_id = $row->mitarbeiter_pk;
|
||||
$mitarb->beginndatum = $row->beginndatum;
|
||||
$mitarb->akadgrad = ($row->akadgrad=='J'?true:false);
|
||||
$mitarb->habilitation = ($row->habilitation=='J'?true:false);
|
||||
$mitarb->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false);
|
||||
$mitarb->qualifikation = $row->qualifikation;
|
||||
$mitarb->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
|
||||
$mitarb->hauptberuf = $row->hauptberuf;
|
||||
$mitarb->updateamum = $row->creationdate;
|
||||
$mitarb->updatevon = $row->creationuser;
|
||||
$mitarb->semesterwochenstunden = $row->semesterwochenstunden;
|
||||
$mitarb->persnr = $row->persnr;
|
||||
$mitarb->beendigungsdatum = $row->beendigungsdatum;
|
||||
$mitarb->ausgeschieden = ($row->ausgeschieden=='J'?true:false);
|
||||
$mitarb->kurzbez = $row->kurzbez;
|
||||
$mitarb->stundensatz = $row->stundensatz;
|
||||
$mitarb->ausbildung = $row->ausbildung;
|
||||
$mitarb->aktiv = ($row->aktiv=='t'?true:false);
|
||||
|
||||
$this->result[] = $mitarb;
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Mitarbeiterdaten der uebergebenen ID
|
||||
* @param $person_id ID der Person die geladen werden soll
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
function load($person_id)
|
||||
{
|
||||
//person_id auf Gueltigkeit pruefen
|
||||
if(!is_numeric($person_id) || $person_id=='')
|
||||
{
|
||||
$this->errormsg = 'Person_id muss eine Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT person_pk, familienname, angelegtam, vorname, anrede, vornamen, geschlecht, gebdat, gebort, staatsbuergerschaft, ".
|
||||
"familienstand, svnr, anzahlderkinder, ersatzkennzeichen, bemerkung, aktstatus, bismelden, titel, postnomentitel, uid, gebnation, ".
|
||||
"mitarbeiter_pk, beginndatum, akadgrad, habilitation, mitgliedentwicklungsteam, qualifikation, hauptberuflich, hauptberuf, ".
|
||||
"mitarbeiter.creationdate, mitarbeiter.creationuser, semesterwochenstunden, persnr, beendigungsdatum, ausgeschieden, ".
|
||||
"kurzbez, stundensatz, ausbildung, aktiv FROM mitarbeiter JOIN person ON(person_pk=person_fk) where person_pk=$person_id";
|
||||
if(!$res = pg_query($this->conn,$qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($row = pg_fetch_object($res))
|
||||
{
|
||||
//Personendaten
|
||||
$this->person_id = $row->person_pk;
|
||||
$this->familienname = $row->familienname;
|
||||
$this->angelegtam = $row->angelegtam;
|
||||
$this->vorname = $row->vorname;
|
||||
$this->anrede = $row->anrede;
|
||||
$this->vornamen = $row->vornamen;
|
||||
$this->geschlecht = $row->geschlecht;
|
||||
$this->gebdat = $row->gebdat;
|
||||
$this->gebort = $row->gebort;
|
||||
$this->staatsbuergerschaft = $row->staatsbuergerschaft;
|
||||
$this->familienstand = $row->familienstand;
|
||||
$this->svnr = $row->svnr;
|
||||
$this->anzahlderkinder = $row->anzahlderkinder;
|
||||
$this->ersatzkennzeichen = $row->ersatzkennzeichen;
|
||||
$this->bemerkung = $row->bemerkung;
|
||||
$this->aktstatus = $row->aktstatus;
|
||||
$this->bismelden = ($row->bismelden=='J'?true:false);
|
||||
$this->titelpre = $row->titel;
|
||||
$this->titelpost = $row->postnomentitel;
|
||||
$this->uid = $row->uid;
|
||||
$this->gebnation = $row->gebnation;
|
||||
//Mitarbeiterdaten
|
||||
$this->mitarbeiter_id = $row->mitarbeiter_pk;
|
||||
$this->beginndatum = $row->beginndatum;
|
||||
$this->akadgrad = ($row->akadgrad=='J'?true:false);
|
||||
$this->habilitation = ($row->habilitation=='J'?true:false);
|
||||
$this->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false);
|
||||
$this->qualifikation = $row->qualifikation;
|
||||
$this->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
|
||||
$this->hauptberuf = $row->hauptberuf;
|
||||
$this->updateamum = $row->creationdate;
|
||||
$this->updatevon = $row->creationuser;
|
||||
$this->semesterwochenstunden = $row->semesterwochenstunden;
|
||||
$this->persnr = $row->persnr;
|
||||
$this->beendigungsdatum = $row->beendigungsdatum;
|
||||
$this->ausgeschieden = ($row->ausgeschieden=='J'?true:false);
|
||||
$this->kurzbez = $row->kurzbez;
|
||||
$this->stundensatz = $row->stundensatz;
|
||||
$this->ausbildung = $row->ausbildung;
|
||||
$this->aktiv = ($row->aktiv=='t'?true:false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Mitarbeiterdaten der uebergebenen ID
|
||||
* @param $mitarbeiter_id ID der Person die geladen werden soll
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
function load_mitarbeiter($mitarbeiter_id)
|
||||
{
|
||||
//person_id auf Gueltigkeit pruefen
|
||||
if(!is_numeric($mitarbeiter_id) || $mitarbeiter_id=='')
|
||||
{
|
||||
$this->errormsg = 'Person_id muss eine Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT person_pk, familienname, angelegtam, vorname, anrede, vornamen, geschlecht, gebdat, gebort, staatsbuergerschaft, ".
|
||||
"familienstand, svnr, anzahlderkinder, ersatzkennzeichen, bemerkung, aktstatus, bismelden, titel, postnomentitel, uid, gebnation, ".
|
||||
"mitarbeiter_pk, beginndatum, akadgrad, habilitation, mitgliedentwicklungsteam, qualifikation, hauptberuflich, hauptberuf, ".
|
||||
"mitarbeiter.creationdate, mitarbeiter.creationuser, semesterwochenstunden, persnr, beendigungsdatum, ausgeschieden, ".
|
||||
"kurzbez, stundensatz, ausbildung, aktiv FROM mitarbeiter JOIN person ON(person_pk=person_fk) where mitarbeiter_pk=$mitarbeiter_id";
|
||||
if(!$res = pg_query($this->conn,$qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($row = pg_fetch_object($res))
|
||||
{
|
||||
//Personendaten
|
||||
$this->person_id = $row->person_pk;
|
||||
$this->familienname = $row->familienname;
|
||||
$this->angelegtam = $row->angelegtam;
|
||||
$this->vorname = $row->vorname;
|
||||
$this->anrede = $row->anrede;
|
||||
$this->vornamen = $row->vornamen;
|
||||
$this->geschlecht = $row->geschlecht;
|
||||
$this->gebdat = $row->gebdat;
|
||||
$this->gebort = $row->gebort;
|
||||
$this->staatsbuergerschaft = $row->staatsbuergerschaft;
|
||||
$this->familienstand = $row->familienstand;
|
||||
$this->svnr = $row->svnr;
|
||||
$this->anzahlderkinder = $row->anzahlderkinder;
|
||||
$this->ersatzkennzeichen = $row->ersatzkennzeichen;
|
||||
$this->bemerkung = $row->bemerkung;
|
||||
$this->aktstatus = $row->aktstatus;
|
||||
$this->bismelden = ($row->bismelden=='J'?true:false);
|
||||
$this->titelpre = $row->titel;
|
||||
$this->titelpost = $row->postnomentitel;
|
||||
$this->uid = $row->uid;
|
||||
$this->gebnation = $row->gebnation;
|
||||
//Mitarbeiterdaten
|
||||
$this->mitarbeiter_id = $row->mitarbeiter_pk;
|
||||
$this->beginndatum = $row->beginndatum;
|
||||
$this->akadgrad = ($row->akadgrad=='J'?true:false);
|
||||
$this->habilitation = ($row->habilitation=='J'?true:false);
|
||||
$this->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false);
|
||||
$this->qualifikation = $row->qualifikation;
|
||||
$this->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
|
||||
$this->hauptberuf = $row->hauptberuf;
|
||||
$this->updateamum = $row->creationdate;
|
||||
$this->updatevon = $row->creationuser;
|
||||
$this->semesterwochenstunden = $row->semesterwochenstunden;
|
||||
$this->persnr = $row->persnr;
|
||||
$this->beendigungsdatum = $row->beendigungsdatum;
|
||||
$this->ausgeschieden = ($row->ausgeschieden=='J'?true:false);
|
||||
$this->kurzbez = $row->kurzbez;
|
||||
$this->stundensatz = $row->stundensatz;
|
||||
$this->ausbildung = $row->ausbildung;
|
||||
$this->aktiv = ($row->aktiv=='t'?true:false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* loescht den Mitarbeiter mit der uebergebenen ID
|
||||
* @param ma_id Mitarbeiter_id
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
function delete($person_id)
|
||||
{
|
||||
//person_id auf Gueltigkeit pruefen
|
||||
if(!is_numeric($person_id) || $person_id=='')
|
||||
{
|
||||
$this->errormsg = 'Person_id muss eine Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "DELETE FROM funktion where mitarbeiter_fk=(Select mitarbeiter_pk from mitarbeiter where person_fk=$person_id);".
|
||||
" DELETE FROM adresse where person_fk=$person_id;".
|
||||
" DELETE FROM telefonnummer where person_fk=$person_id;".
|
||||
" DELETE FROM email where person_fk=$person_id;".
|
||||
" DELETE FROM mitarbeiter where person_fk=$person_id";
|
||||
|
||||
if(!pg_query($this->conn,$qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Loeschen';
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!person::delete($person_id))
|
||||
return false;
|
||||
else
|
||||
{
|
||||
//Log schreiben
|
||||
$sql = $qry;
|
||||
$qry = "SELECT nextval('log_seq') as id;";
|
||||
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
|
||||
if(pg_query($this->conn, $qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert die passende Bezeichnung des Familienstandes
|
||||
* @param $id ID des Familienstandes
|
||||
*/
|
||||
function getFamilienstandBezeichnung($id)
|
||||
{
|
||||
switch($id)
|
||||
{
|
||||
case 1: return 'ledig';
|
||||
case 2: return 'verheiratet';
|
||||
case 3: return 'geschieden';
|
||||
case 4: return 'verwitwet';
|
||||
default: return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert die passende Bezeichnung der Ausbildung
|
||||
* @param $id ID der Ausbildung
|
||||
*/
|
||||
function getAusbildungBezeichnung($id)
|
||||
{
|
||||
switch($id)
|
||||
{
|
||||
case 1: return 'Universitätsabschluss mit Doktorat als Zweit- oder Dritt- oder PhD-Abschluss';
|
||||
case 2: return 'Universitäts- oder Hochschulabschluss auf Diplom oder Magisterebene, Doktor als Erstabschluss';
|
||||
case 3: return 'Fachhochschulabschluss auf Diplom- oder Magisterebene';
|
||||
case 4: return 'Universitätsabschluss auf Bakkalaureatsebene';
|
||||
case 5: return 'Fachhochschulabschluss auf Bakkalaureatsebene';
|
||||
case 6: return 'Diplom einer Akademie';
|
||||
case 7: return 'Anderer tertiärer Bildungsabschluss';
|
||||
case 8: return 'Reifeprüfung einer allgemeinbildenden höheren Schule';
|
||||
case 9: return 'Reifeprüfung einer berufsbildenden höheren Schule';
|
||||
case 10: return 'Lehrabschlussprüfung';
|
||||
case 11: return 'Pflichtschule';
|
||||
default: return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert die passende Bezeichnung des Aktuellen Status
|
||||
* @param $id ID des Status
|
||||
*/
|
||||
function getAktstatusBezeichnung($id)
|
||||
{
|
||||
switch($id)
|
||||
{
|
||||
case 100: return 'Mitarbeiter';
|
||||
case 101: return 'Lektor';
|
||||
case 102: return 'Koordinator';
|
||||
case 103: return 'Fachbereichsleiter';
|
||||
case 104: return 'Studiengangsleiter';
|
||||
case 150: return 'Ausgeschieden';
|
||||
default: return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft ob eine Kurzbezeichnung schon existiert. Falls eine mitarbeiter_id
|
||||
* angegeben wird, dann wird dieser Datensatz von der ueberpruefung ausgeschlossen
|
||||
* ( fuer Update eines Datensatzes)
|
||||
*/
|
||||
function kurzbz_exists($kurzbz, $mitarbeiter_id='')
|
||||
{
|
||||
if($kurzbz!='')
|
||||
{
|
||||
$this->errormsg = '';
|
||||
$qry = "SELECT count(*) as anz from mitarbeiter where kurzbez='$kurzbz'";
|
||||
if($mitarbeiter_id!='')
|
||||
$qry .= " AND mitarbeiter_pk<>".$mitarbeiter_id;
|
||||
|
||||
if($result = pg_query($this->conn,$qry))
|
||||
{
|
||||
while ($row=pg_fetch_object($result))
|
||||
{
|
||||
if($row->anz == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim pruefen der Kurzbezeichnung';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert die naechste Personalnummer
|
||||
*/
|
||||
function getNextPersonalnr()
|
||||
{
|
||||
$qry = "SELECT max(persnr) AS persnr FROM mitarbeiter WHERE length(persnr)=(SELECT max(length(persnr)) FROM mitarbeiter)";
|
||||
if($row = pg_fetch_object(pg_query($this->conn,$qry)))
|
||||
return $row->persnr+1;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
?>
|
||||
+162
-527
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* Basisklasse Person (FAS-Online)
|
||||
* @create 06-03-2006
|
||||
* Basisklasse Person (PORTAL)
|
||||
* @create 27-11-2006
|
||||
*/
|
||||
|
||||
class person
|
||||
@@ -9,56 +9,60 @@ class person
|
||||
var $conn; // @var resource DB-Handle
|
||||
var $errormsg; // @var string
|
||||
var $new; // @var boolean
|
||||
var $result = array(); // @var person Objekt
|
||||
var $personen = array(); // @var person Objekt
|
||||
|
||||
//Tabellenspalten
|
||||
var $person_id; // @var integer
|
||||
var $aktstatus; // @var integer
|
||||
var $aktstatus_bezeichnung; // @var integer
|
||||
var $angelegtam; // @var timestamp
|
||||
var $anrede; // @var string
|
||||
var $anzahlderkinder; // @var integer
|
||||
var $bemerkung; // @var string
|
||||
var $bismelden; // @var boolean
|
||||
var $bismelden_bezeichnung; // @var boolean
|
||||
var $ersatzkennzeichen; // @var string
|
||||
var $familienname; // @var string
|
||||
var $familienstand; // @var integer ( 1=ledig, 2=verheiratet, 3=?, 4=?, 5=? )
|
||||
var $familienstand_bezeichnung; // @var integer ( 1=ledig, 2=verheiratet, 3=?, 4=?, 5=? )
|
||||
var $gebdat; // @var date
|
||||
var $gebnation; // @var string
|
||||
var $gebort; // @var string
|
||||
var $geschlecht; // @var string
|
||||
var $staatsbuergerschaft; // @var string
|
||||
var $svnr; // @var string
|
||||
var $titelpost; // @var string Titel nach dem Namen (BA, MA, etc)
|
||||
var $titelpre; // @var string Titel vor dem Namen (Dr, Mag, Dipl.Ing, etc)
|
||||
var $uid; // @var string
|
||||
var $vorname; // @var string
|
||||
var $vornamen; // @var string
|
||||
var $updateamum; // @var timestamp
|
||||
var $updatevon=0; // @var string
|
||||
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
|
||||
* $pers_id Person die geladen werden soll (default=null)
|
||||
* Konstruktor - Uebergibt die Connection und laedt optional eine Person
|
||||
* @param $conn Datenbank-Connection
|
||||
* $person_id Person die geladen werden soll (default=null)
|
||||
*/
|
||||
function person($conn, $pers_id=null)
|
||||
function person($conn, $unicode=false, $person_id=null)
|
||||
{
|
||||
$this->conn = $conn;
|
||||
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
|
||||
|
||||
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($pers_id != null)
|
||||
$this->load($pers_id);
|
||||
|
||||
if($person_id != null)
|
||||
$this->load($person_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Laden einen Datensatz mit der Personal_id die uebergeben wird
|
||||
* Laedt Person mit der uebergebenen ID
|
||||
* @param $person_id ID der Person die geladen werden soll
|
||||
*/
|
||||
function load($person_id)
|
||||
@@ -66,550 +70,181 @@ class person
|
||||
//person_id auf gueltigkeit pruefen
|
||||
if(is_numeric($person_id) && $person_id!='')
|
||||
{
|
||||
$qry = "SELECT * FROM person WHERE person_pk=$person_id";
|
||||
if(!$res=pg_query($this->conn,$qry))
|
||||
$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 auslesen der Daten';
|
||||
$this->errormsg = 'Fehler beim lesen der Personendaten';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($row = pg_fetch_object($res))
|
||||
{
|
||||
$this->person_id = $row->person_pk;
|
||||
$this->aktstatus = $row->aktstatus;
|
||||
$this->angelegtam = $row->angelegtam;
|
||||
$this->anrede = $row->anrede;
|
||||
$this->anzahlderkinder = $row->anzahlderkinder;
|
||||
$this->bemerkung = $row->bemerkung;
|
||||
$this->bismelden = ($row->bismelden=='J'?true:false);
|
||||
$this->ersatzkennzeichen = $row->ersatzkennzeichen;
|
||||
$this->familienname = $row->familienname;
|
||||
$this->familienstand = $row->familienstand;
|
||||
$this->gebdat = $row->gebdat;
|
||||
$this->gebnation = $row->gebnation;
|
||||
$this->gebort = $row->gebort;
|
||||
$this->geschlecht = $row->geschlecht;
|
||||
$this->staatsbuergerschaft = $row->staatsbuergerschaft;
|
||||
$this->svnr = $row->svnr;
|
||||
$this->titelpre = $row->titel;
|
||||
$this->titlepost = $row->postnomentitel;
|
||||
$this->uid = $row->uid;
|
||||
$this->vorname = $row->vorname;
|
||||
$this->vornamen = $row->vornamen;
|
||||
$this->updateamum = $row->creationdate;
|
||||
$this->updatevon = $row->creationuser;
|
||||
}
|
||||
else
|
||||
if($row = pg_fetch_object($result))
|
||||
{
|
||||
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
|
||||
$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;
|
||||
$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
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Die person_id muss eine Zahl sein";
|
||||
$this->errormsg = "Die person_id muss eine gueltige Zahl sein";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Clean stuff from a string
|
||||
function clean_string1($string)
|
||||
{
|
||||
$trans = array("瓣" => "ae",
|
||||
"�" => "Ae",
|
||||
"繹" => "oe",
|
||||
"�" => "Oe",
|
||||
"羹" => "ue",
|
||||
"�" => "Ue",
|
||||
"獺" => "a",
|
||||
"�" => "a",
|
||||
"矇" => "e",
|
||||
"癡" => "e",
|
||||
"籀" => "o",
|
||||
"簷" => "o",
|
||||
"穩" => "i",
|
||||
"穫" => "i",
|
||||
"繳" => "u",
|
||||
"羅" => "u",
|
||||
"�" => "ss");
|
||||
$string = strtr($string, $trans);
|
||||
return ereg_replace("[^a-zA-Z0-9]", "", $string);
|
||||
//[:space:]
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft die Variablen auf Gueltigkeit
|
||||
* @return true wenn ok, false wenn Variablen ungueltig sind
|
||||
*/
|
||||
function checkvars1()
|
||||
function validate()
|
||||
{
|
||||
//Hochkomma herausfiltern
|
||||
$this->familienname = str_replace("'","`", $this->familienname);
|
||||
$this->vorname = str_replace("'","`", $this->vorname);
|
||||
$this->anrede = str_replace("'","`", $this->anrede);
|
||||
$this->vornamen = str_replace("'","`", $this->vornamen);
|
||||
$this->gebort = str_replace("'","`", $this->gebort);
|
||||
$this->svnr = str_replace("'","`", $this->svnr);
|
||||
$this->titelpre = str_replace("'","`", $this->titelpre);
|
||||
$this->titelpost = str_replace("'","`", $this->titelpost);
|
||||
$this->gebnation = str_replace("'","`", $this->gebnation);
|
||||
$this->ersatzkennzeichen = str_replace("'","`", $this->ersatzkennzeichen);
|
||||
$this->bemerkung = str_replace("'","`", $this->bemerkung);
|
||||
if(ereg("[^a-zA-Z0-9]", $this->uid))
|
||||
if(strlen($this->sprache)>16)
|
||||
{
|
||||
$this->errormsg = "UID darf keine Umlaute oder Sonderzeichen enthalten";
|
||||
$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;
|
||||
}
|
||||
//...
|
||||
|
||||
//Maximallaenge pruefen
|
||||
if(strlen($this->familienname)>255)
|
||||
{
|
||||
$this->errormsg = 'Familienname darf nicht laenger als 255 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->vorname)>255)
|
||||
{
|
||||
$this->errormsg = 'Vorname darf nicht laenger als 255 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->anrede)>20)
|
||||
{
|
||||
$this->errormsg = 'Anrede darf nicht laenger als 20 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->vornamen)>255)
|
||||
{
|
||||
$this->errormsg = 'Vornamen darf nicht laenger als 255 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->geschlecht)>1)
|
||||
{
|
||||
$this->errormsg = 'Geschlecht darf nicht laenger als 1 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->gebort)>255)
|
||||
{
|
||||
$this->errormsg = 'Geburtsort darf nicht laenger als 255 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->svnr)!=10)
|
||||
{
|
||||
$this->errormsg = 'SVNR muss 10 Zeichen lang sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->svnr))
|
||||
{
|
||||
$this->errormsg = 'SVNR muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($this->svnr=='0000000000') //Leere SVNR wird zum anlegen des neuen Leerdatensatzes benoetigt
|
||||
$this->svnr='';
|
||||
else
|
||||
{
|
||||
//SVNR mit Pruefziffer pruefen
|
||||
//Die 4. Stelle in der SVNR ist die Pruefziffer
|
||||
//(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer
|
||||
//Falls nicht, ist die SVNR ungueltig
|
||||
$gewichtung = array(3,7,9,0,5,8,4,2,1,6);
|
||||
$erg=0;
|
||||
//Quersumme bilden
|
||||
for($i=0;$i<10;$i++)
|
||||
$erg += $gewichtung[$i] * $this->svnr{$i};
|
||||
|
||||
if($this->svnr{3}!=($erg%11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11
|
||||
{
|
||||
$this->errormsg = 'SVNR ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(strlen($this->bismelden)>1)
|
||||
{
|
||||
$this->errormsg = 'bismelden darf nicht laenger als 1 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->titelpre)>30)
|
||||
{
|
||||
$this->errormsg = 'titelpre darf nicht laenger als 30 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->titelpost)>30)
|
||||
{
|
||||
$this->errormsg = 'titelpost darf nicht laenger als 30 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->uid)>20)
|
||||
{
|
||||
$this->errormsg = 'uid darf nicht laenger als 20 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->gebnation)>3)
|
||||
{
|
||||
$this->errormsg = 'Geburtsnation darf nicht laenger als 3 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->staatsbuergerschaft)>3)
|
||||
{
|
||||
$this->errormsg = 'Staatsb羹rgerschaft darf nicht laenger als 3 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if(strlen($this->ersatzkennzeichen)>10)
|
||||
{
|
||||
$this->errormsg = 'ersatzkennzeichen darf nicht laenger als 10 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
//Zahlenwerte ueberpruefen
|
||||
$this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen';
|
||||
if(!is_numeric($this->familienstand) && $this->familienstand!='') return false;
|
||||
if(!is_numeric($this->anzahlderkinder) && $this->anzahlderkinder!='') return false;
|
||||
if(!is_numeric($this->aktstatus) && $this->aktstatus!='') return false;
|
||||
|
||||
if($this->gebdat!='' && (time() - strtotime($this->gebdat))<315360000) // Wenn nicht aelter als 10 Jahre = 315360000 Sekunden
|
||||
{
|
||||
$this->errormsg = 'Geburtsdatum ist falsch: Person muss 鄟ter als 10 Jahre sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($this->uid_exists($this->uid, $this->person_id))
|
||||
{
|
||||
$this->errormsg = 'Diese UID existiert bereits';
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->errormsg='';
|
||||
return true;
|
||||
}
|
||||
|
||||
function addslashes($var)
|
||||
{
|
||||
return ($var!=''?"'".addslashes($var)."'":'null');
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert die Daten in die Datenbank
|
||||
* Wenn $new auf true gesetzt ist wird eingefuegt
|
||||
* ansonsten der datensatz $person_id upgedated
|
||||
* 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(!$this->checkvars1())
|
||||
if(!$this->validate())
|
||||
return false;
|
||||
|
||||
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
|
||||
{
|
||||
//Naechste ID aus Sequence holen
|
||||
$qry = "SELECT nextval('person_seq') as id;";
|
||||
if(!$row=pg_fetch_object(pg_query($this->conn,$qry)))
|
||||
{
|
||||
$this->errormsg = "Fehler beim Auslesen der Sequence";
|
||||
return false;
|
||||
}
|
||||
$this->person_id = $row->id;
|
||||
|
||||
$qry = "INSERT INTO person (person_pk, familienname, angelegtam, vorname, anrede, vornamen,".
|
||||
" geschlecht, gebdat, gebort, staatsbuergerschaft, familienstand, svnr, anzahlderkinder,".
|
||||
" ersatzkennzeichen, bemerkung, creationdate,creationuser, aktstatus, bismelden, titel, postnomentitel,".
|
||||
" uid, gebnation) VALUES( $this->person_id,".
|
||||
" '$this->familienname', now(), '$this->vorname', '$this->anrede', '$this->vornamen',".
|
||||
($this->geschlecht!=''?"'$this->geschlecht'":"'M'").", ".
|
||||
($this->gebdat!=''?"'$this->gebdat'":'null').", '$this->gebort', '$this->staatsbuergerschaft',".
|
||||
($this->familienstand!=''?"'$this->familienstand'":'null').",".
|
||||
" '$this->svnr', ".
|
||||
($this->anzahlderkinder!=''?"'$this->anzahlderkinder'":'null').",".
|
||||
" '$this->ersatzkennzeichen', '$this->bemerkung', now(),".
|
||||
" '$this->updatevon', '".($this->aktstatus>0?$this->aktstatus:100)."', '".($this->bismelden?'J':'N')."', '$this->titelpre', '$this->titelpost',".
|
||||
(strlen($this->uid)>0?" '$this->uid'":'null').",".
|
||||
" '$this->gebnation');";
|
||||
|
||||
{
|
||||
$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('".addslashes($this->sprache)."','".addslashes($this->anrede)."','".addslashes($this->titelpost)."','".
|
||||
addslashes($this->titelpre)."','".addslashes($this->nachname)."','".addslashes($this->vorname)."','".
|
||||
addslashes($this->vornamen)."','".addslashes($this->gebdatum)."','".addslashes($this->gebort)."',".
|
||||
($this->gebzeit!=''?"'".addslashes($this->gebzeit)."'":'null').",".
|
||||
($this->foto!=''?"'".addslashes($this->foto)."'":'null').",'".addslashes($this->anmerkungen)."','".
|
||||
addslashes($this->homepage)."',".
|
||||
($this->svnr!=''?"'".addslashes($this->svnr)."'":'null').",".
|
||||
($this->ersatzkennzeichen!=''?"'".addslashes($this->ersatzkennzeichen)."'":'null').",'".
|
||||
addslashes($this->familienstand)."',".
|
||||
($this->anzahlkinder!=''?"'".addslashes($this->anzahlkinder)."'":'null').",".
|
||||
($this->aktiv?'true':'false').",".
|
||||
"'now()','".addslashes($this->insertvon)."','now()', '".addslashes($this->updatevon)."',".
|
||||
($this->ext_id!=''?"'".addslashes($this->ext_id)."'":'null').");";
|
||||
}
|
||||
else
|
||||
{
|
||||
//peson_id auf gueltigkeit pruefen
|
||||
//person_id auf gueltigkeit pruefen
|
||||
if(!is_numeric($this->person_id))
|
||||
{
|
||||
$this->errormsg = 'person_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "UPDATE person SET ".
|
||||
" familienname='$this->familienname',".
|
||||
" vorname='$this->vorname',".
|
||||
" anrede='$this->anrede',".
|
||||
" vornamen='$this->vornamen',".
|
||||
" geschlecht=".($this->geschlecht!=''?"'$this->geschlecht'":"'M'").",".
|
||||
" gebdat=".($this->gebdat!=''?"'$this->gebdat'":'null').",".
|
||||
" gebort='$this->gebort',".
|
||||
" staatsbuergerschaft='$this->staatsbuergerschaft',".
|
||||
" familienstand=".($this->familienstand!=''?"'$this->familienstand'":'0').",".
|
||||
" svnr=".($this->svnr!=''?"'$this->svnr'":'null').",".
|
||||
" anzahlderkinder=".($this->anzahlderkinder!=''?"'$this->anzahlderkinder'":'0').",".
|
||||
" ersatzkennzeichen='$this->ersatzkennzeichen',".
|
||||
" bemerkung='$this->bemerkung',".
|
||||
" aktstatus='$this->aktstatus',".
|
||||
" bismelden='".($this->bismelden?'J':'N')."',".
|
||||
" titel='$this->titelpre',".
|
||||
" postnomentitel='$this->titelpost',".
|
||||
" uid='$this->uid',".
|
||||
" gebnation='$this->gebnation'".
|
||||
" WHERE person_pk='$this->person_id'";
|
||||
$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='now()', updatevon=".$this->addslashes($this->updatevon).",".
|
||||
" ext_id=".$this->addslashes($this->ext_id).
|
||||
" WHERE person_id='$this->person_id'";
|
||||
}
|
||||
|
||||
if(pg_query($this->conn,$qry))
|
||||
{
|
||||
//Log schreiben
|
||||
$sql = $qry;
|
||||
$qry = "SELECT nextval('log_seq') as id;";
|
||||
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
|
||||
if($this->new)
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
|
||||
if(pg_query($this->conn, $qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler beim Speichern des Person-Datensatzes:".$qry;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loescht einen Datensatz
|
||||
* @param $person_id ID des zu loeschenden Datensatzes
|
||||
* @return true wenn OK false im Fehlerfall
|
||||
*/
|
||||
function delete($person_id)
|
||||
{
|
||||
//person_id auf Gueltigkeit pruefen
|
||||
if(!is_numeric($person_id) || $person_id=='')
|
||||
{
|
||||
$this->errormsg = 'Person_id muss eine Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "Delete from person where person_pk=$person_id";
|
||||
|
||||
if(!pg_query($this->conn,$qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Loeschen';
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Log schreiben
|
||||
$sql = $qry;
|
||||
$qry = "SELECT nextval('log_seq') as id;";
|
||||
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
|
||||
if(pg_query($this->conn, $qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle Personen aus der Datenbank
|
||||
* @return true wenn OK, false im Fehlerfall
|
||||
*/
|
||||
function getAll()
|
||||
{
|
||||
/** Braucht zuviel Speicher
|
||||
|
||||
$qry = "SELECT * FROM person";
|
||||
if(!$res = pg_query($this->conn,$qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler beim auslesen der Datensaetze';
|
||||
return false;
|
||||
}
|
||||
|
||||
while($row = pg_fetch_object($res))
|
||||
{
|
||||
$pers=new person($this->conn);
|
||||
|
||||
$pers->person_id = $row->person_pk;
|
||||
$pers->aktstatus = $row->aktstatus;
|
||||
$pers->angelegtam = $row->angelegtam;
|
||||
$pers->anrede = $row->anrede;
|
||||
$pers->anzahlderkinder = $row->anzahlderkinder;
|
||||
$pers->bemerkung = $row->bemerkung;
|
||||
$pers->bismelden = ($row->bismelden=='J'?true:false);
|
||||
$pers->ersatzkennzeichen = $row->ersatzkennzeichen;
|
||||
$pers->familienname = $row->familienname;
|
||||
$pers->familienstand = $row->familienstand;
|
||||
$pers->gebdat = $row->gebdat;
|
||||
$pers->gebnation = $row->gebnation;
|
||||
$pers->gebort = $row->gebort;
|
||||
$pers->geschlecht = $row->geschlecht;
|
||||
$pers->staatsbuergerschaft = $row->staatsbuergerschaft;
|
||||
$pers->svnr = $row->svnr;
|
||||
$pers->titelpre = $row->titel;
|
||||
$pers->titelpost = $row->postnomentitel;
|
||||
$pers->uid = $row->uid;
|
||||
$pers->vorname = $row->vorname;
|
||||
$pers->vornamen = $row->vornamen;
|
||||
$pers->updateamum = $row->creationdate;
|
||||
$pers->updatevon = $row->creationuser;
|
||||
|
||||
$this->result[] = $pers;
|
||||
}
|
||||
return true;
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob die UID schon vergeben ist. Wenn ein zweiter
|
||||
* Parameter angegeben wird, wird diese ID von der ueberpruefung
|
||||
* ausgeschlossen ( fuer Update eines Datensatzes )
|
||||
*/
|
||||
function uid_exists($uid, $person_id='')
|
||||
{
|
||||
if($uid!='')
|
||||
{
|
||||
$this->errormsg = '';
|
||||
//Datenbank Check
|
||||
$qry = "SELECT count(*) as anz from person where uid='$uid'";
|
||||
if($person_id!='')
|
||||
$qry .= " AND person_pk<>".$person_id;
|
||||
|
||||
if($result = pg_query($this->conn,$qry))
|
||||
{
|
||||
while ($row=pg_fetch_object($result))
|
||||
{
|
||||
if($row->anz == 0)
|
||||
{
|
||||
//Wurde deaktiviert weil der Zugriff vom auf den LDAP Server
|
||||
//vom der Calva aus nicht funktioniert
|
||||
//Ldap Check
|
||||
//$ds = ldap_connect(LDAP_SERVER);
|
||||
//$dn = "ou=People, dc=technikum-wien, dc=at";
|
||||
//$sr = ldap_search($ds,$dn,"uid=$uid");
|
||||
|
||||
//if(ldap_count_entries($ds,$sr)>0)
|
||||
// return true;
|
||||
//else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim checken der uid';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Aktualisiert den AktStatus
|
||||
*/
|
||||
function updateaktstatus($person_id)
|
||||
{
|
||||
$mitarbeiter_id = '';
|
||||
$qry = "Select mitarbeiter_pk from mitarbeiter where person_fk='$person_id'";
|
||||
if($result = pg_query($this->conn, $qry))
|
||||
{
|
||||
if($row = pg_fetch_object($result))
|
||||
$mitarbeiter_id = $row->mitarbeiter_pk;
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim ermitteln der Mitarbeiter_id';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim ermitteln der mitarbeiter_id';
|
||||
return false;
|
||||
}
|
||||
|
||||
//Funktionen holen
|
||||
$qry = "Select funktion from funktion where ".
|
||||
"studiensemester_fk = (Select studiensemester_pk from studiensemester where aktuell='J')".
|
||||
" AND mitarbeiter_fk = '$mitarbeiter_id'";
|
||||
if($result = pg_query($this->conn, $qry))
|
||||
{
|
||||
$fkt=array();
|
||||
$i=0;
|
||||
while($row=pg_fetch_object($result))
|
||||
{
|
||||
$fkt[$i]=$row->funktion;
|
||||
$i++;
|
||||
}
|
||||
|
||||
//Aktstatus ermitteln
|
||||
if(in_array(5,$fkt)) //STGL
|
||||
$aktstatus = 104;
|
||||
elseif(in_array(6,$fkt)) //FBL
|
||||
$aktstatus = 103;
|
||||
elseif(in_array(2,$fkt)) //FBK
|
||||
$aktstatus = 102;
|
||||
elseif(in_array(1,$fkt)) //LKT
|
||||
$aktstatus = 101;
|
||||
else
|
||||
$aktstatus = 100; //Mitarbeiter
|
||||
|
||||
$this->status = $aktstatus;
|
||||
//neuen akstatus setzen
|
||||
$qry = "Update person set aktstatus = $aktstatus where person_pk = $person_id";
|
||||
if(pg_query($qry))
|
||||
{
|
||||
//Log schreiben
|
||||
$sql .= $qry;
|
||||
$qry = "SELECT nextval('log_seq') as id;";
|
||||
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
|
||||
if(pg_query($this->conn, $qry))
|
||||
return true;
|
||||
$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 = 'Fehler beim Speichern des Log-Eintrages';
|
||||
$this->errormsg = 'Sequence konnte nicht ausgelesen werden';
|
||||
pg_query($this->conn,'ROLLBACK');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim setzen des Aktstatus';
|
||||
return false;
|
||||
}
|
||||
//Log schreiben
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function setaktstatus($status, $person_id)
|
||||
{
|
||||
$qry = "Update person set aktstatus = '$status' where person_pk='$person_id'";
|
||||
if(!pg_query($this->conn, $qry))
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Setzen des aktuellen Status'.$qry;
|
||||
$this->errormsg = 'Fehler beim Speichern des Person-Datensatzes:'.$qry;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user