From ae7e464dc581c6b412bf79ad0bf52e647e06f932 Mon Sep 17 00:00:00 2001 From: Rudolf Hangl Date: Thu, 18 Jan 2007 12:22:50 +0000 Subject: [PATCH] --- .../sync/fas/sync_fas_portal_mitarbeiter.php | 21 +- admin/sync/fas/sync_fas_portal_student.php | 635 ++++++++++-------- .../sync/fas/sync_fas_portal_studiengang.php | 170 +++++ include/studiengang.class.php | 183 ++++- 4 files changed, 687 insertions(+), 322 deletions(-) create mode 100644 admin/sync/fas/sync_fas_portal_studiengang.php diff --git a/admin/sync/fas/sync_fas_portal_mitarbeiter.php b/admin/sync/fas/sync_fas_portal_mitarbeiter.php index 2375278a4..8561de8be 100644 --- a/admin/sync/fas/sync_fas_portal_mitarbeiter.php +++ b/admin/sync/fas/sync_fas_portal_mitarbeiter.php @@ -69,7 +69,26 @@ if($result = pg_query($conn_fas, $qry)) $mitarbeiter->svnr=$row->svnr; $mitarbeiter->geschlecht=strtolower($row->geschlecht); $mitarbeiter->ersatzkennzeichen=$row->ersatzkennzeichen; - $mitarbeiter->familienstand=$row->familienstand; + if ($row->familienstand=='0') + { + $mitarbeiter->familienstand=null; + } + if ($row->familienstand=='1') + { + $mitarbeiter->familienstand='l'; + } + if ($row->familienstand=='2') + { + $mitarbeiter->familienstand='v'; + } + if ($row->familienstand=='3') + { + $mitarbeiter->familienstand='g'; + } + if ($row->familienstand=='4') + { + $mitarbeiter->familienstand='w'; + } $mitarbeiter->anzahlkinder=$row->anzahlderkinder; $mitarbeiter->aktiv=($row->aktiv=='t'?true:false); $mitarbeiter->insertvon='SYNC'; diff --git a/admin/sync/fas/sync_fas_portal_student.php b/admin/sync/fas/sync_fas_portal_student.php index 19c8245b3..f6bb7ce4e 100644 --- a/admin/sync/fas/sync_fas_portal_student.php +++ b/admin/sync/fas/sync_fas_portal_student.php @@ -22,7 +22,7 @@ /** * 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"); @@ -38,6 +38,16 @@ $new_prestudent=false; $new_student=false; $new_benutzer=false; $new_rolle=false; +$i=0; +$notest=0; +$anzahl_person=0; +$anzahl_fehler_person=0; +$anzahl_student=0; +$anzahl_fehler_student=0; +$anzahl_pre=0; +$anzahl_fehler_pre=0; +$anzahl_benutzer=0; +$anzahl_fehler_benutzer=0; function myaddslashes($var) { @@ -58,11 +68,11 @@ function myaddslashes($var) svnr; $ersatzkennzeichen=$row->ersatzkennzeichen; - $familienstand=$row->familienstand; + if ($row->familienstand<='0') + { + $familienstand=null; + } + if ($row->familienstand=='1') + { + $familienstand='l'; + } + if ($row->familienstand=='2') + { + $familienstand='v'; + } + if ($row->familienstand=='3') + { + $familienstand='g'; + } + if ($row->familienstand=='4') + { + $familienstand='w'; + } $geschlecht=strtolower($row->geschlecht); $anzahlkinder=$row->anzahlderkinder; //$aktiv=($row->aktiv=='t'?true:false); @@ -103,12 +132,17 @@ if($result = pg_query($conn_fas, $qry)) $person_id=''; $aktiv=''; $alias=''; + $ext_id_benutzer=$row->student_pk; //Attribute Prestudent $aufmerksamdurch_kurzbz=''; $person_id=''; $studiengang_kz=''; $berufstaetigkeit_code=$row->berufstaetigkeit; + if($berufstaetigkeit_code<0) + { + $berufstaetigkeit_code=null; + } $ausbildungcode=''; $zgv_code=$row->zgv; $zgvort=$row->zgvort; @@ -137,14 +171,24 @@ if($result = pg_query($conn_fas, $qry)) //Attribut Prestudentrolle $rolle_kurzbz=''; + + if($zgv_code<=0 or $zgv_code=='') + { + $zgv_code=null; + } + if($zgvmas_code<=0 or $zgvmas_code=='') + { + $zgvmas_code=null; + } + //Ermittlung der Daten des Reihungstests - $qry_rt1="SELECT student_fk, reihungstest_fk, anmeldedatum FROM student_reihungstest WHERE student_fk=".$row->student_pk.";"; - if($result_rt1 = pg_query($conn_fas, $qry_rt1)) + $qry="SELECT student_fk, reihungstest_fk, anmeldedatum FROM student_reihungstest WHERE student_fk='".$row->student_pk."';"; + if($result_rt1 = pg_query($conn_fas, $qry)) { 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)) + $qry="SELECT reihungstest_id FROM public.tbl_reihungstest WHERE ext_id='".$row_rt1->reihungstest_fk."';"; + if($result_rt2 = pg_query($conn, $qry)) { if($row_rt2=pg_fetch_object($result_rt2)) { @@ -165,17 +209,18 @@ if($result = pg_query($conn_fas, $qry)) } else { - $error_log.="Kein Reihungstests von Student $row->familienname, $row->vorname gefunden!\n"; + $text.="Kein Reihungstests von Student $row->familienname, $row->vorname gefunden!\n"; $reihungstest_id=''; $anmeldungreihungstest=''; + $notest++; } } //Student aktiv? - $qry="SELECT * FROM (SELECT status, creationdate FROM student_ausbildungssemester WHERE student_fk= ".$row->student_pk." AND + $qry="SELECT * FROM (SELECT status, creationdate FROM student_ausbildungssemester WHERE student_fk= '".$row->student_pk."' AND studiensemester_fk=(SELECT studiensemester_pk FROM studiensemester WHERE aktuell='J') ORDER BY 2 DESC LIMIT 1) as abc WHERE status IN ('3', '10', '11', '12', '13');"; - + if($resultu = pg_query($conn_fas, $qry)) { if(pg_num_rows($resultu)>0) @@ -192,7 +237,7 @@ if($result = pg_query($conn_fas, $qry)) $error=true; $error_log.='Fehler beim Holen des aktuellen Status bei student_pk: '.$row->student_pk; } - + //Start der Transaktion pg_query($conn,'BEGIN;'); @@ -200,6 +245,7 @@ if($result = pg_query($conn_fas, $qry)) //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 @@ -218,15 +264,15 @@ if($result = pg_query($conn_fas, $qry)) } else { - $qry1="SELECT person_fas, person_portal FROM public.tbl_syncperson WHERE person_fas='$row->person_pk'"; - if($result1 = pg_query($conn, $qry1)) + $qry="SELECT person_fas, person_portal FROM public.tbl_syncperson WHERE person_fas='$row->person_pk'"; + if($result_sync = pg_query($conn, $qry)) { - if(pg_num_rows($result1)>0) //wenn dieser eintrag schon vorhanden ist + if(pg_num_rows($result_sync)>0) //wenn dieser eintrag schon vorhanden ist { - if($row1=pg_fetch_object($result1)) + if($row_sync1=pg_fetch_object($result_sync)) { //update - $person_id=$row1->person_portal; + $person_id=$row_sync->person_portal; $new_person=false; } else @@ -238,10 +284,10 @@ if($result = pg_query($conn_fas, $qry)) else { //vergleich svnr und ersatzkennzeichen - $qryz="SELECT person_id FROM public.tbl_person + $qry="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($resultz = pg_query($conn, $qry)) { if(pg_num_rows($resultz)>0) //wenn dieser eintrag schon vorhanden ist { @@ -369,7 +415,7 @@ if($result = pg_query($conn_fas, $qry)) " updateamum=now()".','. " updatevon=".myaddslashes($updatevon).','. ' ext_id='.myaddslashes($ext_id_person). - ' WHERE person_id='.$person_id.';'; + ' WHERE person_id='.myaddslashes($person_id).';'; } } } @@ -396,10 +442,11 @@ if($result = pg_query($conn_fas, $qry)) if(!$error) { + $anzahl_person++; //Weitere Reihenfolge: prestudent - student - benutzer //Prestudent schon vorhanden? - $qry="SELECT prestudent_id FROM public.tbl_prestudent WHERE ext_id=".$row->student_pk.";"; + $qry="SELECT prestudent_id FROM public.tbl_prestudent WHERE ext_id='".$row->student_pk."';"; if($resultu = pg_query($conn, $qry)) { if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist @@ -423,16 +470,19 @@ if($result = pg_query($conn_fas, $qry)) $qry="SELECT studiengang_kz FROM public.tbl_studiengang WHERE ext_id='".$row->studiengang_fk."';"; if($resultu = pg_query($conn, $qry)) { - if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist + if(pg_num_rows($resultu)>0) { if($rowu=pg_fetch_object($resultu)) { $studiengang_kz=$rowu->studiengang_kz; } } + else + { + echo nl2br($qry." STUDIENGANG NICHT GEFUNDEN!!! "); + } } - echo $row->studiengang_fk."/".$studiengang_kz; - if($row->aufmerksamdurch=='1') $aufmerksamdurch_kurzbz='k.A.'; + if($row->aufmerksamdurch=='1') $aufmerksamdurch_kurzbz='k.A.'; else if($row->aufmerksamdurch=='2') $aufmerksamdurch_kurzbz='Internet'; else if($row->aufmerksamdurch=='3') $aufmerksamdurch_kurzbz='Zeitungen'; else if($row->aufmerksamdurch=='4') $aufmerksamdurch_kurzbz='Werbung'; @@ -449,6 +499,7 @@ if($result = pg_query($conn_fas, $qry)) else if($row->aufmerksamdurch=='15') $aufmerksamdurch_kurzbz='offene Tür'; else $aufmerksamdurch_kurzbz='k.A.'; + if($new_prestudent) { //insert prestudent @@ -491,26 +542,26 @@ if($result = pg_query($conn_fas, $qry)) //update nur wenn änderungen gemacht $qry="SELECT * FROM public.tbl_prestudent WHERE prestudent_id='$prestudent_id';"; - if($result = pg_query($conn, $qry)) + if($results = pg_query($conn, $qry)) { - while($row = pg_fetch_object($result)) + while($rows = pg_fetch_object($results)) { $update=false; - if($row->aufmerksam_durch_kurzbz!=$aufmerksamdurch_kurzbz) $update=true; - if($row->person_id!=$person_id) $update=true; - if($row->studiengang_kz!=$studiengang_kz) $update=true; - if($row->berufstaetigkeit_code!=$berufstaetigkeit_code) $update=true; - if($row->zgv_code!=$zgv_code) $update=true; - if($row->zgvort!=$zgvort) $update=true; - if($row->zgvdatum!=$zgvdatum) $update=true; - if($row->zgvmas_code!=$zgvmas_code) $update=true; - if($row->zgvmaort!=$zgvmaort) $update=true; - if($row->zgvmadatum!=$zgvmadatum) $update=true; - if($row->facheinschlberuf!=$facheinschlberuf) $update=true; - if($row->reihungstest_id!=$reihungstest_id) $update=true; - if($row->punkte!=$punkte) $update=true; - if($row->anmeldungreihungstest!=$anmeldungreihungstest) $update=true; - if($row->reihungstestangetreten!=$reihungstestangetreten) $update=true; + if($rows->aufmerksamdurch_kurzbz!=$aufmerksamdurch_kurzbz) $update=true; + if($rows->person_id!=$person_id) $update=true; + if($rows->studiengang_kz!=$studiengang_kz) $update=true; + if($rows->berufstaetigkeit_code!=$berufstaetigkeit_code) $update=true; + if($rows->zgv_code!=$zgv_code) $update=true; + if($rows->zgvort!=$zgvort) $update=true; + if($rows->zgvdatum!=$zgvdatum) $update=true; + if($rows->zgvmas_code!=$zgvmas_code) $update=true; + if($rows->zgvmaort!=$zgvmaort) $update=true; + if($rows->zgvmadatum!=$zgvmadatum) $update=true; + if($rows->facheinschlberuf!=$facheinschlberuf) $update=true; + if($rows->reihungstest_id!=$reihungstest_id) $update=true; + if($rows->punkte!=$punkte) $update=true; + if($rows->anmeldungreihungstest!=$anmeldungreihungstest) $update=true; + if($rows->reihungstestangetreten!=$reihungstestangetreten) $update=true; if($update) { @@ -524,7 +575,7 @@ if($result = pg_query($conn_fas, $qry)) ' zgvdatum='.myaddslashes($zgvdatum).','. ' zgvmas_code='.myaddslashes($zgvmas_code).','. ' zgvmaort='.myaddslashes($zgvmaort).','. - ' zgvmadatum='.myaddslashes($person_id).','. + ' zgvmadatum='.myaddslashes($zgvmadatum).','. ' facheinschlberuf='.($facheinschlberuf?'true':'false').','. ' reihungstest_id='.myaddslashes($reihungstest_id).','. ' punkte='.myaddslashes($punkte).','. @@ -535,20 +586,20 @@ if($result = pg_query($conn_fas, $qry)) " updateamum=now()".','. " updatevon=".myaddslashes($updatevon).','. ' ext_id='.myaddslashes($ext_id_pre). - ' WHERE prestudent_id='.$prestudent_id.';'; + ' WHERE prestudent_id='.myaddslashes($prestudent_id).';'; } } } } - + if(pg_query($conn,$qry)) { - if($new_pre) + if($new_prestudent) { $qry = "SELECT currval('public.tbl_prestudent_prestudent_id_seq') AS id;"; - if($row=pg_fetch_object(pg_query($conn,$qry))) + if($rowu=pg_fetch_object(pg_query($conn,$qry))) { - $prestudent_id=$row->id; + $prestudent_id=$rowu->id; } else { @@ -565,17 +616,18 @@ if($result = pg_query($conn_fas, $qry)) if(!$error) { + $anzahl_pre++; //Weitere Reihenfolge: student, benutzer //Student schon vorhanden? - $qry="SELECT student_id FROM public.tbl_student WHERE ext_id='$row->student_pk'"; + $qry="SELECT student_uid FROM public.tbl_student WHERE student_uid='$student_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)) { - $student_id=$rowu->student_id; + $student_uid=$rowu->student_uid; $new_student=false; } else $new_student=true; @@ -585,320 +637,302 @@ if($result = pg_query($conn_fas, $qry)) else { $error=true; - $error_log.='Fehler beim Zugriff auf Tabelle tbl_student bei student_pk: '.$row->student_pk; + echo nl2br('Fehler beim Zugriff auf Tabelle tbl_student bei student_pk: '.$ext_id_student); + $error_log.='Fehler beim Zugriff auf Tabelle tbl_student bei student_pk: '.$ext_id_student; } - + //Gruppenverband ermitteln - $qry="SELECT fas_function_find_verband_from_student(".$row->student_pk.") as verband - fas_function_find_jahrgang_from_student(".$row->student_pk.") as jahrgang - fas_function_find_gruppe_from_student(".$row->student_pk.") as gruppe;"; - if($resultu = pg_query($conn, $qry)) + $qry="SELECT fas_function_find_verband_from_student(".$ext_id_student.") as verband, + fas_function_find_jahrgang_from_student(".$ext_id_student.") as jahrgang, + fas_function_find_gruppe_from_student(".$ext_id_student.") as gruppe;"; + if($resultu = pg_query($conn_fas, $qry)) { if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist { if($rowu=pg_fetch_object($resultu)) { - $semester=$rowu->$rowu->jahrgang; - $verband=$rowu->$rowu->verband; + $semester=$rowu->jahrgang; + $verband=$rowu->verband; $gruppe=$rowu->gruppe; - } - } - } - - if($new_student) - { - //insert student - - $qry = 'INSERT INTO public.tbl_student (matrikelnr, prestudent_id, studiengang_kz, semester, verband, gruppe, - insertamum, insertvon, updateamum, updatevon, ext_id) - VALUES('.myaddslashes($matrikelnr).', '. - myaddslashes($prestudent_id).', '. - myaddslashes($studiengang_kz).', '. - myaddslashes($semester).', '. - myaddslashes($verband).', '. - myaddslashes($gruppe).', '. - "now()".', '. - "'SYNC'".', '. - "now()".', '. - "'SYNC'".', '. - myaddslashes($ext_id_student).', '; - } - else - { - //update student - - //student_uid auf gueltigkeit pruefen - if(!is_numeric($student_uid)) - { - $error=true; - $error_log.= 'student_id muss eine gueltige Zahl sein'; - } - - //update nur wenn änderungen gemacht - $qry="SELECT * FROM public.tbl_student WHERE student_id='$student_id';"; - if($result = pg_query($conn, $qry)) - { - while($row = pg_fetch_object($result)) - { - $update=false; - if($row->matrikelnr!=$matrikelnr) $update=true; - if($row->prestudent_id!=$prestudent_id) $update=true; - if($row->studiengang_kz!=$studiengang_kz) $update=true; - if($row->semester!=$semester) $update=true; - if($row->verband!=$verband) $update=true; - if($row->gruppe!=$gruppe) $update=true; - - if($update) + if($semester!=null AND $verband!=null AND $gruppe!=null) { - $qry = 'UPDATE public.tbl_student SET'. - ' matrikelnr='.myaddslashes($matrikelnr).','. - ' prestudent_id='.myaddslashes($prestudent_id).','. - ' studiengang_kz='.myaddslashes($studiengang_kz).','. - ' semester='.myaddslashes($semester).','. - ' verband='.myaddslashes($verband).','. - ' gruppe='.myaddslashes($gruppe).','. - " insertamum=now()".','. - ' insertvon='.myaddslashes($insertvon).','. - " updateamum=now()".','. - " updatevon=".myaddslashes($updatevon).','. - ' ext_id='.myaddslashes($ext_id_student). - ' WHERE student_id='.$student_id.';'; - } - } - } - } - if(pg_query($conn,$qry)) - { - if($new_student) - { - $qry = "SELECT currval('public.tbl_student_student_id_seq') AS id;"; - if($row=pg_fetch_object(pg_query($conn,$qry))) - $student_id=$row->id; - else - { - $error=true; - $error_log.='Student-Sequence konnte nicht ausgelesen werden'; - } - } - } - else - { - $error=true; - $error_log.='Fehler beim Speichern des Student-Datensatzes:'.$nachname.' '.$qry; - } - - if(!$error) - { - //Weitere Reihenfolge: benutzer - - //Benutzer schon vorhanden? - $qry="SELECT uid, person_id FROM public.tbl_benutzer WHERE ext_id='$row->student_pk'"; - if($resultu = pg_query($conn, $qry)) - { - if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist - { - if($rowu=pg_fetch_object($resultu)) - { - $new_beutzer=false; - } - else $new_benutzer=true; - } - else $new_benutzer=true; - } - else - { - $error=true; - $error_log.='Fehler beim Zugriff auf Tabelle tbl_benutzer bei student_pk: '.$row->student_pk; - } - - - if($new_benutzer) - { - //insert benutzer - $qry = 'INSERT INTO public.tbl_benutzer (uid, person_id, aktiv, alias, - insertamum, insertvon, updateamum, updatevon, ext_id) - VALUES('.myaddslashes($student_uid).', '. - myaddslashes($person_id).', '. - myaddslashes($aktiv).', '. - myaddslashes($alias).', '. - "now()".', '. - "'SYNC'".', '. - "now()".', '. - "'SYNC'".', '. - myaddslashes($ext_id_benutzer).', '; - - } - else - { - //update benutzer - //uid auf gueltigkeit pruefen - if(!is_numeric($uid)) - { - $error=true; - $error_log.= 'uid muss eine gueltige Zahl sein'; - } - if(!is_numeric($person_id)) - { - $error=true; - $error_log.= 'person_id muss eine gueltige Zahl sein'; - } - - - //update nur wenn änderungen gemacht - $qry="SELECT * FROM public.tbl_benutzer WHERE ext_id='$ext_id_benutzer';"; - if($result = pg_query($conn, $qry)) - { - while($row = pg_fetch_object($result)) - { - $update=false; - if($row->aktiv!=$aktiv) $update=true; - - if($update) + $qry="SELECT * from public.tbl_lehrverband WHERE studiengang_kz=".myaddslashes($studiengang_kz)." AND semester=".myaddslashes($semester)." AND verband=".myaddslashes($verband)." AND gruppe=".myaddslashes($gruppe).";"; + if($resultg = pg_query($conn, $qry)) { - $qry = 'UPDATE public.tbl_benutzer SET'. - ' uid='.myaddslashes($student_id).','. - ' person_id='.myaddslashes($person_id).','. - ' aktiv='.myaddslashes($aktiv).','. - " insertamum=now()".','. - ' insertvon='.myaddslashes($insertvon).','. - " updateamum=now()".','. - " updatevon=".myaddslashes($updatevon). - ' WHERE ext_id='.$ext_id_benutzer.';'; + if(pg_num_rows($resultg)<1) + { + $qry='INSERT INTO public.tbl_lehrverband (studiengang_kz, semester, verband, gruppe, aktiv, bezeichnung, ext_id) + VALUES('.myaddslashes($studiengang_kz).', '. + myaddslashes($semester).', '. + myaddslashes($verband).', '. + myaddslashes($gruppe).', '. + 'true, null , null );'; + + pg_query($conn, $qry); + } + } + $qry="SELECT * from public.tbl_lehrverband WHERE studiengang_kz=".myaddslashes($studiengang_kz)." AND semester=".myaddslashes($semester)." AND verband=".myaddslashes($verband)." AND (gruppe=null OR gruppe='');"; + if($resultg = pg_query($conn, $qry)) + { + if(pg_num_rows($resultg)<1) + { + $qry='INSERT INTO public.tbl_lehrverband (studiengang_kz, semester, verband, gruppe, aktiv, bezeichnung, ext_id) + VALUES('.myaddslashes($studiengang_kz).', '. + myaddslashes($semester).', '. + myaddslashes($verband).', '. + "'', true, null, null);"; + + pg_query($conn, $qry); + } + } + $qry="SELECT * from public.tbl_lehrverband WHERE studiengang_kz=".myaddslashes($studiengang_kz)." AND semester=".myaddslashes($semester)." AND (verband=null OR verband='') AND (gruppe=null OR gruppe='');"; + if($resultg = pg_query($conn, $qry)) + { + if(pg_num_rows($resultg)<1) + { + $qry='INSERT INTO public.tbl_lehrverband (studiengang_kz, semester, verband, gruppe, aktiv, bezeichnung, ext_id) + VALUES('.myaddslashes($studiengang_kz).', '. + myaddslashes($semester).', '. + "'', '', true, null, null);"; + + pg_query($conn, $qry); + } } } } } + } + if ($semester!=null and $semester!='' and is_numeric($semester) + and $verband!=null and $verband!='' + and $gruppe!=null and $gruppe!='' and is_numeric($gruppe)) + { + + if($new_student) + { + //insert student + + $qry = 'INSERT INTO public.tbl_student (student_uid, matrikelnr, prestudent_id, studiengang_kz, semester, verband, gruppe, + insertamum, insertvon, updateamum, updatevon, ext_id) + VALUES('.myaddslashes($student_uid).', '. + myaddslashes($matrikelnr).', '. + myaddslashes($prestudent_id).', '. + myaddslashes($studiengang_kz).', '. + myaddslashes($semester).', '. + myaddslashes($verband).', '. + myaddslashes($gruppe).', '. + "now()".', '. + "'SYNC'".', '. + "now()".', '. + "'SYNC'".', '. + myaddslashes($ext_id_student).'); '; + } + else + { + //update student + + //update nur wenn änderungen gemacht + $qry="SELECT * FROM public.tbl_student WHERE student_uid='$student_uid';"; + if($results = pg_query($conn, $qry)) + { + while($rows = pg_fetch_object($results)) + { + $update=false; + if($rows->matrikelnr!=$matrikelnr) $update=true; + if($rows->prestudent_id!=$prestudent_id) $update=true; + if($rows->studiengang_kz!=$studiengang_kz) $update=true; + if($rows->semester!=$semester) $update=true; + if($rows->verband!=$verband) $update=true; + if($rows->gruppe!=$gruppe) $update=true; + + if($update) + { + $qry = 'UPDATE public.tbl_student SET'. + ' matrikelnr='.myaddslashes($matrikelnr).','. + ' prestudent_id='.myaddslashes($prestudent_id).','. + ' studiengang_kz='.myaddslashes($studiengang_kz).','. + ' semester='.myaddslashes($semester).','. + ' verband='.myaddslashes($verband).','. + ' gruppe='.myaddslashes($gruppe).','. + " insertamum=now()".','. + ' insertvon='.myaddslashes($insertvon).','. + " updateamum=now()".','. + " updatevon=".myaddslashes($updatevon).','. + ' ext_id='.myaddslashes($ext_id_student). + ' WHERE student_uid='.myaddslashes($student_uid).';'; + } + } + } + } + $anzahl_student++; if(pg_query($conn,$qry)) { if($new_student) { $qry = "SELECT currval('public.tbl_student_student_id_seq') AS id;"; - if($row=pg_fetch_object(pg_query($conn,$qry))) - $benutzer_id=$row->id; + if($rowz=pg_fetch_object(pg_query($conn,$qry))) + $student_id=$rowz->id; else { $error=true; - $error_log.='Benutzer-Sequence konnte nicht ausgelesen werden'; + echo nl2br('Student-Sequence konnte nicht ausgelesen werden'); + $error_log.='Student-Sequence konnte nicht ausgelesen werden'; } } } else { $error=true; - $error_log.='Fehler beim Speichern des Student-Datensatzes:'.$nachname.' '.$qry; + echo nl2br('Fehler beim Speichern des Student-Datensatzes:'.$nachname.' / '.$qry); + $error_log.='Fehler beim Speichern des Student-Datensatzes:'.$nachname.' / '.$qry; } if(!$error) { - //Prestudentrolle anlegen - //Status auslesen aus FAS - $qry1="SELECT status, creationdate FROM student_ausbildungssemester WHERE student_fk= ".$row->student_pk.";"; - if($result1 = pg_query($conn, $qry1)) + //Weitere Reihenfolge: benutzer + + //Benutzer schon vorhanden? + $qry="SELECT uid, person_id FROM public.tbl_benutzer WHERE person_id='$person_id'"; + if($resultu = pg_query($conn, $qry)) { - while($row1= pg_fetch_object($result1)) + if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist { - If(status=='1') $rolle_kurzbz='Interessent'; - If(status=='2') $rolle_kurzbz='Bewerber'; - If(status=='3') $rolle_kurzbz='Student'; - If(status=='4') $rolle_kurzbz='Ausserordentlicher'; - If(status=='5') $rolle_kurzbz='Abgewiesener'; - If(status=='6') $rolle_kurzbz='Aufgenommener'; - If(status=='7') $rolle_kurzbz='Wartender'; - If(status=='8') $rolle_kurzbz='Abbrecher'; - If(status=='9') $rolle_kurzbz='Unterbrecher'; - If(status=='10') $rolle_kurzbz='Outgoing'; - If(status=='11') $rolle_kurzbz='Incoming'; - If(status=='12') $rolle_kurzbz='Praktikant'; - If(status=='13') $rolle_kurzbz='Diplomant'; - If(status=='14') $rolle_kurzbz='Absolvent'; - - //Prestudentrolle schon vorhanden? - $qry2="SELECT * FROM public.tbl_prestudentrolle WHERE prestudent_id='$prestudent_id' - AND rolle_kurzbez='$rolle_kurzbez' AND studiensemester_kurzbz='$studiensemester_kurzbz';"; - if($resultu = pg_query($conn, $qry2)) + if($rowu=pg_fetch_object($resultu)) { - if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist + $new_beutzer=false; + $uid=$rowu->uid; + } + else $new_benutzer=true; + } + else $new_benutzer=true; + } + else + { + $error=true; + $error_log.='Fehler beim Zugriff auf Tabelle tbl_benutzer bei student_pk: '.$row->student_pk; + } + + + if($new_benutzer) + { + //insert benutzer + $qry = 'INSERT INTO public.tbl_benutzer (uid, person_id, aktiv, alias, + insertamum, insertvon, updateamum, updatevon, ext_id) + VALUES('.myaddslashes($student_uid).', '. + myaddslashes($person_id).', '. + myaddslashes($aktiv).', '. + myaddslashes($alias).', '. + "now()".', '. + "'SYNC'".', '. + "now()".', '. + "'SYNC'".', '. + myaddslashes($ext_id_benutzer).'); '; + + } + else + { + //update benutzer + //person_id auf gueltigkeit pruefen + + if(!is_numeric($person_id)) + { + $error=true; + echo nl2br('person_id muss eine gueltige Zahl sein'); + $error_log.= 'person_id muss eine gueltige Zahl sein'; + } + + + //update nur wenn änderungen gemacht + $qry="SELECT * FROM public.tbl_benutzer WHERE ext_id='$ext_id_benutzer';"; + if($results = pg_query($conn, $qry)) + { + while($rows = pg_fetch_object($results)) + { + $update=false; + if($rows->aktiv!=$aktiv) $update=true; + + if($update) { - if($rowu=pg_fetch_object($resultu)) - { - //insert - $qry3 = 'INSERT INTO public.tbl_prestudentrolle (prestudent_id, rolle_kurzbz, - studiensemester_kurzbz, ausbildungssemester, datum, - insertamum, insertvon, updateamum, updatevon, ext_id) - VALUES('.myaddslashes($prestudent_uid).', '. - myaddslashes($rolle_kurzbz).', '. - myaddslashes($studiensemester_kurzbz).', '. - myaddslashes($semester).', '. - myaddslashes($$row1->creationdate).', '. - "now()".', '. - "'SYNC'".', '. - "now()".', '. - "'SYNC'".', '. - myaddslashes($ext_id_student).', '; - } - else - { - //update - $qry3 = 'UPDATE public.tbl_prestudentrolle SET'. - ' ausbildungssemester='.myaddslashes($semester).','. - ' datum='.myaddslashes($row1->creationdate).','. - " insertamum=now()".','. - ' insertvon='.myaddslashes($insertvon).','. - " updateamum=now()".','. - " updatevon=".myaddslashes($updatevon). - ' WHERE prestudent_id='.$prestudent_id.' AND rolle_kurzbez='.$rolle_kurzbez.' AND studiensemester_kurzbz='.$studiensemester_kurzbz.';'; - } - } - else - { - //update - $qry3 = 'UPDATE public.tbl_prestudentrolle SET'. - ' ausbildungssemester='.myaddslashes($semester).','. - ' datum='.myaddslashes($row1->creationdate).','. + $qry = 'UPDATE public.tbl_benutzer SET'. + ' uid='.myaddslashes($student_id).','. + ' person_id='.myaddslashes($person_id).','. + ' aktiv='.myaddslashes($aktiv).','. " insertamum=now()".','. ' insertvon='.myaddslashes($insertvon).','. " updateamum=now()".','. " updatevon=".myaddslashes($updatevon). - ' WHERE prestudent_id='.$prestudent_id.' AND rolle_kurzbez='.$rolle_kurzbez.' AND studiensemester_kurzbz='.$studiensemester_kurzbz.';'; + ' WHERE ext_id='.myaddslashes($ext_id_benutzer).';'; } - - } - else - { - $error=true; - $error_log.='Fehler beim Zugriff auf Tabelle tbl_prestudentrolle bei student_pk: '.$row->student_pk; } } } - if(pg_query($conn,$qry3)) + if(pg_query($conn,$qry)) { - pg_query($conn,'COMMIT;'); + if($new_student) + { + $qry = "SELECT currval('public.tbl_student_student_id_seq') AS id;"; + if($rows=pg_fetch_object(pg_query($conn,$qry))) + $benutzer_id=$rows->id; + else + { + $error=true; + echo nl2br('Benutzer-Sequence konnte nicht ausgelesen werden'); + $error_log.='Benutzer-Sequence konnte nicht ausgelesen werden'; + } + } } else { $error=true; - $error_log.='Fehler beim Speichern des Prestudentrolle-Datensatzes:'.$nachname.' '.$qry; - pg_query($conn,'ROLLBACK;'); + echo nl2br('Fehler beim Speichern des Benutzer-Datensatzes:'.$nachname.' '.$qry); + $error_log.='Fehler beim Speichern des Benutzer-Datensatzes:'.$nachname.' '.$qry; } + $anzahl_benutzer++; + if(!$error) + { + if(pg_query($conn,$qry)) + { + pg_query($conn,'COMMIT;'); + } + else + { + $anzahl_fehler_benutzer++; + $error=true; + $error_log.='Fehler beim Speichern des Prestudentrolle-Datensatzes:'.$nachname.' '.$qry; + echo nl2br($qry."\n"); + pg_query($conn,'ROLLBACK;'); + } + } + else + { + $anzahl_fehler_benutzer++; + echo nl2br($qry."\n"); + pg_query($conn,'ROLLBACK;'); + } } else { + $anzahl_fehler_student++; + echo nl2br($qry."\n"); pg_query($conn,'ROLLBACK;'); - } + } } - else + else { - pg_query($conn,'ROLLBACK;'); + pg_query($conn,'COMMIT;'); //Commit, wenn kein Gruppeneintrag gefunden (Interessent, Bewerber) => nur Person und Prestudent werden angelegt } } else { + $anzahl_fehler_pre++; + echo nl2br($qry."\n"); pg_query($conn,'ROLLBACK;'); } } else { + $anzahl_fehler_person++; + echo nl2br($qry."\n"); pg_query($conn,'ROLLBACK;'); } @@ -906,8 +940,13 @@ if($result = pg_query($conn_fas, $qry)) } -echo nl2br($text); +echo nl2br("\n".$text); echo nl2br($error_log); +Echo nl2br("\n\nPersonen ohne Reihungstest: ".$notest." \n"); +Echo nl2br("Personen: Übertragen: ".$anzahl_person." Fehler: ".$anzahl_fehler_person."\n"); +Echo nl2br("Prestudenten: Übertragen: ".$anzahl_pre." Fehler: ".$anzahl_fehler_pre."\n"); +Echo nl2br("Studenten: Übertragen: ".$anzahl_student." Fehler: ".$anzahl_fehler_student."\n"); +Echo nl2br("Benutzer: Übertragen: ".$anzahl_benutzer." Fehler: ".$anzahl_fehler_benutzer."\n"); ?> diff --git a/admin/sync/fas/sync_fas_portal_studiengang.php b/admin/sync/fas/sync_fas_portal_studiengang.php new file mode 100644 index 000000000..d05ca3f3d --- /dev/null +++ b/admin/sync/fas/sync_fas_portal_studiengang.php @@ -0,0 +1,170 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +//* +//* Synchronisiert Studiengangsdatensaetze von FAS DB in PORTAL DB +//* +//* + +include('../../../vilesci/config.inc.php'); +include('../../../include/studiengang.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 Vilesci 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; + +function validate($row) +{ +} + +/************************* + * VILESCI-PORTAL - Synchronisation + */ + +//studiengang +$qry = "SELECT * FROM studiengang"; + +if($result = pg_query($conn_fas, $qry)) +{ + echo nl2br("Studiengang Sync\n-----------------\n"); + $anzahl_quelle=pg_num_rows($result); + while($row = pg_fetch_object($result)) + { + + $error=false; + $studiengang = new studiengang($conn); + $studiengang->studiengang_kz =$row->kennzahl; + $studiengang->kurzbz =$row->emailkuerzel; + $studiengang->kurzbzlang =''; + $studiengang->bezeichnung =$row->name; + $studiengang->english =$row->program_name; + $studiengang->typ =''; + $studiengang->farbe =''; + $studiengang->email =''; + $studiengang->max_verband =''; + $studiengang->max_semester =''; + $studiengang->max_gruppe =''; + $studiengang->erhalter_kz ='5'; + $studiengang->bescheid =$row->bescheid; + $studiengang->bescheidbgbl1 =$row->bescheidbgbl1; + $studiengang->bescheidbgbl2 =$row->bescheidbgbl2; + $studiengang->bescheidgz =$row->bescheidgz; + $studiengang->bescheidvom =$row->bescheidvom; + $studiengang->organisationsform =''; + $studiengang->titelbescheidvom =$row->titelbescheidvom; + $studiengang->ext_id =$row->studiengang_pk; + + If($row->organisationsform=='1') + { + $studiengang->organisationsform='n'; //normal + } + If($row->organisationsform=='2') + { + $studiengang->organisationsform='b'; //berufsbegleitend + } + If($row->organisationsform=='4') + { + $studiengang->organisationsform='z'; //zielgruppenspezifisch + } + if($row->studiengangsart=='1') + { + $studiengang->typ='b'; + } + if($row->studiengangsart=='2') + { + $studiengang->typ='m'; + } + if($row->studiengangsart=='3') + { + $studiengang->typ='d'; + } + + $qry = "SELECT * FROM tbl_studiengang WHERE studiengang_kz='$row->kennzahl'"; + if($result1 = pg_query($conn, $qry)) + { + if(pg_num_rows($result1)>0) //wenn dieser eintrag schon vorhanden ist + { + if($row1=pg_fetch_object($result1)) + { + //Studiengangsdaten updaten + $studiengang->farbe =$row1->farbe; + $studiengang->email =$row1->email; + $studiengang->max_verband =$row1->max_verband; + $studiengang->max_semester =$row1->max_semester; + $studiengang->max_gruppe =$row1->max_gruppe; + $studiengang->kurzbzlang =$row1->kurzbzlang; + $studiengang->new=false; + } + else + { + $error_log.="studiengang_kz von $row->studiengang_kz konnte nicht ermittelt werden\n"; + $error=true; + } + } + else + { + //Studiengang neu anlegen + $studiengang->new=true; + } + + if(!$error) + if(!$studiengang->save()) + { + $error_log.=$studiengang->errormsg."\n"; + $anzahl_fehler++; + } + else + $anzahl_eingefuegt++; + else + $anzahl_fehler++; + } + } + echo nl2br("abgeschlossen\n\n"); +} +else + $error_log .= 'Studiengangsdatensaetze konnten nicht geladen werden'; + +?> + + + +Synchro - Vilesci -> Portal - Studiengang + + + + + + \ No newline at end of file diff --git a/include/studiengang.class.php b/include/studiengang.class.php index e4b7e6799..4258ffa42 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -1,5 +1,5 @@ email=$row->email; $this->max_semester=$row->max_semester; $this->max_verband=$row->max_verband; - $this->max_semester=$row->max_semester; + $this->max_gruppe=$row->max_gruppe; $this->erhalter_kz=$row->erhalter_kz; $this->bescheid=$row->bescheid; $this->bescheidbgbl1=$row->bescheidbgbl1; @@ -152,7 +154,7 @@ class studiengang $stg_obj->email=$row->email; $stg_obj->max_semester=$row->max_semester; $stg_obj->max_verband=$row->max_verband; - $stg_obj->max_semester=$row->max_semester; + $stg_obj->max_gruppe=$row->max_gruppe; $stg_obj->erhalter_kz=$row->erhalter_kz; $stg_obj->bescheid=$row->bescheid; $stg_obj->bescheidbgbl1=$row->bescheidbgbl1; @@ -178,15 +180,150 @@ class studiengang $this->errormsg = 'Noch nicht implementiert'; return false; } - + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + /** + * Prueft die Gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + $this->bezeichnung = str_replace("'",'´',$this->bezeichnung); + $this->kurzbz = str_replace("'",'´',$this->kurzbz); + $this->kurzbzlang = str_replace("'",'´',$this->kurzbzlang); + $this->english = str_replace("'",'´',$this->english); + + //Laenge Pruefen + if(strlen($this->bezeichnung)>128) + { + $this->errormsg = "Bezeichnung darf nicht laenger als 128 Zeichen sein bei $this->ext_id - $this->bezeichnung"; + return false; + } + if(strlen($this->kurzbz)>5) + { + $this->errormsg = "Kurzbez darf nicht laenger als 5 Zeichen sein bei $this->ext_id - $this->kurzbz"; + return false; + } + if(strlen($this->kurzbzlang)>10) + { + $this->errormsg = "Kurzbezlang darf nicht laenger als 10 Zeichen sein bei $this->ext_id - $this->kurzbzlang"; + return false; + } + if(strlen($this->english)>128) + { + $this->errormsg = "english darf nicht laenger als 128 Zeichen sein bei $this->ext_id - $this->english"; + return false; + } + $this->errormsg = ''; + return true; + } /** * Speichert den aktuellen Datensatz * @return true wenn ok, false im Fehlerfall */ function save() { - $this->errormsg = 'Noch nicht implementiert'; - return false; + //Gueltigkeit der Variablen pruefen + if(!$this->checkvars()) + { + return false; + } + + if($this->new) + { + //Pruefen ob studiengang_kz gueltig ist + if(!is_numeric($this->studiengang_kz)) + { + $this->errormsg = 'studiengang_kz ungueltig! ('.$this->studiengang_kz.'/'.$this->ext_id.')'; + return false; + } + //Neuen Datensatz anlegen + $qry = 'INSERT INTO public.tbl_studiengang (studiengang_kz, kurzbz, kurzbzlang, bezeichnung, english, + typ, farbe, email, max_verband, max_semester, max_gruppe, erhalter_kz, bescheid, bescheidbgbl1, + bescheidbgbl2, bescheidgz, bescheidvom, organisationsform, titelbescheidvom, ext_id) VALUES ('. + $this->addslashes($this->studiengang_kz).', '. + $this->addslashes($this->kurzbz).', '. + $this->addslashes($this->kurzbzlang).', '. + $this->addslashes($this->bezeichnung).', '. + $this->addslashes($this->english).', '. + $this->addslashes($this->typ).', '. + $this->addslashes($this->farbe).', '. + $this->addslashes($this->email).', '. + $this->addslashes($this->max_verband).', '. + $this->addslashes($this->max_semester).', '. + $this->addslashes($this->max_gruppe).', '. + $this->addslashes($this->erhalter_kz).', '. + $this->addslashes($this->bescheid).', '. + $this->addslashes($this->bescheidbgbl1).', '. + $this->addslashes($this->bescheidbgbl2).', '. + $this->addslashes($this->bescheidgz).', '. + $this->addslashes($this->bescheidvom).', '. + $this->addslashes($this->organisationsform).', '. + $this->addslashes($this->titelbescheidvom).', '. + $this->addslashes($this->ext_id).');'; + } + else + { + //bestehenden Datensatz akualisieren + + //Pruefen ob studiengang_kz gueltig ist + if(!is_numeric($this->studiengang_kz)) + { + $this->errormsg = 'studiengang_kz ungueltig.'; + return false; + } + + $qry = 'UPDATE public.tbl_studiengang SET '. + 'studiengang_kz='.$this->addslashes($this->studiengang_kz).', '. + 'kurzbz='.$this->addslashes($this->kurzbz).', '. + 'kurzbzlang='.$this->addslashes($this->kurzbzlang).', '. + 'bezeichnung='.$this->addslashes($this->bezeichnung).', '. + 'english='.$this->addslashes($this->english).', '. + 'typ='.$this->addslashes($this->typ).', '. + 'farbe='.$this->addslashes($this->farbe).', '. + 'max_verband='.$this->addslashes($this->max_verband).', '. + 'max_semester='.$this->addslashes($this->max_semester).', '. + 'max_gruppe='.$this->addslashes($this->max_gruppe).', '. + 'erhalter_kz='.$this->addslashes($this->erhalter_kz).', '. + 'bescheid='.$this->addslashes($this->bescheid).', '. + 'bescheidbgbl1='.$this->addslashes($this->bescheidbgbl1).', '. + 'bescheidbgbl2='.$this->addslashes($this->bescheidbgbl2).', '. + 'bescheidgz='.$this->addslashes($this->bescheidgz).', '. + 'bescheidvom='.$this->addslashes($this->bescheidvom).', '. + 'organisationsform='.$this->addslashes($this->organisationsform).', '. + 'titelbescheidvom='.$this->addslashes($this->titelbescheidvom).', '. + 'ext_id='.$this->addslashes($this->ext_id).' '. + 'WHERE studiengang_kz='.$this->addslashes($this->studiengang_kz).';'; + } + //echo $qry; + 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 des Datensatzes'; + return false; + } } } ?> \ No newline at end of file