diff --git a/CHANGELOG.md b/CHANGELOG.md index 336515567..27f75aa38 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ - **[CIS]** LVPlan Export für Excel - **[FAS]** Termine Karteireiter im FAS zeigt die Anmerkung aus dem LVPlan an - **[CIS]** Onlinebewerbungstool greift auf mehrsprachige Statusbezeichnungen zu. +- **[CIS]** Config-Einträge für die Tabellenspalten beim Eintragen der Gesamtnote hinzugefügt. +- **[CIS]** Prüfungsverwaltung: Config-Eintrag hinzugefügt um die Accordion-Elemente ein- und auszublenden. ### Changed - **[FAS]** Dokumente Menü im FAS neu sortiert um den Lebenszyklus des Studierenden abzubilden @@ -18,6 +20,8 @@ - **[CIS]** LVPlan Begrenzung der 4er Blockung aufgehoben. - **[CIS]** Im Menü 'Zeitsperren' Link zu Resturlaubsübersicht entfernt. Falls benötigt Verlinkung über CMS möglich. - **[CORE]** Removed NOT NULL constraint on 'verfasser\_uid' from public.tbl\_notiz +- **[CIS]** Studienplanansicht: Wenn eine LV nicht benotet ist, aber eine kompatible LV mit vorhandener Anrechnung benotet ist wird diese Note angezeigt. +- **[FAS]** Die RDF-Schnittstelle für das Zeugnis prüft bei Anrechnungen ob, die ECTS-Punkte übereinstimmen und wählt bei ungleichen Werten jene der angerechneten LV. ### Updateinfo - **[FAS]** Für Lehraufträge muss eine Unoconv-Vorlage erstellt werden, da der für xsl-fo notwendige Seitenumbruch-Tag aus dem RDF entfernt wurde. diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index c5827b826..b91eb180d 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -840,9 +840,15 @@ echo " ".$p->t('global/uid')." ".$p->t('global/nachname')." - ".$p->t('global/vorname')." - ".($grade_from_moodle?''.$p->t('benotungstool/moodleNote').'':''.$p->t('benotungstool/leNoten').' (LE-ID)')." - ".$p->t('benotungstool/punkte').' / '.$p->t('benotungstool/note')." + ".$p->t('global/vorname').""; + + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE) + { + echo "".($grade_from_moodle?''.$p->t('benotungstool/moodleNote').'':''.$p->t('benotungstool/leNoten').' (LE-ID)').""; + } + + + echo "".$p->t('benotungstool/punkte').' / '.$p->t('benotungstool/note')." ".$p->t('benotungstool/lvNote')."
@@ -853,26 +859,38 @@ echo "
- ".$p->t('benotungstool/zeugnisnote')." - ".$p->t('benotungstool/nachpruefung').""; + ".$p->t('benotungstool/zeugnisnote').""; + + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2) + { + echo "".$p->t('benotungstool/nachpruefung').""; + } if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3) { echo "".$p->t('benotungstool/nachpruefung2').""; } + if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF) + { + echo "".$p->t('benotungstool/kommissionellePruefung').""; + } echo " - ".$p->t('benotungstool/kommissionellePruefung')." + -   - - - - - - - -
".$p->t('global/datum')."".$p->t('benotungstool/note')."
- "; +  "; + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2) + { + echo " + + + + + + +
".$p->t('global/datum')."".$p->t('benotungstool/note')."
+ "; + } + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3) { echo " @@ -885,66 +903,73 @@ echo " "; } - echo " - - - - - - - -
".$p->t('global/datum')."".$p->t('benotungstool/note')."
- + + if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF) + { + echo " + + + + + + + +
".$p->t('global/datum')."".$p->t('benotungstool/note')."
+ "; + } + echo " "; + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE) + { + if($grade_from_moodle) + { + flush(); + ob_flush(); - if($grade_from_moodle) - { - flush(); - ob_flush(); + $moodle24 = new moodle24_course(); + $moodle24->loadNoten($lvid, $stsem); - $moodle24 = new moodle24_course(); - $moodle24->loadNoten($lvid, $stsem); + $moodle24_course_bezeichnung=array(); - $moodle24_course_bezeichnung=array(); + if(count($moodle24->result)>0) + { + // Bezeichnungen der Moodlekurse laden + foreach($moodle24->result as $obj) + { + if(!isset($moodle24_course_bezeichnung[$obj->mdl_course_id])) + { + $moodle24course = new moodle24_course(); + $moodle24course->load($obj->mdl_course_id); - if(count($moodle24->result)>0) - { - // Bezeichnungen der Moodlekurse laden - foreach($moodle24->result as $obj) - { - if(!isset($moodle24_course_bezeichnung[$obj->mdl_course_id])) - { - $moodle24course = new moodle24_course(); - $moodle24course->load($obj->mdl_course_id); + $moodle24_course_bezeichnung[$obj->mdl_course_id]=$moodle24course->mdl_shortname; + } - $moodle24_course_bezeichnung[$obj->mdl_course_id]=$moodle24course->mdl_shortname; - } + if(!isset($moodle24_course_gewicht[$obj->mdl_course_id])) + { + $mdl_obj = new moodle24_course(); + $mdl_lehreinheiten=$mdl_obj->getLeFromCourse($obj->mdl_course_id); - if(!isset($moodle24_course_gewicht[$obj->mdl_course_id])) - { - $mdl_obj = new moodle24_course(); - $mdl_lehreinheiten=$mdl_obj->getLeFromCourse($obj->mdl_course_id); + foreach($mdl_lehreinheiten as $row_mdl_lehreinheit) + { + if($row_mdl_lehreinheit!='') + { + $lehreinheit_gewicht_obj = new lehreinheit(); + $lehreinheit_gewicht_obj->load($row_mdl_lehreinheit); - foreach($mdl_lehreinheiten as $row_mdl_lehreinheit) - { - if($row_mdl_lehreinheit!='') - { - $lehreinheit_gewicht_obj = new lehreinheit(); - $lehreinheit_gewicht_obj->load($row_mdl_lehreinheit); - - if($lehreinheit_gewicht_obj->gewicht!='') - { - $moodle24_course_gewicht[$obj->mdl_course_id]=$lehreinheit_gewicht_obj->gewicht; - break; - } - } - } - } - } - } - } + if($lehreinheit_gewicht_obj->gewicht!='') + { + $moodle24_course_gewicht[$obj->mdl_course_id]=$lehreinheit_gewicht_obj->gewicht; + break; + } + } + } + } + } + } + } + } // studentenquery $qry_stud = "SELECT @@ -978,165 +1003,168 @@ echo " $note_le_gewichtet=0; $gewichtsumme=0; $note=0; - if($grade_from_moodle) - { - //Moodle 1.9 + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE) + { + if($grade_from_moodle) + { + //Moodle 1.9 - // Alle Moodlekursdaten zu Lehreinheit und Semester lesen wenn noch nicht belegt. - if (is_null($mdldaten) && defined('CONN_STRING_MOODLE')) - { - //Noten aus Moodle - if (!isset($moodle_course)) - $moodle_course = new moodle19_course(); + // Alle Moodlekursdaten zu Lehreinheit und Semester lesen wenn noch nicht belegt. + if (is_null($mdldaten) && defined('CONN_STRING_MOODLE')) + { + //Noten aus Moodle + if (!isset($moodle_course)) + $moodle_course = new moodle19_course(); - if (!$mdldaten = $moodle_course->loadNoten($lvid, $stsem, '', true,$debg)) - $mdldaten=''; - } - // Verarbeitet die Kursdaten - if (!is_null($mdldaten) && is_array($mdldaten)) - { - reset($mdldaten); - $title=""; - $mdl_shortname=''; - for ($imdldaten=0;$imdldatenloadNoten($lvid, $stsem, '', true,$debg)) + $mdldaten=''; + } + // Verarbeitet die Kursdaten + if (!is_null($mdldaten) && is_array($mdldaten)) + { + reset($mdldaten); + $title=""; + $mdl_shortname=''; + for ($imdldaten=0;$imdldatenresult; - $kursArr=(isset($mdldata[2])?$mdldata[2]:array()); - $kursasObj=(isset($mdldata[3])?$mdldata[3]:array()); - $kursname=(isset($mdldata[7])?$mdldata[7]:''); - $shortname=(isset($mdldata[8])?$mdldata[8]:''); + $mdldata=$mdldaten[$imdldaten]->result; + $kursArr=(isset($mdldata[2])?$mdldata[2]:array()); + $kursasObj=(isset($mdldata[3])?$mdldata[3]:array()); + $kursname=(isset($mdldata[7])?$mdldata[7]:''); + $shortname=(isset($mdldata[8])?$mdldata[8]:''); - $note=0; - $userGef=false; + $note=0; + $userGef=false; - reset($kursArr); - for ($iKurs=0;$iKursuid))==strtolower(trim($kursArr[$iKurs][2])) ) - { - $note=trim($kursArr[$iKurs][6]); - $userGef=true; + reset($kursArr); + for ($iKurs=0;$iKursuid))==strtolower(trim($kursArr[$iKurs][2])) ) + { + $note=trim($kursArr[$iKurs][6]); + $userGef=true; - if (is_numeric($note) || $debg) - { - if (is_numeric($note)) - { - $note_le += $note; - $note_le_gewichtet +=$note*$gewichtung; - $gewichtsumme+=$gewichtung; - $le_anz += 1; - } - if ($note == 5) - $leneg = " style='color:red; font-weight:bold'"; - else - $leneg = " style='font-weight:bold'"; + if (is_numeric($note) || $debg) + { + if (is_numeric($note)) + { + $note_le += $note; + $note_le_gewichtet +=$note*$gewichtung; + $gewichtsumme+=$gewichtung; + $le_anz += 1; + } + if ($note == 5) + $leneg = " style='color:red; font-weight:bold'"; + else + $leneg = " style='font-weight:bold'"; - $mdl_shortname=$mdldaten[$imdldaten]->mdl_shortname; - $title="\r\nMoodle 1.9 KursID: ".$mdldaten[$imdldaten]->mdl_course_id ."\r\n\r\n".$kursname.', '.$mdl_shortname."\r\n"; - foreach ($kursasObj[$iKurs] as $key => $value) - { - $title.=$key."=>".$value."\r\n"; - } + $mdl_shortname=$mdldaten[$imdldaten]->mdl_shortname; + $title="\r\nMoodle 1.9 KursID: ".$mdldaten[$imdldaten]->mdl_course_id ."\r\n\r\n".$kursname.', '.$mdl_shortname."\r\n"; + foreach ($kursasObj[$iKurs] as $key => $value) + { + $title.=$key."=>".$value."\r\n"; + } - $note_les_str .= "".$note." (".$mdl_shortname.") "; - } - } // ende If Richtiger User + $note_les_str .= "".$note." (".$mdl_shortname.") "; + } + } // ende If Richtiger User - if ($userGef) - { - $iKurs=count($kursArr)+1; // diesen USER for beenden - user wurde gefunden - } + if ($userGef) + { + $iKurs=count($kursArr)+1; // diesen USER for beenden - user wurde gefunden + } - } // ende Kursschleife - } // MoodleKurse abarbeiten + } // ende Kursschleife + } // MoodleKurse abarbeiten - #echo "

$title Anzahl Noten gef. $le_anz $note_le

"; - } - else - { - if(defined('CONN_STRING_MOODLE')) - { - //den Error nur einmal anzeigen und nicht fuer jeden Studenten - $moodle_course->errormsg=trim($moodle_course->errormsg); - if(!$errorshown && !empty($moodle_course->errormsg) ) - { - //echo '
'.$moodle_course->errormsg.'
'; - $errorshown=true; - } - } - } + #echo "

$title Anzahl Noten gef. $le_anz $note_le

"; + } + else + { + if(defined('CONN_STRING_MOODLE')) + { + //den Error nur einmal anzeigen und nicht fuer jeden Studenten + $moodle_course->errormsg=trim($moodle_course->errormsg); + if(!$errorshown && !empty($moodle_course->errormsg) ) + { + //echo '
'.$moodle_course->errormsg.'
'; + $errorshown=true; + } + } + } - // Moodle 2.4 - if(isset($moodle24) && count($moodle24->result)>0) - { - foreach($moodle24->result as $moodle24_noten) - { - if($moodle24_noten->uid==$row_stud->uid) - { - $gewichtung=1; - $note_le+=$moodle24_noten->note; - if(isset($moodle24_course_gewicht[$moodle24_noten->mdl_course_id])) - $gewichtung=$moodle24_course_gewicht[$moodle24_noten->mdl_course_id]; + // Moodle 2.4 + if(isset($moodle24) && count($moodle24->result)>0) + { + foreach($moodle24->result as $moodle24_noten) + { + if($moodle24_noten->uid==$row_stud->uid) + { + $gewichtung=1; + $note_le+=$moodle24_noten->note; + if(isset($moodle24_course_gewicht[$moodle24_noten->mdl_course_id])) + $gewichtung=$moodle24_course_gewicht[$moodle24_noten->mdl_course_id]; - if($gewichtung=='') - $gewichtung=1; - $note_le_gewichtet+=$moodle24_noten->note*$gewichtung; - $gewichtsumme+=$gewichtung; - $le_anz+=1; - //if ($moodle24_noten->note == 5) - // $leneg = " style='color:red; font-weight:bold'"; - //else - $leneg = ' style="font-weight: bold;"'; - $title="Moodle KursID: ".$moodle24_noten->mdl_course_id. - "\nKursbezeichnung: ".$moodle24_course_bezeichnung[$moodle24_noten->mdl_course_id]. - "\nUser: ".$moodle24_noten->uid. - "\nNote: ".$moodle24_noten->note; - if(defined('CIS_GESAMTNOTE_GEWICHTUNG') && CIS_GESAMTNOTE_GEWICHTUNG) - $title.="\nGewichtung: ".$gewichtung; - $note_les_str .= "
".$moodle24_noten->note." (".$moodle24_course_bezeichnung[$moodle24_noten->mdl_course_id].") "; + if($gewichtung=='') + $gewichtung=1; + $note_le_gewichtet+=$moodle24_noten->note*$gewichtung; + $gewichtsumme+=$gewichtung; + $le_anz+=1; + //if ($moodle24_noten->note == 5) + // $leneg = " style='color:red; font-weight:bold'"; + //else + $leneg = ' style="font-weight: bold;"'; + $title="Moodle KursID: ".$moodle24_noten->mdl_course_id. + "\nKursbezeichnung: ".$moodle24_course_bezeichnung[$moodle24_noten->mdl_course_id]. + "\nUser: ".$moodle24_noten->uid. + "\nNote: ".$moodle24_noten->note; + if(defined('CIS_GESAMTNOTE_GEWICHTUNG') && CIS_GESAMTNOTE_GEWICHTUNG) + $title.="\nGewichtung: ".$gewichtung; + $note_les_str .= "
".$moodle24_noten->note." (".$moodle24_course_bezeichnung[$moodle24_noten->mdl_course_id].") "; - } - } - } - } - else - { - //Noten aus Uebungstool - $le = new lehreinheit(); - $le->load_lehreinheiten($lvid, $stsem); - foreach($le->lehreinheiten as $l) - { - $legesamtnote = new legesamtnote($l->lehreinheit_id); + } + } + } + } + else + { + //Noten aus Uebungstool + $le = new lehreinheit(); + $le->load_lehreinheiten($lvid, $stsem); + foreach($le->lehreinheiten as $l) + { + $legesamtnote = new legesamtnote($l->lehreinheit_id); - if (!$legesamtnote->load($row_stud->uid,$l->lehreinheit_id)) - { - //$note_les_str .= "- (".$l->lehreinheit_id.")"; - } - else - { - $note_le += $legesamtnote->note; + if (!$legesamtnote->load($row_stud->uid,$l->lehreinheit_id)) + { + //$note_les_str .= "- (".$l->lehreinheit_id.")"; + } + else + { + $note_le += $legesamtnote->note; - $gewicht = $l->gewicht; - if($l->gewicht=='') - $gewicht = 1; - $note_le_gewichtet+=$legesamtnote->note*$gewicht; - $gewichtsumme+=$gewicht; + $gewicht = $l->gewicht; + if($l->gewicht=='') + $gewicht = 1; + $note_le_gewichtet+=$legesamtnote->note*$gewicht; + $gewichtsumme+=$gewicht; - $le_anz += 1; - if ($legesamtnote->note == 5) - $leneg = " style='color:red; font-weight:bold'"; - else - $leneg = ""; - if(defined('CIS_GESAMTNOTE_GEWICHTUNG') && CIS_GESAMTNOTE_GEWICHTUNG) - $title='Gewichtung: '.$l->gewicht; - else - $title=''; - $note_les_str .= ''.$legesamtnote->note.' ('.$l->lehreinheit_id.') '; - } - } - } + $le_anz += 1; + if ($legesamtnote->note == 5) + $leneg = " style='color:red; font-weight:bold'"; + else + $leneg = ""; + if(defined('CIS_GESAMTNOTE_GEWICHTUNG') && CIS_GESAMTNOTE_GEWICHTUNG) + $title='Gewichtung: '.$l->gewicht; + else + $title=''; + $note_les_str .= ''.$legesamtnote->note.' ('.$l->lehreinheit_id.') '; + } + } + } + } if ($lvgesamtnote = new lvgesamtnote($lvid,$row_stud->uid,$stsem)) { @@ -1190,8 +1218,10 @@ echo " else $znote = null; - - echo "".$note_les_str." "; + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE) + { + echo "".$note_les_str." "; + } if (key_exists($row_stud->uid,$studpruef_arr)) $hide = "style='display:none;visibility:hidden;'"; @@ -1275,43 +1305,46 @@ echo " if(isset($noten_array[$znote]) && $noten_array[$znote]['positiv']==false) $summe_ng++; - // Pruefung 2. Termin - if (key_exists($row_stud->uid, $studpruef_arr)) + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2) { - echo ""; - echo ""; - echo ""; - $le_id_arr = array(); - $le_id_arr = array_keys($studpruef_arr[$row_stud->uid]); - foreach ($le_id_arr as $le_id_stud) - { - $pr_note = $studpruef_arr[$row_stud->uid][$le_id_stud]["note"]; - $pr_punkte = $studpruef_arr[$row_stud->uid][$le_id_stud]["punkte"]; - $pr_datum = $studpruef_arr[$row_stud->uid][$le_id_stud]["datum"]; - $pr_le_id = $le_id_stud; + // Pruefung 2. Termin + if (key_exists($row_stud->uid, $studpruef_arr)) + { + echo ""; - } - else - { - if (!is_null($note_lv) || !is_null($znote)) - echo ""; - else - echo ""; - } + echo ' + + + '; + } + echo "
"; + echo ""; + echo ""; + $le_id_arr = array(); + $le_id_arr = array_keys($studpruef_arr[$row_stud->uid]); + foreach ($le_id_arr as $le_id_stud) + { + $pr_note = $studpruef_arr[$row_stud->uid][$le_id_stud]["note"]; + $pr_punkte = $studpruef_arr[$row_stud->uid][$le_id_stud]["punkte"]; + $pr_datum = $studpruef_arr[$row_stud->uid][$le_id_stud]["datum"]; + $pr_le_id = $le_id_stud; - if($pr_punkte!='') - $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')'; - else - $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung']; + if($pr_punkte!='') + $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')'; + else + $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung']; - echo ' - - - '; - } - echo "
'.$pr_datum.''.$pr_notenbezeichnung.' -
"; - echo "
"; - echo "
'.$pr_datum.''.$pr_notenbezeichnung.' +
"; + echo "
"; + echo ""; + } + else + { + if (!is_null($note_lv) || !is_null($znote)) + echo ""; + else + echo ""; + } + } if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3) { @@ -1354,39 +1387,42 @@ echo " } } - // komm Pruefung - if (key_exists($row_stud->uid,$studpruef_komm)) + if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF) { - echo ""; - echo ""; - echo ""; - $le_id_arr = array(); - $le_id_arr = array_keys($studpruef_komm[$row_stud->uid]); - foreach ($le_id_arr as $le_id_stud) - { - $pr_note = $studpruef_komm[$row_stud->uid][$le_id_stud]["note"]; - $pr_punkte = $studpruef_komm[$row_stud->uid][$le_id_stud]["punkte"]; - $pr_datum = $studpruef_komm[$row_stud->uid][$le_id_stud]["datum"]; - $pr_le_id = $le_id_stud; + // komm Pruefung + if (key_exists($row_stud->uid,$studpruef_komm)) + { + echo ""; - } - else - { - echo ""; - } + echo ' + + + '; + } + echo "
"; + echo ""; + echo ""; + $le_id_arr = array(); + $le_id_arr = array_keys($studpruef_komm[$row_stud->uid]); + foreach ($le_id_arr as $le_id_stud) + { + $pr_note = $studpruef_komm[$row_stud->uid][$le_id_stud]["note"]; + $pr_punkte = $studpruef_komm[$row_stud->uid][$le_id_stud]["punkte"]; + $pr_datum = $studpruef_komm[$row_stud->uid][$le_id_stud]["datum"]; + $pr_le_id = $le_id_stud; - if($pr_punkte!='') - $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')'; - else - $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung']; + if($pr_punkte!='') + $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')'; + else + $pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung']; - echo ' - - - '; - } - echo "
'.$pr_datum.''.$pr_notenbezeichnung.'
"; - echo "
"; - echo "
'.$pr_datum.''.$pr_notenbezeichnung.'
"; + echo "
"; + echo ""; + } + else + { + echo ""; + } + } echo ""; $i++; @@ -1397,12 +1433,27 @@ echo " echo " Σ - $summe_stud - - $summe_ng - $summe_t2 - $summe_t3 - $summe_komm + $summe_stud"; + if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && (!CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE)) + { + echo ""; + } + else + { + echo ""; + } + echo "$summe_ng"; + + if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2): ?> + "'>$summe_t2; + + "'>$summe_t3"; + + "'>$summe_komm + diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js index a68c07d08..620f20db0 100644 --- a/cis/private/lehre/pruefung/pruefung.js +++ b/cis/private/lehre/pruefung/pruefung.js @@ -589,6 +589,8 @@ function resetForm() */ function setTablesorter(tableId) { + if($("#"+tableId).length != 0) + { if($("#"+tableId)[0].hasInitialized !== true) { $("#"+tableId).tablesorter({ @@ -602,6 +604,7 @@ function setTablesorter(tableId) var sorting = [[1,0],[0,0]]; $("#"+tableId).trigger("sorton",[sorting]); } + } } /** @@ -688,7 +691,6 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id) function writeAnmeldungen(data) { - console.log(data); if(data.error === 'false') { var terminId = data.result.anmeldungen[0].pruefungstermin_id; diff --git a/cis/private/lehre/pruefung/pruefung.js.php b/cis/private/lehre/pruefung/pruefung.js.php index 3ef462d05..02d0e1b9d 100755 --- a/cis/private/lehre/pruefung/pruefung.js.php +++ b/cis/private/lehre/pruefung/pruefung.js.php @@ -633,19 +633,22 @@ function resetForm() */ function setTablesorter(tableId) { - if($("#"+tableId)[0].hasInitialized !== true) - { - $("#"+tableId).tablesorter({ - widgets: ["zebra"], - sortList: [[1,0]] - }); - } - else - { - $("#"+tableId).trigger("updateAll"); - var sorting = [[1,0],[0,0]]; - $("#"+tableId).trigger("sorton",[sorting]); - } + if($("#"+tableId).length != 0) + { + if($("#"+tableId)[0].hasInitialized !== true) + { + $("#"+tableId).tablesorter({ + widgets: ["zebra"], + sortList: [[1,0]] + }); + } + else + { + $("#"+tableId).trigger("updateAll"); + var sorting = [[1,0],[0,0]]; + $("#"+tableId).trigger("sorton",[sorting]); + } + } } /** @@ -732,7 +735,6 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id) function writeAnmeldungen(data) { - console.log(data); if(data.error === 'false') { var terminId = data.result.anmeldungen[0].pruefungstermin_id; diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 137e27a45..805fb2409 100755 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -486,8 +486,8 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) { if($termin->teilnehmer_max > $termin->getNumberOfParticipants() || $termin->teilnehmer_max == NULL) { - $pruefung = new pruefungCis(); - $reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]); + $pruefung = new pruefungCis(); + $reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]); $anmeldung = new pruefungsanmeldung(); $anmeldung->lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; $anmeldung->pruefungstermin_id = $_REQUEST["termin_id"]; @@ -500,6 +500,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $konto = new konto(); $creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester); + if($creditpoints !== false) { if($creditpoints < $lehrveranstaltung->ects) @@ -547,6 +548,10 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $person->getPersonFromBenutzer($uid); $prestudent = new prestudent(); $prestudent->getPrestudenten($person->person_id); + $studiensemester = new studiensemester(); + $stdsem = $studiensemester->getaktorNext(); + if ($aktStudiensemester) + $stdsem = $aktStudiensemester; if(count($prestudent->result) > 0) { @@ -563,58 +568,65 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) } if($prestudent_id != "") { - $anrechungSaveResult = false; - if(!defined('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG') || CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG == true) - { - $anrechnung->lehrveranstaltung_id = $lehrveranstaltung->lehrveranstaltung_id; - $anrechnung->lehrveranstaltung_id_kompatibel = $lv_komp->lehrveranstaltung_id; - $anrechnung->prestudent_id = $prestudent_id; - $anrechnung->begruendung_id = "2"; - $anrechnung->genehmigt_von = CIS_PRUEFUNGSANMELDUNG_USER; - $anrechnung->new = true; - $anrechungSaveResult = $anrechnung->save(); - } - else - { - $anrechungSaveResult = true; - } + $anrechungSaveResult = false; + if(!defined('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG') || CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG == true) + { + if($lv_komp->lehrveranstaltung_id != null && ($lv_komp->lehrveranstaltung_id != $lehrveranstaltung->lehrveranstaltung_id)) + { + $anrechnung->lehrveranstaltung_id = $lv_komp->lehrveranstaltung_id; + $anrechnung->lehrveranstaltung_id_kompatibel = $lehrveranstaltung->lehrveranstaltung_id; + $anrechnung->prestudent_id = $prestudent_id; + $anrechnung->begruendung_id = "2"; + $anrechnung->genehmigt_von = CIS_PRUEFUNGSANMELDUNG_USER; + $anrechnung->new = true; + $anrechungSaveResult = $anrechnung->save(); + } + else + { + $anrechungSaveResult = true; + } + } + else + { + $anrechungSaveResult = true; + } if($anrechungSaveResult) { - if($anrechnung->anrechnung_id == "") - $anmeldung->anrechnung_id = null; - else - $anmeldung->anrechnung_id = $anrechnung->anrechnung_id; - - if($anmeldung->save(true)) - { - $pruefung = new pruefungCis($termin->pruefung_id); - if(defined('CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG') && (CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG !== "")) - $to = CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG."@".DOMAIN; + if($anrechnung->anrechnung_id == "") + $anmeldung->anrechnung_id = null; else - $to = $pruefung->mitarbeiter_uid."@".DOMAIN; - $from = "noreply@".DOMAIN; - $subject = $p->t('pruefung/emailLektorSubjectAnmeldung'); - $mail = new mail($to, $from, $subject, $p->t('pruefung/emailBodyBitteHtmlSicht')); + $anmeldung->anrechnung_id = $anrechnung->anrechnung_id; - $student = new student($uid); - $datum = new datum(); + if($anmeldung->save(true)) + { + $pruefung = new pruefungCis($termin->pruefung_id); + if(defined('CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG') && (CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG !== "")) + $to = CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG."@".DOMAIN; + else + $to = $pruefung->mitarbeiter_uid."@".DOMAIN; + $from = "noreply@".DOMAIN; + $subject = $p->t('pruefung/emailLektorSubjectAnmeldung'); + $mail = new mail($to, $from, $subject, $p->t('pruefung/emailBodyBitteHtmlSicht')); - $lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id); + $student = new student($uid); + $datum = new datum(); - $html = $p->t('pruefung/emailLektorStudentIn')." ".$student->vorname." ".$student->nachname." ".$p->t('pruefung/emailLektorHatSichZurPruefung')." ".$lv->bezeichnung." ".$p->t('pruefung/emailLektorAm')." ".$datum->formatDatum($termin->von, "m.d.Y")." ".$p->t('pruefung/emailLektorVon')." ".$datum->formatDatum($termin->von,"h:i")." ".$p->t('pruefung/emailLektorUhrBis')." ".$datum->formatDatum($termin->bis,"h:i")." ".$p->t('pruefung/emailLektorUhrAngemeldet'); - $mail->setHTMLContent($html); - $mail->send(); + $lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id); - $data['result'] = $p->t('pruefung/anmeldungErfolgreich'); - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$anmeldung->errormsg; - } + $html = $p->t('pruefung/emailLektorStudentIn')." ".$student->vorname." ".$student->nachname." ".$p->t('pruefung/emailLektorHatSichZurPruefung')." ".$lv->bezeichnung." ".$p->t('pruefung/emailLektorAm')." ".$datum->formatDatum($termin->von, "m.d.Y")." ".$p->t('pruefung/emailLektorVon')." ".$datum->formatDatum($termin->von,"h:i")." ".$p->t('pruefung/emailLektorUhrBis')." ".$datum->formatDatum($termin->bis,"h:i")." ".$p->t('pruefung/emailLektorUhrAngemeldet'); + $mail->setHTMLContent($html); + $mail->send(); + + $data['result'] = $p->t('pruefung/anmeldungErfolgreich'); + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$anmeldung->errormsg; + } } else { diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.php b/cis/private/lehre/pruefung/pruefungsanmeldung.php index 900e25a0a..5551adb70 100755 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.php @@ -230,6 +230,7 @@ $studiensemester->getAll(); +

t('pruefung/lvVonStudiengang'); ?>

@@ -246,6 +247,7 @@ $studiensemester->getAll();
+

t('pruefung/lvAlle'); ?>

diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php index 85126e44a..bcb256b9b 100755 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php @@ -66,7 +66,7 @@ $rechte->getBerechtigungen($uid); min-height: 297mm; padding: 20mm; margin: 10mm auto; - border: 1px #D3D3D3 solid; + border: 1px #ffffff solid; border-radius: 5px; background: white; box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); @@ -75,7 +75,7 @@ $rechte->getBerechtigungen($uid); #subpage { padding: 10mm; - border: 1px black solid; + border: 1px white solid; height: 256mm; outline: 20mm } diff --git a/cis/private/lvplan/stpl_kalender.php b/cis/private/lvplan/stpl_kalender.php index 47258eab2..bae1b5795 100644 --- a/cis/private/lvplan/stpl_kalender.php +++ b/cis/private/lvplan/stpl_kalender.php @@ -231,7 +231,8 @@ if(!isset($begin) || !isset($ende)) } } -if($ende-$begin>31536000) + +if($ende-$begin>34560000) // = 400 Tage { die($p->t('lvplan/datumsbereichZuGross')."!"); } diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php index ed3ed7ada..409d0a87b 100755 --- a/cis/private/profile/studienplan.php +++ b/cis/private/profile/studienplan.php @@ -1,689 +1,728 @@ - - * - * 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'); - -$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']; - - echo $p->t('studienplan/LehrveranstalungWaehlen').' - - - '; - $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); - 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()) - { - $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 - //Pruefen ob genug Credit Points zur Verfuegung stehen zur Anmeldung - - $konto = new konto(); - $cp = $konto->getCreditPoints($uid, $stsem); - if($cp===false || $cp>=$lv->ects) - echo '
'.$lv->bezeichnung.' (Anmeldung bis '.$datum->formatDatum($angebot->anmeldefenster_ende,"d.m.Y").')'; - else - echo '
'.$lv->bezeichnung.''; - } - else - { - // Bereits angemeldet - echo '
'.$lv->bezeichnung.''; - } - } -/* else - { - // LV wird angeboten, Anmeldefenster ist aber nicht offen oder keine Gruppe zugeteilt - echo '
'.$lv->bezeichnung.''; - }*/ - } - } - - if($anzahl>0) - echo '

'; - else - echo '

'.$p->t('studienplan/AnmeldungDerzeitNichtMoeglich'); - exit(); -} -echo ' - - - - '.$p->t('studienplan/studienplan').' - - - - - '; - - // 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 ''; - } - - // Wenn Seite fertig geladen ist Addons aufrufen - echo ' - - '; - -echo ' - - - -
'.$p->t('studienplan/Anmeldung').'
-'; - -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)) - { - - // Pruefen ob genug CP zur Verfuegung stehen falls diese reduziert sind - $konto = new konto(); - $cp = $konto->getCreditPoints($uid, $stsem); - if($cp===false || $cp>=$lv->ects) - { - $bngruppe->uid = $uid; - $bngruppe->gruppe_kurzbz = $lvangebot->result[0]->gruppe_kurzbz; - $bngruppe->studiensemester_kurzbz = $stsem; - $bngruppe->new=true; - if($bngruppe->save()) - { - echo ''.$p->t('studienplan/einschreibungErfolgreich').''; - // Menue neu Laden damit die LV unter Meine LV gleich angezeigt wird - echo ''; - } - } - else - echo ''.$p->t('studienplan/zuWenigCP').''; - } - else - { - echo ''.$p->t('studienplan/bereitsAngemeldet').''; - } - } - 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; - -echo '

'.$p->t('studienplan/studienplan').": $studienplan->bezeichnung ($studienplan_id) - $student->vorname $student->nachname ( $student->uid )

"; - -echo '
- - - '; - -if(CIS_STUDIENPLAN_SEMESTER_ANZEIGEN) - echo ''; - -echo ' - '; - -foreach($stsem_arr as $stsem) -{ - echo ''; -} -echo ' - - - '; - -// Lehrveranstaltungen anzeigen -drawTree($tree,0); - -function drawTree($tree, $depth) -{ - global $uid, $stsem_arr, $noten_arr, $lvangebot_arr; - global $datum_obj, $db, $lv_arr, $p, $note_pruef_arr; - - foreach($tree as $row_tree) - { - $style=''; - if(!empty($row_tree->childs)) - { - $bstart='';$bende=''; - $style=' style="background-color:#EEEEEE"'; - } - else - { - $bstart='';$bende=''; - } - - switch($row_tree->lehrtyp_kurzbz) - { - case 'modul': - $icon=' '; - $style=' style="background-color:#CCCCCC"'; - $termine=''; - break; - case 'lv': - $icon=' '; - $termine="Termine"; - break; - default: - $icon=''; - } - - - echo ' - '; - - // Semester - if(CIS_STUDIENPLAN_SEMESTER_ANZEIGEN) - echo ''; - - // ECTS Punkte - echo ''; - - // Status der LV (absolviert, offen) - echo ''; - - // 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=''; - - // 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 .= ''.$note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->anmerkung.''; - else - $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->anmerkung.''; - } - elseif(count($kompatibleLVs) > 0) - { - foreach($kompatibleLVs as $komp) - { - if(isset($noten_arr[$komp][$stsem])) - { - if($note_pruef_arr[$noten_arr[$komp][$stsem]]->positiv) - $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$komp][$stsem]]->anmerkung.''; - else - $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$komp][$stsem]]->anmerkung.''; - } - } - } - else - { - // 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 - { - if(!$lvregel->isZugangsberechtigt($uid, $row_tree->studienplan_lehrveranstaltung_id, $stsem)) - { - $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.= ''; - } - else - { - if($angebot_vorhanden) - { - $tdclass[]='angebot'; - if($angemeldet) - { - $tdinhalt.= ''; - } - else - { - if($anmeldungmoeglich) - $tdinhalt.= ''; - else - $tdinhalt.= '-'; - - if(!$regelerfuellt) - $tdinhalt.= 'X'; - } - } - else - { - // LV wird nicht angeboten - $tdinhalt.= '-'; - } - } - } - $class=implode(' ',$tdclass); - echo ''; - } - echo ''; - - // Wenn Subtree vorhanden, dann anzeigen - if(!empty($row_tree->childs)) - drawTree($row_tree->childs, $depth+1); - } -} -echo '
'.$p->t('global/lehrveranstaltung').''.$p->t('global/semester').''.$p->t('studienplan/ects').''.$p->t('studienplan/status').''; - - echo $stsem; - $konto = new konto(); - $cp = $konto->getCreditPoints($uid, $stsem); - if($cp!==false) - echo '
Information
'; - echo '
'.$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(); - if($lvregel->exists($row_tree->studienplan_lehrveranstaltung_id)) - { - 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." 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.""; - else - // Bezeichnung der Lehrveranstaltung - echo $icon." ".$termine." ".$row_tree->kurzbz.' - '.$row_tree->bezeichnung.'('.$row_tree->lehrveranstaltung_id.')'; - echo $bende.''.$row_tree->semester.''.$row_tree->ects.''; - - // 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 ''.$p->t('studienplan/abgeschlossen').''; - else - echo ''.$p->t('studienplan/negativ').''; - } - //check if compatible course has grade - elseif(count($kompatibleLVs) > 0) - { - $positiv = false; - $found = false; - $i = 0; - while(!$found && $i < count($kompatibleLVs)) - { - for($i; $i < (count($kompatibleLVs)); $i++) - { - if(isset($noten_arr[$kompatibleLVs[$i]])) - { - $positiv=false; - foreach($noten_arr[$kompatibleLVs[$i]] as $note) - { - if($note_pruef_arr[$note]->positiv) - $positiv=true; - } - - $found = true; - } - } - $i++; - } - if($found) - { - if($positiv) - echo ''.$p->t('studienplan/abgeschlossen').''; - else - echo ''.$p->t('studienplan/negativ').''; - } - elseif(!$found) - { - if($abgeschlossen) - echo ''.$p->t('studienplan/regelabgeschlossen'),''; - elseif(!$row_tree->stpllv_pflicht) - echo ''.$p->t('studienplan/optional').''; - else - echo ''.$p->t('studienplan/offen').''; - } - } - else - { - if($abgeschlossen) - echo ''.$p->t('studienplan/regelabgeschlossen'),''; - elseif(!$row_tree->stpllv_pflicht) - echo ''.$p->t('studienplan/optional').''; - else - echo ''.$p->t('studienplan/offen').''; - } - echo ''; - echo $tdinhalt; - echo '
'; -echo '

'.$p->t('studienplan/legende').':
- - - - - - - - - - - - - - - - - - - - - - -
      '.$p->t('studienplan/legendeLVwirdAngeboten').'
'.$p->t('studienplan/Anmeldung').'
'.$p->t('studienplan/legendeAngemeldet').'
'.$p->t('studienplan/legendeLock').'
-'; - -echo ' -'; -?> + + * + * 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']; + + echo $p->t('studienplan/LehrveranstalungWaehlen').' +
+ + '; + $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); + 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()) + { + $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 + //Pruefen ob genug Credit Points zur Verfuegung stehen zur Anmeldung + + $konto = new konto(); + $cp = $konto->getCreditPoints($uid, $stsem); + if($cp===false || $cp>=$lv->ects) + echo '
'.$lv->bezeichnung.' (Anmeldung bis '.$datum->formatDatum($angebot->anmeldefenster_ende,"d.m.Y").')'; + else + echo '
'.$lv->bezeichnung.''; + } + else + { + // Bereits angemeldet + echo '
'.$lv->bezeichnung.''; + } + } +/* else + { + // LV wird angeboten, Anmeldefenster ist aber nicht offen oder keine Gruppe zugeteilt + echo '
'.$lv->bezeichnung.''; + }*/ + } + } + + if($anzahl>0) + echo '

'; + else + echo '

'.$p->t('studienplan/AnmeldungDerzeitNichtMoeglich'); + exit(); +} +echo ' + + + + '.$p->t('studienplan/studienplan').' + + + + + '; + + // 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 ''; + } + + // Wenn Seite fertig geladen ist Addons aufrufen + echo ' + + '; + +echo ' + + + +
'.$p->t('studienplan/Anmeldung').'
+'; + +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)) + { + + // Pruefen ob genug CP zur Verfuegung stehen falls diese reduziert sind + $konto = new konto(); + $cp = $konto->getCreditPoints($uid, $stsem); + if($cp===false || $cp>=$lv->ects) + { + $bngruppe->uid = $uid; + $bngruppe->gruppe_kurzbz = $lvangebot->result[0]->gruppe_kurzbz; + $bngruppe->studiensemester_kurzbz = $stsem; + $bngruppe->new=true; + if($bngruppe->save()) + { + echo ''.$p->t('studienplan/einschreibungErfolgreich').''; + // Menue neu Laden damit die LV unter Meine LV gleich angezeigt wird + echo ''; + } + } + else + echo ''.$p->t('studienplan/zuWenigCP').''; + } + else + { + echo ''.$p->t('studienplan/bereitsAngemeldet').''; + } + } + 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; + +echo '

'.$p->t('studienplan/studienplan').": $studienplan->bezeichnung ($studienplan_id) - $student->vorname $student->nachname ( $student->uid )

"; + +echo ' + + + '; + +if(CIS_STUDIENPLAN_SEMESTER_ANZEIGEN) + echo ''; + +echo ' + '; + +foreach($stsem_arr as $stsem) +{ + echo ''; +} +echo ' + + + '; + +// Lehrveranstaltungen anzeigen +drawTree($tree,0); + +function drawTree($tree, $depth) +{ + global $uid, $stsem_arr, $noten_arr, $lvangebot_arr; + global $datum_obj, $db, $lv_arr, $p, $note_pruef_arr, $student; + + foreach($tree as $row_tree) + { + $style=''; + if(!empty($row_tree->childs)) + { + $bstart='';$bende=''; + $style=' style="background-color:#EEEEEE"'; + } + else + { + $bstart='';$bende=''; + } + + switch($row_tree->lehrtyp_kurzbz) + { + case 'modul': + $icon=' '; + $style=' style="background-color:#CCCCCC"'; + $termine=''; + break; + case 'lv': + $icon=' '; + $termine="Termine"; + break; + default: + $icon=''; + } + + + echo ' + '; + + // Semester + if(CIS_STUDIENPLAN_SEMESTER_ANZEIGEN) + echo ''; + + // ECTS Punkte + echo ''; + + // Status der LV (absolviert, offen) + echo ''; + + // 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=''; + + // 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 .= ''.$note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->anmerkung.''; + else + $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->anmerkung.''; + } + elseif(count($kompatibleLVs) > 0) + { + $found = false; + $i = 0; + while(!$found && $i < count($kompatibleLVs)) + { + foreach($kompatibleLVs as $komp) + { + $anrechnung = new anrechnung(); + $anrechnung->getAnrechnungPrestudent($student->prestudent_id, $row_tree->lehrveranstaltung_id, $komp); + + if(count($anrechnung->result) == 1) + { + $lv = $anrechnung->result[0]->lehrveranstaltung_id_kompatibel; + if(isset($noten_arr[$lv][$stsem])) + { + $found = true; + if($note_pruef_arr[$noten_arr[$lv][$stsem]]->positiv) + $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$lv][$stsem]]->anmerkung.''; + else + $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$lv][$stsem]]->anmerkung.''; + } + } + $i++; + } + + if(!$found) + { + $tdinhalt.= '-'; + } + } + } + else + { + // 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 + { + if(!$lvregel->isZugangsberechtigt($uid, $row_tree->studienplan_lehrveranstaltung_id, $stsem)) + { + $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.= ''; + } + else + { + if($angebot_vorhanden) + { + $tdclass[]='angebot'; + if($angemeldet) + { + $tdinhalt.= ''; + } + else + { + if($anmeldungmoeglich) + $tdinhalt.= ''; + else + $tdinhalt.= '-'; + + if(!$regelerfuellt) + $tdinhalt.= 'X'; + } + } + else + { + // LV wird nicht angeboten + $tdinhalt.= '-'; + } + } + } + $class=implode(' ',$tdclass); + echo ''; + } + echo ''; + + // Wenn Subtree vorhanden, dann anzeigen + if(!empty($row_tree->childs)) + drawTree($row_tree->childs, $depth+1); + } +} +echo '
'.$p->t('global/lehrveranstaltung').''.$p->t('global/semester').''.$p->t('studienplan/ects').''.$p->t('studienplan/status').''; + + echo $stsem; + $konto = new konto(); + $cp = $konto->getCreditPoints($uid, $stsem); + if($cp!==false) + echo '
Information
'; + echo '
'.$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(); + if($lvregel->exists($row_tree->studienplan_lehrveranstaltung_id)) + { + 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." 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.""; + else + // Bezeichnung der Lehrveranstaltung + echo $icon." ".$termine." ".$row_tree->kurzbz.' - '.$row_tree->bezeichnung.'('.$row_tree->lehrveranstaltung_id.')'; + echo $bende.''.$row_tree->semester.''.$row_tree->ects.''; + + // 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 ''.$p->t('studienplan/abgeschlossen').''; + else + echo ''.$p->t('studienplan/negativ').''; + } + //check if compatible course has grade + elseif(count($kompatibleLVs) > 0) + { + $positiv = false; + $found = false; + $i = 0; + while(!$found && $i < count($kompatibleLVs)) + { + foreach($kompatibleLVs as $komp) + { + + $anrechnung = new anrechnung(); + $anrechnung->getAnrechnungPrestudent($student->prestudent_id, $row_tree->lehrveranstaltung_id, $komp); + + if(count($anrechnung->result) == 1) + { + $lv = $anrechnung->result[0]->lehrveranstaltung_id_kompatibel; + if(isset($noten_arr[$lv])) + { + $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 ''.$p->t('studienplan/abgeschlossen').''; + else + echo ''.$p->t('studienplan/negativ').''; + } + elseif(!$found) + { + if($abgeschlossen) + echo ''.$p->t('studienplan/regelabgeschlossen'),''; + elseif(!$row_tree->stpllv_pflicht) + echo ''.$p->t('studienplan/optional').''; + else + echo ''.$p->t('studienplan/offen').''; + } + } + else + { + if($abgeschlossen) + echo ''.$p->t('studienplan/regelabgeschlossen'),''; + elseif(!$row_tree->stpllv_pflicht) + echo ''.$p->t('studienplan/optional').''; + else + echo ''.$p->t('studienplan/offen').''; + } + echo ''; + echo $tdinhalt; + echo '
'; +echo '

'.$p->t('studienplan/legende').':
+ + + + + + + + + + + + + + + + + + + + + + +
      '.$p->t('studienplan/legendeLVwirdAngeboten').'
'.$p->t('studienplan/Anmeldung').'
'.$p->t('studienplan/legendeAngemeldet').'
'.$p->t('studienplan/legendeLock').'
+'; + +echo ' +'; +?> diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php index 0ec57fc77..84d4613fe 100644 --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -215,6 +215,9 @@ define('CIS_PRUEFUNGSANMELDUNG_USER','p.pruefungsanmeldung'); // Soll für die Prüfungsanmeldungen eine Anrechnung erstellt werden define('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG', true); +//Gibt an, ob der Bereich zur Anmeldung zu Pruefungen des gesamten Studiengangs angezeigt werden soll +define('CIS_PRUEFUNGSANMELDUNG_LEHRVERANSTALTUNGEN_AUS_STUDIENGANG', true); + //Gibt an, wie viele Semester aus der Vergangenheit unter Meine LV angezeigt werden define('CIS_MEINELV_ANZAHL_SEMESTER_PAST', 3); diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 01925ac08..75a31a31c 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -59,9 +59,20 @@ define('CIS_GESAMTNOTE_UEBERSCHREIBEN',true); // Gewichtung der Lehreinheiten bei Noteneintragung true|false define('CIS_GESAMTNOTE_GEWICHTUNG', true); +// Bei Gesamtnote eine zusaetzliche Spalte fuer den 2. Termin anzeigen +define('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2',true); + // Bei Gesamtnote eine zusaetzliche Spalte fuer den 3. Termin anzeigen define('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3',true); +// Bei Gesamtnote eine zusaetzliche Spalte fuer die kommissionelle Pruefung anlegen +define('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF', true); + +// Bei Gesamtnote eine zusaetzliche Spalte fuer die kommissionelle Pruefung anlegen +define('CIS_GESAMTNOTE_PRUEFUNG_MOODLE_NOTE', true); + +// Bei Gesamtnote die Spalte fuer die Quelle der Noten anzeigen (Moodle oder LE) +define('CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE', true); // Gibt an ob im FAS bei den Lehrveranstaltungsnoten ein zusaetzliches Formular angezeigt wird um // Vertraege fuer Pruefungshonorare anzulegen diff --git a/include/dokument_export.class.php b/include/dokument_export.class.php index f60f94c3e..89ccfea65 100644 --- a/include/dokument_export.class.php +++ b/include/dokument_export.class.php @@ -291,6 +291,9 @@ class dokument_export if($download) { + if(headers_sent()) + exit('Header wurden bereits gesendet -> Abbruch'); + switch($this->outputformat) { case 'pdf': @@ -310,6 +313,8 @@ class dokument_export header('Content-Disposition: attachment; filename="'.$this->filename.'.odt"'); header('Content-Length: '.$fsize); break; + default: + exit('Outputformat is not defined'); } while (!feof($handle)) @@ -389,5 +394,11 @@ class dokument_export } return $_xml_data->asXML(); } + + public function getXML() + { + $this->xml_data->formatOutput=true; + return $this->xml_data->saveXML(); + } } ?> diff --git a/include/prestudent.class.php b/include/prestudent.class.php index 17f84fd32..0656aa110 100755 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -1761,7 +1761,9 @@ class prestudent extends person if($stg_obj->typ=='m') { - $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus + $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus, + (Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $this->db_add_param($studiensemester_kurzbz)." + AND status_kurzbz='Bewerber') as anmerkung FROM public.tbl_prestudent JOIN public.tbl_person USING(person_id) @@ -1787,7 +1789,9 @@ class prestudent extends person } else { - $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus + $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus, + (Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $this->db_add_param($studiensemester_kurzbz)." + AND status_kurzbz='Bewerber') as anmerkung FROM public.tbl_prestudent JOIN public.tbl_person USING(person_id) diff --git a/locale/it-IT/pruefung.php b/locale/it-IT/pruefung.php index e61d6c8f4..f3839a96d 100755 --- a/locale/it-IT/pruefung.php +++ b/locale/it-IT/pruefung.php @@ -46,7 +46,7 @@ $this->phrasen['pruefung/anmeldenMoeglichBis'] = 'Possibilità di iscrizione ent $this->phrasen['pruefung/stornoNichtMehrMoeglich'] = 'Non è più possibile annullare l’iscrizione.'; $this->phrasen['pruefung/zurLvAnmeldung'] = 'iscriversi al corso'; $this->phrasen['pruefung/zuerstPruefungAuswaehlen'] = 'Scegliere prima l’esame.'; -$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'inserito da docente'; +$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'iscrizione da segreteria'; $this->phrasen['pruefung/bestaetigen'] = 'Confermare'; $this->phrasen['pruefung/anmerkungDesStudenten'] = 'Osservazioni dello studente:
'; $this->phrasen['pruefung/bestaetigt'] = 'confermato'; @@ -102,7 +102,7 @@ $this->phrasen['pruefung/keineLvAngegeben'] = 'Nessun corso definito.'; $this->phrasen['pruefung/kollisionMitAnderemTermin'] = 'Date sovrapposte.'; $this->phrasen['pruefung/terminNichtInDerVergangenheit'] = 'La data dell’appello non è nel passato.'; $this->phrasen['pruefung/keineLehreinheitenVorhanden'] = 'Nessun corso disponibile.'; -$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Nessuna registrazione disponibile.'; +$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Nessuna studente iscritto.'; // anmeldungen Verwalten $this->phrasen['pruefung/anmeldungenVerwaltenTitle'] = 'Gestione delle prenotazioni degli appelli'; diff --git a/rdf/lehrveranstaltungszeugnis_ktu.rdf.php b/rdf/lehrveranstaltungszeugnis_ktu.rdf.php index b8f4020f9..28b3036c6 100755 --- a/rdf/lehrveranstaltungszeugnis_ktu.rdf.php +++ b/rdf/lehrveranstaltungszeugnis_ktu.rdf.php @@ -300,6 +300,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $stg = new studiengang(); $stg->load($lvstg); + + $xml .= " ".$stg_oe_obj->bezeichnung.""; $xml .= " ".$stg->bezeichnung.""; $xml .= " ".$stg->typ.""; $xml .= " ".sprintf('%04s',$lvstg).""; @@ -315,7 +317,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= " ".$lehrform_kurzbz.""; $xml .= " ".$lehrform_bezeichnung.""; $xml .= " ".($sws==0?'':number_format(sprintf('%.1F',$sws),1)).""; - $xml .= " ".number_format($ects,1).""; + $xml .= " ".$leiter_titel." ".$leiter_vorname." ".$leiter_nachname.($leiter_titelpost!=''?', '.$leiter_titelpost:'').""; $xml .= " "; $xml .= " "; @@ -327,6 +329,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") } $xml .= " "; + $anrechnung = new anrechnung(); $anrechnung->getAnrechnungPrestudent($student->prestudent_id, null, $lehrveranstaltung_id); @@ -339,6 +342,17 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= $anrechnung->result[0]->lehrveranstaltung_bez; } $xml .= ""; + + if($lehrveranstaltung_id_kompatibel != "") + { + $lv = new lehrveranstaltung($lehrveranstaltung_id_kompatibel); + if(($lv->ects !== $ects) && ($lv->ects != "") && ($lv->ects != null)) + { + $ects = $lv->ects; + } + } + + $xml .= " ".number_format($ects,1).""; $lehrveranstaltung->loadLehrveranstaltungStudienplan($studienplan_id); diff --git a/rdf/zeugnis.rdf.php b/rdf/zeugnis.rdf.php index 805b29aa0..efc8a36d8 100644 --- a/rdf/zeugnis.rdf.php +++ b/rdf/zeugnis.rdf.php @@ -33,6 +33,7 @@ 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/anrechnung.class.php'); $datum = new datum(); $db = new basis_db(); @@ -241,6 +242,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $obj->getZeugnisnoten($lehrveranstaltung_id=null, $uid_arr[$i], $studiensemester_kurzbz); $ects_gesamt = 0; + $prestudent_id = $row->prestudent_id; foreach ($obj->result as $row) { if($row->zeugnis) @@ -368,7 +370,20 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= " ".$note2.""; $xml .= " ".($row->semesterstunden==0?'':number_format(sprintf('%.1F',$row->semesterstunden/$wochen),1)).""; $ectspunkte=''; - + + + $anrechnung = new anrechnung(); + $anrechnung->getAnrechnungPrestudent($prestudent_id, null, $row->lehrveranstaltung_id); + + if($anrechnung->result != null) + { + $lv = new lehrveranstaltung($anrechnung->result[0]->lehrveranstaltung_id); + if(($lv->ects !== $row->ects) && ($lv->ects != "") && ($lv->ects != null)) + { + $row->ects = $lv->ects; + } + } + if($row->ects==0 || $row->ects=='') $ectspunkte=''; else @@ -379,7 +394,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") else $ectspunkte=number_format($row->ects,2); } - $ects_gesamt+=$ectspunkte; + $ects_gesamt+=$ectspunkte; $xml .= " ".$ectspunkte.""; $xml .= " ".$row->lv_lehrform_kurzbz.""; diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php index 56465f353..211431324 100644 --- a/system/mlists/mlists_generate.php +++ b/system/mlists/mlists_generate.php @@ -1702,6 +1702,42 @@ $error_msg=''; $error_msg.=$db->db_last_error().' '.$sql_querys; } + $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; + if(!($result_oe = $db->db_query($sql_query))) + $error_msg.=$db->db_last_error().' '.$sql_query; + // Personen holen die nicht im Verteiler sind + while($row_oe = $db->db_fetch_object($result_oe)) + { + $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')"; + if(!$db->db_query($sql_query)) + { + $error_msg.=$db->db_last_error().$sql_query; + } + } + + // ************************************************************** + // Alle MA mit Funktion Leitung oder stvLeitung oder gfLtg + $mlist_name='TW_LEITUNG'; + + $grp = new gruppe(); + setGeneriert($mlist_name); + + // Personen holen die nicht mehr in den Verteiler gehoeren + echo '
'.$mlist_name.' wird abgeglichen!'; + flush(); + + $sql_query = "SELECT DISTINCT uid FROM tbl_person JOIN tbl_benutzer + USING (person_id) JOIN tbl_benutzerfunktion USING (uid) + WHERE funktion_kurzbz in('Leitung','stvLtg','gLtg') + AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) + AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; + + $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)"; + if(!$db->db_query($sql_querys)) + { + $error_msg.=$db->db_last_error().' '.$sql_querys; + } + $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; if(!($result_oe = $db->db_query($sql_query))) $error_msg.=$db->db_last_error().' '.$sql_query; diff --git a/vilesci/personen/aliquote_reduktion.php b/vilesci/personen/aliquote_reduktion.php index be9094b7d..dd2f86df2 100644 --- a/vilesci/personen/aliquote_reduktion.php +++ b/vilesci/personen/aliquote_reduktion.php @@ -74,6 +74,7 @@ aqr.studiengaenge = []; aqr.studiensemester = []; aqr.studienplaetze = []; + aqr.zgvElems = []; aqr.actualSequence = 1; SERVICE_TARGET = "aliquote_reduktion.json.php"; @@ -112,6 +113,12 @@ if(!confirm("Es wurden zu viel Studenten gewählt!")) return; } + else + { + if(!confirm("Sind Sie sicher, dass Sie die ausgewählten Personen aufnehmen wollen?")) + return; + } + var prestudent_ids = []; aqr.studenten.forEach(function(i) @@ -190,7 +197,7 @@ aqr.studenten=res; aqr.studenten.forEach(function(i) { - if(i.laststatus=='Wartender'||i.laststatus=='Bewerber') + if((i.laststatus=='Wartender'||i.laststatus=='Bewerber') && i.rt_gesamtpunkte !== null && i.rt_gesamtpunkte > 0) i.applicant = true; else if(i.laststatus=='Student'||i.laststatus=='Aufgenommener') i.selected=true; @@ -212,12 +219,12 @@ return ret; } - aqr.getAcceptedCount = function() + aqr.getAcceptedCount = function(zgvGruppe) { var ret = 0; aqr.studenten.forEach(function(i) { - if(i.laststatus=='Student'||i.laststatus=='Aufgenommener') + if((i.laststatus=='Student'||i.laststatus=='Aufgenommener') && (zgvGruppe === undefined || zgvGruppe === i.bezeichnung)) ret++; }); return ret; @@ -225,24 +232,60 @@ aqr.doPreselection = function() { - if(parseInt(aqr.selectedStudienplatz.apz) >= 0) + aqr.zgvElems = []; + if(parseInt(aqr.selectedStudienplatz.apz) >= 0) // we only preselect, if we have an APZ { aqr.studenten.sort(sortStudentenRTP); var zgvs = aqr.getZGVArray(); var neededStudentsCount = aqr.selectedStudienplatz.apz - aqr.getAcceptedCount(); - var perZGV = parseInt(neededStudentsCount / zgvs.length); + var perZGV = aqr.studenten.length; var zgvElems = []; + var allApplicants = []; + + aqr.studenten.forEach(function(j) + { + if(j.applicant) + allApplicants.push(j); + }); + + var applicantCount = aqr.selectedStudienplatz.apz; + if(applicantCount > allApplicants.length) + applicantCount = allApplicants.length; + zgvs.forEach(function(i) { - zgvElems.push({name:i,needed:perZGV}); + var applicantsFromZGV = []; + aqr.studenten.forEach(function(j) + { + if(j.applicant && j.bezeichnung === i) + applicantsFromZGV.push(j); + }); + + // calculate the aliquote reduction for every ZGV + var percent = applicantsFromZGV.length / allApplicants.length * 100; + var neededFromZGV = (applicantCount / 100 * percent) - aqr.getAcceptedCount(i); + + if(neededFromZGV < 0) + neededFromZGV = 0; + + zgvElems.push({name:i, needed:neededFromZGV, percent:percent, accepted: aqr.getAcceptedCount(i), neededSum: (applicantCount / 100 * percent)}); }); - var residual = perZGV * zgvs.length; + aqr.zgvElems = JSON.parse(JSON.stringify(zgvElems)); + + // calculate the already distributed students + var residual = 0; + zgvElems.forEach(function(i) + { + residual += i.needed; + }); + + // calculate the difference from needed to already distributed var resDiff = neededStudentsCount - residual; // distribute the remaining places on the present ZGVs - while(resDiff > 0) + while(resDiff > 0 && zgvElems.length > 0/*if there are no zgvs(to prevent a deadlock)*/) { zgvElems.forEach(function(i) { @@ -276,7 +319,7 @@ { var beginNeeded = needed; - //distribute the remainig applicants to the present ZGVs + //distribute the applicants to the present ZGVs for(var i=0; i < zgvElems.length; i++) { for(var j in aqr.studenten) @@ -284,9 +327,11 @@ if( aqr.studenten[j].laststatus!='Abgewiesener' && aqr.studenten[j].laststatus!='Abbrecher' - && zgvElems[i].needed > 0 + && parseInt(zgvElems[i].needed) > 0 && aqr.studenten[j].bezeichnung == zgvElems[i].name - && !aqr.studenten[j].seqPlace) + && !aqr.studenten[j].seqPlace + && !aqr.studenten[j].selected + && aqr.studenten[j].applicant) { aqr.setSequence(aqr.studenten[j]); zgvElems[i].needed --; @@ -303,7 +348,7 @@ //distribute the rest of the applicants, WITH a ZGV group for(var j in aqr.studenten) { - if(!aqr.studenten[j].selected && aqr.studenten[j].bezeichnung) + if(!aqr.studenten[j].selected && aqr.studenten[j].bezeichnung && aqr.studenten[j].applicant) { aqr.setSequence(aqr.studenten[j]); if(needed > 0 && (aqr.studenten[j].laststatus=='Wartender'||aqr.studenten[j].laststatus=='Bewerber')) @@ -316,7 +361,7 @@ //distribute the rest of the applicants, WITHOUT a ZGV group for(var j in aqr.studenten) { - if(!aqr.studenten[j].selected && !aqr.studenten[j].bezeichnung) + if(!aqr.studenten[j].selected && !aqr.studenten[j].bezeichnung && aqr.studenten[j].applicant) { aqr.setSequence(aqr.studenten[j]); if(needed > 0 && (aqr.studenten[j].laststatus=='Wartender'||aqr.studenten[j].laststatus=='Bewerber')) @@ -403,6 +448,7 @@ Reihung RT Gesamt Interviewbogen + Anmerkung/Prio Status {{aqr.choosenStuds}}/{{aqr.selectedStudienplatz.apz}} {{aqr.choosenStuds}}/Keine APZ @@ -418,6 +464,7 @@ {{stud.seqPlace}} {{stud.rt_gesamtpunkte}} {{stud.interviewbogen?'vorhanden':'nicht vorhanden'}} + {{stud.anmerkung}} {{stud.laststatus}} @@ -429,8 +476,36 @@ +

ZGV Informationen

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameProzentInsgesamt benötigtBereits aufgenommenNoch benötigte Personen
{{zgv.name}}{{zgv.percent | number: 2}}%{{zgv.neededSum | parseInt}}{{zgv.accepted}}{{zgv.needed | parseInt}}
Gesamt{{aqr.selectedStudienplatz.apz}}{{aqr.getAcceptedCount()}}{{aqr.selectedStudienplatz.apz - aqr.getAcceptedCount()}}
-

Bereits aufgenommene

+

Restliche Studenten

@@ -441,6 +516,7 @@ + @@ -455,6 +531,7 @@ +
Reihung RT Gesamt InterviewbogenAnmerkung/Prio Status
{{stud.seqPlace}} {{stud.rt_gesamtpunkte}} {{stud.interviewbogen?'vorhanden':'nicht vorhanden'}}{{stud.anmerkung}} {{stud.laststatus}}