mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
826 lines
25 KiB
PHP
826 lines
25 KiB
PHP
<?php
|
|
/*
|
|
* Copyright 2013 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., 51 Franklin Street, Fifth Floor, Boston,
|
|
* MA 02110-1301, USA.
|
|
*
|
|
*
|
|
* Authors: Andreas Österreicher <andreas.oesterreicher@technikum-wien.at>
|
|
* Stefan Puraner <stefan.puraner@technikum-wien.at>
|
|
*
|
|
* Zeigt den Studienplan eines Studierenden an
|
|
* und bietet die Möglichkeit zur Anmeldung zu Lehrveranstaltungen.
|
|
* Dabei werden Regeln und Anmeldezeiträume der Lehrveranstaltungen berücksichtigt.
|
|
*/
|
|
require_once('../../../config/cis.config.inc.php');
|
|
require_once('../../../config/global.config.inc.php');
|
|
require_once('../../../include/functions.inc.php');
|
|
require_once('../../../include/studienordnung.class.php');
|
|
require_once('../../../include/studienplan.class.php');
|
|
require_once('../../../include/lvregel.class.php');
|
|
require_once('../../../include/studiensemester.class.php');
|
|
require_once('../../../include/lehrveranstaltung.class.php');
|
|
require_once('../../../include/prestudent.class.php');
|
|
require_once('../../../include/zeugnisnote.class.php');
|
|
require_once('../../../include/lvangebot.class.php');
|
|
require_once('../../../include/datum.class.php');
|
|
require_once('../../../include/phrasen.class.php');
|
|
require_once('../../../include/note.class.php');
|
|
require_once('../../../include/benutzerberechtigung.class.php');
|
|
require_once('../../../include/benutzergruppe.class.php');
|
|
require_once('../../../include/konto.class.php');
|
|
require_once('../../../include/lvinfo.class.php');
|
|
require_once('../../../include/addon.class.php');
|
|
require_once('../../../include/anrechnung.class.php');
|
|
|
|
$uid = get_uid();
|
|
|
|
if(isset($_GET['uid']))
|
|
{
|
|
// Administratoren duerfen die UID als Parameter uebergeben um den Studienplan
|
|
// von anderen Personen anzuzeigen
|
|
|
|
$rechte = new benutzerberechtigung();
|
|
$rechte->getBerechtigungen($uid);
|
|
if($rechte->isBerechtigt('admin'))
|
|
$uid=$_GET['uid'];
|
|
}
|
|
|
|
$p = new phrasen(getSprache());
|
|
$datum_obj = new datum();
|
|
$db = new basis_db();
|
|
|
|
if(isset($_GET['getAnmeldung']))
|
|
{
|
|
// Liefert das Formular zur Anmeldung zu Lehrveranstaltungen zurueck
|
|
|
|
$lehrveranstaltung_id=$_GET['lehrveranstaltung_id'];
|
|
$stsem = $_GET['stsem'];
|
|
$semester = $_GET['semester'];
|
|
$studienplan_id = $_GET['studienplan_id'];
|
|
|
|
echo $p->t('studienplan/LehrveranstalungWaehlen').'
|
|
<form action="'.$_SERVER['PHP_SELF'].'?uid='.$db->convert_html_chars($uid).'" method="POST">
|
|
<input type="hidden" name="action" value="anmeldung" />
|
|
<input type="hidden" name="stsem" value="'.$db->convert_html_chars($stsem).'" />';
|
|
$lehrveranstaltung = new lehrveranstaltung();
|
|
$anzahl=0;
|
|
|
|
// Die Anmeldung ist zur Lehrveranstaltung selbst und zu den dazu kompatiblen Lehrveranstaltungen moeglich
|
|
$kompatibel = $lehrveranstaltung->loadLVkompatibel($lehrveranstaltung_id);
|
|
|
|
$datum = new datum();
|
|
$kompatibel[]=$lehrveranstaltung_id;
|
|
$kompatibel = array_unique($kompatibel);
|
|
$stsem_obj = new studiensemester();
|
|
$aktornext = $stsem_obj->getaktorNext();
|
|
|
|
$lvregel = new lvregel();
|
|
foreach($kompatibel as $lvid)
|
|
{
|
|
$lvangebot = new lvangebot();
|
|
$lvangebot->getAllFromLvId($lvid, $stsem);
|
|
if(isset($lvangebot->result[0]))
|
|
{
|
|
$lv = new lehrveranstaltung();
|
|
$lv->load($lvid);
|
|
|
|
$angebot = $lvangebot->result[0];
|
|
if($angebot->AnmeldungMoeglich())
|
|
{
|
|
$kompatible_lv = $lehrveranstaltung->getStudienplanLehrveranstaltung($lvid, $studienplan_id);
|
|
|
|
$lvregelExists = false;
|
|
$abgeschlossen = false;
|
|
$semesterlock = false;
|
|
$regelerfuellt = true;
|
|
if ($kompatible_lv)
|
|
{
|
|
$lvregelExists = $lvregel->exists($kompatible_lv);
|
|
if($lvregelExists)
|
|
{
|
|
if($lvregel->isAbgeschlossen($uid, $kompatible_lv))
|
|
$abgeschlossen=true;
|
|
else
|
|
$abgeschlossen=false;
|
|
}
|
|
|
|
if(!$lvregel->checkSemester($kompatible_lv, $semester))
|
|
{
|
|
$semesterlock=true;
|
|
}
|
|
else
|
|
{
|
|
if($stsem === $aktornext)
|
|
{
|
|
$result = $lvregel->isZugangsberechtigt($uid, $kompatible_lv, $stsem);
|
|
if((is_array($result)) && ($result[0] !== true))
|
|
{
|
|
$regelerfuellt=false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!(($lvregelExists && !$abgeschlossen) || $semesterlock || !$regelerfuellt))
|
|
{
|
|
$anzahl++;
|
|
// LV wird angeboten und Anmeldefenster ist offen
|
|
|
|
$bngruppe = new benutzergruppe();
|
|
if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem))
|
|
{
|
|
// User ist noch nicht angemeldet
|
|
echo '<br><input type="radio" value="'.$lvid.'" name="lv"/>'.$lv->bezeichnung.' (Anmeldung bis '.$datum->formatDatum($angebot->anmeldefenster_ende,"d.m.Y").')';
|
|
}
|
|
else
|
|
{
|
|
// Bereits angemeldet
|
|
echo '<br><input type="radio" disabled="true" value="'.$lvid.'" name="lv" /><span class="ok">'.$lv->bezeichnung.'</span><img src="../../../skin/images/information.png" title="'.$p->t('studienplan/bereitsAngemeldet').'"/>';
|
|
}
|
|
}
|
|
|
|
}
|
|
/* else
|
|
{
|
|
// LV wird angeboten, Anmeldefenster ist aber nicht offen oder keine Gruppe zugeteilt
|
|
echo '<br><input type="radio" disabled="true" value="'.$lvid.'" name="lv" /><span style="color:gray;">'.$lv->bezeichnung.'</span><img src="../../../skin/images/information.png" title="'.$angebot->errormsg.'" />';
|
|
}*/
|
|
}
|
|
}
|
|
|
|
if($anzahl>0)
|
|
echo '<br><br><input type="submit" value="'.$p->t('studienplan/anmelden').'" /></form>';
|
|
else
|
|
echo '<br><br>'.$p->t('studienplan/AnmeldungDerzeitNichtMoeglich');
|
|
exit();
|
|
}
|
|
echo '<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>'.$p->t('studienplan/studienplan').'</title>
|
|
<link rel="stylesheet" href="../../../skin/fhcomplete.css" />
|
|
<link rel="stylesheet" href="../../../skin/style.css.php" />
|
|
<link rel="stylesheet" href="../../../skin/jquery.css" />
|
|
<link rel="stylesheet" href="../../../skin/jquery-ui-1.9.2.custom.min.css" />
|
|
<script type="text/javascript" src="../../../vendor/jquery/jquery1/jquery-1.12.4.min.js"></script>
|
|
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
|
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
|
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
|
';
|
|
|
|
// ADDONS laden
|
|
$addon_obj = new addon();
|
|
$addon_obj->loadAddons();
|
|
foreach($addon_obj->result as $addon)
|
|
{
|
|
if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php'))
|
|
echo '<script type="application/x-javascript" src="../../../addons/'.$addon->kurzbz.'/cis/init.js.php" ></script>';
|
|
}
|
|
|
|
// Wenn Seite fertig geladen ist Addons aufrufen
|
|
echo '
|
|
<script>
|
|
$( document ).ready(function()
|
|
{
|
|
if(typeof addon !== \'undefined\')
|
|
{
|
|
for(i in addon)
|
|
{
|
|
addon[i].init("cis/private/profile/studienplan.php", {});
|
|
}
|
|
}
|
|
});
|
|
</script>
|
|
';
|
|
|
|
echo '
|
|
<script type="text/javascript">
|
|
$(document).ready(function() {
|
|
$("#dialog").dialog({ autoOpen: false, width: "auto" });
|
|
});
|
|
|
|
function OpenAnmeldung(lehrveranstaltung_id, stsem, semester, studienplan_id)
|
|
{
|
|
$("#dialog").load("studienplan.php?getAnmeldung=true&lehrveranstaltung_id="+lehrveranstaltung_id+"&stsem="+stsem+"&semester="+semester+"&studienplan_id="+studienplan_id+"&uid='.$db->convert_html_chars($uid).'");
|
|
$("#dialog").dialog("open");
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="dialog" title="'.$p->t('studienplan/Anmeldung').'">'.$p->t('studienplan/Anmeldung').'</div>
|
|
';
|
|
|
|
if(isset($_POST['action']) && $_POST['action']=='anmeldung')
|
|
{
|
|
$lehrveranstaltung_id = $_POST['lv'];
|
|
$stsem = $_POST['stsem'];
|
|
|
|
$lvangebot = new lvangebot();
|
|
$lvangebot->getAllFromLvId($lehrveranstaltung_id, $stsem);
|
|
|
|
if(isset($lvangebot->result[0]))
|
|
{
|
|
if($lvangebot->result[0]->AnmeldungMoeglich())
|
|
{
|
|
// Benutzer einschreiben
|
|
$bngruppe = new benutzergruppe();
|
|
|
|
if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem))
|
|
{
|
|
$bngruppe->uid = $uid;
|
|
$bngruppe->gruppe_kurzbz = $lvangebot->result[0]->gruppe_kurzbz;
|
|
$bngruppe->studiensemester_kurzbz = $stsem;
|
|
$bngruppe->new=true;
|
|
if($bngruppe->save())
|
|
{
|
|
echo '<span class="ok">'.$p->t('studienplan/einschreibungErfolgreich').'</span>';
|
|
// Menue neu Laden damit die LV unter Meine LV gleich angezeigt wird
|
|
echo '<script>window.parent.menu.location.reload();</script>';
|
|
}
|
|
}
|
|
else
|
|
{
|
|
echo '<span class="error">'.$p->t('studienplan/bereitsAngemeldet').'</span>';
|
|
}
|
|
}
|
|
else
|
|
echo $lvangebot->result[0]->errormsg;
|
|
}
|
|
else
|
|
echo $p->t('studienplan/AnmeldungNichtMoeglich');
|
|
}
|
|
|
|
$db = new basis_db();
|
|
$datum_obj = new datum();
|
|
// Student Laden
|
|
$student = new student();
|
|
$student->load($uid);
|
|
|
|
// ersten Status holen
|
|
$prestudent = new prestudent();
|
|
$prestudent->getFirstStatus($student->prestudent_id, 'Student');
|
|
|
|
$studiensemester_start = $prestudent->studiensemester_kurzbz;
|
|
$ausbildungssemester_start = $prestudent->ausbildungssemester;
|
|
$orgform_kurzbz = $prestudent->orgform_kurzbz;
|
|
|
|
$prestudent->getLastStatus($student->prestudent_id, '', 'Student');
|
|
$studienplan_id = $prestudent->studienplan_id;
|
|
|
|
$studienplan = new studienplan();
|
|
$studienplan->loadStudienplan($studienplan_id);
|
|
|
|
// Studienplan laden
|
|
$lehrveranstaltung = new lehrveranstaltung();
|
|
$lehrveranstaltung->loadLehrveranstaltungStudienplan($studienplan_id);
|
|
$tree = $lehrveranstaltung->getLehrveranstaltungTree();
|
|
|
|
|
|
/*
|
|
Vom Semesterstart des Studierenden ausgehend werden die Studiensemester geladen.
|
|
Es werden mindestens so viele Studiensemester geladen wie die Regelstudiendauer des
|
|
Studienplanes angibt.
|
|
*/
|
|
// Angezeigte Studiensemester holen
|
|
$stsem = new studiensemester();
|
|
$stsem_arr[0]=$studiensemester_start;
|
|
$studiensemester_prev=$studiensemester_start;
|
|
for($i=1;$i<$studienplan->regelstudiendauer;$i++)
|
|
{
|
|
$stsem_arr[$i]=$stsem->getNextFrom($studiensemester_prev);
|
|
$studiensemester_prev=$stsem_arr[$i];
|
|
}
|
|
|
|
/*
|
|
Wenn Studierende ueber der Regelstudiendauer hinaus studierenen, wird das aktuelle Studiensemester
|
|
nicht angezeigt. Deshalb wird in solchen faellen immer bis zum aktuellen+2 Studiensemester geladen.
|
|
*/
|
|
$stsem_obj = new studiensemester();
|
|
$aktornext = $stsem_obj->getaktorNext();
|
|
$stsemToShow = $stsem_obj->jump($aktornext,2);
|
|
|
|
if(!in_array($stsemToShow,$stsem_arr))
|
|
{
|
|
for($i=count($stsem_arr);$i<50;$i++)
|
|
{
|
|
if(!$stsem_arr[$i]=$stsem->getNextFrom($studiensemester_prev))
|
|
{
|
|
unset($stsem_arr[$i]);
|
|
break;
|
|
}
|
|
$studiensemester_prev=$stsem_arr[$i];
|
|
if($stsemToShow==$studiensemester_prev)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Noten des Studierenden holen
|
|
$noten_arr=array();
|
|
$zeugnisnote = new zeugnisnote();
|
|
if($zeugnisnote->getZeugnisnoten('',$uid,''))
|
|
{
|
|
foreach($zeugnisnote->result as $row_note)
|
|
{
|
|
if($row_note->note!='')
|
|
{
|
|
$noten_arr[$row_note->lehrveranstaltung_id][$row_note->studiensemester_kurzbz]=$row_note->note;
|
|
}
|
|
}
|
|
}
|
|
|
|
$note_pruef_arr = array();
|
|
$note = new note();
|
|
$note->getAll();
|
|
foreach($note->result as $row_note)
|
|
$note_pruef_arr[$row_note->note]=$row_note;
|
|
|
|
// LV Angebot holen
|
|
$lvangebot_arr = array();
|
|
$lvangebot = new lvangebot();
|
|
$lvangebot->getLVAngebotFromStudienplan($studienplan_id, $stsem_arr,true);
|
|
foreach($lvangebot->result as $row_lvangebot)
|
|
$lvangebot_arr[$row_lvangebot->lehrveranstaltung_id][$row_lvangebot->studiensemester_kurzbz]=$row_lvangebot;
|
|
|
|
// LVs des Studienplans laden
|
|
$lv_arr = array();
|
|
$lv = new lehrveranstaltung();
|
|
$lv->loadLehrveranstaltungStudienplan($studienplan_id);
|
|
foreach($lv->lehrveranstaltungen as $row_lva)
|
|
$lv_arr[$row_lva->lehrveranstaltung_id]=$row_lva;
|
|
|
|
// Anrechnungen laden
|
|
$anrechnung = new anrechnung();
|
|
$anrechnung->getAnrechnungPrestudent($student->prestudent_id);
|
|
|
|
echo '<h1>'.$p->t('studienplan/studienplan').": $studienplan->bezeichnung ($studienplan_id) - $student->vorname $student->nachname ( $student->uid )</h1>";
|
|
|
|
echo '<table style="border: 1px solid black">
|
|
<thead>
|
|
<tr style="border: 1px solid black" valign="top">
|
|
<th>'.$p->t('global/lehrveranstaltung').'</th>';
|
|
|
|
if(CIS_STUDIENPLAN_SEMESTER_ANZEIGEN)
|
|
echo '<th>'.$p->t('global/semester').'</th>';
|
|
|
|
echo '<th>'.$p->t('studienplan/ects').'</th>
|
|
<th>'.$p->t('studienplan/status').'</th>';
|
|
|
|
foreach($stsem_arr as $stsem)
|
|
{
|
|
echo '<th>';
|
|
|
|
echo $stsem;
|
|
$konto = new konto();
|
|
$cp = $konto->getCreditPoints($uid, $stsem);
|
|
if($cp!==false)
|
|
echo '<span title="'.$p->t('studienplan/reduzierteCP',array($cp)).'" ><br><img src="../../../skin/images/information.png" alt="Information"/></span>';
|
|
echo '</th>';
|
|
}
|
|
echo '
|
|
</tr>
|
|
</thead>
|
|
<tbody>';
|
|
|
|
// Lehrveranstaltungen anzeigen
|
|
drawTree($tree,0);
|
|
|
|
function drawTree($tree, $depth)
|
|
{
|
|
global $uid, $stsem_arr, $noten_arr, $lvangebot_arr, $aktornext, $studienplan_id;
|
|
global $datum_obj, $db, $lv_arr, $p, $note_pruef_arr, $student;
|
|
global $anrechnung;
|
|
|
|
foreach($tree as $row_tree)
|
|
{
|
|
$style='';
|
|
if(!empty($row_tree->childs))
|
|
{
|
|
$bstart='<b>';$bende='</b>';
|
|
$style=' style="background-color:#EEEEEE"';
|
|
}
|
|
else
|
|
{
|
|
$bstart='';$bende='';
|
|
}
|
|
|
|
switch($row_tree->lehrtyp_kurzbz)
|
|
{
|
|
case 'modul':
|
|
$icon='<img src="../../../skin/images/modul.png"> ';
|
|
$style=' style="background-color:#CCCCCC"';
|
|
$termine='';
|
|
break;
|
|
case 'lv':
|
|
$icon='<img src="../../../skin/images/lv.png"> ';
|
|
if (!defined('CIS_STUDIENPLAN_LVPLANLINK_ANZEIGEN') || CIS_STUDIENPLAN_LVPLANLINK_ANZEIGEN)
|
|
$termine="<a href='../lvplan/stpl_week.php?type=lva&lva=" . $row_tree->lehrveranstaltung_id . "' target='_blank'><img src='../../../skin/images/date_magnify.png' title='Termine' alt='Termine'></a>";
|
|
break;
|
|
default:
|
|
$icon='';
|
|
}
|
|
|
|
|
|
echo '<tr'.$style.'>
|
|
<td>'.$bstart;
|
|
|
|
// Einrückung für Subtree
|
|
for($i=0;$i<$depth;$i++)
|
|
echo ' ';
|
|
|
|
$lvkompatibel = new lehrveranstaltung();
|
|
$lvkompatibel_arr = $lvkompatibel->loadLVkompatibel($row_tree->lehrveranstaltung_id);
|
|
$lvkompatibel_arr[]=$row_tree->lehrveranstaltung_id;
|
|
|
|
$abgeschlossen=false;
|
|
$lvregel = new lvregel();
|
|
$lvregelExists = $lvregel->exists($row_tree->studienplan_lehrveranstaltung_id);
|
|
if($lvregelExists)
|
|
{
|
|
if($lvregel->isAbgeschlossen($uid, $row_tree->studienplan_lehrveranstaltung_id))
|
|
$abgeschlossen=true;
|
|
else
|
|
$abgeschlossen=false;
|
|
}
|
|
$lvinfo = new lvinfo();
|
|
switch(getSprache())
|
|
{
|
|
case 'German':
|
|
$sprache = 'de';
|
|
break;
|
|
case 'English':
|
|
$sprache = 'en';
|
|
break;
|
|
default:
|
|
$sprache = 'de';
|
|
}
|
|
if($lvinfo->exists($row_tree->lehrveranstaltung_id, getSprache()))
|
|
echo $icon." ".$termine." <a href=\"#\" class='Item' onClick=\"javascript:window.open('../lehre/ects/preview.php?lv=$row_tree->lehrveranstaltung_id&language=$sprache','Lehrveranstaltungsinformation','width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes');\">".$row_tree->kurzbz.' - '.$row_tree->bezeichnung."</a>";
|
|
else
|
|
// Bezeichnung der Lehrveranstaltung
|
|
echo $icon." ".$termine." ".$row_tree->kurzbz.' - '.$row_tree->bezeichnung.' ('.$row_tree->lehrveranstaltung_id.')';
|
|
echo $bende.'</td>';
|
|
|
|
// Semester
|
|
if(CIS_STUDIENPLAN_SEMESTER_ANZEIGEN)
|
|
echo '<td>'.$row_tree->semester.'</td>';
|
|
|
|
// ECTS Punkte
|
|
echo '<td>'.$row_tree->ects.'</td>';
|
|
|
|
// Status der LV (absolviert, offen)
|
|
echo '<td>';
|
|
|
|
// Note zu dieser LV vorhanden?
|
|
|
|
$lv_kompatibel = new lehrveranstaltung();
|
|
$kompatibleLVs = $lv_kompatibel->loadLVkompatibel($row_tree->lehrveranstaltung_id);
|
|
|
|
if(isset($noten_arr[$row_tree->lehrveranstaltung_id]))
|
|
{
|
|
// Positive Note fuer diese LV vorhanden?
|
|
$positiv=false;
|
|
foreach($noten_arr[$row_tree->lehrveranstaltung_id] as $note)
|
|
{
|
|
if($note_pruef_arr[$note]->positiv)
|
|
$positiv=true;
|
|
}
|
|
|
|
if(!$positiv)
|
|
{
|
|
//echo '<span class="error">'.$p->t('studienplan/negativ').'</span>';
|
|
if(count($kompatibleLVs) > 0)
|
|
{
|
|
checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid, true);
|
|
}
|
|
else
|
|
{
|
|
echo '<span class="error">'.$p->t('studienplan/negativ').'</span>';
|
|
}
|
|
}
|
|
elseif($positiv)
|
|
{
|
|
echo '<span class="ok">'.$p->t('studienplan/abgeschlossen').'</span>';
|
|
}
|
|
elseif($lvregelExists)
|
|
{
|
|
if($abgeschlossen || $positiv)
|
|
{
|
|
echo '<span class="ok">'.$p->t('studienplan/abgeschlossen').'</span>';
|
|
}
|
|
else
|
|
{
|
|
if ($row_tree->benotung)
|
|
echo '<span>'.$p->t('studienplan/offen').'</span>';
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ($row_tree->benotung)
|
|
echo '<span>'.$p->t('studienplan/offen').'</span>';
|
|
}
|
|
}
|
|
//check if compatible course has grade
|
|
elseif(count($kompatibleLVs) > 0)
|
|
{
|
|
checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid);
|
|
}
|
|
else
|
|
{
|
|
if(!$row_tree->stpllv_pflicht)
|
|
{
|
|
echo '<span>'.$p->t('studienplan/optional').'</span>';
|
|
}
|
|
else
|
|
{
|
|
if ($row_tree->benotung)
|
|
echo '<span>'.$p->t('studienplan/offen').'</span>';
|
|
}
|
|
}
|
|
echo '</td>';
|
|
|
|
// Spalten für die einzelnen Studiensemester
|
|
foreach($stsem_arr as $key=>$stsem)
|
|
{
|
|
$semester=$key+1;
|
|
|
|
$tdclass=array();
|
|
//Empfehlung holen
|
|
// if(isset($lv_arr[$row_tree->lehrveranstaltung_id]))
|
|
// {
|
|
// $empfohlenesSemester = $lv_arr[$row_tree->lehrveranstaltung_id]->semester;
|
|
// if($semester==$empfohlenesSemester)
|
|
// $tdclass[]='empfehlung';
|
|
// }
|
|
|
|
$tdinhalt='';
|
|
$found = false;
|
|
|
|
// Ist bereits eine Note für diese LV in diesem Stsem vorhanden?
|
|
if(isset($noten_arr[$row_tree->lehrveranstaltung_id][$stsem]))
|
|
{
|
|
if($note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->positiv)
|
|
$tdinhalt .= '<span class="ok">'.$note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->anmerkung.'</span>';
|
|
else
|
|
$tdinhalt .= '<span class="error">'.$note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->anmerkung.'</span>';
|
|
$found=true;
|
|
}
|
|
elseif(count($kompatibleLVs) > 0)
|
|
{
|
|
$i = 0;
|
|
while(!$found && $i < count($kompatibleLVs))
|
|
{
|
|
foreach($kompatibleLVs as $komp)
|
|
{
|
|
if(count($anrechnung->result))
|
|
{
|
|
foreach($anrechnung->result as $row)
|
|
{
|
|
$lv = $row->lehrveranstaltung_id_kompatibel;
|
|
if(isset($noten_arr[$lv][$stsem]) && $lv == $komp && $row_tree->lehrveranstaltung_id == $row->lehrveranstaltung_id)
|
|
{
|
|
$found = true;
|
|
if($note_pruef_arr[$noten_arr[$lv][$stsem]]->positiv)
|
|
$tdinhalt .= '<span class="ok">'.$note_pruef_arr[$noten_arr[$lv][$stsem]]->anmerkung.'</span>';
|
|
else
|
|
$tdinhalt .= '<span class="error">'.$note_pruef_arr[$noten_arr[$lv][$stsem]]->anmerkung.'</span>';
|
|
}
|
|
}
|
|
|
|
}
|
|
$i++;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!$found)
|
|
{
|
|
// Angebot der LV und der Kompatiblen pruefen
|
|
$anmeldungmoeglich=false;
|
|
$angemeldet=false;
|
|
$semesterlock=false;
|
|
$regelerfuellt=true;
|
|
$anmeldeinformation='';
|
|
$angebot_vorhanden=false;
|
|
|
|
// Regeln Pruefen
|
|
$lvregel = new lvregel();
|
|
|
|
// Pruefen ob Semestersperre vorhanden ist
|
|
if(!$lvregel->checkSemester($row_tree->studienplan_lehrveranstaltung_id, $semester))
|
|
{
|
|
$semesterlock=true;
|
|
}
|
|
else
|
|
{
|
|
//check if rules are fulfilled just for actual or next studiensemester
|
|
if($stsem === $aktornext)
|
|
{
|
|
$result = $lvregel->isZugangsberechtigt($uid, $row_tree->studienplan_lehrveranstaltung_id, $stsem);
|
|
if((is_array($result)) && ($result[0] !== true))
|
|
{
|
|
$regelerfuellt=false;
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach($lvkompatibel_arr as $row_lvid)
|
|
{
|
|
// Angebot der LV pruefen
|
|
if(isset($lvangebot_arr[$row_lvid])
|
|
&& isset($lvangebot_arr[$row_lvid][$stsem]))
|
|
{
|
|
$angebot_vorhanden=true;
|
|
// LV findet statt
|
|
$angebot = $lvangebot_arr[$row_lvid][$stsem];
|
|
|
|
if($angebot->gruppe_kurzbz!='')
|
|
{
|
|
// Pruefen ob bereits angemeldet
|
|
$bngruppe = new benutzergruppe();
|
|
if($bngruppe->load($uid, $angebot->gruppe_kurzbz, $stsem))
|
|
{
|
|
// Bereits angemeldet
|
|
$angemeldet=true;
|
|
}
|
|
}
|
|
|
|
// Pruefen ob eine Anmeldung möglich ist
|
|
if($angebot->AnmeldungMoeglich())
|
|
{
|
|
if(!$angemeldet)
|
|
$anmeldungmoeglich=true;
|
|
}
|
|
else
|
|
$anmeldeinformation.=$angebot->errormsg;
|
|
}
|
|
}
|
|
|
|
if($semesterlock)
|
|
{
|
|
$tdinhalt.= '<img src="../../../skin/images/not-available.png" title="'.$p->t('studienplan/anmeldunggesperrt').'">';
|
|
}
|
|
else
|
|
{
|
|
if($angebot_vorhanden)
|
|
{
|
|
$tdclass[]='angebot';
|
|
if($angemeldet)
|
|
{
|
|
$tdinhalt.= '<a href="#" onclick="OpenAnmeldung(\''.$row_tree->lehrveranstaltung_id.'\',\''.$stsem.'\',\''.$semester.'\',\''.$studienplan_id.'\'); return false;"><img src="../../../skin/images/ja.png" title="'.$p->t('studienplan/legendeAngemeldet').'" /></a>';
|
|
}
|
|
else
|
|
{
|
|
if($anmeldungmoeglich)
|
|
$tdinhalt.= '<a href="#" onclick="OpenAnmeldung(\''.$row_tree->lehrveranstaltung_id.'\',\''.$stsem.'\', \''.$semester.'\', \''.$studienplan_id.'\'); return false;"><img src="../../../skin/images/anmelden.png" title="'.$p->t('studienplan/anmelden').'" height="15px" /></a>';
|
|
else
|
|
$tdinhalt.= '<span title="'.$anmeldeinformation.'">-</a>';
|
|
|
|
if(!$regelerfuellt)
|
|
$tdinhalt= '<span title="'.$p->t('studienplan/regelnichterfuellt').'">X</span>';
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// LV wird nicht angeboten
|
|
$tdinhalt.= '-';
|
|
}
|
|
}
|
|
}
|
|
$class=implode(' ',$tdclass);
|
|
echo '<td align="center" class="'.$class.'">';
|
|
echo $tdinhalt;
|
|
echo '</td>';
|
|
}
|
|
echo '</tr>';
|
|
|
|
// Wenn Subtree vorhanden, dann anzeigen
|
|
if(!empty($row_tree->childs))
|
|
drawTree($row_tree->childs, $depth+1);
|
|
}
|
|
}
|
|
|
|
function checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid, $negativeNote= null)
|
|
{
|
|
global $anrechnung;
|
|
$positiv = false;
|
|
$found = false;
|
|
$i = 0;
|
|
|
|
while(!$found && $i < count($kompatibleLVs))
|
|
{
|
|
foreach($kompatibleLVs as $komp)
|
|
{
|
|
if(count($anrechnung->result))
|
|
{
|
|
foreach($anrechnung->result as $row)
|
|
{
|
|
$lv = $row->lehrveranstaltung_id_kompatibel;
|
|
if(isset($noten_arr[$lv]) && $lv == $komp && $row_tree->lehrveranstaltung_id == $row->lehrveranstaltung_id)
|
|
{
|
|
$positiv=false;
|
|
foreach($noten_arr[$lv] as $note)
|
|
{
|
|
if($note_pruef_arr[$note]->positiv)
|
|
$positiv=true;
|
|
}
|
|
|
|
$found = true;
|
|
}
|
|
else
|
|
{
|
|
/* wenn zu mehreren kompatiblen lvs eine Anrechnung existiert
|
|
* darf found nicht auf false gesetzt werden wenn es zuvor bereits auf true gesetzt wurde
|
|
*/
|
|
if(!$found)
|
|
$found = false;
|
|
}
|
|
}
|
|
}
|
|
$i++;
|
|
}
|
|
}
|
|
|
|
if($found)
|
|
{
|
|
if($positiv)
|
|
{
|
|
echo '<span class="ok">'.$p->t('studienplan/abgeschlossen').'</span>';
|
|
}
|
|
else
|
|
{
|
|
echo '<span class="error">'.$p->t('studienplan/negativ').'</span>';
|
|
}
|
|
}
|
|
elseif(!$found)
|
|
{
|
|
if(!$row_tree->stpllv_pflicht)
|
|
{
|
|
echo '<span>'.$p->t('studienplan/optional').'</span>';
|
|
}
|
|
else
|
|
{
|
|
if(($negativeNote!= null) && ($negativeNote == true))
|
|
{
|
|
echo '<span class="error">'.$p->t('studienplan/negativ').'</span>';
|
|
}
|
|
else
|
|
{
|
|
if ($row_tree->benotung)
|
|
echo '<span>'.$p->t('studienplan/offen').'</span>';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
echo '</table>';
|
|
echo '<br><br>'.$p->t('studienplan/legende').':<br>
|
|
<table>
|
|
<!--<tr>
|
|
<td><span class="empfehlung"> </span></td>
|
|
<td>'.$p->t('studienplan/legendeEmpfehlung').'</td>
|
|
</tr>-->
|
|
<tr>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="angebot"> </span></td>
|
|
<td>'.$p->t('studienplan/legendeLVwirdAngeboten').'</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><img src="../../../skin/images/anmelden.png"></td>
|
|
<td>'.$p->t('studienplan/Anmeldung').'</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><img src="../../../skin/images/ja.png"></td>
|
|
<td>'.$p->t('studienplan/legendeAngemeldet').'</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><img src="../../../skin/images/not-available.png"></td>
|
|
<td>'.$p->t('studienplan/legendeLock').'</td>
|
|
</tr>
|
|
</table>
|
|
';
|
|
|
|
echo '</body>
|
|
</html>';
|
|
?>
|