From 10ad46ecf0e6223219572aa960c26124a0c990b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 2 Oct 2009 07:48:09 +0000 Subject: [PATCH] --- vilesci/bis/checkfunktion.php | 818 +++++++++------------------------- 1 file changed, 202 insertions(+), 616 deletions(-) diff --git a/vilesci/bis/checkfunktion.php b/vilesci/bis/checkfunktion.php index d35053363..7aa6ba575 100644 --- a/vilesci/bis/checkfunktion.php +++ b/vilesci/bis/checkfunktion.php @@ -1,616 +1,202 @@ - - * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at > - * Rudolf Hangl < rudolf.hangl@technikum-wien.at > - * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > - */ - - require_once('../../config/vilesci.config.inc.php'); - require('../../include/studiensemester.class.php'); - require('../../include/datum.class.php'); - - if (!$db = new basis_db()) - die('Es konnte keine Verbindung zum Server aufgebaut werden.'); - -$error_log=''; -$error_log1=''; -$error_log_all=""; -$stgart=''; -$fehler=''; -$maxsemester=0; -$v=''; -$studiensemester=new studiensemester(); -$ssem=$studiensemester->getaktorNext(); -$psem=$studiensemester->getPrevious(); -$zaehl=0; -$erhalter=''; -$stgart=''; -$orgform=''; -$status=''; -$datei=''; -$aktstatus=''; -$aktstatus_datum=''; -$mob=''; -$gast=''; -$avon=''; -$abis=''; -$zweck=''; -$bewerberM=array(); -$bewerberW=array(); -$bsem=array(); -$stsem=array(); -$usem=array(); -$asem=array(); -$absem=array(); -$iosem=array(); -$bsema=array(); -$stsema=array(); -$usema=array(); -$asema=array(); -$absema=array(); -$iosema=array(); -$bewerbercount=0; -$bewerbercountbb=0; -$bewerbercountvz=0; -$bewerberM1=array(); -$bewerberW1=array(); -$bsem1=array(); -$stsem1=array(); -$bewerberM2=array(); -$bewerberW2=array(); -$bsem2=array(); -$stsem2=array(); -$datei1=''; -$datei2=''; -$stgorg=""; -$tabelle=''; -$stlist=''; -$bwlist=''; -$plausi=''; -$storgfor=''; -$sponsion=''; - -//Beginn- und Endedatum des aktuellen Semesters -$qry="SET client_encoding TO Unicode;SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz='".$ssem."';"; -if($result = $db->db_query($qry)) -{ - if($row = $db->db_fetch_object($result)) - { - $beginn=$row->start; - $ende=$row->ende; - } -} -//Ermittlung aktuelles und letztes BIS-Meldedatum -if(mb_strstr($ssem,"WS")) -{ - $bisdatum=date("Y-m-d", mktime(0, 0, 0, 11, 15, date("Y"))); - $bisprevious=date("Y-m-d", mktime(0, 0, 0, 04, 15, date("Y"))); -} -elseif(mb_strstr($ssem,"SS")) -{ - $bisdatum=date("Y-m-d", mktime(0, 0, 0, 04, 15, date("Y"))); - $bisprevious=date("Y-m-d", mktime(0, 0, 0, 11, 15, date("Y")-1)); -} -else -{ - echo "Ungültiges Semester!"; -} -//ausgewählter Lehrgang -if(isset($_GET['stg_kz'])) -{ - if($_GET['stg_kz']<0) - { - $stg_kz=$_GET['stg_kz']; - } - else - { - echo "

Es wurde kein Lehrgang ausgewählt!

"; - } -} -else -{ - $stg_kz=228; - //echo "

Es wurde kein Lehrgang ausgewählt!

"; - //exit; -} -function myaddslashes($var) -{ - return ($var!=''?"'".addslashes($var)."'":'null'); -} -//plausicheck -if(isset($_GET['plausi'])) -{ - $plausi=$_GET['plausi']; -} -$datumobj=new datum(); - -//Lehrgangsdaten auslesen -$qry="SELECT * FROM public.tbl_studiengang WHERE studiengang_kz='".$stg_kz."'"; -if($result = $db->db_query($qry)) -{ - if($row = $db->db_fetch_object($result)) - { - $stgart=$row->typ; - $stgemail=$row->email; - if(strlen(trim($row->erhalter_kz))==1) - { - $erhalter='00'.trim($row->erhalter_kz); - } - elseif(strlen(trim($row->erhalter_kz))==2) - { - $erhalter='0'.trim($row->erhalter_kz); - } - else - { - $erhalter=$row->erhalter_kz; - } - if($row->typ=='b') - { - $stgart=1; - } - elseif($row->typ=='m') - { - $stgart=2; - } - elseif($row->typ=='d') - { - $stgart=3; - } - else - { - echo "

Es wurde keine Lehrgangart ausgewählt!

"; - exit; - } - } -} - -//Hauptselect -$qry="SELECT DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat - FROM public.tbl_student - JOIN public.tbl_benutzer ON(student_uid=uid) - JOIN public.tbl_person USING (person_id) - JOIN public.tbl_prestudent USING (prestudent_id) - JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id) - WHERE bismelden IS TRUE - AND tbl_student.studiengang_kz='".$stg_kz."' - AND (((tbl_prestudentstatus.studiensemester_kurzbz='".$ssem."') AND (tbl_prestudentstatus.datum<='".$bisdatum."') - AND (status_kurzbz='Student' OR status_kurzbz='Outgoing' - OR status_kurzbz='Praktikant' OR status_kurzbz='Diplomand' OR status_kurzbz='Absolvent' - OR status_kurzbz='Abbrecher' OR status_kurzbz='Unterbrecher')) - OR ((tbl_prestudentstatus.studiensemester_kurzbz='".$psem."') AND (status_kurzbz='Absolvent' - OR status_kurzbz='Abbrecher') AND tbl_prestudentstatus.datum>'".$bisprevious."') - OR (status_kurzbz='Incoming' AND student_uid IN (SELECT student_uid FROM bis.tbl_bisio WHERE (tbl_bisio.bis>='".$bisprevious."') - OR (tbl_bisio.von<'".$bisdatum."' AND (tbl_bisio.bis>='".$bisdatum."' OR tbl_bisio.bis IS NULL)) - ))) - ORDER BY student_uid, nachname, vorname - "; - - -if($result = $db->db_query($qry)) -{ - - $datei.=" - - ".$erhalter." - ".date("dmY", $datumobj->mktime_fromdate($bisdatum))." - - - ".($stg_kz*(-1))." - ".$stgart.""; - while($row = $db->db_fetch_object($result)) - { - //Plausichecks - $qryadr="SELECT * from public.tbl_adresse WHERE heimatadresse IS TRUE AND person_id='".$row->pers_id."';"; - $results=$db->db_query($qryadr); - - if($anz=$db->db_num_rows($results)!=1) - { - $error_log1="Es sind ".$anz." Heimatadressen eingetragen\n"; - } - if($rowadr=$db->db_fetch_object($results)) - { - $plz=$rowadr->plz; - $gemeinde=$rowadr->gemeinde; - $strasse=$rowadr->strasse; - $nation=$rowadr->nation; - } - else - { - $plz=''; - $gemeinde=''; - $strasse=''; - $nation=''; - } - if($row->gebdatum<'1920-01-01' OR $row->gebdatum==null OR $row->gebdatum=='') - { - $error_log.=(!empty($error_log)?', ':'')."Geburtsdatum ('".$row->gebdatum."')"; - } - if($row->geschlecht!='m' && $row->geschlecht!='w') - { - $error_log.=(!empty($error_log)?', ':'')."Geschlecht ('".$row->geschlecht."')"; - } - if($row->vorname=='' || $row->vorname==null) - { - $error_log.=(!empty($error_log)?', ':'')."Vorname ('".$row->vorname."')"; - } - if($row->nachname=='' || $row->nachname==null) - { - $error_log.=(!empty($error_log)?', ':'')."Nachname ('".$row->nachname."')"; - } - //SVNR muß 10-stellig sein - if($row->svnr!='' && $row->svnr!=null && mb_strlen(trim($row->svnr))!=10) - { - $error_log.=(!empty($error_log)?', ':'')."SVNR ('".trim($row->svnr)."') ist nicht 10 Zeichen lang"; - } - //Ersatzkennzeichen muß 10-stellig sein - if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && mb_strlen(trim($row->ersatzkennzeichen))!=10) - { - $error_log.=(!empty($error_log)?', ':'')."Ersatzkennzeichen ('".trim($row->ersatzkennzeichen)."') ist nicht 10 Zeichen lang"; - } - //Vergleich der letzten 6 Stellen der SVNR mit Geburtsdatum - außer bei 01.01. und 01.07. - if($row->svnr!='' && $row->svnr!=null && substr($row->svnr,4,6)!=$row->vdat && substr($row->vdat,0,4)!='0101' && substr($row->vdat,0,4)!='0107') - { - $error_log.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$row->gebdatum.") nicht"; - } - //Vergleich der letzten 6 Stellen des Ersatzkennzeichen mit Geburtsdatum - if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat) - { - $error_log.=(!empty($error_log)?', ':'')."Ersatzkennzeichen ('".$row->ersatzkennzeichen."') enthält Geburtsdatum (".$row->gebdatum.") nicht"; - } - if(($row->svnr=='' || $row->svnr==null)&&($row->ersatzkennzeichen=='' || $row->ersatzkennzeichen==null)) - { - $error_log.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') bzw. ErsKz ('".$row->ersatzkennzeichen."') fehlt"; - } - if($row->staatsbuergerschaft=='' || $row->staatsbuergerschaft==null) - { - $error_log.=(!empty($error_log)?', ':'')."Staatsbürgerschaft ('".$row->staatsbuergerschaft."')"; - } - if($plz=='' || $plz==null) - { - $error_log.=(!empty($error_log)?', ':'')."Heimat-PLZ ('".$plz."')"; - } - if($gemeinde=='' || $gemeinde==null) - { - $error_log.=(!empty($error_log)?', ':'')."Heimat-Gemeinde ('".$gemeinde."')"; - } - if($strasse=='' || $strasse==null) - { - $error_log.=(!empty($error_log)?', ':'')."Heimat-Strasse ('".$strasse."')"; - } - if($nation=='' || $nation==null) - { - - $error_log.=(!empty($error_log)?', ':'')."Heimat-Nation ('".$nation."')"; - } - if($row->zgv_code=='' || $row->zgv_code==null) - { - $error_log.=(!empty($error_log)?', ':'')."ZugangCode ('".$row->zgv_code."')"; - } - if($row->zgvdatum=='' || $row->zgvdatum==null) - { - $error_log.=(!empty($error_log)?', ':'')."ZugangDatum ('".$row->zgvdatum."')"; - } - else - { - if($row->zgvdatum>date('Y-m-d')) - { - $error_log.=(!empty($error_log)?', ':'')."ZugangDatum liegt in der Zukunft ('".$row->zgvdatum."')"; - } - if($row->zgvdatum<$row->gebdatum) - { - $error_log.=(!empty($error_log)?', ':'')."ZugangDatum ('".$row->zgvdatum."') kleiner als Geburtsdatum ('".$row->gebdatum."')"; - } - } - if($stgart==2) - { - if($row->zgvmas_code=='' || $row->zgvmas_code==null) - { - $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgCode ('".$row->zgvmas_code."')"; - } - if($row->zgvmadatum=='' || $row->zgvmadatum==null) - { - $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgDatum ('".$row->zgvmadatum."')"; - } - else - { - if($row->zgvmadatum>date("Y-m-d")) - { - $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgDatum liegt in der Zukunft ('".$row->zgvmadatum."')"; - } - if($row->zgvmadatum<$row->zgvdatum) - { - $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgDatum ('".$row->zgvmadatum."') kleiner als Zugangdatum ('".$row->zgvdatum."')"; - } - if($row->zgvmadatum<$row->gebdatum) - { - $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgDatum ('".$row->zgvmadatum."') kleiner als Geburtsdatum ('".$row->gebdatum."')"; - } - } - } - //Bestimmen der aktuellen Prestudentrolle (Status) und des akt. Ausbildungssemesters des Studenten - $qrystatus="SELECT * FROM public.tbl_prestudentstatus - WHERE prestudent_id='".$row->prestudent_id."' AND studiensemester_kurzbz='".$ssem."' - AND (tbl_prestudentstatus.datum<'".$bisdatum."') - ORDER BY datum desc, insertamum desc, ext_id desc;"; - if($resultstatus = $db->db_query($qrystatus)) - { - if($db->db_num_rows($resultstatus)>0) - { - if($rowstatus = $db->db_fetch_object($resultstatus)) - { - $qry1="SELECT count(*) AS dipl FROM public.tbl_prestudentstatus WHERE prestudent_id='".$row->prestudent_id."' AND status_kurzbz='Diplomand'"; - if($result1 = $db->db_query($qry1)) - { - if($row1 = $db->db_fetch_object($result1)) - { - $sem=$rowstatus->ausbildungssemester; - if($sem>$maxsemester) - { - $sem=$maxsemester; - } - if($row1->dipl>1) - { - $sem=50; - } - if($row1->dipl>3) - { - $sem=60; - } - } - } - if($rowstatus->status_kurzbz=="Student" || $rowstatus->status_kurzbz=="Outgoing" - || $rowstatus->status_kurzbz=="Incoming" || $rowstatus->status_kurzbz=='Praktikant' - || $rowstatus->status_kurzbz=="Diplomand") - { - $status=1; - } - else if($rowstatus->status_kurzbz=="Unterbrecher" ) - { - $status=2; - } - else if($rowstatus->status_kurzbz=="Absolvent" ) - { - $status=3; - } - else if($rowstatus->status_kurzbz=="Abbrecher" ) - { - $status=4; - } - else - { - $error_log=''; - $error_log1=''; - continue; - } - $aktstatus=$rowstatus->status_kurzbz; - $aktstatus_datum=$rowstatus->datum; - $storgform=$rowstatus->orgform_kurzbz; - } - } - else - { - $qrystatus="SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id='".$row->prestudent_id."' AND studiensemester_kurzbz='".$psem."' AND (tbl_prestudentstatus.datum<'".$bisdatum."') ORDER BY datum desc, insertamum desc, ext_id desc;"; - if($resultstatus = $db->db_query($qrystatus)) - { - if($rowstatus = $db->db_fetch_object($resultstatus)) - { - $qry1="SELECT count(*) AS dipl FROM public.tbl_prestudentstatus WHERE prestudent_id='".$row->prestudent_id."' AND status_kurzbz='Diplomand'"; - if($result1 = $db->db_query($qry1)) - { - if($row1 = $db->db_fetch_object($result1)) - { - $sem=$rowstatus->ausbildungssemester; - if($sem>$maxsemester) - { - $sem=$maxsemester; - } - if($row1->dipl>1) - { - $sem=50; - } - if($row1->dipl>3) - { - $sem=60; - } - } - } - if($rowstatus->status_kurzbz=="Incoming") - { - $status=1; - } - else if($rowstatus->status_kurzbz=="Absolvent" ) - { - $status=3; - } - else if($rowstatus->status_kurzbz=="Abbrecher" ) - { - $status=4; - } - else - { - $error_log=''; - $error_log1=''; - continue; - } - $aktstatus=$rowstatus->status_kurzbz; - $aktstatus_datum=$rowstatus->datum; - //$storgform=$rowstatus->orgform_kurzbz; - } - } - } - } - //bei Absolventen das Beendigungsdatum (Sponsion oder Abschlussprüfung) überprüfen - - if($aktstatus=='Absolvent') - { - $qry_ap="SELECT * FROM lehre.tbl_abschlusspruefung WHERE student_uid='".$row->student_uid."' AND abschlussbeurteilung_kurzbz!='nicht' AND abschlussbeurteilung_kurzbz IS NOT NULL"; - if($result_ap = $db->db_query($qry_ap)) - { - $ap=0; - while($row_ap = $db->db_fetch_object($result_ap)) - { - if($row_ap->datum=='' || $row_ap->datum==null) - { - $error_log.=(!empty($error_log)?', ':'')."Datum der Abschlussprüfung ('".$row_ap->datum."')"; - } - if($row_ap->sponsion=='' || $row_ap->sponsion==null) - { - $error_log.=(!empty($error_log)?', ':'')."Datum der Sponsion ('".$row_ap->sponsion."')"; - } - $ap++; - $sponsion=$row_ap->sponsion; - } - if($ap!=1) - { - $error_log.=(!empty($error_log)?', ':'').$ap." bestandene Abschlussprüfungen"; - } - } - } - if($error_log!='' OR $error_log1!='') - { - //Ausgabe der fehlenden Daten - $v.="Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($row->status_kurzbz): \n"; - if($error_log!='') - { - $v.="     Fehler: ".$error_log."\n"; - } - if($error_log1!='') - { - $v.="     ".$error_log1; - } - $zaehl++; - $v.="\n"; - $error_log=''; - $error_log1=''; - continue; - } - else - { - //Erstellung der XML-Datei - $datei.=" - - ".trim($row->matrikelnr)." - ".date("dmY", $datumobj->mktime_fromdate($row->gebdatum))." - ".strtoupper($row->geschlecht).""; - if(($row->svnr!='')&&($row->ersatzkennzeichen!='')) - { - /*$datei.=" - ".$row->vorname." - ".$row->nachname."";*/ - $datei.=" - ".$row->svnr.""; - $datei.=" - ".$row->ersatzkennzeichen.""; - } - else - { - if($row->svnr!='') - { - $datei.=" - ".$row->svnr.""; - } - if($row->ersatzkennzeichen!='') - { - /*$datei.=" - ".$row->vorname." - ".$row->nachname."";*/ - $datei.=" - ".$row->ersatzkennzeichen.""; - } - } - $datei.=" - ".$row->staatsbuergerschaft." - ".$plz." - ".$gemeinde." - - ".$nation." - ".$row->zgv_code.""; - if($row->zgvdatum!=null) - { - $datei.=" - ".date("dmY", $datumobj->mktime_fromdate($row->zgvdatum)).""; - } - else - { - $datei.=" - "; - } - //!!!stgart für Lehrgang überprüfen!!! - if($stgart==2) - { - $datei.=" - ".$row->zgvmas_code.""; - if($row->zgvmadatum!=null) - { - $datei.=" - ".date("dmY", $datumobj->mktime_fromdate($row->zgvmadatum)).""; - } - else - { - $datei.=" - "; - } - } - $qryad="SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id='".$row->prestudent_id."' AND (status_kurzbz='Student' OR status_kurzbz='Unterbrecher') AND (tbl_prestudentstatus.datum<'".$bisdatum."') ORDER BY datum asc;"; - if($resultad = $db->db_query($qryad)) - { - if($rowad = $db->db_fetch_object($resultad)) - { - $datei.=" - ".date("dmY", $datumobj->mktime_fromdate($rowad->datum)).""; - } - } - if($aktstatus=='Absolvent') - { - $datei.=" - ".date("dmY", $datumobj->mktime_fromdate($aktstatus_datum)).""; - } - $datei.=" - ".$status." - "; - } - } - $datei.=" - - -"; - echo ' BIS - Lehrgangsmeldung - ('.$stg_kz.') - - - '; - echo "

BIS - Studentendaten werden überprüft! Lehrgang: ".$stg_kz."

\n"; - if(strlen(trim($v))>0) - { - echo "

Nicht plausible BIS-Daten (für Meldung ".$ssem."):


"; - echo nl2br($v."\n\n"); - } - $ddd='bisdaten/bismeldung_'.$ssem.'_Lehrgang'.$stg_kz.'.xml'; - if(strtoupper($plausi)!='J') - { - $dateiausgabe=fopen($ddd,'w'); - fwrite($dateiausgabe,$datei); - fclose($dateiausgabe); - } - if(file_exists($ddd)) - { - echo "XML-Datei für BIS-Meldung Lehrgang ".$stg_kz."
"; - } - - //echo $datei; -} \ No newline at end of file + + * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at > + * Rudolf Hangl < rudolf.hangl@technikum-wien.at > + * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > + */ +require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/studiensemester.class.php'); +require_once('../../include/bisfunktion.class.php'); +require_once('../../include/studiengang.class.php'); + +if (!$db = new basis_db()) + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); + + +$funktion_geaendert=0; +$funktion_hinzugefuegt=0; +$funktion_error=0; +$verwendung_not_found=0; +$verwendung_multiple=0; +$funktion_ohne_lehrauftrag=0; +$user = get_uid(); +$wochen=BIS_SWS_WOCHEN; + +$stg_arr = array(); +$stg_obj = new studiengang(); +$stg_obj->getAll(null, false); +$lastbismeldung = date('Y-m-d',mktime(0,0,0,11,15,date('Y')-1)); +foreach ($stg_obj->result as $stg) +{ + $stg_arr[$stg->studiengang_kz] = $stg->kuerzel; +} + +echo ' + + Check Funktion + + + + +

Mitarbeiter BIS-Funktion Check

+ '; + +$stsem = new studiensemester(); +$stsemprev = $stsem->getPrevious(); +$stsemprevprev = $stsem->getBeforePrevious(); + +echo "Generiere Funktionen für $stsemprevprev/$stsemprev
"; + +$qry = "SELECT tbl_lehreinheitmitarbeiter.mitarbeiter_uid, tbl_lehrveranstaltung.studiengang_kz, sum(tbl_lehreinheitmitarbeiter.semesterstunden) as semstd + FROM lehre.tbl_lehreinheitmitarbeiter, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung + WHERE + tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND + tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND + (studiensemester_kurzbz='$stsemprev' OR studiensemester_kurzbz='$stsemprevprev') AND + bismelden=true AND tbl_lehreinheitmitarbeiter.semesterstunden>0 GROUP BY mitarbeiter_uid, studiengang_kz"; + +if($result = $db->db_query($qry)) +{ + $lastuid=''; + while($row = $db->db_fetch_object($result)) + { + if($lastuid!=$row->mitarbeiter_uid) + { + $lastuid=$row->mitarbeiter_uid; + //Verwendung suchen + $person_error=false; + $qry_verw = "SELECT * FROM bis.tbl_bisverwendung WHERE (ende>now() OR ende is null OR ende>'$lastbismeldung') AND mitarbeiter_uid='$row->mitarbeiter_uid' order by beginn DESC"; + if($result_verw = $db->db_query($qry_verw)) + { + if($db->db_num_rows($result_verw)==0) + { + echo "
Es wurde keine Verwendung fuer $row->mitarbeiter_uid gefunden"; + $person_error = true; + $verwendung_not_found++; + } + else + { + if($row_verw = $db->db_fetch_object($result_verw)) + $verwendung_id = $row_verw->bisverwendung_id; + else + { + echo "
Fehler beim Holen der Verwendung von $row->mitarbeiter_uid"; + $person_error = true; + } + } + + if($db->db_num_rows($result_verw)>1) + { + echo "
Es wurde mehr als eine Verwendung bei $row->mitarbeiter_uid gefunden - es wird die Verwendung $verwendung_id verwendet"; + $verwendung_multiple++; + } + } + else + { + echo "
Fehler beim Ermitteln der Verwendung ".$db->db_last_error(); + $person_error = true; + } + } + + if(!$person_error) + { + //SWS berechnen + $swsneu = number_format(round($row->semstd/$wochen, 2),'.'); + + //Funktion fuer diesen Studiengang suchen + $bisfunktion = new bisfunktion(); + + if($bisfunktion->load($verwendung_id, $row->studiengang_kz)) + { + $bisfunktion->new = false; + + if($bisfunktion->sws!=$swsneu) + { + echo "
$row->mitarbeiter_uid: Funktion bei Studiengang ".$stg_arr[$row->studiengang_kz]." ($row->studiengang_kz) wird von $bisfunktion->sws auf $swsneu geaendert"; + $bisfunktion->sws = $swsneu; + $funktion_geaendert++; + } + } + else + { + $bisfunktion->insertamum = date('Y-m-d H:i:s'); + $bisfunktion->insertvon = $user; + $bisfunktion->studiengang_kz = $row->studiengang_kz; + $bisfunktion->sws = $swsneu; + $bisfunktion->new = true; + $bisfunktion->bisverwendung_id = $verwendung_id; + $funktion_hinzugefuegt++; + } + $bisfunktion->updateamum = date('Y-m-d H:i:s'); + $bisfunktion->updatevon = $user; + + if(!$bisfunktion->save()) + { + echo "
$row->mitarbeiter_uid: Fehler beim Anlegen der Funktion ".$bisfunktion->errormsg; + if($bisfunktion->new) + $funktion_hinzugefuegt--; + else + $funktion_geaendert--; + $funktion_error++; + } + } + } + + echo '

'; + echo 'Check fuer nicht benoetigte Funktionen'; + $qry = "SELECT * FROM bis.tbl_bisfunktion JOIN bis.tbl_bisverwendung USING(bisverwendung_id) + WHERE (mitarbeiter_uid, studiengang_kz) NOT IN ( + SELECT mitarbeiter_uid, studiengang_kz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND + (tbl_lehreinheit.studiensemester_kurzbz='$stsemprev' OR tbl_lehreinheit.studiensemester_kurzbz='$stsemprevprev')) + AND (ende>'$lastbismeldung' OR ende is null) + ORDER BY mitarbeiter_uid, studiengang_kz"; + if($result = $db->db_query($qry)) + { + $funktion_ohne_lehrauftrag = $db->db_num_rows($result); + + while($row = $db->db_fetch_object($result)) + { + echo "
$row->mitarbeiter_uid hat im Studiengang ".$stg_arr[$row->studiengang_kz]." ($row->studiengang_kz) eine Funktion ohne Lehrauftrag"; + } + } + echo "Loeschen der Funktionen mit: DELETE FROM bis.tbl_bisfunktion where (studiengang_kz, bisverwendung_id) in (SELECT studiengang_kz, bisverwendung_id FROM bis.tbl_bisfunktion JOIN bis.tbl_bisverwendung USING(bisverwendung_id) + WHERE (mitarbeiter_uid, studiengang_kz) NOT IN ( + SELECT mitarbeiter_uid, studiengang_kz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND + (tbl_lehreinheit.studiensemester_kurzbz='$stsemprevprev' OR tbl_lehreinheit.studiensemester_kurzbz='$stsemprev')) + AND (ende>'$lastbismeldung' OR ende is null))"; + echo '

'; + echo '

Uebersicht

'; + echo ''; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo '
Nicht vorhandene Verwendungen$verwendung_not_found
Mehrere moegliche Verwendungen vorhanden$verwendung_multiple
Fehler bei Funktionen$funktion_error
Funktionen ohne Lehrauftrag$funktion_ohne_lehrauftrag
  
Funktionen hinzugefuegt$funktion_hinzugefuegt
Funktionen geaendert$funktion_geaendert
'; +}