diff --git a/system/generate_missing_sto.php b/system/generate_missing_sto.php new file mode 100644 index 000000000..87af8298a --- /dev/null +++ b/system/generate_missing_sto.php @@ -0,0 +1,224 @@ + + */ +require_once('../config/system.config.inc.php'); +require_once('../include/basis_db.class.php'); +require_once('../include/benutzerberechtigung.class.php'); +require_once('../include/studiensemester.class.php'); + +// Datenbank Verbindung +$db = new basis_db(); + + +$uid = get_uid(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +if(!$rechte->isBerechtigt('admin')) +{ + exit('Sie haben keine Berechtigung'); +} + +echo ' + + Studienordnung generieren + + + + +'; +if(isset($_POST["start"]) && $_POST["start"] == "start") +{ + $qry = " + SELECT + upper(typ || kurzbz) as kurzbz, kurzbzlang, studiengang_kz, bezeichnung, english,max_semester, orgform_kurzbz, + ( + SELECT + studiensemester_kurzbz + FROM + public.tbl_prestudentstatus + JOIN public.tbl_prestudent USING(prestudent_id) + JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) + WHERE + studiengang_kz=tbl_studiengang.studiengang_kz + ORDER BY + tbl_studiensemester.start asc limit 1 + ) as start_studiensemester, + ( + SELECT + studiensemester_kurzbz + FROM + public.tbl_prestudentstatus + JOIN public.tbl_prestudent USING(prestudent_id) + JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) + WHERE + studiengang_kz=tbl_studiengang.studiengang_kz + AND tbl_prestudentstatus.status_kurzbz='Student' + ORDER BY + tbl_studiensemester.start desc limit 1 + ) as letztes_studenten_studiensemester, + ( + SELECT + gueltigvon + FROM + lehre.tbl_studienordnung + JOIN public.tbl_studiensemester ON(tbl_studiensemester.studiensemester_kurzbz=tbl_studienordnung.gueltigvon) + WHERE + tbl_studienordnung.studiengang_kz = tbl_studiengang.studiengang_kz + ORDER BY + tbl_studiensemester.start asc limit 1 + ) as start_studienordnung + FROM + public.tbl_studiengang + ORDER BY typ, kurzbz + "; + + if($result = $db->db_query($qry)) + { + while($row = $db->db_fetch_object($result)) + { + if($row->start_studienordnung == '') + { + echo $row->bezeichnung.' wird uebersprungen da keine Studienordnung vorhanden ist
'; + continue; + } + if($row->start_studiensemester == '') + { + echo $row->bezeichnung.' wird uebersprungen da keine Statuseintraege vorhanden sind
'; + continue; + } + if($row->start_studiensemester == $row->start_studienordnung) + { + echo $row->bezeichnung.' wird uebersprungen da bereits eine vollstaendige Studienordnung vorhanden ist
'; + continue; + } + $stsem = new studiensemester(); + $stsem_bis = $stsem->getPreviousFrom($row->start_studienordnung); + + $bezeichnung = sprintf("%04s",$row->studiengang_kz).'-'.$row->kurzbz.'-'.$row->start_studiensemester; + + // Studienordnung anlegen + + $qry_sto = "INSERT INTO lehre.tbl_studienordnung(studiengang_kz, version, gueltigvon, gueltigbis, + bezeichnung, ects, studiengangbezeichnung, studiengangbezeichnung_englisch, studiengangkurzbzlang, + insertamum, insertvon, status_kurzbz) VALUES(". + $db->db_add_param($row->studiengang_kz).','. + "'01',". + $db->db_add_param($row->start_studiensemester).','. + $db->db_add_param($stsem_bis).','. + $db->db_add_param($bezeichnung).','. + $db->db_add_param($row->max_semester*30).','. + $db->db_add_param($row->bezeichnung).','. + $db->db_add_param($row->english).','. + $db->db_add_param($row->kurzbzlang).",now(),'autogenerate','approved');"; + + if($db->db_query('BEGIN;'.$qry_sto)) + { + $qry="SELECT currval('lehre.seq_studienordnung_studienordnung_id') as id;"; + if($db->db_query($qry)) + { + if($rowseq = $db->db_fetch_object()) + { + $studienordnung_id = $rowseq->id; + } + } + + // Studienplan anlegen + $qry_stpl = 'INSERT INTO lehre.tbl_studienplan (studienordnung_id, orgform_kurzbz,version, + bezeichnung, regelstudiendauer, sprache, aktiv, semesterwochen, testtool_sprachwahl, + pflicht_sws, pflicht_lvs, ects_stpl, insertamum, insertvon) VALUES ('. + $db->db_add_param($studienordnung_id, FHC_INTEGER).', '. + $db->db_add_param($row->orgform_kurzbz).', '. + "'V1', ". + $db->db_add_param($bezeichnung.'-'.$row->orgform_kurzbz).', '. + $db->db_add_param($row->max_semester, FHC_INTEGER).', '. + "'German', true, 15, false, 0, 0,". + $db->db_add_param($row->max_semester*30, FHC_INTEGER).', '. + "now(),'autogenerate');"; + + if($db->db_query($qry_stpl)) + { + $qry="SELECT currval('lehre.seq_studienplan_studienplan_id') as id;"; + if($db->db_query($qry)) + { + if($row_seq = $db->db_fetch_object()) + { + $studienplan_id = $row_seq->id; + } + } + + // Gueltigkeiten setzen + $qry = "SELECT + * + FROM + public.tbl_studiensemester + WHERE + start>=(SELECT start FROM public.tbl_studiensemester + WHERE studiensemester_kurzbz=".$db->db_add_param($row->start_studiensemester).") + AND ende<=(SELECT ende FROM public.tbl_studiensemester + WHERE studiensemester_kurzbz=".$db->db_add_param($stsem_bis).")"; + + if($result_stsem = $db->db_query($qry)) + { + while($row_stsem = $db->db_fetch_object($result_stsem)) + { + if(mb_substr($row_stsem->studiensemester_kurzbz,0,2)=='WS') + $sem=1; + else + $sem=2; + + while($sem<=$row->max_semester) + { + $qry_stplsem = "INSERT INTO lehre.tbl_studienplan_semester ( + studienplan_id, studiensemester_kurzbz, semester) VALUES (" . + $db->db_add_param($studienplan_id) . ', ' . + $db->db_add_param($row_stsem->studiensemester_kurzbz) . ', ' . + $db->db_add_param($sem) . '); '; + + $db->db_query($qry_stplsem); + $sem+=2; + } + } + } + } + + echo "Generiere ".$bezeichnung." für ".$row->bezeichnung.'
'; + $db->db_query('COMMIT;'); + } + } + } +} +else +{ + echo ' +

Studienordnungen generieren

+ Dieses Script generiert pro Studiengang eine Studienordnung wenn Statuseinträge vorhanden sind + jedoch keine dazupassende Studienordnung. Es werden nur Studienordnungen angelegt VOR bereits bestehenden Studienordnungen. + Es werden keine Lücken gefüllt. Wenn noch keine Studienordnung vorhanden ist, wird der Studiengang uebersprungen.
+ Es wird jeweils eine Studienordnung, ein Studienplan und die Gültigkeit gesetzt. Es werde leere Dummy Studienpläne erstellt + die keine Lehrveranstaltungen zugeordnet haben.
+ Dieses Script sollte nur einmalig beim Update auf Version 3.2 gestartet werden und nur dann wenn die Studienpläne + nicht bereits vollständig eingetragen sind. +
+ + +
'; +} +echo ' +'; \ No newline at end of file