diff --git a/cis/testtool/login.php b/cis/testtool/login.php index cb7f3fa12..5fec6d670 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -19,6 +19,7 @@ * Andreas Oesterreicher , * Rudolf Hangl , * Manfred Kindl + * Cristina Hainberger */ require_once('../../config/cis.config.inc.php'); @@ -356,22 +357,60 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id'])) // STG mit der höchsten Prio ermitteln $ps = new Prestudent(); - $ps->getActualInteressenten($prestudent_id, true); - $firstPrio_studiengang_kz = array_column($ps->result, 'studiengang_kz'); - $firstPrio_studiengang_kz = array_shift($firstPrio_studiengang_kz); + + // * wenn STG des eingeloggten Prestudenten vom Typ Bachelor ist, dann höchste Prio aller + // Bachelor-STG ermitteln, an denen die Person noch interessiert ist + if ($typ->typ == 'b') + { + $ps->getActualInteressenten($prestudent_id, true, 'b'); + $firstPrio_studiengang_kz = array_column($ps->result, 'studiengang_kz'); + $firstPrio_studiengang_kz = array_shift($firstPrio_studiengang_kz); + } + // * sonst STG der session übernehmem + else + { + $firstPrio_studiengang_kz = $prestudent->studiengang_kz; + } // Sprachwahl zu STG mit höchster Prio ermitteln $ablauf = new Ablauf(); $ablauf->getAblaufVorgabeStudiengang($firstPrio_studiengang_kz); $sprachwahl = $ablauf->result[0]->sprachwahl; - //Prestudent Informationen und Logout + //Prestudent Informationen und Logout echo '
'; echo '
'.$p->t('testtool/begruessungstext').'

'; echo ''.$p->t('zeitaufzeichnung/id').': '.$_SESSION['prestudent_id'].'
'; echo ''.$p->t('global/name').': '.$_SESSION['vorname'].' '.$_SESSION['nachname'].'
'; echo ''.$p->t('global/geburtsdatum').': '.$date->formatDatum($_SESSION['gebdatum'],'d.m.Y').'
'; - echo ''.$p->t('global/studiengang').': '.$typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'

'; + + // * wenn Prestudent an mehreren Bachelor-Studiengängen interessiert ist, dann alle STG anführen + if ($typ->typ == 'b') + { + $ps_arr = new Prestudent(); + $ps_arr->getActualInteressenten($prestudent_id, false, 'b'); + + if (count($ps_arr->result) > 1) + { + echo ''.$p->t('global/studiengang'). ":

"; + foreach ($ps_arr->result as $ps_obj) + { + $stg = new Studiengang($ps_obj->studiengang_kz); + echo "
  • ". $ps_obj->typ_bz .' '. ($sprache_user == 'English' ? $stg->english : $stg->bezeichnung). '
    '. "
  • "; + } + echo "
    "; + } + // * wenn Prestudent nur an einem Bachelor-Studiengang interessiert ist, dann nur den einen STG anführen + else + { + echo ''.$p->t('global/studiengang').': '. $typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'

    '; + } + } + // * wenn Prestudent an einem Master-Studiengang interessiert ist, dann nur den einen STG anführen + else + { + echo ''.$p->t('global/studiengang').': '.$typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'

    '; + } echo ''; echo '
    '; echo '

    '; diff --git a/cis/testtool/menu.php b/cis/testtool/menu.php index 1399ad019..75d820a59 100644 --- a/cis/testtool/menu.php +++ b/cis/testtool/menu.php @@ -26,6 +26,7 @@ require_once('../../config/global.config.inc.php'); require_once('../../include/basis_db.class.php'); require_once('../../include/sprache.class.php'); require_once '../../include/phrasen.class.php'; +require_once '../../include/studiengang.class.php'; if (!$db = new basis_db()) die('Fehler beim Oeffnen der Datenbankverbindung'); @@ -100,7 +101,10 @@ if (isset($_SESSION['pruefling_id'])) echo ''.$p->t('testtool/einleitung').''; echo ' '; echo ''; - + + $studiengang_kz = (isset($_SESSION['studiengang_kz'])) ? $_SESSION['studiengang_kz'] : ''; + $stg = new Studiengang($studiengang_kz); + $sprache_mehrsprachig = new sprache(); $bezeichnung_mehrsprachig = $sprache_mehrsprachig->getSprachQuery('bezeichnung_mehrsprachig'); @@ -130,11 +134,17 @@ if (isset($_SESSION['pruefling_id'])) prestudent_id, studienplan_id, studiengang_kz, + typ, + tbl_studiengangstyp.bezeichnung AS typ_bz, ausbildungssemester AS semester FROM public.tbl_prestudentstatus JOIN public.tbl_prestudent USING (prestudent_id) + JOIN + public.tbl_studiengang USING (studiengang_kz) + JOIN + public.tbl_studiengangstyp USING (typ) WHERE tbl_prestudent.person_id = ( SELECT @@ -157,7 +167,22 @@ if (isset($_SESSION['pruefling_id'])) ) AND - status_kurzbz = 'Interessent' + status_kurzbz = 'Interessent'"; + + /* If the logged-in prestudents study is a Bachelor-study, filter only Bachelor-studies */ + if ($stg->typ == 'b') + { + $qry .= " + AND tbl_studiengang.typ = 'b'"; + } + /* If the logged-in prestudents study is NOT a Bachelor-study, get only the specific study */ + else + { + $qry .= " + AND tbl_studiengang.studiengang_kz = ". $studiengang_kz; + } + + $qry .= " -- Order to get last semester when using distinct on ORDER BY diff --git a/include/prestudent.class.php b/include/prestudent.class.php index a5f85e1da..35d16dd0d 100644 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -426,7 +426,7 @@ class prestudent extends person * @boolean $prio Wenn true, dann wird nur der Prestudent mit dem am höchsten priorisierten Studiengang zurückgegeben. * return Objekt-Array mit allen Prestudenten einer Person, die aktuell an STG interessiert sind. */ - public function getActualInteressenten($prestudent_id, $prio = false) + public function getActualInteressenten($prestudent_id, $prio = false, $typ = NULL, $studiengang_kz = NULL) { if (is_numeric($prestudent_id)) { @@ -436,11 +436,17 @@ class prestudent extends person prestudent_id, studienplan_id, studiengang_kz, + typ, + tbl_studiengangstyp.bezeichnung AS typ_bz, ausbildungssemester FROM public.tbl_prestudentstatus JOIN public.tbl_prestudent USING (prestudent_id) + JOIN + public.tbl_studiengang USING (studiengang_kz) + JOIN + public.tbl_studiengangstyp USING (typ) WHERE tbl_prestudent.person_id = ( SELECT @@ -450,8 +456,8 @@ class prestudent extends person WHERE prestudent_id = ". $this->db_add_param($prestudent_id). " ) - - -- Filter only future studiensemester (incl. actual one) + + /* Filter only future studiensemester (incl. actual one) */ AND studiensemester_kurzbz IN ( SELECT @@ -461,12 +467,25 @@ class prestudent extends person WHERE ende > now() ) - + AND - status_kurzbz = 'Interessent' - - -- Order to get the very last status and highest prio on top - ORDER BY + status_kurzbz = 'Interessent'"; + + if (!is_null($typ) && is_string($typ)) + { + $qry .= " + AND tbl_studiengang.typ = ". $this->db_add_param($typ); + } + + if (!is_null($studiengang_kz) && is_numeric($studiengang_kz)) + { + $qry .= " + AND tbl_studiengang.studiengang_kz = ". $this->db_add_param($studiengang_kz); + } + + $qry .= " + -- Order to get the very last status and highest prio on top + ORDER BY priorisierung NULLS LAST, prestudent_id, datum DESC, @@ -481,6 +500,8 @@ class prestudent extends person "; } + //echo "
    ". $qry; + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) @@ -490,6 +511,8 @@ class prestudent extends person $obj->prestudent_id = $row->prestudent_id; $obj->studienplan_id = $row->studienplan_id; $obj->studiengang_kz = $row->studiengang_kz; + $obj->typ = $row->typ; + $obj->typ_bz = $row->typ_bz; $obj->ausbildungssemester = $row->ausbildungssemester; $this->result[] = $obj; diff --git a/include/pruefling.class.php b/include/pruefling.class.php index 0364547d1..071d7a1a1 100644 --- a/include/pruefling.class.php +++ b/include/pruefling.class.php @@ -342,20 +342,34 @@ class pruefling extends basis_db // die den Reihungstest oefter im selben Studiengang gemacht haben nicht das // Ergebniss der beiden Tests summiert bekommen // Im Zweifelsfall wird der neuere Reihungstest genommen - $qry.= " AND prestudent_id = ( - SELECT - prestudent_id - FROM - public.tbl_rt_person - JOIN public.tbl_reihungstest ON(rt_id=reihungstest_id) - JOIN public.tbl_prestudent USING(person_id) - JOIN public.tbl_prestudentstatus USING(prestudent_id, studienplan_id) - WHERE - tbl_rt_person.person_id=".$this->db_add_param($person_id, FHC_INTEGER)." - AND tbl_rt_person.rt_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER)." - AND tbl_prestudentstatus.status_kurzbz='Interessent' - ORDER BY - tbl_reihungstest.datum desc LIMIT 1)"; + $qry.= " + AND + prestudent_id = ( + SELECT + prestudent_id + FROM + public.tbl_rt_person + JOIN + public.tbl_prestudent USING(person_id) + JOIN + public.tbl_prestudentstatus USING (prestudent_id) + JOIN + tbl_reihungstest ON ( + tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id + AND + tbl_prestudentstatus.studiensemester_kurzbz = tbl_reihungstest.studiensemester_kurzbz + ) + WHERE + tbl_rt_person.person_id = ".$this->db_add_param($person_id, FHC_INTEGER)." + AND + tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)." + AND + tbl_prestudentstatus.status_kurzbz='Interessent' + AND + (tbl_reihungstest.stufe = 1 OR tbl_reihungstest.stufe IS NULL) + ORDER BY + tbl_reihungstest.datum desc LIMIT 1 + )"; } if($result = $this->db_query($qry)) diff --git a/rdf/reihungstest.rdf.php b/rdf/reihungstest.rdf.php index 60f5d8114..cb4ebf8dc 100644 --- a/rdf/reihungstest.rdf.php +++ b/rdf/reihungstest.rdf.php @@ -115,6 +115,37 @@ foreach ($rt->result as $row) } $bezeichnung = $row->studiensemester_kurzbz.' St.'.$row->stufe.' '.(array_key_exists($row->studiengang_kz, $stg)?$stg[$row->studiengang_kz].' ':'').$row->datum.' '.$row->uhrzeit.' '.$row->ort_kurzbz.' '.$row->anmerkung.$freieplaetze; + + + // Convert date string into timestamp + $unixTimestamp = strtotime($row->datum); + + // Get the day of the week + $dayOfWeek = date("l", $unixTimestamp); + switch($dayOfWeek) + { + case 'Monday': + $dayOfWeek = 'Mo'; + break; + case 'Tuesday': + $dayOfWeek = 'Di'; + break; + case 'Wednesday': + $dayOfWeek = 'Mi'; + break; + case 'Thursday': + $dayOfWeek = 'Do'; + break; + case 'Friday': + $dayOfWeek = 'Fr'; + break; + case 'Saturday': + $dayOfWeek = 'Sa'; + break; + case 'Sunday': + $dayOfWeek = 'So'; + break; + } ?> @@ -124,7 +155,7 @@ foreach ($rt->result as $row) anmerkung; ?>]]> datum; ?>]]> uhrzeit; ?>]]> - ]]> + ]]>