diff --git a/admin/sync/sync_vilesci_portal_person.php b/admin/sync/sync_vilesci_portal_person.php
new file mode 100644
index 000000000..d73744a0d
--- /dev/null
+++ b/admin/sync/sync_vilesci_portal_person.php
@@ -0,0 +1,115 @@
+'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';
+
+?>
+
+
+
+Synchro - Vilesci -> Portal - Personen
+
+
+
+
+
+
diff --git a/include/fas/benutzer.class.php b/include/fas/benutzer.class.php
index 31f9ac952..ff72c34c7 100644
--- a/include/fas/benutzer.class.php
+++ b/include/fas/benutzer.class.php
@@ -1,386 +1,128 @@
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 "
".$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; false bei Fehler
- */
- function getBerechtigungen($uid)
- {
- // Berechtigungen holen
- $sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (startnow() 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;
- }
}
?>
\ No newline at end of file
diff --git a/include/fas/benutzer_berechtigung.class.php b/include/fas/benutzer_berechtigung.class.php
new file mode 100644
index 000000000..31f9ac952
--- /dev/null
+++ b/include/fas/benutzer_berechtigung.class.php
@@ -0,0 +1,386 @@
+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 "
".$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; false bei Fehler
+ */
+ function getBerechtigungen($uid)
+ {
+ // Berechtigungen holen
+ $sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (startnow() 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;
+ }
+}
+?>
\ No newline at end of file
diff --git a/include/fas/mitarbeiter.class.php b/include/fas/mitarbeiter.class.php
index a53bdfcdb..3dae530d8 100644
--- a/include/fas/mitarbeiter.class.php
+++ b/include/fas/mitarbeiter.class.php
@@ -1,49 +1,39 @@
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;
- }
}
?>
\ No newline at end of file
diff --git a/include/fas/person.class.php b/include/fas/person.class.php
index 2d353c7e3..3f64e42bb 100644
--- a/include/fas/person.class.php
+++ b/include/fas/person.class.php
@@ -1,7 +1,7 @@
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 älter 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;
}
}
?>
\ No newline at end of file