From fe635dbc75040838e1c4cb4f5eb4280b983694a9 Mon Sep 17 00:00:00 2001 From: Rudolf Hangl Date: Thu, 7 Feb 2008 16:13:36 +0000 Subject: [PATCH] --- .../stp/sync_stp_vilesci_diplompruefung.php | 419 ++++++++++++++++++ 1 file changed, 419 insertions(+) create mode 100644 system/sync/stp/sync_stp_vilesci_diplompruefung.php diff --git a/system/sync/stp/sync_stp_vilesci_diplompruefung.php b/system/sync/stp/sync_stp_vilesci_diplompruefung.php new file mode 100644 index 000000000..70cfed6e6 --- /dev/null +++ b/system/sync/stp/sync_stp_vilesci_diplompruefung.php @@ -0,0 +1,419 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +//* +//* Synchronisiert Diplomprüfungsdatensaetze von FAS DB in PORTAL DB +//* +//* +//* setzt voraus: tbl_akadgrad, tbl_abschlussbeurteilung +//* benoetigt: tbl_syncperson, tbl_studiengang + +require_once('sync_config.inc.php'); + +$starttime=time(); +$conn=pg_connect(CONN_STRING) + or die("Connection zur FH-Complete Datenbank fehlgeschlagen"); + +function myaddslashes($var) +{ + return ($var!=''?"'".addslashes($var)."'":'null'); +} + +// Sync-Tabelle fuer Personen checken +if (!@pg_query($conn,'SELECT * FROM sync.tbl_syncperson LIMIT 1;')) +{ + $sql='CREATE TABLE sync.tbl_syncperson + ( + person_id integer NOT NULL, + __Person integer NOT NULL + ); + Grant select on sync.tbl_syncperson to group "admin"; + Grant update on sync.tbl_syncperson to group "admin"; + Grant delete on sync.tbl_syncperson to group "admin"; + Grant insert on sync.tbl_syncperson to group "admin";'; + if (!@pg_query($conn,$sql)) + echo 'sync.tbl_syncperson: '.pg_last_error($conn).'
'; + else + echo 'sync.tbl_syncperson wurde angelegt!
'; +} +//tbl_pruefungstyp checken +if(pg_num_rows(pg_query($conn,"SELECT * FROM lehre.tbl_pruefungstyp where pruefungstyp_kurzbz='Diplom'"))==0) +{ + $qry="INSERT INTO lehre.tbl_pruefungstyp (pruefungstyp_kurzbz, beschreibung) VALUES ('Diplom', 'Diplomprüfung')"; + if (!pg_query($conn, $qry)) + { + die(pg_last_error($conn)); + } +} +if(pg_num_rows(pg_query($conn,"SELECT * FROM lehre.tbl_pruefungstyp where pruefungstyp_kurzbz='Bachelor'"))==0) +{ + $qry="INSERT INTO lehre.tbl_pruefungstyp (pruefungstyp_kurzbz, beschreibung) VALUES ('Bachelor', 'Bachelorprüfung')"; + if (!pg_query($conn, $qry)) + { + die(pg_last_error($conn)); + } +} + + + +$error_log=''; +$error_log1=''; +$error_log2=''; +$error_log3=''; +$error_log4=''; +$error_log5=''; +$error_log_ext=''; +$ausgabe=""; +$text = ''; +$error = ''; +$cont=''; +$anzahl_quelle=0; +$anzahl_eingefuegt=0; +$anzahl_update=0; +$anzahl_fehler=0; +$eingefuegt=0; +$fehler=0; +$updates=0; +$dublette=0; +$plausi=''; +$start=''; +$anzahl_person_gesamt=0; +$anzahl_person_gesamt2=0; +$staat=array(); + +/************************* + * FAS-PORTAL - Synchronisation + */ +?> + + +Synchro - StPoelten -> Vilesci - Abschlusspruefung + + + +"; +if($result = pg_query($conn, $qry)) +{ + $anzahl_person_gesamt=pg_num_rows($result); + $error_log_ext.="Anzahl der Datensätze: ".$anzahl_person_gesamt."\n"; + echo nl2br($error_log_ext); + while($row=pg_fetch_object($result)) + { + //UID ermitteln + pg_query($conn, "BEGIN"); + $qry_synk="SELECT * FROM public.tbl_student where ext_id=".myaddslashes($row->__person).";"; + if($result_synk=pg_query($conn, $qry_synk)) + { + if($row_synk=pg_fetch_object($result_synk)) + { + $uid=$row_synk->student_uid; + } + else + { + $error_log1.="\nStudent ".$row->__person." (ext_id) in tbl_student nicht gefunden!"; + $fehler++; + continue; + } + } + //person_id von vorsitz,pruefer1,pruefer2 ermitteln + if($row->_vorsitzender==NULL || $row->_vorsitzender=='') + { + $vorsitzender=NULL; + } + else + { + $qry_synk="SELECT * FROM public.tbl_benutzer where ext_id=".myaddslashes($row->_vorsitzender).";"; + if($result_synk=pg_query($conn, $qry_synk)) + { + if($row_synk=pg_fetch_object($result_synk)) + { + $vorsitzender=$row_synk->uid; + } + else + { + $error_log2.="\nVorsitzender ".$row->_vorsitzender." in tbl_benutzer nicht gefunden!"; + $fehler++; + continue; + } + } + $qry_synk="SELECT * FROM public.tbl_mitarbeiter where mitarbeiter_uid=".myaddslashes($vorsitzender).";"; + if($result_synk=pg_query($conn, $qry_synk)) + { + if(pg_num_rows($result_synk)==0) + { + $error_log2.="\nVorsitzender ".$vorsitzender." in tbl_mitarbeiter nicht gefunden!"; + $fehler++; + continue; + } + } + } + if($row->_pruefertech==NULL || $row->_pruefertech=='') + { + $pruefertech=NULL; + } + else + { + $qry_synk="SELECT * FROM sync.tbl_syncperson where __person=".myaddslashes($row->_pruefertech).";"; + if($result_synk=pg_query($conn, $qry_synk)) + { + if($row_synk=pg_fetch_object($result_synk)) + { + $pruefertech=$row_synk->person_id; + } + else + { + $error_log3.="\nTechn. Prüfer ".$row->_pruefertech." in tbl_syncperson nicht gefunden!"; + $fehler++; + continue; + } + } + } + if($row->_pruefernichttech==NULL || $row->_pruefernichttech=='') + { + $pruefernichttech=NULL; + } + else + { + $qry_synk="SELECT * FROM sync.tbl_syncperson where __person=".myaddslashes($row->_pruefernichttech).";"; + if($result_synk=pg_query($conn, $qry_synk)) + { + if($row_synk=pg_fetch_object($result_synk)) + { + $pruefernichttech=$row_synk->person_id; + } + else + { + $error_log4.="\nNicht-Techn. Prüfer ".$row->_pruefernichttech." in tbl_syncperson nicht gefunden!"; + $fehler++; + continue; + } + } + } + //akad.Grad holen + $qry_synk="SELECT * FROM lehre.tbl_akadgrad WHERE studiengang_kz=".myaddslashes($row->studiengang_kz)." ORDER BY geschlecht;"; + if($result_synk=pg_query($conn, $qry_synk)) + { + if(pg_num_rows($result)>0) + { + while($row_synk=pg_fetch_object($result_synk)) + { + if($row_synk->geschlecht==NULL) + { + //Bachelor oder Masterstudiengang hat nur einen Eintrag mit geschlecht==NULL + $akadgrad_id=$row_synk->akadgrad_id; + break 1; + } + else + { + //Diplomstudiengang hat zwei Einträge + if($row->_cxgeschlecht==1 && $row_synk->geschlecht=='m') + { + $akadgrad_id=$row_synk->akadgrad_id; + break 1; + } + if($row->_cxgeschlecht==2 && $row_synk->geschlecht=='w') + { + $akadgrad_id=$row_synk->akadgrad_id; + break 1; + } + } + } + } + else + { + $error_log5.="\nAkad.Grad für Stg ".$row->studiengang_kz." nicht gefunden!"; + $fehler++; + continue; + } + } + /* + // Konvertieren + if ($row->_cxgeschlecht==1) + $row->_cxgeschlecht='m'; + elseif ($row->_cxgeschlecht==2) + $row->_cxgeschlecht='w'; + else + $row->_cxgeschlecht=''; + */ + // Check auf Doppelgaenger + $qry_dubel="SELECT * FROM lehre.tbl_abschlusspruefung WHERE student_uid='".$uid."' AND datum='".$row->pruefdat."';"; + if($result_dubel = pg_query($conn, $qry_dubel)) + { + if (pg_num_rows($result_dubel)==0) + { + //Neue Abschlussprüfung anlegen + $sql="INSERT INTO lehre.tbl_abschlusspruefung + (student_uid, vorsitz, pruefer1, pruefer2, pruefer3, abschlussbeurteilung_kurzbz, akadgrad_id, pruefungstyp_kurzbz, datum, sponsion, anmerkung, + insertamum,insertvon,updateamum,updatevon, ext_id) + VALUES + (".myaddslashes($uid).", ". + myaddslashes(trim($vorsitzender)).", ". + myaddslashes(trim($pruefernichttech)).", ". + myaddslashes(trim($pruefertech)).", + NULL, ". + myaddslashes($row->_cxbeurteilungsstufegesamt).", ". + myaddslashes($akadgrad_id).", "; + if($row->typ=='d' || $row->typ=='m') + { + $sql.=myaddslashes('Diplom').", "; + } + else + { + $sql.=myaddslashes('Bachelor').", "; + } + $sql.=myaddslashes($row->pruefdat).", + NULL, "; + //myaddslashes('Technisch: '.$row->_gegenstandtech.' Nicht technisch: '.$row->_gegenstandnichttech).", + $sql.="NULL, + now(), 'sync', NULL, NULL, NULL);"; + if(!$result_neu = pg_query($conn, $sql)) + { + $fehler++; + $error_log.= $sql."\n".pg_last_error($conn)." \n"; + pg_query($conn, "ROLLBACK"); + } + else + { + $ausgabe.="\n------------------------------------\nÜbertragen: ".$row->__person." - ".trim($row->chtitel)." ".trim($row->chnachname).", ".trim($row->chvorname); + $ausgabe.="\n---Abschlussprüfung (".$row->typ."): am ".$row->pruefdat.", Vorsitz:".trim($vorsitzender).", Prüfer: ".$pruefertech." / ".$pruefernichttech; + $eingefuegt++; + pg_query($conn, "COMMIT"); + } + } + else + { + if($row_dubel=pg_fetch_object($result_dubel)) + { + //Update + $sql=''; + if($row_dubel->vorsitz!=$vorsitzender && $vorsitzender!=NULL && $vorsitzender!='') + { + if(strlen(trim($sql))>0) + { + $sql.=", vorsitz=".myaddslashes(trim($vorsitzender)); + } + else + { + $sql="vorsitz=".myaddslashes(trim($vorsitzender)); + } + } + if($row_dubel->pruefer1!=$pruefernichttech && $pruefernichttech!=NULL && $pruefernichttech!='') + { + if(strlen(trim($sql))>0) + { + $sql.=", pruefer1=".myaddslashes(trim($pruefernichttech)); + } + else + { + $sql="pruefer1=".myaddslashes(trim($pruefernichttech)); + } + } + if($row_dubel->pruefer2!=$pruefertech && $pruefertech!=NULL && $pruefertech!='') + { + if(strlen(trim($sql))>0) + { + $sql.=", pruefer2=".myaddslashes(trim($pruefertech)); + } + else + { + $sql="pruefer2=".myaddslashes(trim($pruefertech)); + } + } + if($row_dubel->abschlussbeurteilung_kurzbz!=$row->_cxbeurteilungsstufegesamt && $row->_cxbeurteilungsstufegesamt!=NULL && $row->_cxbeurteilungsstufegesamt!='') + { + if(strlen(trim($sql))>0) + { + $sql.=", abschlussbeurteilung_kurzbz=".myaddslashes(trim($row->_cxbeurteilungsstufegesamt)); + } + else + { + $sql="abschlussbeurteilung_kurzbz=".myaddslashes(trim($row->_cxbeurteilungsstufegesamt)); + } + } + + if(strlen(trim($sql))>0) + { + //update nur mit änderungen bei vorsitz,prüfer oder note + $sql="UPDATE lehre.tbl_abschlusspruefung SET ".$sql." + WHERE student_uid='".$uid."' AND datum='".$row->pruefdat."';"; + if(!$result_neu = pg_query($conn, $sql)) + { + $fehler++; + $error_log.= "\n".$sql."\n".pg_last_error($conn)." \n"; + pg_query($conn, "ROLLBACK"); + } + else + { + $ausgabe.="\n------------------------------------\nÜbertragen: ".$row->__person." - ".trim($row->chtitel)." ".trim($row->chnachname).", ".trim($row->chvorname); + $ausgabe.="\n---Abschlussprüfung (".$row->typ."): am ".$row->pruefdat.", Vorsitz:".trim($vorsitzender).", Prüfer: ".$pruefertech." / ".$pruefernichttech; + $updates++; + pg_query($conn, "COMMIT"); + } + } + else + { + //kein update da bereits gleich vorhanden + $dublette++; + } + } + } + } + else + { + $fehler++; + $error_log.= "\n".$sql."\n".pg_last_error($conn)." \n"; + pg_query($conn, "ROLLBACK"); + } + } +} +else +{ + $fehler++; + echo "
".$qry."
".pg_last_error($conn)."
"; +} + +echo "Datensätze ohne Prüfungsdatum werden nicht berücksichtigt."; +echo "

Eingefügt: ".$eingefuegt; +echo "
Updates: ".$updates; +echo "
bereits vorhanden: ".$dublette; +echo "
Fehler: ".$fehler; +echo "

"; +$error_log=$error_log1.$error_log2.$error_log3.$error_log4.$error_log5.$error_log; +if($error_log=='' ) +{ + echo "o.k.
"; +} +else +{ + echo nl2br($error_log); +} +echo nl2br($ausgabe); + +mail($adress, 'SYNC-Fehler StP-Abschlusspruefung von '.$_SERVER['HTTP_HOST'], $error_log,"From: nsc@fhstp.ac.at"); + +mail($adress, 'SYNC StP-Abschlusspruefung von '.$_SERVER['HTTP_HOST'], "Sync Person\n------------\n\n" +."Personen: Gesamt: ".$anzahl_person_gesamt." / Eingefügt: ".$eingefuegt." / Updates: ".$updates." / Fehler: ".$fehler." / Doppelt: ".$dublette +."\n\nBeginn: ".$start."\nEnde: ".date("d.m.Y H:i:s")."\n\n".$ausgabe, "From: nsc@fhstp.ac.at"); + + +?> + + \ No newline at end of file