mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
0bc0a09bf4
- application/extensions file system permission now is 775 - application/logs file system permission now is 775 - Added extensions directory in application/: config, controllers, helpers, hooks, libraries, models, views and widgets - Added view views/extensions/manage.php - Added controller controllers/system/extensions/Manager.php - Added library ExtensionsLib to manage extensions - Added model models/system/Extensions_model.php - Moved code related to print out info from MigrationLib to EPrintfLib
312 lines
11 KiB
PHP
312 lines
11 KiB
PHP
<?php
|
|
/* Copyright (C) 2014 fhcomplete.org
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
|
|
*/
|
|
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 version='1.0' encoding='UTF-8' standalone='yes'?>";
|
|
$xml .= "<zeugnisse>";
|
|
|
|
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 <zeugnis>";
|
|
$xml .= "\n <semester>".$ausbildungssemester."</semester>";
|
|
$xml .= "\n <studienjahr>".$studienjahr."</studienjahr>";
|
|
$xml .= "\n <student_studienjahr>".$student_studienjahr."</student_studienjahr>";
|
|
$xml .= "\n <studiengang>".$studienordnung->studiengangbezeichnung."</studiengang>";
|
|
$xml .= "\n <studiengang_englisch>".$studienordnung->studiengangbezeichnung_englisch."</studiengang_englisch>";
|
|
$xml .= "\n <studiengang_typ>".$studiengang->typ."</studiengang_typ>";
|
|
$xml .= "\n <studiengang_kz>".sprintf('%04s', abs($studiengang->studiengang_kz))."</studiengang_kz>";
|
|
$xml .= "\n <anrede>".$student->anrede."</anrede>";
|
|
$xml .= "\n <vorname>".$student->vorname."</vorname>";
|
|
$xml .= "\n <nachname>".$student->nachname."</nachname>";
|
|
$xml .= "\n <name>".trim($student->titelpre.' '.trim($student->vorname.' '.$student->vornamen).' '.mb_strtoupper($student->nachname).($student->titelpost!=''?', '.$student->titelpost:''))."</name>";
|
|
$gebdatum = date('d.m.Y',strtotime($student->gebdatum));
|
|
$xml .= "\n <gebdatum>".$gebdatum."</gebdatum>";
|
|
$xml .= "\n <personenkennzeichen>".$student->matrikelnr."</personenkennzeichen>";
|
|
$xml .= "\n <studiengangsleiter>".$stgl."</studiengangsleiter>";
|
|
$datum_aktuell = date('d.m.Y');
|
|
$xml .= "\n <datum_aktuell>".$datum_aktuell."</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>".$ects_gesamt."</ects_gesamt>";
|
|
$xml .= "<ects_absolviert>".$ects_absolviert."</ects_absolviert>";
|
|
$xml .= " </zeugnis>";
|
|
}
|
|
$xml .= "</zeugnisse>";
|
|
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 <unterrichtsfach>";
|
|
$xml .= "\n <bezeichnung><![CDATA[".$bezeichnung."]]></bezeichnung>";
|
|
$xml .= "\n <bezeichnung_englisch><![CDATA[".$bezeichnung_englisch."]]></bezeichnung_englisch>";
|
|
$xml .= "\n <lvnr>".$row->lehrveranstaltung_lvnr."</lvnr>";
|
|
$xml .= "\n <stsem_kurz><![CDATA[".$stsem_kurz."]]></stsem_kurz>";
|
|
$xml .= "\n <semester><![CDATA[".$row->studienplan_lehrveranstaltung_semester."]]></semester>";
|
|
$xml .= "\n <note>".$note."</note>";
|
|
$xml .= "\n <noteidx>".$row->note."</noteidx>";
|
|
$xml .= "\n <positiv>".($note_arr[$row->note]['positiv']?'Ja':'Nein')."</positiv>";
|
|
$xml .= "\n <sws>".($row->semesterstunden==0?'':number_format(sprintf('%.1F',$row->semesterstunden/$wochen),1))."</sws>";
|
|
$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 <ects>".$ectspunkte."</ects>";
|
|
$xml .= "\n <lehrform>".$row->lv_lehrform_kurzbz."</lehrform>";
|
|
|
|
if(isset($obj['childs']))
|
|
{
|
|
foreach($obj['childs'] as $row_childs)
|
|
{
|
|
$xml.=getLVRow($row_childs);
|
|
}
|
|
}
|
|
|
|
$xml .= "\n </unterrichtsfach>";
|
|
}
|
|
|
|
return $xml;
|
|
}
|
|
?>
|