diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 3b69bba8f..2e306de94 100755 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -539,11 +539,20 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $konto = new konto(); $creditPoints = $konto->getCreditPointsOfStudiensemester($uid, $pruefungsfenster->studiensemester_kurzbz); - if(($creditPoints != false) && ($lehrveranstaltung->ects > ($creditPoints - $ects_verwendet))) + if(($creditPoints != false)) + { + $cpVerbleibend = $creditPoints - $ects_verwendet; + if(($lehrveranstaltung->ects > $cpVerbleibend)) + { + $data['error'] = 'true'; + $data['errormsg'] = $p->t('pruefung/zuWenigeCreditPoints'); + return $data; + } + } + else { $data['error'] = 'true'; - $data['errormsg'] = $p->t('pruefung/zuWenigeCreditPoints'); - return $data; + $data['errormsg'] = 'Fehler beim Laden der Credit Points.'; } if(isset($data['error']) && $data['error'] = 'true') diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php index 0045c6927..e8580448f 100755 --- a/cis/private/profile/studienplan.php +++ b/cis/private/profile/studienplan.php @@ -291,9 +291,9 @@ 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; - } + } } } @@ -447,14 +447,22 @@ function drawTree($tree, $depth) if($note_pruef_arr[$note]->positiv) $positiv=true; } - + if(!$positiv) { - echo ''.$p->t('studienplan/negativ').''; + //echo ''.$p->t('studienplan/negativ').''; + if(count($kompatibleLVs) > 0) + { + checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid, true); + } + else + { + echo ''.$p->t('studienplan/negativ').''; + } } elseif($lvregelExists) { - if($abgeschlossen && $positiv) + if($abgeschlossen || $positiv) { echo ''.$p->t('studienplan/abgeschlossen').''; } @@ -475,66 +483,7 @@ function drawTree($tree, $depth) //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(!$row_tree->stpllv_pflicht) - { - echo ''.$p->t('studienplan/optional').''; - } - else - { - echo ''.$p->t('studienplan/offen').''; - } - } + checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid); } else { @@ -708,6 +657,79 @@ function drawTree($tree, $depth) drawTree($row_tree->childs, $depth+1); } } + +function checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid, $negativeNote= null) +{ + $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(!$row_tree->stpllv_pflicht) + { + echo ''.$p->t('studienplan/optional').''; + } + else + { + if(($negativeNote!= null) && ($negativeNote == true)) + { + echo ''.$p->t('studienplan/negativ').''; + } + else + { + echo ''.$p->t('studienplan/offen').''; + } + } + } +} + + echo ''; echo '

'.$p->t('studienplan/legende').':
diff --git a/content/fasoverlay.js.php b/content/fasoverlay.js.php index da2182e68..533e3122e 100644 --- a/content/fasoverlay.js.php +++ b/content/fasoverlay.js.php @@ -1775,13 +1775,13 @@ function PrintStudienblatt(event) var studienplan_id = ""; for (var v=0; v < items; v++) { - var stsem = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', v); - if(stsem == ss) - { - studienplan_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-studienplan_id', v); - if(studienplan_id!='') - break; - } + var stsem = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', v); + if(stsem == ss) + { + studienplan_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-studienplan_id', v); + if(studienplan_id!='') + break; + } } } catch(e) @@ -1851,7 +1851,7 @@ function PrintStudienblatt(event) { if(error>0) alert(error+' der ausgewaehlten Personen haben keinen Account'); - action = 'content/pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&output='+output+'&&uid='+data+"&ss="+ss; + action = 'content/pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&output='+output+'&uid='+data+"&ss="+ss; window.open(action,'Studienblatt','height=520,width=500,left=350,top=350,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes'); } else @@ -1866,6 +1866,7 @@ function PrintStudienblatt(event) function PrintStudienblattEnglisch(event) { var tree = document.getElementById('student-prestudent-tree-rolle'); + var ss = document.getElementById('statusbarpanel-semester').label; var items = tree.view.rowCount; try @@ -1873,12 +1874,14 @@ function PrintStudienblattEnglisch(event) var studienplan_id = ""; for (var v=0; v < items; v++) { - var stsem = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', v); - if(stsem == ss) - { - studienplan_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-studienplan_id', v); + var stsem = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', v); + if(stsem == ss) + { + studienplan_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-studienplan_id', v); + if(studienplan_id!='') + break; + } } - } } catch(e) { @@ -1947,7 +1950,7 @@ function PrintStudienblattEnglisch(event) { if(error>0) alert(error+' der ausgewaehlten Personen haben keinen Account'); - action = 'content/pdfExport.php?xsl=StudienblattEng&xml=studienblatt.xml.php&output='+output+'&&uid='+data; + action = 'content/pdfExport.php?xsl=StudienblattEng&xml=studienblatt.xml.php&output='+output+'&uid='+data+'&ss='+ss; window.open(action,'StudienblattEng','height=520,width=500,left=350,top=350,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes'); } else diff --git a/include/pruefungsanmeldung.class.php b/include/pruefungsanmeldung.class.php index 67b32e65a..fa7798a1c 100644 --- a/include/pruefungsanmeldung.class.php +++ b/include/pruefungsanmeldung.class.php @@ -174,16 +174,23 @@ class pruefungsanmeldung extends basis_db { /** * Lädt alle Prüfungsanmeldungen eines Studenten * @param type $uid UID eines Studenten - * @param type $studiensemester_kurbz Filter nach Studiensemester (zB 'WS2013') + * @param type $studiensemester_kurzbz Filter nach Studiensemester (zB 'WS2013') * @param type $status_kurzbz Filter nach Status (zB 'angemeldet') * @return boolean|array false, bei Fehler; Array mit Anmeldungen */ - public function getAnmeldungenByStudent($uid, $studiensemester_kurbz=null, $status_kurzbz=null) + public function getAnmeldungenByStudent($uid, $studiensemester_kurzbz=null, $status_kurzbz=null) { $qry = 'SELECT * FROM campus.tbl_pruefungsanmeldung pa ' . 'JOIN campus.tbl_pruefungstermin pt ON pa.pruefungstermin_id=pt.pruefungstermin_id ' . 'JOIN campus.tbl_pruefung p ON p.pruefung_id=pt.pruefung_id ' - . 'WHERE uid='.$this->db_add_param($uid).';'; + . 'WHERE uid='.$this->db_add_param($uid); + + if($studiensemester_kurzbz != null) + { + $qry .= ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz); + } + + $qry .= ';'; if(!$this->db_query($qry)) { @@ -204,13 +211,13 @@ class pruefungsanmeldung extends basis_db { $anmeldung->pruefung_id = $row->pruefung_id; $anmeldung->von = $row->von; $anmeldung->bis = $row->bis; - $anmeldung->reihung = $row->reihung; - $anmeldung->wuensche = $row->wuensche; - $anmeldung->kommentar = $row->kommentar; - $anmeldung->statusupdateamum = $row->statusupdateamum; - $anmeldung->statusupdatevon = $row->statusupdatevon; - $anmeldung->anrechnung_id = $row->anrechnung_id; - $anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; + $anmeldung->reihung = $row->reihung; + $anmeldung->wuensche = $row->wuensche; + $anmeldung->kommentar = $row->kommentar; + $anmeldung->statusupdateamum = $row->statusupdateamum; + $anmeldung->statusupdatevon = $row->statusupdatevon; + $anmeldung->anrechnung_id = $row->anrechnung_id; + $anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; array_push($anmeldungen, $anmeldung); } return $anmeldungen; diff --git a/rdf/studienblatt.xml.php b/rdf/studienblatt.xml.php index 1145a19dd..a3da0ea05 100644 --- a/rdf/studienblatt.xml.php +++ b/rdf/studienblatt.xml.php @@ -94,7 +94,7 @@ foreach($uid_arr as $uid) $datum_aktuell = date('d.m.Y'); $gebdatum = date('d.m.Y',strtotime($student->gebdatum)); $prestudent = new prestudent($student->prestudent_id); - $prestudent->getLastStatus($student->prestudent_id,$studiensemester,'Student'); + $prestudent->getLastStatus($student->prestudent_id,$studiensemester); $studienordnung = new studienordnung(); $studienordnung->getStudienordnungFromStudienplan($prestudent->studienplan_id); $studiengang = new studiengang(); @@ -180,7 +180,7 @@ foreach($uid_arr as $uid) echo "\t\t".$studiensemester_beginn->bezeichnung.""; echo "\t\t".date('d.m.Y',strtotime($studiensemester_beginn->start)).""; - $prestudent->getLastStatus($student->prestudent_id,$studiensemester,'Student'); + $prestudent->getLastStatus($student->prestudent_id,$studiensemester); $studiensemester_abschluss = new studiensemester(); $abschluss = $studiensemester_abschluss->jump($prestudent->studiensemester_kurzbz, $studienplan->regelstudiendauer-$prestudent->ausbildungssemester); $studiensemester_abschluss->load($abschluss); @@ -306,7 +306,7 @@ foreach($uid_arr as $uid) } } $prestudent = new prestudent(); - $prestudent->getLastStatus($student->prestudent_id, null, 'Student'); + $prestudent->getLastStatus($student->prestudent_id, null); if($prestudent->orgform_kurzbz!='') $orgform = $prestudent->orgform_kurzbz;