*/
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();
$lehrveranstaltungen = array();
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
die('Parameter SS fehlt');
$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;
}
}
$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_kurzbz2)." 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))
{
$ausbildungssemester2 = $row_sem->semester;
}
else
{
if($ausbildungssemester/2==0)
$ausbildungssemester2=$ausbildungssemester-1;
else
$ausbildungssemester2=$ausbildungssemester+1;
}
}
$student_studienjahr = round($ausbildungssemester/2);
$jahr1=mb_substr($studiensemester_kurzbz,2);
$jahr2=mb_substr($studiensemester_kurzbz2,2);
$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;
}
$durchlauf=0;
// Zweimal durchlaufen weil sonst manche Submodule nicht richtig erfasst werden
while($durchlauf<2)
{
foreach($obj->result as $row)
{
// Nur die betreffenden Semester mitnehmen da sonst ein durcheinander entsteht wenn die gleiche LV in verschiedenen Semester in unterschiedlichen
// Modulen verwendet wird
if($row->studienplan_lehrveranstaltung_semester==$ausbildungssemester || $row->studienplan_lehrveranstaltung_semester==$ausbildungssemester2)
{
//Gruppieren der Module
//$lvs['1']['childs']['2']=$obj;
if($row->studienplan_lehrveranstaltung_id_parent=='') // 1. Ebene (Module)
{
$lehrveranstaltungen[$row->lehrveranstaltung_id]['data']=$row;
}
else
{
// 2. Ebene
if(isset($stpllv[$row->studienplan_lehrveranstaltung_id_parent]) && isset($lehrveranstaltungen[$stpllv[$row->studienplan_lehrveranstaltung_id_parent]]))
{
$lehrveranstaltungen[$stpllv[$row->studienplan_lehrveranstaltung_id_parent]]['childs'][$row->lehrveranstaltung_id]['data'] = $row;
}
else
{
// 3. Ebene
foreach($lehrveranstaltungen as $key=>$row_module)
{
if(isset($stpllv[$row->studienplan_lehrveranstaltung_id_parent]) && 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;
}
}
}
}
}
}
$durchlauf++;
}
$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;
$stsem_kurz = mb_substr($row->studiensemester_kurzbz,0,2);
if($stsem_kurz=='')
{
// Das Studiensemester kommt aus der Note, wenn keine Note vorhanden ist,
// wird SS und WS aufgrund der Semesterzuteilung der LV ermittelt
// TODO passt nicht wenn studiengang im Sommersemester startet
$stsem_kurz= ($row->studienplan_lehrveranstaltung_semester%2==0?'SS':'WS');
}
$xml .= "\n ";
$xml .= "\n ";
$xml .= "\n ";
$xml .= "\n ".$row->lehrveranstaltung_lvnr."";
$xml .= "\n ";
$xml .= "\n studienplan_lehrveranstaltung_semester."]]>";
$xml .= "\n ".$note."";
$xml .= "\n ".$row->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);
}
if($row->lv_lehrform_kurzbz!='MOD')
$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;
}
?>