From 8df2ca579fc176b80f9bd6f3ac9cf95c6df99492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 28 Nov 2006 16:29:09 +0000 Subject: [PATCH] =?UTF-8?q?Sync=20Lehrverb=C3=A4nde,=20Studenten,=20Mitarb?= =?UTF-8?q?eiter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sync_vilesci_portal_lehrverbaende.php | 57 ++++++ .../sync/sync_vilesci_portal_mitarbeiter.php | 137 ++++++++++++++ admin/sync/sync_vilesci_portal_person.php | 115 ------------ admin/sync/sync_vilesci_portal_studenten.php | 136 ++++++++++++++ include/fas/benutzer.class.php | 80 +++++--- include/fas/mitarbeiter.class.php | 60 +++--- include/fas/person.class.php | 164 ++++++++++------ include/fas/student.class.php | 175 ++++++++++++++++++ 8 files changed, 699 insertions(+), 225 deletions(-) create mode 100644 admin/sync/sync_vilesci_portal_lehrverbaende.php create mode 100644 admin/sync/sync_vilesci_portal_mitarbeiter.php delete mode 100644 admin/sync/sync_vilesci_portal_person.php create mode 100644 admin/sync/sync_vilesci_portal_studenten.php create mode 100644 include/fas/student.class.php diff --git a/admin/sync/sync_vilesci_portal_lehrverbaende.php b/admin/sync/sync_vilesci_portal_lehrverbaende.php new file mode 100644 index 000000000..6c53969d9 --- /dev/null +++ b/admin/sync/sync_vilesci_portal_lehrverbaende.php @@ -0,0 +1,57 @@ +PORTAL - Synchronisation +// *********************************** + +$qry = "SELECT studiengang_kz, semester, verband, gruppe FROM tbl_student GROUP BY studiengang_kz, semester, verband, gruppe"; + +if($result = pg_query($conn_vilesci, $qry)) +{ + $text.="Sync der Lehrverbaende\n\n"; + while($row=pg_fetch_object($result)) + { + $qry = "INSERT INTO tbl_lehrverband(studiengang_kz, semester, verband, gruppe) VALUES( + $row->studiengang_kz, $row->semester, '$row->verband', '$row->gruppe');"; + if(!pg_query($conn, $qry)) + { + $error_log.= "Fehler beim einfuegen des Datensatzes: $qry"; + $anzahl_fehler++; + } + else + $anzahl_eingefuegt++; + } +} +$text .= "Anzahl eingefuegter Datensaetze: $anzahl_eingefuegt\n"; +$text .= "Anzahl der Fehler: $anzahl_fehler\n"; +?> + + +Synchro - Vilesci -> Portal - Personen + + + + + + \ No newline at end of file diff --git a/admin/sync/sync_vilesci_portal_mitarbeiter.php b/admin/sync/sync_vilesci_portal_mitarbeiter.php new file mode 100644 index 000000000..ce7b72877 --- /dev/null +++ b/admin/sync/sync_vilesci_portal_mitarbeiter.php @@ -0,0 +1,137 @@ +PORTAL - Synchronisation +// *********************************** + +//Mitarbeiter +$qry = "SELECT * FROM tbl_person JOIN tbl_mitarbeiter USING(uid) WHERE personalnummer<>'OFF'"; + +if($result = pg_query($conn_vilesci, $qry)) +{ + $text.="\n Sync Mitarbeiter\n\n"; + while($row = pg_fetch_object($result)) + { + $error=false; + $mitarbeiter = new mitarbeiter($conn); + + if($row->personalnummer!='') + { + $mitarbeiter->sprache='German'; + $mitarbeiter->anrede=''; + $mitarbeiter->titelpost=''; + $mitarbeiter->titelpre=$row->titel; + $mitarbeiter->nachname=$row->nachname; + if(!$len=strpos($row->vornamen,' ')) + { + $student->vorname=$row->vornamen; + $mitarbeiter->vornamen=''; + } + else + { + $mitarbeiter->vorname=substr($row->vornamen,0,$len); + $mitarbeiter->vornamen=substr($row->vornamen,$len+1,strlen($row->vornamen)); + } + $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=''; + $mitarbeiter->insertamum=''; + $mitarbeiter->updateamum=$row->updateamum; + $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; + + $qry = "SELECT person_id FROM tbl_benutzer WHERE uid='$row->uid'"; + if($result1 = pg_query($conn, $qry)) + { + if(pg_num_rows($result1)>0) //wenn dieser eintrag schon vorhanden ist + { + if($row1=pg_fetch_object($result1)) + { + //Mitarbeiterdaten updaten + $mitarbeiter->new=false; + $mitarbeiter->person_id=$row1->person_id; + } + else + { + $error_log.="Person_id von $row->uid konnte nicht ermittelt werden\n"; + $error=true; + } + } + else + { + //Mitarbeiter neu anlegen + $mitarbeiter->new=true; + } + + if(!$error) + if(!$mitarbeiter->save()) + { + $error_log.=$mitarbeiter->errormsg."\n"; + $anzahl_fehler++; + } + else + $anzahl_eingefuegt++; + else + $anzahl_fehler++; + } + else + $error_log .= "$row->nachname ($row->uid) hat keine Personalnummer\n"; + } + } +} +else + $error_log .= 'Mitarbeiterdatensaetze konnten nicht geladen werden\n'; +$text.="Anzahl aktualisierte Datensaetze: $anzahl_eingefuegt\n"; +$text.="Anzahl der Fehler: $anzahl_fehler\n"; +?> + + + +Synchro - Vilesci -> Portal - Personen + + + + + + \ No newline at end of file diff --git a/admin/sync/sync_vilesci_portal_person.php b/admin/sync/sync_vilesci_portal_person.php deleted file mode 100644 index d73744a0d..000000000 --- a/admin/sync/sync_vilesci_portal_person.php +++ /dev/null @@ -1,115 +0,0 @@ -'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/admin/sync/sync_vilesci_portal_studenten.php b/admin/sync/sync_vilesci_portal_studenten.php new file mode 100644 index 000000000..4601786c7 --- /dev/null +++ b/admin/sync/sync_vilesci_portal_studenten.php @@ -0,0 +1,136 @@ +PORTAL - Synchronisation +// *********************************** + +//Studenten +$qry = "SELECT * FROM tbl_person JOIN tbl_student USING(uid) WHERE uid NOT LIKE '\_dummy%' AND uid NOT LIKE '\_Dummy%'"; + +if($result = pg_query($conn_vilesci, $qry)) +{ + $text.="\n Sync Studenten\n\n"; + while($row = pg_fetch_object($result)) + { + $error=false; + $student = new student($conn); + + + $student->sprache='German'; + $student->anrede=''; + $student->titelpost=''; + $student->titelpre=$row->titel; + $student->nachname=$row->nachname; + if(!$len=strpos($row->vornamen,' ')) + { + $student->vorname=$row->vornamen; + $student->vornamen=''; + } + else + { + $student->vorname=substr($row->vornamen,0,$len); + $student->vornamen=substr($row->vornamen,$len+1,strlen($row->vornamen)); + } + $student->gebdatum=$row->gebdatum; + $student->gebort=$row->gebort; + $student->gebzeit=$row->gebzeit; + $student->foto=''; + $student->anmerkungen=$row->anmerkungen; + $student->homepage=$row->homepage; + $student->svnr=''; + $student->ersatzkennzeichen=''; + $student->familienstand=''; + $student->anzahlkinder=''; + $student->aktiv=($row->aktiv=='t'?true:false); + $student->insertvon=''; + $student->insertamum=''; + $student->updateamum=$row->updateamum; + $student->updatevon=$row->updatevon; + $student->ext_id=''; + + $student->uid=$row->uid; + $student->bnaktiv=$row->aktiv; + $student->alias=$row->alias; + + $student->matrikelnr=$row->matrikelnr; + $student->prestudent_id=''; + $student->studiengang_kz=$row->studiengang_kz; + $student->semester=$row->semester; + $student->verband=$row->verband; + $student->gruppe=$row->gruppe; + + $qry = "SELECT person_id FROM tbl_benutzer WHERE uid='$row->uid'"; + if($result1 = pg_query($conn, $qry)) + { + if(pg_num_rows($result1)>0) //wenn dieser eintrag schon vorhanden ist + { + if($row1=pg_fetch_object($result1)) + { + //Mitarbeiterdaten updaten + $student->new=false; + $student->person_id=$row1->person_id; + } + else + { + $error_log.="Person_id von $row->uid konnte nicht ermittelt werden\n"; + $error=true; + } + } + else + { + //Mitarbeiter neu anlegen + $student->new=true; + } + + if(!$error) + if(!$student->save()) + { + $error_log.=$student->errormsg."\n"; + $anzahl_fehler++; + } + else + $anzahl_eingefuegt++; + else + $anzahl_fehler++; + } + else + $error_log .= "$row->nachname ($row->uid) hat keine Personalnummer\n"; + + } +} +else + $error_log .= 'Studentendatensaetze konnten nicht geladen werden\n'; +$text.="Anzahl aktualisierte Datensaetze: $anzahl_eingefuegt\n"; +$text.="Anzahl der Fehler: $anzahl_fehler\n"; +?> + + + +Synchro - Vilesci -> Portal - Studenten + + + + + + \ No newline at end of file diff --git a/include/fas/benutzer.class.php b/include/fas/benutzer.class.php index ff72c34c7..bd50d766a 100644 --- a/include/fas/benutzer.class.php +++ b/include/fas/benutzer.class.php @@ -1,28 +1,38 @@ , + * Andreas Oesterreicher and + * Rudolf Hangl . */ class benutzer extends person { - //var $conn; // @var resource DB-Handle - //var $errormsg; // @var string - //var $new; // @var boolean - //var $benutzer = array(); // @var person Objekt - //Tabellenspalten var $uid; // varchar(16) - var $bnaktiv; // boolean + var $bnaktiv; // boolean var $alias; // varchar(256) - //var $person_id; // integer /** * 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) + function benutzer($conn, $benutzer_id=null, $unicode=false) { $this->conn = $conn; @@ -33,7 +43,7 @@ class benutzer extends person if(!pg_query($conn,$qry)) { - $this->errormsg = "Encoding konnte nicht gesetzt werden"; + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; return false; } @@ -98,29 +108,53 @@ class benutzer extends person if(!person::save()) return false; + /*if(!pg_query($this->conn,'BEGIN;')) + { + $this->errormsg = 'Benutzertransaktion konnte nicht gesetzt werden'; + return false; + }*/ + if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE { - $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."');"; + $qry = 'INSERT INTO tbl_benutzer (uid, aktiv, alias, person_id, insertamum, insertvon, updateamum, updatevon) VALUES('. + "'".addslashes($this->uid)."',". + ($this->aktiv?'true':'false').','. + $this->addslashes($this->alias).",'". + $this->person_id."',". + $this->addslashes($this->insertamum).",". + $this->addslashes($this->insertvon).",". + $this->addslashes($this->updateamum).",". + $this->addslashes($this->updatevon).",". + ");"; } else { - $qry = "UPDATE tbl_benutzer SET". - " aktiv=".($this->aktiv?'true':'false').",". - " alias=".$this->addslashes($this->alias).",". - " person_id='".$this->person_id."'". + $qry = 'UPDATE tbl_benutzer SET'. + ' aktiv='.($this->aktiv?'true':'false').','. + ' alias='.$this->addslashes($this->alias).','. + " person_id='".$this->person_id."',". + ' updateamum='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon). " WHERE uid='".addslashes($this->uid)."';"; } if(pg_query($this->conn,$qry)) { - //Log schreiben - return true; + /*if(!pg_query($this->conn,'COMMIT;')) + { + $this->errormsg = 'Bentuzer commit fehlgeschlagen'; + return false; + } + else + {*/ + //Log schreiben + return true; + /*}*/ } else - { - $this->errormsg = "Fehler beim Speichern des Person-Datensatzes:".$qry; + { + //pg_query($this->conn,'ROLLBACK;'); + $this->errormsg = 'Fehler beim Speichern des Benutzer-Datensatzes:'.$qry; return false; } } diff --git a/include/fas/mitarbeiter.class.php b/include/fas/mitarbeiter.class.php index 3dae530d8..ab3121a51 100644 --- a/include/fas/mitarbeiter.class.php +++ b/include/fas/mitarbeiter.class.php @@ -8,18 +8,17 @@ class mitarbeiter extends benutzer { //Tabellenspalten - //var $uid; - var $ausbildungcode; - var $personalnummer; - var $kurzbz; - var $lektor; - var $fixangestellt; - var $telefonklappe; + var $ausbildungcode; //integer + var $personalnummer; //serial + var $kurzbz; //varchar(8) + var $lektor; //boolean + var $fixangestellt; //boolean + var $telefonklappe; //varchar(25) /** * Konstruktor */ - function mitarbeiter($conn, $unicode=false, $person_id=null) + function mitarbeiter($conn, $person_id=null, $unicode=false) { $this->conn = $conn; @@ -30,7 +29,7 @@ class mitarbeiter extends benutzer if(!pg_query($conn,$qry)) { - $this->errormsg = "Encoding konnte nicht gesetzt werden"; + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; return false; } @@ -60,6 +59,11 @@ class mitarbeiter extends benutzer $this->errormsg = 'Ausbildungscode ist ungueltig'; return false; } + if(!is_numeric($this->personalnummer)) + { + $this->errormsg = 'Personalnummer muss eine gueltige Zahl sein'; + return false; + } if(strlen($this->kurzbz)>8) { $this->errormsg = 'kurzbz darf nicht laenger als 8 Zeichen sein'; @@ -100,11 +104,11 @@ class mitarbeiter extends benutzer if(!$this->validate()) return false; - pg_query($this->conn,"Begin;"); + pg_query($this->conn,'BEGIN;'); //Basisdaten speichern if(!benutzer::save()) { - pg_query($this->conn,"Rollback;"); + pg_query($this->conn,'ROLLBACK;'); return false; } @@ -114,35 +118,39 @@ class mitarbeiter extends benutzer $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."');"; + $this->addslashes($this->ausbildungcode).",'". + $this->personalnummer."',". //TODO: in Produktivversion nicht angeben + $this->addslashes($this->kurzbz).','. + ($this->lektor?'true':'false').','. + ($this->fixangestellt?'true':'false').','. + $this->addslashes($this->telefonklappe).','. + $this->addslashes($this->updateamum).','. + $this->updatevon."');"; } else { //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). + $qry = 'UPDATE tbl_mitarbeiter SET'. + ' ausbildungcode='.$this->addslashes($this->ausbildungcode).','. + " personalnummer='$this->personalnummer',". //TODO: in Produktivversion nicht angeben + ' kurzbz='.$this->addslashes($this->kurzbz).','. + ' lektor='.($this->lektor?'true':'false').','. + ' fixangestellt='.($this->fixangestellt?'true':'false').','. + ' telefonklappe='.$this->addslashes($this->telefonklappe).','. + ' updateamum='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon). " WHERE uid='".addslashes($this->uid)."';"; } if(pg_query($this->conn,$qry)) { - pg_query($this->conn,"Commit;"); + pg_query($this->conn,'COMMIT;'); //Log schreiben return true; } else { - pg_query($this->conn,"Rollback;"); + pg_query($this->conn,'ROLLBACK;'); $this->errormsg = 'Fehler beim Speichern des Mitarbeiter-Datensatzes'.$qry; return false; } diff --git a/include/fas/person.class.php b/include/fas/person.class.php index 3f64e42bb..230aa7e0c 100644 --- a/include/fas/person.class.php +++ b/include/fas/person.class.php @@ -1,15 +1,31 @@ , + * Andreas Oesterreicher and + * Rudolf Hangl . */ class person { - var $conn; // @var resource DB-Handle - var $errormsg; // @var string - var $new; // @var boolean - var $personen = array(); // @var person Objekt + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $personen = array(); // person Objekt //Tabellenspalten var $person_id; // integer @@ -42,7 +58,7 @@ class person * @param $conn Datenbank-Connection * $person_id Person die geladen werden soll (default=null) */ - function person($conn, $unicode=false, $person_id=null) + function person($conn, $person_id=null, $unicode=false) { $this->conn = $conn; @@ -53,7 +69,7 @@ class person if(!pg_query($conn,$qry)) { - $this->errormsg = "Encoding konnte nicht gesetzt werden"; + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; return false; } @@ -118,7 +134,7 @@ class person } else { - $this->errormsg = "Die person_id muss eine gueltige Zahl sein"; + $this->errormsg = 'Die person_id muss eine gueltige Zahl sein'; return false; } } @@ -127,30 +143,31 @@ class person { if(strlen($this->sprache)>16) { - $this->errormsg = "Sprache darf nicht laenger als 16 Zeichen sein"; + $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"; + $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"; + $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"; + $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"; + $this->errormsg = 'Nachname darf nicht laenger als 64 Zeichen sein'; return false; } //... + return true; } @@ -170,78 +187,103 @@ class person //Variablen auf Gueltigkeit pruefen if(!$this->validate()) return false; - + /* + if(!pg_query($this->conn,'BEGIN;')) + { + $this->errormsg = 'Transaktion konnte nicht gesetzt werden'; + return false; + } + */ if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE { - $qry = "INSERT INTO tbl_person (sprache, anrede, titelpost, titelpre, nachname, vorname, vornamen, + $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').");"; + VALUES('.$this->addslashes($this->sprache).','. + $this->addslashes($this->anrede).','. + $this->addslashes($this->titelpost).','. + $this->addslashes($this->titelpre).','. + $this->addslashes($this->nachname).','. + $this->addslashes($this->vorname).','. + $this->addslashes($this->vornamen).','. + $this->addslashes($this->gebdatum).','. + $this->addslashes($this->gebort).','. + $this->addslashes($this->gebzeit).','. + $this->addslashes($this->foto).','. + $this->addslashes($this->anmerkungen).','. + $this->addslashes($this->homepage).','. + $this->addslashes($this->svnr).','. + $this->addslashes($this->ersatzkennzeichen).','. + $this->addslashes($this->familienstand).','. + $this->addslashes($this->anzahlkinder).','. + ($this->aktiv?'true':'false').','. + $this->addslashes($this->insertamum).','. + $this->addslashes($this->insertvon).','. + $this->addslashes($this->updateamum).','. + $this->addslashes($this->updatevon).','. + $this->addslashes($this->ext_id).');'; } else { //person_id auf gueltigkeit pruefen if(!is_numeric($this->person_id)) - { + { $this->errormsg = 'person_id muss eine gueltige Zahl sein'; return false; } - - $qry = "UPDATE tbl_person SET". - " sprache=".$this->addslashes($this->sprache).",". - " anrede=".$this->addslashes($this->anrede).",". - " titelpost=".$this->addslashes($this->titelpost).",". - " titelpre=".$this->addslashes($this->titelpre).",". - " nachname=".$this->addslashes($this->nachname).",". - " vorname=".$this->addslashes($this->vorname).",". - " vornamen=".$this->addslashes($this->vornamen).",". - " gebdatum=".$this->addslashes($this->gebdatum).",". - " gebort=".$this->addslashes($this->gebort).",". - " gebzeit=".$this->addslashes($this->gebzeit).",". - " foto=".$this->addslashes($this->foto).",". - " anmerkungen=".$this->addslashes($this->anmerkungen).",". - " homepage=".$this->addslashes($this->homepage).",". - " svnr=".$this->addslashes($this->svnr).",". - " ersatzkennzeichen=".$this->addslashes($this->ersatzkennzeichen).",". - " familienstand=".$this->addslashes($this->familienstand).",". - " anzahlkinder=".$this->addslashes($this->anzahlkinder).",". - " aktiv=".($this->aktiv?'true':'false').",". - " updateamum='now()', updatevon=".$this->addslashes($this->updatevon).",". - " ext_id=".$this->addslashes($this->ext_id). - " WHERE person_id='$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='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon).','. + ' ext_id='.$this->addslashes($this->ext_id). + " WHERE person_id='$this->person_id'"; } - + if(pg_query($this->conn,$qry)) { if($this->new) { - $qry = "Select currval('tbl_person_person_id_seq') as id;"; + $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 - { + /*if(!pg_query($this->conn,'COMMIT;')) + { + $this->errormsg = 'Personentransaktion konnte nicht commitet werden'; + return false; + }*/ + } + else + { $this->errormsg = 'Sequence konnte nicht ausgelesen werden'; - pg_query($this->conn,'ROLLBACK'); + //pg_query($this->conn,'ROLLBACK;'); return false; } } //Log schreiben return true; + } - else - { + else + { $this->errormsg = 'Fehler beim Speichern des Person-Datensatzes:'.$qry; return false; } diff --git a/include/fas/student.class.php b/include/fas/student.class.php new file mode 100644 index 000000000..94b9629ee --- /dev/null +++ b/include/fas/student.class.php @@ -0,0 +1,175 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class student extends benutzer +{ + + //Tabellenspalten + var $matrikelnr; + var $prestudent_id; + var $studiengang_kz; + var $semester; + var $verband; + var $gruppe; + + /** + * Konstruktor + */ + function student($conn, $student_id=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + //Student laden + if($student_id!=null) + $this->load($student_id); + } + + /** + * ueberprueft die Variablen auf Gueltigkeit + * @return true wenn gueltig, false im Fehlerfall + */ + 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->matrikelnr)>15) + { + $this->errormsg = 'Matrikelnummer darf nicht laenger als 15 Zeichen sein'; + return false; + } + if(strlen($this->updatevon)>32) + { + $this->errormsg = 'Updatevon darf nicht laenger als 32 Zeichen sein'; + return false; + } + if($this->prestudent_id!='' && !is_numeric($this->prestudent_id)) + { + $this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->studiengang_kz)) + { + $this->errormsg = 'Studiengang_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->semester)) + { + $this->errormsg = 'Semester muss ein gueltige Zahl sein'; + return false; + } + if(strlen($this->verband)>1) + { + $this->errormsg = 'Verband darf nicht laenger als 1 Zeichen sein'; + return false; + } + if(strlen($this->gruppe)>1) + { + $this->errormsg = 'Gruppe darf nicht laenger als 1 Zeichen sein'; + return false; + } + + return true; + } + + + /** + * Speichert die Studentendaten in die Datenbank + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Variablen checken + if(!$this->validate()) + return false; + + pg_query($this->conn,'BEGIN;'); + //Basisdaten speichern + if(!benutzer::save()) + { + pg_query($this->conn,'ROLLBACK;'); + return false; + } + + if($this->new) + { + //Neuen Datensatz anlegen + $qry = "INSERT INTO tbl_student(uid, matrikelnr, updateamum, updatevon, prestudent_id, + studiengang_kz, semester, verband, gruppe) + VALUES('".addslashes($this->uid)."',". + $this->addslashes($this->matrikelnr).",". + $this->addslashes($this->updateamum).','. + $this->addslashes($this->updatevon).','. + $this->addslashes($this->prestudent_id).','. + $this->studiengang_kz.','. + $this->semester.','. + ($this->verband!=''?"'".addslashes($this->verband)."'":' ').','. + ($this->gruppe!=''?"'".addslashes($this->gruppe)."'":' ').');'; + } + else + { + //Bestehenden Datensatz updaten + $qry = 'UPDATE tbl_student SET'. + ' matrikelnr='.$this->addslashes($this->matrikelnr).','. + ' updateamum='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon).','. + ' prestudent_id='.$this->addslashes($this->prestudent_id).','. + ' studiengang_kz='.$this->studiengang_kz.','. + ' semester='.$this->semester.','. + ' verband='.$this->addslashes($this->verband).','. + ' gruppe='.$this->addslashes($this->gruppe). + " WHERE uid='".addslashes($this->uid)."';"; + } + + if(pg_query($this->conn,$qry)) + { + pg_query($this->conn,'COMMIT;'); + //Log schreiben + return true; + } + else + { + pg_query($this->conn,'ROLLBACK;'); + $this->errormsg = 'Fehler beim Speichern des Studenten-Datensatzes'.$qry; + return false; + } + } +} +?> \ No newline at end of file