Script zur generierung von Studienordnungen

This commit is contained in:
Andreas Österreicher
2014-03-18 12:57:21 +00:00
parent 9bcb2cccf5
commit 9f6612de97
2 changed files with 110 additions and 41 deletions
+38 -31
View File
@@ -76,32 +76,38 @@ if($uid!='' && $stg_kz!=-1) // Alle LVs eines Mitarbeiters
elseif($fachbereich_kurzbz!='') // Alle LVs eines Fachbereiches
{
// LVs lt Studienplan
$qry="
SELECT
distinct on (lehrveranstaltung_id)
tbl_lehrveranstaltung.studiengang_kz as lv_studiengang_kz, tbl_lehrveranstaltung.semester as lv_semester,
tbl_lehrveranstaltung.kurzbz as lv_kurzbz, tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung, tbl_lehrveranstaltung.ects as lv_ects,
tbl_lehrveranstaltung.lehreverzeichnis as lv_lehreverzeichnis, tbl_lehrveranstaltung.planfaktor as lv_planfaktor,
tbl_lehrveranstaltung.planlektoren as lv_planlektoren, tbl_lehrveranstaltung.planpersonalkosten as lv_planpersonalkosten,
tbl_lehrveranstaltung.plankostenprolektor as lv_plankostenprolektor, tbl_lehrveranstaltung.orgform_kurzbz as lv_orgform_kurzbz,
tbl_lehrveranstaltung.lehrveranstaltung_id,
tbl_lehrveranstaltung.lehrform_kurzbz as lehrform_kurzbz,
tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz,
tbl_lehrveranstaltung.bezeichnung_english as lv_bezeichnung_english,
tbl_lehrveranstaltung.studiengang_kz, tbl_studienplan_lehrveranstaltung.semester, tbl_lehrveranstaltung.anmerkung, tbl_lehrveranstaltung.sprache, tbl_lehrveranstaltung.semesterstunden,
tbl_lehrveranstaltung.lehre, tbl_lehrveranstaltung.aktiv,
tbl_studienplan.studienplan_id::text, tbl_studienplan.bezeichnung as studienplan_bezeichnung, tbl_lehrveranstaltung.lehrtyp_kurzbz
FROM
lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
JOIN lehre.tbl_studienordnung_semester USING(studienordnung_id)
WHERE
tbl_lehrveranstaltung.oe_kurzbz=(Select oe_kurzbz from public.tbl_fachbereich where fachbereich_kurzbz=".$db->db_add_param($fachbereich_kurzbz).")
AND tbl_studienordnung_semester.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell);
$qry .= " UNION
if($uid=='')
{
$qry="
SELECT
distinct on (lehrveranstaltung_id)
tbl_lehrveranstaltung.studiengang_kz as lv_studiengang_kz, tbl_lehrveranstaltung.semester as lv_semester,
tbl_lehrveranstaltung.kurzbz as lv_kurzbz, tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung, tbl_lehrveranstaltung.ects as lv_ects,
tbl_lehrveranstaltung.lehreverzeichnis as lv_lehreverzeichnis, tbl_lehrveranstaltung.planfaktor as lv_planfaktor,
tbl_lehrveranstaltung.planlektoren as lv_planlektoren, tbl_lehrveranstaltung.planpersonalkosten as lv_planpersonalkosten,
tbl_lehrveranstaltung.plankostenprolektor as lv_plankostenprolektor, tbl_lehrveranstaltung.orgform_kurzbz as lv_orgform_kurzbz,
tbl_lehrveranstaltung.lehrveranstaltung_id,
tbl_lehrveranstaltung.lehrform_kurzbz as lehrform_kurzbz,
tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz,
tbl_lehrveranstaltung.bezeichnung_english as lv_bezeichnung_english,
tbl_lehrveranstaltung.studiengang_kz, tbl_studienplan_lehrveranstaltung.semester, tbl_lehrveranstaltung.anmerkung, tbl_lehrveranstaltung.sprache, tbl_lehrveranstaltung.semesterstunden,
tbl_lehrveranstaltung.lehre, tbl_lehrveranstaltung.aktiv,
tbl_studienplan.studienplan_id::text, tbl_studienplan.bezeichnung as studienplan_bezeichnung, tbl_lehrveranstaltung.lehrtyp_kurzbz
FROM
lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
JOIN lehre.tbl_studienordnung_semester USING(studienordnung_id)
WHERE
tbl_lehrveranstaltung.oe_kurzbz=(Select oe_kurzbz from public.tbl_fachbereich where fachbereich_kurzbz=".$db->db_add_param($fachbereich_kurzbz).")
AND tbl_studienordnung_semester.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
AND tbl_lehrveranstaltung.aktiv
UNION ";
}
else
$qry='';
$qry .= "
SELECT
distinct on(lehrveranstaltung_id)
lv_studiengang_kz, lv_semester, lv_kurzbz, lv_bezeichnung, lv_ects,
@@ -118,7 +124,8 @@ elseif($fachbereich_kurzbz!='') // Alle LVs eines Fachbereiches
AND fachbereich_kurzbz=".$db->db_add_param($fachbereich_kurzbz);
if($uid!='')
$qry.=" AND mitarbeiter_uid=".$db->db_add_param($uid);
else
{
$qry.=" AND lehrveranstaltung_id NOT IN (SELECT lehrveranstaltung_id
FROM
lehre.tbl_lehrveranstaltung
@@ -129,8 +136,7 @@ elseif($fachbereich_kurzbz!='') // Alle LVs eines Fachbereiches
WHERE
tbl_lehrveranstaltung.oe_kurzbz=(Select oe_kurzbz from public.tbl_fachbereich where fachbereich_kurzbz=".$db->db_add_param($fachbereich_kurzbz).")
AND tbl_studienordnung_semester.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell).")";
}
}
else
@@ -172,7 +178,8 @@ else
lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_studienplan USING(studienplan_id)
WHERE studienplan_id in (".$db->db_implode4SQL($stp_ids).")";
WHERE studienplan_id in (".$db->db_implode4SQL($stp_ids).")
AND tbl_lehrveranstaltung.aktiv";
if($sem!='')
$qry.=" AND tbl_studienplan_lehrveranstaltung.semester=".$db->db_add_param($sem);
$qry.=" UNION ";
@@ -204,7 +211,7 @@ else
}
//$qry = 'SELECT distinct on(lehrveranstaltung_id) * FROM ('.$qry.' ORDER BY studienplan_id DESC) a';
}
//die($qry);
// die($qry);
if(!$result = $db->db_query($qry))
die($db->db_last_error().'<BR>'.$qry);
+72 -10
View File
@@ -38,18 +38,37 @@ $db = new basis_db();
// Alle Studiengaenge durchlaufen
foreach($studiengang->result as $rowstg)
{
$qry = "SELECT
studiensemester_kurzbz
FROM
lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($rowstg->studiengang_kz, FHC_INTEGER)."
ORDER BY tbl_studiensemester.start LIMIT 1";
$stsem = 'WS2014';
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$stsem = $row->studiensemester_kurzbz;
}
}
// eine Neue Studienordnung anlegen
$studienordnung = new studienordnung();
$studienordnung->studiengang_kz=$rowstg->studiengang_kz;
$studienordnung->bezeichnung=$rowstg->kuerzel.'_V2';
$studienordnung->version='V2';
$studienordnung->ects=30;
$studienordnung->gueltigvon='WS2013';
$studienordnung->bezeichnung=sprintf('%04s',$rowstg->studiengang_kz).'-'.$rowstg->kuerzel.'-'.$stsem;
$studienordnung->version='01';
$studienordnung->ects=($rowstg->max_semester*30);
$studienordnung->gueltigvon=$stsem;
$studienordnung->gueltigbis='';
$studienordnung->studiengangbezeichnung = $rowstg->bezeichnung;
$studienordnung->studiengangbezeichnung_englisch = $rowstg->english;
$studienordnung->studiengangkurzbzlang = $rowstg->kurzbzlang;
$studienordnung->max_semester = $rowstg->max_semester;
$studienordnung->insertvon = 'generate';
$studienordnung->akadgrad_id=1;
if(!$studienordnung->save())
@@ -84,18 +103,60 @@ foreach($studiengang->result as $rowstg)
}
}
$qry = "SELECT * FROM public.tbl_studiensemester WHERE ende<now()";
$stsem = array();
if($result_stsem = $db->db_query($qry))
{
while($row_stsem = $db->db_fetch_object($result_stsem))
{
$stsem[] = $row_stsem->studiensemester_kurzbz;
}
}
$qry="SELECT *, (Select max_semester FROM public.tbl_studiengang where studiengang_kz=a.studiengang_kz) as max_semester FROM lehre.tbl_studienordnung as a WHERE studienordnung_id=(Select max(studienordnung_id) FROM lehre.tbl_studienordnung WHERE studiengang_kz=a.studiengang_kz)";
if($result_sto = $db->db_query($qry))
{
while($row_sto = $db->db_fetch_object($result_sto))
{
echo $row_sto->bezeichnung.'<br>';
for($i=1;$i<$row_sto->max_semester;$i++)
{
$qry="INSERT INTO lehre.tbl_studienordnung_semester(studienordnung_id, semester, studiensemester_kurzbz)
VALUES(".$db->db_add_param($row_sto->studienordnung_id).','.$i.',';
foreach($stsem as $studiensemester)
{
$db->db_query($qry.$db->db_add_param($studiensemester).');');
}
}
}
}
function createStudienplan($orgform, $studienordnung_id, $rowstg)
{
global $db;
$studienplan = new studienplan();
$studienplan->studienordnung_id = $studienordnung_id;
$studienplan->orgform_kurzbz=$orgform;
$studienplan->version = 'V2';
$studienplan->bezeichnung = $rowstg->kuerzel.'V2';
$studienplan->version = 'V1';
$studienplan->bezeichnung = $orgform;
$studienplan->regelstudiendauer = $rowstg->max_semester;
$studienplan->sprache = $rowstg->sprache;
$studienplan->aktiv = true;
$studienplan->semesterwochen = 15;
$wochen='15';
$qry = "SELECT wochen FROM public.tbl_semesterwochen WHERE studiengang_kz=".$db->db_add_param($rowstg->studiengang_kz)." LIMIT 1";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$wochen = $row->wochen;
}
}
$studienplan->semesterwochen = $wochen;
$studienplan->testtool_sprachwahl = true;//$db->db_parse_bool($rowstg->testtool_sprachwahl);
$studienplan->insertvon = 'generate';
if(!$studienplan->save())
@@ -112,13 +173,14 @@ function createStudienplan($orgform, $studienordnung_id, $rowstg)
lehre.tbl_lehrveranstaltung
WHERE
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($rowstg->studiengang_kz)."
AND (orgform_kurzbz is null or orgform_kurzbz=".$db->db_add_param($orgform).')';
AND (orgform_kurzbz is null or orgform_kurzbz=".$db->db_add_param($orgform).")
AND lehrtyp_kurzbz<>'lf'";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$lehrveranstaltung = new lehrveranstaltung();
$lehrveranstaltung = new studienplan();
$lehrveranstaltung->new=true;
$lehrveranstaltung->studienplan_id=$studienplan_id;
$lehrveranstaltung->semester=$row->semester;