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 '