From e5b71695613215a27b1f20eb0e4baf1efb7235d3 Mon Sep 17 00:00:00 2001 From: Rudolf Hangl Date: Thu, 11 Jan 2007 10:35:07 +0000 Subject: [PATCH] SYNC Mitarbeiter und Reihungstest --- admin/sync/fas/sync_fas_portal_adresse.php | 4 +- .../sync/fas/sync_fas_portal_mitarbeiter.php | 184 ++++++++++++ admin/sync/fas/sync_fas_portal_person.php | 2 - .../sync/fas/sync_fas_portal_reihungstest.php | 134 +++++++++ admin/sync/fas/sync_fas_portal_schluessel.php | 7 +- .../fas/sync_fas_portal_schluesseltyp.php | 6 +- admin/sync/fas/sync_fas_portal_student.php | 265 ++++++++++++++++++ admin/sync/fas/sync_fas_portal_telefon.php | 17 +- include/benutzer.class.php | 2 +- include/mitarbeiter.class.php | 21 +- include/person.class.php | 2 +- include/reihungstest.class.php | 226 +++++++++++++++ include/schluessel.class.php | 6 +- include/student.class.php | 5 +- 14 files changed, 858 insertions(+), 23 deletions(-) create mode 100644 admin/sync/fas/sync_fas_portal_mitarbeiter.php create mode 100644 admin/sync/fas/sync_fas_portal_reihungstest.php create mode 100644 admin/sync/fas/sync_fas_portal_student.php create mode 100644 include/reihungstest.class.php diff --git a/admin/sync/fas/sync_fas_portal_adresse.php b/admin/sync/fas/sync_fas_portal_adresse.php index ef07c2155..22ff2eb0f 100644 --- a/admin/sync/fas/sync_fas_portal_adresse.php +++ b/admin/sync/fas/sync_fas_portal_adresse.php @@ -21,7 +21,7 @@ */ //* -//* Synchronisiert Adressendatensaetze von Vilesci DB in PORTAL DB +//* Synchronisiert Adressendatensaetze von FAS DB in PORTAL DB //* //* @@ -55,7 +55,7 @@ function validate($row) -Synchro - Vilesci -> Portal - Adresse +Synchro - FAS -> Portal - Adresse diff --git a/admin/sync/fas/sync_fas_portal_mitarbeiter.php b/admin/sync/fas/sync_fas_portal_mitarbeiter.php new file mode 100644 index 000000000..2375278a4 --- /dev/null +++ b/admin/sync/fas/sync_fas_portal_mitarbeiter.php @@ -0,0 +1,184 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Synchronisiert Mitarbeiterdatensaetze von FAS DB in PORTAL DB + * + */ +require_once('../../../vilesci/config.inc.php'); +require_once('../../../include/person.class.php'); +require_once('../../../include/benutzer.class.php'); +require_once('../../../include/mitarbeiter.class.php'); + +$conn=pg_connect(CONN_STRING) or die("Connection zur Portal Datenbank fehlgeschlagen"); +$conn_fas=pg_connect(CONN_STRING_FAS) or die("Connection zur FAS Datenbank fehlgeschlagen"); + +$error_log=''; +$text = ''; +$anzahl_eingefuegt=0; +$anzahl_fehler=0; + +// *********************************** +// * VILESCI->PORTAL - Synchronisation +// *********************************** + +//Mitarbeiter +$qry = "SELECT * FROM person JOIN mitarbeiter ON person_fk=person_pk WHERE uid NOT LIKE '\_dummy%'"; + +if($result = pg_query($conn_fas, $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=$row->anrede; + $mitarbeiter->titelpost=$row->postnomentitel; + $mitarbeiter->titelpre=$row->titel; + $mitarbeiter->nachname=$row->familienname; + $mitarbeiter->vorname=$row->vorname; + $mitarbeiter->vornamen=$row->vornamen; + $mitarbeiter->gebdatum=$row->gebdat; + $mitarbeiter->gebort=$row->gebort; + + $mitarbeiter->geburtsnation=$row->gebnation; + $mitarbeiter->foto=''; + $mitarbeiter->anmerkungen=$row->bemerkung; + $mitarbeiter->svnr=$row->svnr; + $mitarbeiter->geschlecht=strtolower($row->geschlecht); + $mitarbeiter->ersatzkennzeichen=$row->ersatzkennzeichen; + $mitarbeiter->familienstand=$row->familienstand; + $mitarbeiter->anzahlkinder=$row->anzahlderkinder; + $mitarbeiter->aktiv=($row->aktiv=='t'?true:false); + $mitarbeiter->insertvon='SYNC'; + $mitarbeiter->insertamum=''; + $mitarbeiter->updateamum=''; + $mitarbeiter->updatevon='SYNC'; + $mitarbeiter->ext_id=$row->person_pk; + $mitarbeiter->ext_id_mitarbeiter=$row->mitarbeiter_pk; + $mitarbeiter->kurzbz=$row->kurzbez; + $mitarbeiter->uid=$row->uid; + $mitarbeiter->ausbildungcode=$row->ausbildung; + $mitarbeiter->personalnummer=$row->persnr; + + $mitarbeiter->gebzeit=''; + $mitarbeiter->ort_kurzbz=''; + $mitarbeiter->homepage=''; + $mitarbeiter->alias=''; + $mitarbeiter->lektor=true; + $mitarbeiter->fixangestellt=false; + $mitarbeiter->telefonklappe=''; + + $qry = "SELECT person_id FROM public.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)) + { + $qry2="SELECT * FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON mitarbeiter_uid=public.tbl_benutzer.uid JOIN public.tbl_person USING (person_id) WHERE mitarbeiter_uid='$row->uid'"; + if($result2 = pg_query($conn, $qry2)) + { + if(pg_num_rows($result2)>0) //wenn dieser eintrag schon vorhanden ist + { + if($row2=pg_fetch_object($result2)) + { + //Mitarbeiterdaten updaten + $mitarbeiter->new=false; + $mitarbeiter->person_id=$row1->person_id; + + $mitarbeiter->gebzeit=$row2->gebzeit; + $mitarbeiter->ort_kurzbz=$row2->ort_kurzbz; + $mitarbeiter->homepage=$row2->homepage; + $mitarbeiter->alias=$row2->alias; + $mitarbeiter->lektor=($row2->lektor=='t'?true:false); + $mitarbeiter->fixangestellt=($row2->fixangestellt=='t'?true:false); + $mitarbeiter->telefonklappe=$row2->telefonklappe; + } + } + else + { + //Mitarbeiter neu anlegen + $mitarbeiter->new=true; + } + } + else + { + $error_log.="Mitarbeiter von $row->uid konnte nicht gefunden werden\n"; + $error=true; + } + } + 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 .= "Fehler beim ermitteln der UID\n"; + //} + //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 - Mitarbeiter + + + + + + \ No newline at end of file diff --git a/admin/sync/fas/sync_fas_portal_person.php b/admin/sync/fas/sync_fas_portal_person.php index 4995f8165..cc8c63910 100644 --- a/admin/sync/fas/sync_fas_portal_person.php +++ b/admin/sync/fas/sync_fas_portal_person.php @@ -121,7 +121,6 @@ if($result = pg_query($conn_fas, $qry)) //update $person->person_id=$rowu->person_id; $person->new=false; - //echo nl2br("update1 von ".$row->uid.", ".$row->familienname."\n"); } else { @@ -141,7 +140,6 @@ if($result = pg_query($conn_fas, $qry)) //update $person->person_id=$row1->person_portal; $person->new=false; - //echo nl2br("update2 von ".$row->uid.", ".$row->familienname."\n"); } else { diff --git a/admin/sync/fas/sync_fas_portal_reihungstest.php b/admin/sync/fas/sync_fas_portal_reihungstest.php new file mode 100644 index 000000000..441a728c9 --- /dev/null +++ b/admin/sync/fas/sync_fas_portal_reihungstest.php @@ -0,0 +1,134 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +//* +//* Synchronisiert Reihungstestdatensaetze von FAS DB in PORTAL DB +//* +//* + +require_once('../../../vilesci/config.inc.php'); +require_once('../../../include/reihungstest.class.php'); + + +$conn=pg_connect(CONN_STRING) or die("Connection zur Portal Datenbank fehlgeschlagen"); +$conn_fas=pg_connect(CONN_STRING_FAS) or die("Connection zur FAS Datenbank fehlgeschlagen"); + +$adress='ruhan@technikum-wien.at'; +//$adress='fas_sync@technikum-wien.at'; + +$error_log=''; +$text = ''; +$anzahl_quelle=0; +$anzahl_eingefuegt=0; +$anzahl_fehler=0; +$anzahl_quelle2=0; +$anzahl_eingefuegt2=0; +$anzahl_fehler2=0; + +function validate($row) +{ +} + +/************************* + * FAS-PORTAL - Synchronisation + */ +?> + + + +Synchro - FAS -> Portal - Reihungstest + + + +ort_kurzbz =''; + $reihungstest->anmerkung =$row->raum; + $reihungstest->datum =$row->datum; + $reihungstest->uhrzeit =$row->uhrzeit; + //$reihungstest->updateamum =$row->; + $reihungstest->updatevon ="SYNC"; + //$reihungstest->insertamum =$row->; + $reihungstest->insertvon ="SYNC"; + $reihungstest->ext_id =$row->reihungstest_pk; + + + //echo nl2br ($reihungstest->ext_id."\n"); + + $qry2="SELECT reihungstest_id, ext_id FROM tbl_reihungstest WHERE ext_id=".$row->reihungstest_pk.";"; + if($result2 = pg_query($conn, $qry2)) + { + if(pg_num_rows($result2)>0) //eintrag gefunden + { + if($row2=pg_fetch_object($result2)) + { + // update adresse, wenn datensatz bereits vorhanden + $reihungstest->new=false; + $reihungstest->reihungstest_id=$row2->reihungstest_id; + } + } + else + { + // insert, wenn datensatz noch nicht vorhanden + $reihungstest->new=true; + } + } + + + if(!$error) + { + if(!$reihungstest->save()) + { + $error_log.=$reihungstest->errormsg."\n"; + $anzahl_fehler++; + } + else + { + $anzahl_eingefuegt++; + echo "- "; + ob_flush(); + flush(); + } + } + flush(); + } +} + + +//echo nl2br($text); +echo nl2br($error_log); +echo nl2br("\nGesamt: $anzahl_quelle / Eingefügt: $anzahl_eingefuegt / Fehler: $anzahl_fehler"); + +?> + + \ No newline at end of file diff --git a/admin/sync/fas/sync_fas_portal_schluessel.php b/admin/sync/fas/sync_fas_portal_schluessel.php index 072ce5543..dd9e69507 100644 --- a/admin/sync/fas/sync_fas_portal_schluessel.php +++ b/admin/sync/fas/sync_fas_portal_schluessel.php @@ -39,6 +39,7 @@ $text = ''; $anzahl_quelle=0; $anzahl_eingefuegt=0; $anzahl_fehler=0; +$krit=''; function validate($row) { @@ -90,16 +91,16 @@ if($result = pg_query($conn_fas, $qry)) { $schluessel->person_id=$row1->person_portal; //Schlüsseltyp feststellen - $qry2="SELECT schluesseltyp FROM tbl_schluesseltyp WHERE schluesseltyp=".$row->name.";"; + $qry2="SELECT * FROM tbl_syncschluesseltyp WHERE fas_typ='".$row->schluessel_fk."';"; if($result2 = pg_query($conn, $qry2)) { if(pg_num_rows($result2)>0) //eintrag gefunden { if($row2=pg_fetch_object($result2)) { - $schluessel->schluesseltyp=$row2->schluesseltyp; + $schluessel->schluesseltyp=$row2->portal_typ; //Insert oder Update - $qry3="SELECT schluessel_id FROM tbl_schluessel WHERE beschreibung=".$row->name.";"; + $qry3="SELECT schluessel_id FROM tbl_schluessel WHERE ext_id=".$row->schluessel_fk.";"; if($result3 = pg_query($conn, $qry3)) { if(pg_num_rows($result3)>0) //eintrag gefunden diff --git a/admin/sync/fas/sync_fas_portal_schluesseltyp.php b/admin/sync/fas/sync_fas_portal_schluesseltyp.php index 627b7adbe..17fcb0d4a 100644 --- a/admin/sync/fas/sync_fas_portal_schluesseltyp.php +++ b/admin/sync/fas/sync_fas_portal_schluesseltyp.php @@ -95,13 +95,13 @@ if($result = pg_query($conn_fas, $qry)) { //überprüfen, ob sync-eintrag schon vorhanden - $qryz="SELECT * FROM tbl_syncschluesseltyp WHERE fas_typ='$row->schluesseltyp_pk' AND portal_typ='$schluesseltyp->schluesseltyp'"; + $qryz="SELECT * FROM tbl_syncschluesseltyp WHERE fas_typ='$row->schluessel_pk' AND portal_typ='$schluesseltyp->schluesseltyp'"; if($resultz = pg_query($conn, $qryz)) { if(pg_num_rows($resultz)==0) //wenn dieser eintrag noch nicht vorhanden ist { - $qry='INSERT INTO tbl_syncschluesseltyp (fas_typ, portal_typ)'. - 'VALUES ('.$row->schluesseltyp_pk.', '.$person->schluesseltyp.');'; + $qry="INSERT INTO tbl_syncschluesseltyp (fas_typ, portal_typ)". + "VALUES ('".$row->schluessel_pk."', '".$schluesseltyp->schluesseltyp."');"; $resulti = pg_query($conn, $qry); } } diff --git a/admin/sync/fas/sync_fas_portal_student.php b/admin/sync/fas/sync_fas_portal_student.php new file mode 100644 index 000000000..a443b5f57 --- /dev/null +++ b/admin/sync/fas/sync_fas_portal_student.php @@ -0,0 +1,265 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Synchronisiert Studentendatensaetze von FAS DB in PORTAL DB + * + */ +require_once('../../../vilesci/config.inc.php'); + + +$conn=pg_connect(CONN_STRING) or die("Connection zur Portal Datenbank fehlgeschlagen"); +$conn_fas=pg_connect(CONN_STRING_FAS) or die("Connection zur FAS Datenbank fehlgeschlagen"); + +$error_log=''; +$text = ''; +$anzahl_eingefuegt=0; +$anzahl_fehler=0; + +// *********************************** +// * VILESCI->PORTAL - Synchronisation +// *********************************** + +//Mitarbeiter +$qry = "SELECT * FROM person JOIN student ON person_fk=person_pk WHERE uid NOT LIKE '\_dummy%'"; + +if($result = pg_query($conn_fas, $qry)) +{ + $text.="\n Sync Student\n\n"; + while($row = pg_fetch_object($result)) + { + $error=false; + //Attribute Person + $staatsbuergerschaft=$row->staatsbuergerschaft; + $geburtsnation=$row->gebnation; + $sprache='German'; + $anrede=$row->anrede; + $titelpost=$row->postnomentitel; + $titelpre=$row->titel; + $nachname=$row->familienname; + $vorname=$row->vorname; + $vornamen=$row->vornamen; + $gebdatum=$row->gebdat; + $gebort=$row->gebort; + $gebzeit=''; //bei insert auslassen + $foto=''; //bei insert auslassen + $anmerkungen=$row->bemerkung; + $svnr=$row->svnr; + $ersatzkennzeichen=$row->ersatzkennzeichen; + $familienstand=$row->familienstand; + $geschlecht=strtolower($row->geschlecht); + $anzahlkinder=$row->anzahlderkinder; + $aktiv=($row->aktiv=='t'?true:false); + $insertvon='SYNC'; + $insertamum=''; + $updateamum=''; + $updatevon='SYNC'; + $ext_id_person=$row->person_pk; + + //Attribute Benutzer + $uid=''; + $person_id=''; + $aktiv=''; + $alias=''; + + //Attribute Prestudent + $aufmerksam_kurzbz=$row->aufmerksamdurch; + $person_id=''; + $studiengang_kz=''; + $beruftaetigkeit_code=$row->berufstaetigkeit; + $ausbildungcode=''; + $zgv_code=$row->zgv; + $zgvort=$row->zgvort; + $zgvdatum=$row->zgvdatum; + $zgvmas_code=$row->zgvmagister; + $zgvmaort=$row->zgvmagisterortort; + $zgvmadatum=$row->zgvmagisterdatum; + $facheinschlberuf=($row->berufstätigkeit=='J'?true:false); + $reihungstest_id=''; + $punkte=''; + $ext_id_pre=$row->person_pk; + $anmeldungreihungstest=''; + + //Attribute Student + $student_uid=$row->uid; + $matrikelnr=$row->perskz; + $prestudent_id=''; + //studiengang_kz bei prestudent + $semester=''; + $verband=''; + $gruppe=''; + $ext_id_student=$row->student_pk; + + //Ermittlung der Daten des Reihungstests + $qry_rt1="SELECT student_fk, reihungstest_fk, anmeldungreihungstest FROM student_reihungstest WHERE student_fk=".$row->student_pk.";"; + if($result_rt1 = pg_query($conn, $qry_rt1)) + { + if($row_rt1=pg_fetch_object($result_rt1)) + { + $qry_rt2="SELECT reihungstest_id FROM public.tbl_reihungstest WHERE ext_id=".$row_rt1->reihungstest_fk.";"; + if($result_rt2 = pg_query($conn, $qry_rt2)) + { + if($row_rt2=pg_fetch_object($result_rt2)) + { + $reihungstest_id=$row_rt2->reihungstest_id; + $anmeldungreihungstest=$row_rt1->anmeldungreihungstest; + } + else + { + $error_log.="Reihungstest_id von $row_rt1->reihungstest_fk konnte nicht gefunden werden.\n"; + $error=true; + } + } + else + { + $error_log.="Reihungstest von $row_rt1->reihungstest_fk wurde nicht gefunden.\n"; + $error=true; + } + } + else + { + $error_log.="Fehler beim Ermitteln des Reihungstests von Student $row->familienname, $row->vorname aufgetreten!\n"; + $error=true; + } + } + + //Start der Transaktion + pg_query($this->conn,'BEGIN;'); + + //Reihenfolge: person - prestudent - student - benutzer + + //insert oder update bei person? + $qry="SELECT person_id FROM public.tbl_benutzer WHERE uid='$row->uid'"; + if($resultu = pg_query($conn, $qry)) + { + if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist + { + if($rowu=pg_fetch_object($resultu)) + { + //update + $person_id=$rowu->person_id; + $new_person=false; + } + else + { + $error=true; + $error_log.="benutzer von $row->uid konnte nicht ermittelt werden\n"; + } + } + else + { + $qry1="SELECT person_fas, person_portal FROM public.tbl_syncperson WHERE person_fas='$row->person_pk'"; + if($result1 = pg_query($conn, $qry1)) + { + if(pg_num_rows($result1)>0) //wenn dieser eintrag schon vorhanden ist + { + if($row1=pg_fetch_object($result1)) + { + //update + $person_id=$row1->person_portal; + $new_person=false; + } + else + { + $error=true; + $error_log.="person von $row->person_pk konnte nicht ermittelt werden\n"; + } + } + else + { + //vergleich svnr und ersatzkennzeichen + $qryz="SELECT person_id FROM public.tbl_person + WHERE ('$row->svnr' is not null AND svnr = '$row->svnr') + OR ('$row->ersatzkennzeichen' is not null AND ersatzkennzeichen = '$row->ersatzkennzeichen')"; + if($resultz = pg_query($conn, $qryz)) + { + if(pg_num_rows($resultz)>0) //wenn dieser eintrag schon vorhanden ist + { + if($rowz=pg_fetch_object($resultz)) + { + $new_person=false; + $person_id=$rowz->person_id; + //echo nl2br("update3 von ".$row->uid.", ".$row->familienname."\n"); + } + else + { + $error=true; + $error_log.="person mit svnr: $row->svnr bzw. ersatzkennzeichen: $row->ersatzkennzeichen konnte nicht ermittelt werden (".pg_num_rows($resultz).")\n"; + } + } + else + { + //insert + $new_person=true; + //echo nl2br("insert von ".$row->uid.", ".$row->familienname."\n"); + } + } + } + } + } + } + if(new_person) + { + //insert person + + } + else + { + //update person + } + + if(!$error) + { + //Reihenfolge: prestudent - student - benutzer + } + else + { + pg_query($this->conn,'ROLLBACK;'); + } + + + + + + //Basisdaten speichern + if(!benutzer::save()) + { + pg_query($this->conn,'ROLLBACK;'); + return false; + } + } +} +?> + + + +Synchro - Vilesci -> Portal - Student + + + + + + \ No newline at end of file diff --git a/admin/sync/fas/sync_fas_portal_telefon.php b/admin/sync/fas/sync_fas_portal_telefon.php index 52e24eafb..615dd354d 100644 --- a/admin/sync/fas/sync_fas_portal_telefon.php +++ b/admin/sync/fas/sync_fas_portal_telefon.php @@ -72,7 +72,22 @@ if($result = pg_query($conn_fas, $qry)) $error=false; $kontakt =new kontakt($conn); $kontakt->firma_id =''; - $kontakt->kontakttyp ='telefon'; + If($row->typ<'20') + { + $kontakt->kontakttyp ='telefon'; + } + elseif($row->typ>='20' && $row->typ<'30') + { + $kontakt->kontakttyp ='mobil'; + } + elseif($row->typ>='30' && $row->typ<'40') + { + $kontakt->kontakttyp ='fax'; + } + else + { + $kontakt->kontakttyp ='so.tel'; + } $kontakt->anmerkung =$row->name; $kontakt->kontakt =$row->nummer; $kontakt->zustellung =false; diff --git a/include/benutzer.class.php b/include/benutzer.class.php index f514ccad2..2924950ca 100644 --- a/include/benutzer.class.php +++ b/include/benutzer.class.php @@ -76,7 +76,7 @@ class benutzer extends person } if($this->uid == '') { - $this->errormsg = 'UID muss eingegeben werden'; + $this->errormsg = 'UID muss eingegeben werden '.$this->uid; return false; } if(strlen($this->alias)>256) diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index 62780c63d..b8bd1d2fd 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -31,6 +31,7 @@ class mitarbeiter extends benutzer var $fixangestellt; //boolean var $telefonklappe; //varchar(25) var $ort_kurzbz; //varchar(8) + var $ext_id_mitarbeiter; //bigint // ************************************************************************* // * Konstruktor - Uebergibt die Connection und laedt optional einen Mitarbeiter @@ -55,8 +56,8 @@ class mitarbeiter extends benutzer } //Mitarbeiter laden - //if($uid!=null) - // $this->load($uid); + if($uid!=null) + $this->load($uid); } // ************************************************ @@ -72,7 +73,7 @@ class mitarbeiter extends benutzer } if($this->uid=='') { - $this->errormsg = 'UID muss eingegeben werden'; + $this->errormsg = 'UID muss eingegeben werden '.$this->uid; return false; } if($this->ausbildungcode!='' && !is_numeric($this->ausbildungcode)) @@ -97,7 +98,7 @@ class mitarbeiter extends benutzer } if(!is_bool($this->lektor)) { - $this->errormsg = 'lektor muss boolean sein'.$this->lektor; + $this->errormsg = 'lektor muss boolean sein '.$this->lektor; return false; } if(!is_bool($this->fixangestellt)) @@ -140,9 +141,11 @@ class mitarbeiter extends benutzer if($this->new) { - //Neuen Datensatz anlegen + + //Neuen Datensatz anlegen $qry = "INSERT INTO public.tbl_mitarbeiter(mitarbeiter_uid, ausbildungcode, personalnummer, kurzbz, lektor, ort_kurzbz, - fixangestellt, telefonklappe, updateamum, updatevon) + fixangestellt, telefonklappe, updateamum, updatevon, ext_id) + VALUES('".addslashes($this->uid)."',". $this->addslashes($this->ausbildungcode).",". $this->addslashes($this->personalnummer).",". //TODO: in Produktivversion nicht angeben @@ -152,7 +155,8 @@ class mitarbeiter extends benutzer ($this->fixangestellt?'true':'false').','. $this->addslashes($this->telefonklappe).','. $this->addslashes($this->updateamum).','. - $this->addslashes($this->updatevon).');'; + $this->addslashes($this->updatevon).', '. + $this->addslashes($this->ext_id_mitarbeiter).');'; } else { @@ -166,7 +170,8 @@ class mitarbeiter extends benutzer ' telefonklappe='.$this->addslashes($this->telefonklappe).','. ' ort_kurzbz='.$this->addslashes($this->ort_kurzbz).','. ' updateamum='.$this->addslashes($this->updateamum).','. - ' updatevon='.$this->addslashes($this->updatevon). + ' updatevon='.$this->addslashes($this->updatevon).','. + ' ext_id='.$this->addslashes($this->ext_id_mitarbeiter). " WHERE mitarbeiter_uid='".addslashes($this->uid)."';"; } diff --git a/include/person.class.php b/include/person.class.php index 9959b9596..0580b513d 100644 --- a/include/person.class.php +++ b/include/person.class.php @@ -196,7 +196,7 @@ class person $this->errormsg = 'Vornamen darf nicht laenger als 128 Zeichen sein'; return false; } - //ToDo Gebdatum pruefen -> laut bis muss er aelter als 10 Jahre sein + //ToDo Gebdatum pruefen -> laut bis muss student aelter als 10 Jahre sein /*if(strlen($this->gebdatum)==0 || is_null($this->gebdatum)) { $this->errormsg = 'Geburtsdatum muss eingegeben werden'; diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php new file mode 100644 index 000000000..f453fa5b8 --- /dev/null +++ b/include/reihungstest.class.php @@ -0,0 +1,226 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse Reihungstest + * @create 10-01-2007 + */ + +class reihungstest +{ + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $done=false; // @var boolean + + //Tabellenspalten + Var $reihungstest_id; // @var integer + var $studiengang_kz; // @var integer + var $ort_kurzbz; // @var string + var $anmerkung; // @var string + var $datum; // @var date + var $uhrzeit; // @var time without time zone + var $ext_id; // @var integer + var $insertamum; // @var timestamp + var $insertvon; // @var bigint + var $updateamum; // @var timestamp + var $updatevon; // @var bigint + + /** + * Konstruktor + * @param $conn Connection + * $kontakt_id ID der Adresse die geladen werden soll (Default=null) + */ + function reihungstest($conn,$reihungstest_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; + } + } + + /** + * Laedt den Reihungstest mit der ID $reihungstest_id + * @param $sreihungstest_id ID des zu ladenden Reihungstests + * @return true wenn ok, false im Fehlerfall + */ + function load($reihungstest_id) + { + //noch nicht implementiert + } + + // ************************************************ + // * wenn $var '' ist wird "null" zurueckgegeben + // * wenn $var !='' ist werden datenbankkritische + // * Zeichen mit backslash versehen und das Ergebnis + // * unter Hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + /** + * Prueft die Variablen auf gueltigkeit + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + //Zahlenfelder pruefen + if(!is_numeric($this->studiengang_kz)) + { + $this->errormsg='studiengang_kz enthaelt ungueltige Zeichen:'.$this->reihungstest_id.' - Studiengang: '.$row->studiengang_kz; + return false; + } + //Gesamtlaenge pruefen + //$this->errormsg='Eine der Gesamtlaengen wurde ueberschritten'; + if(strlen($this->ort_kurzbz)>8) + { + $this->errormsg = 'Ort_kurzbz darf nicht länger als 8 Zeichen sein - Studiengang: '.$row->studiengang_kz; + return false; + } + if(strlen($this->anmerkung)>64) + { + $this->errormsg = 'Anmerkung darf nicht länger als 64 Zeichen sein - Studiengang: '.$row->studiengang_kz; + return false; + } + + $this->errormsg = ''; + return true; + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $reihungstest_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + $this->done=false; + + if($this->new) + { + //Neuen Datensatz einfuegen + + $qry='INSERT INTO tbl_reihungstest (studiengang_kz, ort_kurzbz, anmerkung, datum, uhrzeit, + ext_id, insertamum, insertvon, updateamum, updatevon) VALUES('. + $this->addslashes($this->studiengang_kz).', '. + $this->addslashes($this->ort_kurzbz).', '. + $this->addslashes($this->anmerkung).', '. + $this->addslashes($this->datum).', '. + $this->addslashes($this->uhrzeit).', '. + $this->addslashes($this->ext_id).', now(), '. + $this->addslashes($this->insertvon).', now(), '. + $this->addslashes($this->updatevon).');'; + $this->done=true; + } + else + { + $qryz="SELECT * FROM tbl_reihungstest WHERE reihungstest_id='$this->reihungstest_id';"; + if($resultz = pg_query($this->conn, $qryz)) + { + while($rowz = pg_fetch_object($resultz)) + { + $update=false; + if($rowz->studiengang_kz!=$this->studiengang_kz) $update=true; + if($rowz->ort_kurzbz!=$this->kurzbz) $update=true; + if($rowz->anmerkung!=$this->anmerkung) $update=true; + if($rowz->datum!=$this->datum) $update=true; + if($rowz->uhrzeit!=$this->uhrzeit) $update=true; + if($rowz->ext_id!=$this->ext_id) $update=true; + + if($update) + { + $qry='UPDATE tbl_schluessel SET '. + 'studiengang_kz='.$this->addslashes($this->studiengang_kz).', '. + 'ort_kurzbz='.$this->addslashes($this->ort_kurzbz).', '. + 'anmerkung='.$this->addslashes($this->anmerkung).', '. + 'datum='.$this->addslashes($this->datum).', '. + 'uhrzeit='.$this->addslashes($this->uhrzeit).', '. + 'ext_id='.$this->addslashes($this->ext_id).', '. + 'updateamum= now(), '. + 'updatevon='.$this->addslashes($this->updatevon).' '. + 'WHERE reihungstest_id='.$this->addslashes($this->reihungstest_id).';'; + $this->done=true; + } + } + } + else + { + return false; + } + } + if ($this->done) + { + 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))) + { + $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 + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + else + { + return true; + } + } + + /** + * Loescht den Datenensatz mit der ID die uebergeben wird + * @param $reihungstest_id ID die geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + function delete($reihungstest_id) + { + //noch nicht implementiert! + } +} +?> \ No newline at end of file diff --git a/include/schluessel.class.php b/include/schluessel.class.php index 694a88525..e17aabbc0 100644 --- a/include/schluessel.class.php +++ b/include/schluessel.class.php @@ -20,7 +20,7 @@ * Rudolf Hangl . */ /** - * Klasse Schüssel + * Klasse Schlüssel * @create 22-12-2006 */ @@ -144,6 +144,10 @@ class schluessel } } } + else + { + return false; + } } if ($this->done) { diff --git a/include/student.class.php b/include/student.class.php index 270d33744..6d244bd8d 100644 --- a/include/student.class.php +++ b/include/student.class.php @@ -30,6 +30,7 @@ class student extends benutzer var $semester; var $verband; var $gruppe; + var $ext_id_student; // ************************************************************************* // * Konstruktor - Uebergibt die Connection und laedt optional einen Studenten @@ -175,7 +176,7 @@ class student extends benutzer { //Neuen Datensatz anlegen $qry = "INSERT INTO public.tbl_student(student_uid, matrikelnr, updateamum, updatevon, prestudent_id, - studiengang_kz, semester, verband, gruppe) + studiengang_kz, semester, ext_id, verband, gruppe) VALUES('".addslashes($this->uid)."',". $this->addslashes($this->matrikelnr).",". $this->addslashes($this->updateamum).','. @@ -183,6 +184,7 @@ class student extends benutzer $this->addslashes($this->prestudent_id).','. $this->studiengang_kz.','. $this->semester.','. + $this->ext_id_student.','. ($this->verband!=''?"'".addslashes($this->verband)."'":' ').','. ($this->gruppe!=''?"'".addslashes($this->gruppe)."'":' ').');'; } @@ -196,6 +198,7 @@ class student extends benutzer ' prestudent_id='.$this->addslashes($this->prestudent_id).','. ' studiengang_kz='.$this->studiengang_kz.','. ' semester='.$this->semester.','. + ' ext_id='.$this->ext_id_student; ' verband='.$this->addslashes($this->verband).','. ' gruppe='.$this->addslashes($this->gruppe). " WHERE student_uid='".addslashes($this->uid)."';";