diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index 14070fd80..ef25507c2 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -735,5 +735,18 @@ class studiensemester extends basis_db return false; } } + + /** + * Liefert das dazupassende Studiensemester im Studienjahr + * @param $studiensemester_kurzbz + * @return $studiensemester_kurzbz + */ + public function getStudienjahrStudiensemester($studiensemester_kurzbz) + { + if(mb_substr($studiensemester_kurzbz,0,2)=='WS') + return $this->getNextFrom($studiensemester_kurzbz); + else + return $this->getPreviousFrom($studiensemester_kurzbz); + } } ?> diff --git a/include/zeugnisnote.class.php b/include/zeugnisnote.class.php index 7ea6c3472..dc3e473d9 100644 --- a/include/zeugnisnote.class.php +++ b/include/zeugnisnote.class.php @@ -338,5 +338,123 @@ class zeugnisnote extends basis_db return false; } } + + /** + * Laedt die Noten Studienjahr + * @param $lehrveranstaltung_id + * $student_uid + * $studiensemester_kurzbz + * @return true wenn ok, false wenn Fehler + */ + public function getZeugnisnotenStudienplan($student_uid, $studiensemester_arr, $studienplan_id) + { + + $stsem = $this->db_implode4SQL($studiensemester_arr); + + /* + * Alle Lehrveranstaltungen holen zu denen eine Note eingetragen ist und alle zu denen der Studierende zugeteilt ist. + * Danach wird im Studienplan gesucht und eventuell darbueberliegenden Module zusaetzlich geladen + */ + $qry = " + WITH RECURSIVE data(lvid, studienplan_lehrveranstaltung_id, studienplan_lehrveranstaltung_id_parent) as + ( + SELECT + vw_student_lehrveranstaltung.lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent + FROM + ( + campus.vw_student_lehrveranstaltung LEFT JOIN lehre.tbl_zeugnisnote + ON(uid=student_uid + AND vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_zeugnisnote.studiensemester_kurzbz + AND vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id + ) + ) + LEFT JOIN lehre.tbl_note USING(note) + LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id) + WHERE + uid=".$this->db_add_param($student_uid)." + AND vw_student_lehrveranstaltung.studiensemester_kurzbz IN(".$stsem.") + AND tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER)." + UNION + SELECT lehre.tbl_lehrveranstaltung.lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent + FROM + lehre.tbl_zeugnisnote + JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) + JOIN lehre.tbl_note USING(note) + LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id) + WHERE + student_uid=".$this->db_add_param($student_uid)." + AND studiensemester_kurzbz IN(".$stsem.") + AND tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER)." + + UNION ALL + SELECT stpllv.lehrveranstaltung_id, stpllv.studienplan_lehrveranstaltung_id, stpllv.studienplan_lehrveranstaltung_id_parent + FROM lehre.tbl_studienplan_lehrveranstaltung stpllv, data + WHERE stpllv.studienplan_lehrveranstaltung_id=data.studienplan_lehrveranstaltung_id_parent + ) + SELECT + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent, tbl_studienplan_lehrveranstaltung.semester, + tbl_lehrveranstaltung.lehrveranstaltung_id,tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, tbl_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english, + tbl_lehrveranstaltung.semesterstunden, tbl_lehrveranstaltung.ects, tbl_lehrveranstaltung.sort, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.zeugnis, + tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz, + tbl_zeugnisnote.studiensemester_kurzbz, tbl_zeugnisnote.uebernahmedatum, tbl_zeugnisnote.benotungsdatum, + tbl_zeugnisnote.note, tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum, tbl_zeugnisnote.insertvon, + tbl_note.bezeichnung as note_bezeichnung, tbl_zeugnisnote.bemerkung, tbl_lehrveranstaltung.lvnr + FROM + lehre.tbl_lehrveranstaltung + LEFT JOIN lehre.tbl_zeugnisnote ON(tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND student_uid=".$this->db_add_param($student_uid).") + LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung ON(tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id AND tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id).") + LEFT JOIN lehre.tbl_note USING(note) + WHERE + (tbl_zeugnisnote.studiensemester_kurzbz IN(".$stsem.") OR tbl_zeugnisnote.studiensemester_kurzbz is null) + AND tbl_lehrveranstaltung.lehrveranstaltung_id in(SELECT lvid FROM data) + ORDER BY studienplan_lehrveranstaltung_id_parent desc, studienplan_lehrveranstaltung_id + "; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new zeugnisnote(); + + $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $obj->student_uid = $student_uid; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $obj->note = $row->note; + $obj->uebernahmedatum = $row->uebernahmedatum; + $obj->benotungsdatum = $row->benotungsdatum; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->note_bezeichnung = $row->note_bezeichnung; + $obj->lehrveranstaltung_bezeichnung = $row->lehrveranstaltung_bezeichnung; + $obj->lehrveranstaltung_bezeichnung_english = $row->lehrveranstaltung_bezeichnung_english; + $obj->bemerkung = $row->bemerkung; + $obj->semesterstunden = $row->semesterstunden; + $obj->ects = $row->ects; + $obj->sort = $row->sort; + $obj->studiengang_kz = $row->studiengang_kz; + $obj->zeugnis = $this->db_parse_bool($row->zeugnis); + $obj->lv_lehrform_kurzbz = $row->lv_lehrform_kurzbz; + $obj->lehrveranstaltung_lvnr = $row->lvnr; + $obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id; + $obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent; + $obj->studienplan_lehrveranstaltung_semester = $row->semester; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } -?> \ No newline at end of file +?> diff --git a/rdf/erfolgsnachweis.rdf.php b/rdf/erfolgsnachweis.rdf.php new file mode 100755 index 000000000..16b01c13a --- /dev/null +++ b/rdf/erfolgsnachweis.rdf.php @@ -0,0 +1,263 @@ + + */ +header("Content-type: application/xhtml+xml"); +require_once('../config/vilesci.config.inc.php'); +require_once('../include/functions.inc.php'); +require_once('../include/zeugnisnote.class.php'); +require_once('../include/datum.class.php'); +require_once('../include/note.class.php'); +require_once('../include/studiengang.class.php'); +require_once('../include/mitarbeiter.class.php'); +require_once('../include/studiensemester.class.php'); +require_once('../include/studienordnung.class.php'); +require_once('../include/studienplan.class.php'); +require_once('../include/student.class.php'); +require_once('../include/prestudent.class.php'); + +$datum = new datum(); +$db = new basis_db(); + + if(isset($_GET['uid'])) + $uid = $_GET['uid']; + else + $uid = null; + + $uid_arr = explode(";",$uid); + + if ($uid_arr[0] == "") + { + unset($uid_arr[0]); + $uid_arr = array_values($uid_arr); + } + + // Noten laden + $note_arr = array(); + $note = new note(); + $note->getAll(); + foreach ($note->result as $n) + { + $note_arr[$n->note]['anmerkung'] = $n->anmerkung; + $note_arr[$n->note]['positiv'] = $n->positiv; + } + $note_arr['']['anmerkung'] = ''; + $note_arr['']['positiv'] = false; + + // Studienjahr ermitteln + if(isset($_GET['ss'])) + $studiensemester_kurzbz = $_GET['ss']; + else + $studiensemester_kurzbz = $semester_aktuell; + + $studiensemester = new studiensemester(); + $studiensemester_kurzbz2 = $studiensemester->getStudienjahrStudiensemester($studiensemester_kurzbz); + + + //Daten holen + + $xml = ""; + $xml .= ""; + + foreach($uid_arr as $uid) + { + $student = new student(); + if(!$student->load($uid)) + die($student->errormsg); + + $studiengang = new studiengang(); + $stgleiter = $studiengang->getLeitung($student->studiengang_kz); + $stgl=''; + foreach ($stgleiter as $stgleiter_uid) + { + $stgl_ma = new mitarbeiter($stgleiter_uid); + $stgl .= trim($stgl_ma->titelpre.' '.$stgl_ma->vorname.' '.$stgl_ma->nachname.' '.$stgl_ma->titelpost); + } + + $ausbildungssemester = 0; + + //Wenn das Semester 0 ist, dann wird das Semester aus der Rolle geholt. (Ausnahme: Incoming) + //damit bei Outgoing Studenten die im 0. Semester angelegt sind das richtige Semester aufscheint + $qry ="SELECT ausbildungssemester as semester FROM public.tbl_prestudentstatus + WHERE + prestudent_id=".$db->db_add_param($student->prestudent_id)." AND + studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND + status_kurzbz not in('Incoming','Aufgenommener','Bewerber','Wartender', 'Interessent') + ORDER BY DATUM DESC LIMIT 1"; + if($result_sem = $db->db_query($qry)) + { + if($row_sem = $db->db_fetch_object($result_sem)) + { + $ausbildungssemester = $row_sem->semester; + } + } + + $student_studienjahr = round($ausbildungssemester/2); + + $jahr1=mb_substr($studiensemester_kurzbz,1); + $jahr2=mb_substr($studiensemester_kurzbz2,1); + $studienjahr = ($jahr1>$jahr2?$jahr2.'/'.$jahr1:$jahr1.'/'.$jahr2); + + $studiengang = new studiengang(); + $studiengang->load($student->studiengang_kz); + + $prestudent = new prestudent(); + $prestudent->getLastStatus($student->prestudent_id, $studiensemester_kurzbz); + + if($prestudent->studienplan_id=='') + { + die('keine Studienplan Zuordnung fuer '.$student->nachname); + } + $studienplan = new studienplan(); + if(!$studienplan->loadStudienplan($prestudent->studienplan_id)) + die('Studienplan ungueltig'); + + $studienordnung = new studienordnung(); + if(!$studienordnung->loadStudienordnung($studienplan->studienordnung_id)) + die('Studienordnung ungueltig'); + + + $xml .= "\n "; + $xml .= "\n ".$ausbildungssemester.""; + $xml .= "\n ".$studienjahr.""; + $xml .= "\n ".$student_studienjahr.""; + $xml .= "\n ".$studienordnung->studiengangbezeichnung.""; + $xml .= "\n ".$studienordnung->studiengangbezeichnung_englisch.""; + $xml .= "\n ".$studiengang->typ.""; + $xml .= "\n ".sprintf('%04s', abs($studiengang->studiengang_kz)).""; + $xml .= "\n ".$student->anrede.""; + $xml .= "\n ".$student->vorname.""; + $xml .= "\n ".$student->nachname.""; + $xml .= "\n ".trim($student->titelpre.' '.trim($student->vorname.' '.$student->vornamen).' '.mb_strtoupper($student->nachname).($student->titelpost!=''?', '.$student->titelpost:'')).""; + $gebdatum = date('d.m.Y',strtotime($student->gebdatum)); + $xml .= "\n ".$gebdatum.""; + $xml .= "\n ".$student->matrikelnr.""; + $xml .= "\n ".$stgl.""; + $datum_aktuell = date('d.m.Y'); + $xml .= "\n ".$datum_aktuell.""; + + $obj = new zeugnisnote(); + + + $obj->getZeugnisnotenStudienplan($uid, array($studiensemester_kurzbz, $studiensemester_kurzbz2),$prestudent->studienplan_id); + + foreach ($obj->result as $row) + { + $stpllv[$row->studienplan_lehrveranstaltung_id] = $row->lehrveranstaltung_id; + } + + foreach($obj->result as $row) + { + //Gruppieren der Module + //$lvs['1']['childs']['2']=$obj; + if($row->studienplan_lehrveranstaltung_id_parent=='') + { + $lehrveranstaltungen[$row->lehrveranstaltung_id]['data']=$row; + } + else + { + if(isset($lehrveranstaltungen[$stpllv[$row->studienplan_lehrveranstaltung_id_parent]])) + { + $lehrveranstaltungen[$stpllv[$row->studienplan_lehrveranstaltung_id_parent]]['childs'][$row->lehrveranstaltung_id]['data'] = $row; + } + else + { + foreach($lehrveranstaltungen as $key=>$row_module) + { + if(isset($lehrveranstaltungen[$key]['childs'][$stpllv[$row->studienplan_lehrveranstaltung_id_parent]])) + { + $lehrveranstaltungen[$key]['childs'][$stpllv[$row->studienplan_lehrveranstaltung_id_parent]]['childs'][$row->lehrveranstaltung_id]['data']=$row; + } + } + } + } + } + + $ects_gesamt = 0; + $ects_absolviert = 0; + foreach ($lehrveranstaltungen as $row_lehrveranstaltungen) + { + $xml.=getLVRow($row_lehrveranstaltungen); + } + $xml .= "".$ects_gesamt.""; + $xml .= "".$ects_absolviert.""; + $xml .= " "; + } + $xml .= ""; + echo $xml; + +function getLVRow($obj) +{ + global $ects_gesamt, $ects_absolviert,$studienplan,$note_arr; + $xml=''; + $row = $obj['data']; + if($row->zeugnis) + { + if ($row->note) + $note = $note_arr[$row->note]['anmerkung']; + else + $note = ""; + + $bezeichnung = $row->lehrveranstaltung_bezeichnung; + $bezeichnung_englisch = $row->lehrveranstaltung_bezeichnung_english; + + $wochen = $studienplan->semesterwochen; + + $xml .= "\n "; + $xml .= "\n "; + $xml .= "\n "; + $xml .= "\n ".$row->lehrveranstaltung_lvnr.""; + $xml .= "\n studiensemester_kurzbz,0,2)."]]>"; + $xml .= "\n studienplan_lehrveranstaltung_semester."]]>"; + $xml .= "\n ".$note.""; + $xml .= "\n ".($note_arr[$row->note]['positiv']?'Ja':'Nein').""; + $xml .= "\n ".($row->semesterstunden==0?'':number_format(sprintf('%.1F',$row->semesterstunden/$wochen),1)).""; + $ectspunkte=''; + + if($row->ects==0 || $row->ects=='') + $ectspunkte=''; + else + { + //Bei 2 Nachkommastellen beide anzeigen, sonst nur 1 + if(number_format($row->ects,1)==number_format($row->ects,2)) + $ectspunkte=number_format($row->ects,1); + else + $ectspunkte=number_format($row->ects,2); + } + $ects_gesamt+=$ectspunkte; + + if($note_arr[$row->note]['positiv']) + $ects_absolviert+=$ectspunkte; + + $xml .= "\n ".$ectspunkte.""; + $xml .= "\n ".$row->lv_lehrform_kurzbz.""; + + if(isset($obj['childs'])) + { + foreach($obj['childs'] as $row_childs) + { + $xml.=getLVRow($row_childs); + } + } + + $xml .= "\n "; + } + + return $xml; +} +?> diff --git a/system/vorlage_zip/Erfolgsnachweis.odt b/system/vorlage_zip/Erfolgsnachweis.odt new file mode 100644 index 000000000..73eb0ec81 Binary files /dev/null and b/system/vorlage_zip/Erfolgsnachweis.odt differ diff --git a/system/xsl/FHB_erfolgsnachweis_0_v1.xsl b/system/xsl/FHB_erfolgsnachweis_0_v1.xsl new file mode 100755 index 000000000..cb6a2a097 --- /dev/null +++ b/system/xsl/FHB_erfolgsnachweis_0_v1.xsl @@ -0,0 +1,577 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lehrveranstaltungen + + + + + LV-Art + + + Sem. + + + SWS + + + ECTS + + + Note + + + Grade + + + + + + + + + + + + + + ECTS absolviert + + + + + + + + + + + + + + + + + + + ECTS verpflichtend + + + + + + + + + + + + + + + + + Legende: WS=Wintersemester, SS=Sommersemester, SWS=Semesterwochenstunden, LV-Art=Lehrveranstaltungsart, VO=Vorlesung, UE=Übung, BP=Praktikum, SE=Seminar, EX=Exkursion, PT=Projekt, AWPF=Wahlpflichtfach, RU=Rechenübung, ILV=integr. LV, LB=Laborübung, PS=Proseminar, WK=Workshop, WA=Wiss. Arbeit, WP=Wirtschaftspraktikum, MT=Managementtechniken, MODUL=gemeinsame Bewertung mehrerer Lehrveranstaltungen mit einer Modulnote + + 1 SWS=15 Lehrveranstaltungsstunden, m.E.tg.=mit Erfolg teilgenommen, o.E.tg.=ohne Erfolg teilgenommen + Nationale Beurteilung: 1=Sehr Gut, 2=Gut, 3=Befriedigend, 4=Genügend, 5=Nicht Genügend + Internationale Beurteilung (ECTS Notenskala): A/B=Sehr Gut, C=Gut, D=Befriedigend, E=Genügend, F=Nicht Genügend + + + Pinkafeld, am + + + + + + + + + + + + + + + + + Leitung Fachhochschul-Studiengang + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TODO + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + TODO + + + + + diff --git a/system/xsl/FHB_erfolgsnachweis_head_0.xsl b/system/xsl/FHB_erfolgsnachweis_head_0.xsl new file mode 100755 index 000000000..fc24224a8 --- /dev/null +++ b/system/xsl/FHB_erfolgsnachweis_head_0.xsl @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Erfolgsnachweis + Fachhochschul-Masterstudiengang + + Studienjahr + + + + + + + + + Zuname: + + + + + + Personenkennzeichen: + + + + + + + + Vorname: + + + + + + Studienjahr: + + + + + + + + Geburtsdatum: + + + + + + + + + + + + + + + + + + +