diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index f9bd57117..9a4d1ded7 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -73,6 +73,7 @@ require_once('../../include/adresse.class.php'); require_once('../../include/reihungstest.class.php'); require_once('../../include/studienplan.class.php'); require_once('../../include/mobilitaet.class.php'); +require_once('../../include/studienordnung.class.php'); $user = get_uid(); $db = new basis_db(); @@ -4101,17 +4102,57 @@ if(!$error) } else { - $gesamtpunkte=0; + $gesamtpunkte_arr = array(); $reihungstest = new reihungstest(); if($reihungstest->getReihungstestPerson($prestudent->person_id)) { foreach($reihungstest->result as $row) - $gesamtpunkte += $row->punkte; + { + $studienplan = new studienplan(); + if($studienplan->loadStudienplan($row->studienplan_id)) + { + $studienordnung = new studienordnung(); + if($studienordnung->loadStudienordnung($studienplan->studienordnung_id)) + { + if($studienordnung->studiengang_kz == $prestudent->studiengang_kz) + { + $rt_obj = new reihungstest(); + $rt_obj->load($row->reihungstest_id); + if(!isset($gesamtpunkte_arr[$rt_obj->studiensemester_kurzbz])) + $gesamtpunkte_arr[$rt_obj->studiensemester_kurzbz]=0; + $gesamtpunkte_arr[$rt_obj->studiensemester_kurzbz] += $row->punkte; + } + } + else + { + $return = false; + $errormsg = $studienordnung->errormsg; + $error = true; + } + } + else + { + $return = false; + $errormsg = $studienplan->errormsg; + $error = true; + } + } - $return = true; - $error = false; - $data = $gesamtpunkte; - $errormsg = 'Erfolgreich gespeichert'; + if(!$error) + { + if(count(array_keys($gesamtpunkte_arr))>0) + { + $studiensemester = new studiensemester(); + $stsem = $studiensemester->getYoungestFromArray(array_keys($gesamtpunkte_arr)); + $gesamtpunkte = $gesamtpunkte_arr[$stsem]; + } + else + $gesamtpunkte = '0'; + $return = true; + $error = false; + $data = $gesamtpunkte; + $errormsg = 'Erfolgreich gespeichert'; + } } else { diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index f83484af9..41a5f4028 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -662,7 +662,7 @@ class studiensemester extends basis_db public function getFinished($limit = null) { $qry = "SELECT * FROM public.tbl_studiensemester WHERE start <= NOW() ORDER BY ende DESC"; - + if(!is_null($limit) && is_numeric($limit)) $qry.=' LIMIT '.$limit; @@ -768,22 +768,22 @@ class studiensemester extends basis_db { if (!isset($this->begin)) $this->begin = new stdclass(); - + $this->begin->start = mktime(0, 0, 0, mb_substr($row->start, 5, 2), mb_substr($row->start, 8, 2), mb_substr($row->start, 0, 4) ); - + if (!isset($this->end)) $this->ende = new stdclass(); - + $this->ende->ende = mktime(0, 0, 0, mb_substr($row->ende, 5, 2), mb_substr($row->ende, 8, 2), mb_substr($row->ende, 0, 4) ); - + return true; } else @@ -976,5 +976,44 @@ class studiensemester extends basis_db return false; } } + + /** + * Liefert aus einer Liste von Studiensemester das neueste Studiensemester zurueck + * @param $studiensemester_arr Array mit Studiensemester_kurzbz + * @return Studiensemester aus dem Array das zuletzt startet + */ + public function getYoungestFromArray($studiensemester_arr) + { + $qry = "SELECT + * + FROM + public.tbl_studiensemester + WHERE + studiensemester_kurzbz IN(".$this->db_implode4SQL($studiensemester_arr).") + ORDER BY + start desc + LIMIT 1"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = 'Es wurde kein Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des Studiensemesters'; + return false; + } + } } ?> \ No newline at end of file