* Manfred Kindl */ require_once('../../../config/cis.config.inc.php'); require_once('../../../include/lehrveranstaltung.class.php'); require_once('../../../include/lehreinheitgruppe.class.php'); require_once('../../../include/lehreinheit.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/lehreinheitmitarbeiter.class.php'); require_once('../../../include/studiensemester.class.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/erhalter.class.php'); require_once('../../../include/datum.class.php'); /** * Description of lehrelisthelper * * @author bambi */ class LehreListHelper { protected $db; protected $studiensemester; protected $lvid; protected $lv; protected $lehreinheit; protected $stg; protected $arr_lehrende; protected $studentuids; protected $data; protected $gruppen_string; protected $lehrende_string; protected $raum_string; public function __construct(basis_db $db, $studiensemester, $lvid, lehrveranstaltung $lv, studiengang $stg, $lehreinheit='') { $this->db = $db; $this->studiensemester = $studiensemester; $this->lvid = $lvid; $this->lv = $lv; $this->lehreinheit = $lehreinheit; $this->stg = $stg; $this->arr_lehrende = array(); $this->studentuids = array(); $this->data = array(); $this->gruppen_string = ''; $this->lehrende_string = ''; $this->raum_string = ''; $this->loadMemberGroups(); $this->loadPlannedRooms(); $this->initData(); $this->loadLehrende(); $this->loadStudierende(); } public function getData() { return $this->data; } public function getStudentUids() { return $this->studentuids; } public function getArr_Lehrende() { return $this->arr_lehrende; } public function getLehrende_String() { return $this->lehrende_string; } protected function loadMemberGroups() { // Teilnehmende Gruppen laden $qry = "SELECT DISTINCT ON(kuerzel, semester, verband, gruppe, gruppe_kurzbz) UPPER(stg_typ::varchar(1) || stg_kurzbz) as kuerzel, semester, verband, gruppe, gruppe_kurzbz FROM campus.vw_lehreinheit WHERE lehrveranstaltung_id=".$this->db->db_add_param($this->lvid, FHC_INTEGER)." AND studiensemester_kurzbz=".$this->db->db_add_param($this->studiensemester); if($this->lehreinheit!='') $qry.=" AND lehreinheit_id=".$this->db->db_add_param($this->lehreinheit, FHC_INTEGER); $this->gruppen_string = ''; if($result = $this->db->db_query($qry)) { while($row = $this->db->db_fetch_object($result)) { if($this->gruppen_string!='') $this->gruppen_string.=', '; if($row->gruppe_kurzbz=='') $this->gruppen_string.=trim($row->kuerzel.'-'.$row->semester.$row->verband.$row->gruppe); else $this->gruppen_string.=$row->gruppe_kurzbz; } } } protected function loadPlannedRooms() { // Verplante Räume laden $qry = "SELECT distinct(ort_kurzbz) FROM lehre.tbl_stundenplan WHERE lehreinheit_id in ( SELECT lehreinheit_id FROM campus.vw_lehreinheit WHERE lehrveranstaltung_id = ".$this->db->db_add_param($this->lvid, FHC_INTEGER)." AND studiensemester_kurzbz = ".$this->db->db_add_param($this->studiensemester)." )"; if($this->lehreinheit!='') $qry.= " AND tbl_stundenplan.lehreinheit_id = ".$this->db->db_add_param($this->lehreinheit, FHC_INTEGER); $this->raum_string = ''; if($result = $this->db->db_query($qry)) { while($row = $this->db->db_fetch_object($result)) { if($this->raum_string!='') $this->raum_string.=', '; if($row->ort_kurzbz!='') $this->raum_string.=$row->ort_kurzbz; } } } protected function initData() { $studiengang_bezeichnung=$this->stg->bezeichnung; $this->stg->getAllTypes(); $this->data = array( 'gruppen'=>$this->gruppen_string, 'bezeichnung'=>$this->lv->bezeichnung, 'lehrveranstaltung_id'=>$this->lv->lehrveranstaltung_id, 'studiengang'=>$studiengang_bezeichnung, 'studiengang_kz'=>$this->lv->studiengang_kz, 'typ'=>$this->stg->studiengang_typ_arr[$this->stg->typ], 'ects'=>$this->lv->ects, 'sprache'=>$this->lv->sprache, 'studiensemester'=>$this->studiensemester, 'semester'=>$this->lv->semester, 'orgform'=>$this->lv->orgform_kurzbz, 'raum'=>$this->raum_string, ); } protected function loadLehrende() { //Lehrende der LV laden und in ein Array schreiben $lehrende = new lehreinheitmitarbeiter(); $lehrende->getMitarbeiterLV($this->lvid, $this->studiensemester, $this->lehreinheit); $this->arr_lehrende = array(); if (isset($lehrende->result)) { foreach($lehrende->result AS $row) { $this->data[]=array('lehrende'=>array('uid'=>$row->uid,'name'=>$row->vorname.' '.$row->nachname)); $this->arr_lehrende[]=mb_strtoupper($row->uid); $this->lehrende_string .= (strlen($this->lehrende_string) > 0) ? ', ' . $row->vorname . ' ' . $row->nachname : $row->vorname . ' ' . $row->nachname; } } } protected function loadStudierende() { //Studierende der LV laden und in ein Array schreiben $qry = 'SELECT distinct on(nachname, vorname, public.tbl_benutzer.person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid, tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_person.geschlecht, tbl_studiengang.kurzbzlang, tbl_mobilitaet.mobilitaetstyp_kurzbz, tbl_zeugnisnote.note, (CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN 1 ELSE 0 END) as doubledegree, (tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout, public.tbl_prestudent.gsstudientyp_kurzbz as ddtype FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid) LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) LEFT JOIN lehre.tbl_note USING (note) LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz) LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id) LEFT JOIN public.tbl_prestudent USING(prestudent_id) WHERE vw_student_lehrveranstaltung.lehrveranstaltung_id='.$this->db->db_add_param($this->lvid, FHC_INTEGER).' AND vw_student_lehrveranstaltung.studiensemester_kurzbz='.$this->db->db_add_param($this->studiensemester); if($this->lehreinheit!='') $qry.=' AND vw_student_lehrveranstaltung.lehreinheit_id='.$this->db->db_add_param($this->lehreinheit, FHC_INTEGER); $qry.=' ORDER BY nachname, vorname, public.tbl_benutzer.person_id, daysout DESC, doubledegree DESC'; $stsem_obj = new studiensemester(); $stsem_obj->load($this->studiensemester); $stsemdatumvon = $stsem_obj->start; $stsemdatumbis = $stsem_obj->ende; $erhalter = new erhalter(); $erhalter->getAll(); $a_o_kz = '9'.sprintf("%03s", $erhalter->result[0]->erhalter_kz); //Stg_Kz AO-Studierende auslesen (9005 fuer FHTW) $anzahl_studierende = 0; $datum = new datum(); $zusatz = ''; $this->studentuids = array(); if($result = $this->db->db_query($qry)) { while($row = $this->db->db_fetch_object($result)) { if($row->status!='Abbrecher' && $row->status!='Unterbrecher') { $anzahl_studierende++; if($row->status=='Incoming') //Incoming $zusatz='(i)'; else $zusatz=''; //Outgoing if($row->bisio_id != '' && $row->status != 'Incoming' && ($row->bis > $stsemdatumvon || $row->bis == '') && $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30)) { $zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')'; } else if ($row->bisio_id != '' && $row->status != 'Incoming' && ($row->von > $stsemdatumvon || $row->von == '')) { // if bis datum is not yet known but von is available already $zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')'; } if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen $zusatz.= '('. $row->anmerkung. ')'; if($row->mitarbeiter_uid!='') //mitarbeiter $zusatz.='(ma)'; if($row->stg_kz_student==$a_o_kz) //Außerordentliche Studierende $zusatz.='(a.o.)'; if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) { //Double Degree Student $zusatz .= '(d.d.'; if($row->ddtype == 'Intern') $zusatz .= 'i.)'; else if ($row->ddtype == 'Extern') $zusatz .='o.)'; else $zusatz .= ')'; } if(($row->wahlname != '')) { //als Zusatz speichern //$zusatz .= '(Wahlname: ' . $row->wahlname . ')'; //wenn vorhanden statt Vornamen anzeigen $vorname = $row->wahlname; } else { $vorname = $row->vorname; } $this->studentuids[] = $row->student_uid; $this->data[]=array('student'=>array( 'uid' => $row->student_uid, 'vorname'=>$vorname, 'nachname'=>$row->nachname, 'geschlecht'=>$row->geschlecht, 'personenkennzeichen'=>trim($row->matrikelnr), 'matr_nr'=>$row->matr_nr, 'semester'=>$row->semester, 'verband'=>trim($row->verband), 'gruppe'=>trim($row->gruppe), 'zusatz'=>$zusatz, 'studiengang_kurzbz'=>$row->kurzbzlang, 'mobilitaetstyp_kurzbz'=>$row->mobilitaetstyp_kurzbz, 'note'=>$row->note )); } } //Anzahl Studierende in Array $data (an erster Stelle) einfuegen $this->data = array_reverse($this->data, true); $this->data['anzahl_studierende'] = $anzahl_studierende; $this->data = array_reverse($this->data, true); } } }