From 660e277e2ea5d4a8fa0eea178a88a1c4a27632df Mon Sep 17 00:00:00 2001 From: Rudolf Hangl Date: Fri, 15 Feb 2008 15:20:37 +0000 Subject: [PATCH] --- system/sync/stp/check_prestudentrolle.php | 107 +++++++++++++++--- .../sync/stp/sync_stp_vilesci_prestudent.php | 44 +++++-- 2 files changed, 128 insertions(+), 23 deletions(-) diff --git a/system/sync/stp/check_prestudentrolle.php b/system/sync/stp/check_prestudentrolle.php index 4276f9d54..b7b31a488 100644 --- a/system/sync/stp/check_prestudentrolle.php +++ b/system/sync/stp/check_prestudentrolle.php @@ -51,6 +51,7 @@ $studiensemester=array(); $maxsemester=array(); $semdiff=0; $instg=''; +$rolle_kurzbz=''; $i=0; /************************* @@ -163,7 +164,28 @@ if($resultall = pg_query($conn,$qry)) $ausgabe.="\nAusbildungssemester = ".$rowrl->ausbildungssemester." / semdiff= ".$semdiff."."; while (array_search($rowrl->studiensemester_kurzbz, $studiensemester)>=array_search($beginnsem, $studiensemester)) { - $qry_chk="SELECT * FROM public.tbl_prestudentrolle WHERE prestudent_id=".myaddslashes($rowall->prestudent_id)." AND studiensemester_kurzbz=".myaddslashes($rowrl->studiensemester_kurzbz).";"; + if($semdiff>=$maxsemester[$instg]) + { + $rolle_kurzbz="Diplomand"; + } + else + { + $rolle_kurzbz="Student"; + } + if($semdiff>$maxsemester[$instg]) + { + $ausbsem=$maxsemester[$instg]; + } + else + { + $ausbsem=$semdiff; + } + $qry_chk="SELECT * FROM public.tbl_prestudentrolle + WHERE prestudent_id=".myaddslashes($rowall->prestudent_id)." + AND studiensemester_kurzbz=".myaddslashes($rowrl->studiensemester_kurzbz)." + AND rolle_kurzbz=".myaddslashes($rolle_kurzbz)." + AND ausbildungssemester=".myaddslashes($ausbsem).";"; + if($resultchk = pg_query($conn,$qry_chk)) { if(pg_num_rows($resultchk)==0) @@ -177,17 +199,9 @@ if($resultall = pg_query($conn,$qry)) studiensemester_kurzbz, ausbildungssemester,datum, orgform_kurzbz, insertamum, insertvon, updateamum, updatevon, ext_id) VALUES (". - myaddslashes($rowall->prestudent_id).", "; - //status diplomand für letztes ausbildungssemester - if($semdiff>=$maxsemester[$instg]) - { - $qry_ins.="'Diplomand', "; - } - else - { - $qry_ins.="'Student', "; - } - $qry_ins.=myaddslashes($rowrl->studiensemester_kurzbz).", "; + myaddslashes($rowall->prestudent_id).", ". + myaddslashes($rolle_kurzbz).", ". + myaddslashes($rowrl->studiensemester_kurzbz).", "; //wenn semdiff>maxsemester dann maxsemester sonst semdiff if($semdiff>$maxsemester[$instg]) { @@ -215,7 +229,70 @@ if($resultall = pg_query($conn,$qry)) } else { - $ausgabe.="\nEintrag in Semester ".$rowrl->studiensemester_kurzbz." bereits vorhanden!"; + $qry_chk=''; + if($row_chk=pg_fetch_object($resultchk)) + { + if($semdiff>=$maxsemester[$instg]) + { + if($row_chk->rolle_kurzbz!='Diplomand') + { + $qry_chk="rolle_kurzbz='Diplomand', "; + } + } + else + { + if($row_chk->rolle_kurzbz!='Student') + { + $qry_chk="rolle_kurzbz='Student', "; + } + } + if($semdiff>$maxsemester[$instg]) + { + if($row_chk->ausbildungssemester!=$maxsemester[$instg]) + { + $qry_chk.="ausbildungssemester=".myaddslashes($maxsemester[$instg]).", "; + } + } + else + { + if($row_chk->ausbildungssemester!=$semdiff) + { + $qry_chk.="ausbildungssemester=".myaddslashes($semdiff).", "; + } + } + if($row_chk->datum!=$rowrl->datum) + { + $qry_chk.="datum=".myaddslashes($rowrl->datum).", "; + } + if($row_chk->orgform_kurzbz!=$rowrl->orgform_kurzbz) + { + $qry_chk.="orgform_kurzbz=".myaddslashes($rowrl->orgform_kurzbz).", "; + } + if($qry_chk!='') + { + $qry_upd="UPDATE public.tbl_prestudentrolle SET ".$qry_chk."updateamum=now(), updatevon='sync' + WHERE prestudent_id=".myaddslashes($rowall->prestudent_id)." + AND studiensemester_kurzbz=".myaddslashes($rowrl->studiensemester_kurzbz)." + AND rolle_kurzbz=".myaddslashes($rolle_kurzbz)." + AND ausbildungssemester=".$ausbsem.";"; + if(!$resultins = pg_query($conn,$qry_upd)) + { + $fehler++; + $error_log.="\n*****\n".$rowall->__person." - ".trim($rowall->chtitel)." ".trim($rowall->chnachname).", ".trim($rowall->chvorname).": ".$rowall->daeintrittdat; + $error_log.= "\n".$qry_upd."\n".pg_last_error($conn)."\n"; + } + else + { + $eingefuegt++; + //$ausgabe.="\n---".$qry_ins; + $ausgabe.="\n---".$qry_chk.";"; + } + } + else + { + $ausgabe.="\nEintrag in Semester ".$rowrl->studiensemester_kurzbz." bereits vorhanden!"; + } + } } } //studiensemester, ausbildungssemester, datum @@ -299,7 +376,7 @@ if($resultall = pg_query($conn,$qry)) } else { - $eingefuegt++; + $update++; $ausgabe.="\n---".$rowrl->studiensemester_kurzbz.": Interessent, ".$semdiff.".Semester , Datum: ".$new_date = date('Y-m-d', strtotime($rowrl->datum.' -6 months')).", Orgform: ".$rowrl->orgform_kurzbz.";"; } @@ -320,7 +397,7 @@ echo nl2br($ausgabe); mail($adress, 'SYNC-Fehler StP-Prestudentrollen von '.$_SERVER['HTTP_HOST'], $error_log,"From: nsc@fhstp.ac.at"); mail($adress, 'SYNC StP-Prestudentrollen von '.$_SERVER['HTTP_HOST'], "Sync Person\n------------\n\n" -."Personen: Gesamt: ".$anzahl_gesamt." / Fehler: ".$fehler." / Eingefügte Rollen: ".$eingefuegt +."Personen: Gesamt: ".$anzahl_gesamt." / Fehler: ".$fehler." / Eingefügte Rollen: ".$eingefuegt." Geändert: ".$update ."\n\nBeginn: ".$start."\nEnde: ".date("d.m.Y H:i:s")."\n\n".$ausgabe, "From: nsc@fhstp.ac.at"); ?> diff --git a/system/sync/stp/sync_stp_vilesci_prestudent.php b/system/sync/stp/sync_stp_vilesci_prestudent.php index 8646f7829..6bea1aff0 100644 --- a/system/sync/stp/sync_stp_vilesci_prestudent.php +++ b/system/sync/stp/sync_stp_vilesci_prestudent.php @@ -127,10 +127,21 @@ $zgv['']=99; $ststat=array(2=>'Bewerber', 3=>'Student', 4=>'Ausserordentlicher', 5=>'Unterbrecher', 6=>'Absolvent', 7=>'Abbrecher', 8=>'Abgewiesener', 10=>'Diplomand', 11=>'Diplomand', 12=>'Incoming'); +//einlesen von studiendauer der stg in array +$qry="SELECT * FROM public.tbl_studiengang;"; +if($result = pg_query($conn,$qry)) +{ + while($row=pg_fetch_object($result)) + { + $maxsemester[$row->studiengang_kz]=$row->max_semester; + } +} + + //*********** Neue Daten holen ***************** $qry="SELECT __Person, datenquelle, inAusmassBesch, HoechsteAusbildung, _cxZugang, daMaturaDat, _cxZugangFHMag, daZugangFHMagDat, chtitel, chnachname, chvorname, studiengang_kz, typ, - chKalenderSemStatAend, inStudiensemester, _cxStudStatus, _StgOrgForm + chKalenderSemStatAend, inStudiensemester, _cxstudstatus, _StgOrgForm FROM sync.stp_person JOIN sync.stp_stgvertiefung ON (_stgvertiefung=__stgvertiefung) JOIN public.tbl_studiengang ON (_studiengang=ext_id) WHERE __Person IN (SELECT __person FROM sync.tbl_syncperson) AND @@ -198,12 +209,16 @@ if($result = pg_query($conn, $qry)) $cont=true; $error=true; } + //$row->chkalendersemstataend='W07'; if($row->chkalendersemstataend=='' || $row->chkalendersemstataend==NULL) + { + $error_log1.="\nchkalendersemstataend nicht eingetragen !";//Fehlerausgabe, wenn kein wert eingetragen, da vor ws1999 wert noch nicht in db//15.02.2008 + $cont=true; + $error=true; + } + if($row->_cxstudstatus=='3' || $row->_cxstudstatus=='4' || $row->_cxstudstatus=='9' || $row->_cxstudstatus=='10' || $row->_cxstudstatus=='11') { $row->chkalendersemstataend='W07';// Standardwert WS2007; von FH-StP gewünscht; 11.12.07 - //$error_log1.="\nKalenderSemStatAend (Studiensemester) nicht eingetragen"; - //$cont=true; - //$error=true; } if($error) { @@ -376,9 +391,17 @@ if($result = pg_query($conn, $qry)) VALUES (". myaddslashes($prestudent_id).", ". myaddslashes($rolle).", ". - myaddslashes($Kalender).", ". - myaddslashes($row->instudiensemester).", - now(), ". + myaddslashes($Kalender).", "; + //max.studiendauer wenn ausbildungssemester größer (v.a. für 50er und 60er) + if($row->instudiensemester>$maxsemester[$row->studiengang_kz]) + { + $qry_ins.=myaddslashes($maxsemester[$row->studiengang_kz]); + } + else + { + $qry_ins.=myaddslashes($row->instudiensemester); + } + $qry_ins.=", now(), ". myaddslashes($orgform).", now(), 'SYNC', @@ -394,9 +417,14 @@ if($result = pg_query($conn, $qry)) $qry_ins=''; if ($row_status->orgform_kurzbz!=$orgform) $qry_ins.="orgform_kurzbz=".myaddslashes($orgform).", "; + + if($row->instudiensemester>$maxsemester[$row->studiengang_kz]) + $row->instudiensemester=$maxsemester[$row->studiengang_kz]; + if ($row_status->ausbildungssemester!=$row->instudiensemester) + $qry_ins.="ausbildungssemester=".myaddslashes($row->instudiensemester).", "; if($qry_ins!='') { - $qry_ins.="UPDATE public.tbl_prestudentrolle SET ".$qry_ins."updateamum=now(), updatevon='SYNC' WHERE prestudent_id='".$prestudent_id."' AND rolle_kurzbz='".$rolle."' AND studiensemester_kurzbz='".$Kalender."' AND ausbildungssemester='".$row->instudiensemester."';"; + $qry_ins.="UPDATE public.tbl_prestudentrolle SET ".$qry_ins."updateamum=now(), updatevon='SYNC' WHERE prestudent_id='".$prestudent_id."' AND rolle_kurzbz='".$rolle."' AND studiensemester_kurzbz='".$Kalender."';"; } } }