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