From bfd15cddb53eae04a93d7d17cbcf333a9454547e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 10 Sep 2007 13:48:11 +0000 Subject: [PATCH] --- cis/private/lehre/anwesenheitsliste.pdf.php | 116 ++++++++--------- cis/private/lehre/anwesenheitsliste.php | 134 +++++++++++++------- cis/private/lehre/lesson.php | 4 +- cis/private/lehre/notenliste.xls.php | 109 +++++++++------- include/studiensemester.class.php | 19 ++- rdf/zeugnis.rdf.php | 4 +- 6 files changed, 222 insertions(+), 164 deletions(-) diff --git a/cis/private/lehre/anwesenheitsliste.pdf.php b/cis/private/lehre/anwesenheitsliste.pdf.php index a7280d4cd..f893a18a0 100644 --- a/cis/private/lehre/anwesenheitsliste.pdf.php +++ b/cis/private/lehre/anwesenheitsliste.pdf.php @@ -4,12 +4,6 @@ * * Erstellt eine Anwesenheitsliste im PDF-Format * - * Aufruf: - * anwesenheitsliste.pdf.php?stg=222&lfvt=1234 //alle Studenten vom Studiengang 222 Lehrfach 1234 - * anwesenheitsliste.pdf.php?stg=222&sem=1&lfvt=1234 //alle Studenten vom Studiengang 222 und Semester 1 Lehrfach 1234 - * anwesenheitsliste.pdf.php?stg=222&sem=1&verband=A&lfvt=1234 //alle Studenten vom Studiengang 222, Semester 1, Verband A Lehrfach 1234 - * anwesenheitsliste.pdf.php?stg=222&sem=1&verband=A&gruppe=1&lfvt=1234 //alle Studenten vom Studiengang 222, Semester 1, Verband A, Gruppe 1 Lehrfach 1234 - * anwesenheitsliste.pdf.php?stg=222&sem=1&einheit=DVT-1xyz1&lfvt=1234 //alle Studenten vom Studiengang 222, Semester 1, Einheit DVT-1xyz1 Lehrfach 1234 */ setlocale(LC_ALL, "de"); @@ -67,7 +61,13 @@ $lvid = $_GET['lvid']; else die('Fehler bei der Parameteruebergabe'); + + if(isset($_GET['stsem'])) + $stsem = $_GET['stsem']; + else + die('Studiensemester wurde nicht uebergeben'); + $lehreinheit_id = (isset($_GET['lehreinheit_id'])?$_GET['lehreinheit_id']:''); /** * liefert den groesseren der beiden werte * @@ -108,13 +108,27 @@ $pdf->SetXY(30,75); else $pdf->SetXY(30,60); -$stsem_obj = new studiensemester($conn); -$stsem = $stsem_obj->getaktorNext(); +//$stsem_obj = new studiensemester($conn); +//$stsem = $stsem_obj->getaktorNext(); -if($gruppe_kurzbz!='') - $pdf->MultiCell(0,20,'Gruppe: '.$gruppe_kurzbz.' Studiensemester: '.$stsem); -else - $pdf->MultiCell(0,20,'Gruppe: '.strtoupper($stgobj->typ.$stgobj->kurzbz).' '.$sem.$verband.$gruppe.' Studiensemester: '.$stsem); +$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='".addslashes($lvid)."' AND studiensemester_kurzbz='".addslashes($stsem)."'"; +if($lehreinheit_id!='') + $qry.=" AND lehreinheit_id='".addslashes($lehreinheit_id)."'"; + +$gruppen=''; +if($result = pg_query($conn, $qry)) +{ + while($row = pg_fetch_object($result)) + { + if($gruppen!='') + $gruppen.=', '; + if($row->gruppe_kurzbz=='') + $gruppen.=trim($row->kuerzel.'-'.$row->semester.$row->verband.$row->gruppe); + else + $gruppen=$row->gruppe_kurzbz; + } +} +$pdf->MultiCell(0,20,'Gruppe: '.$gruppen.' Studiensemester: '.$stsem); $maxY=$pdf->GetY(); $maxY=getmax($maxY,$pdf->GetY()); @@ -185,7 +199,17 @@ $pdf->MultiCell(520,$lineheight+2,'Lektoren',1,'L',1); //Schleife aller lektoren -$qry = "SELECT distinct vorname, nachname FROM campus.vw_benutzer, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter WHERE uid=mitarbeiter_uid AND tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND lehrveranstaltung_id='".addslashes($lvid)."' AND studiensemester_kurzbz='$stsem' ORDER BY nachname, vorname;"; +$qry = "SELECT + distinct vorname, nachname + FROM campus.vw_benutzer, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter + WHERE + uid=mitarbeiter_uid AND + tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND + lehrveranstaltung_id='".addslashes($lvid)."' AND + studiensemester_kurzbz='$stsem' "; +if($lehreinheit_id!='') + $qry.=" AND tbl_lehreinheit.lehreinheit_id='".addslashes($lehreinheit_id)."'"; +$qry.=" ORDER BY nachname, vorname;"; if($result = pg_query($conn,$qry)) { @@ -271,24 +295,26 @@ $pdf->SetFont('Arial','',8); $pdf->SetXY($maxX,$maxY); $pdf->MultiCell(40,$lineheight,'',1,'L',0); -//$stud = new student($conn); -//$result = $stud->getStudents($einheit,$gruppe,$verband,$sem,$stg); -$qry = 'SELECT distinct vorname, nachname, uid, matrikelnr, verband, gruppe, semester FROM '; -if($gruppe_kurzbz!='') - $qry .= "campus.vw_student JOIN public.tbl_benutzergruppe USING(uid) WHERE studiensemester_kurzbz='$stsem' AND gruppe_kurzbz='".addslashes($gruppe_kurzbz)."'"; -else -{ - $qry .= "campus.vw_student WHERE studiengang_kz='$stg' AND semester='$sem'"; - if($verband!='') - $qry.=" AND verband='$verband'"; - if($gruppe!='') - $qry.=" AND gruppe='$gruppe'"; -} -$qry.= " ORDER BY nachname, vorname"; +$qry = "SELECT + distinct vorname, nachname, matrikelnr, + tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe + FROM + campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) + JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid) + LEFT JOIN public.tbl_studentlehrverband USING(student_uid) + WHERE + lehrveranstaltung_id='".addslashes($lvid)."' AND + vw_student_lehrveranstaltung.studiensemester_kurzbz='".addslashes($stsem)."' AND + tbl_studentlehrverband.studiensemester_kurzbz='".addslashes($stsem)."'"; + +if($lehreinheit_id!='') + $qry.=" AND lehreinheit_id='".addslashes($lehreinheit_id)."'"; + +$qry.=' ORDER BY nachname, vorname'; if($result = pg_query($conn, $qry)) { -$i=0; + $i=0; while($elem = pg_fetch_object($result)) { $i++; @@ -344,40 +370,6 @@ $i=0; } } - -/* - - - - - - - -$stud = new student($conn); -$result = $stud->getStudents($einheit,$gruppe,$verband,$sem,$stg); - -$i=0; - -foreach($result as $elem) -{ - //Dummys filtern - if(!preg_match('*dummy*',$elem->uid) && $elem->semester!=10) - { - - - - - $i++; - $inhalt[]=array($i,$elem->nachname.' '.$elem->vornamen,trim($elem->matrikelnr),$elem->semester.$elem->verband.$elem->gruppe,'','','','','',''); - } -} -//Tabelle zeichnen -$h=$pdf->morepagestable($inhalt,10,$aligns); -*/ - - - - //FHStg $maxY=$pdf->GetY()+5; $maxX=30; diff --git a/cis/private/lehre/anwesenheitsliste.php b/cis/private/lehre/anwesenheitsliste.php index 5d2df6c46..a27f557da 100644 --- a/cis/private/lehre/anwesenheitsliste.php +++ b/cis/private/lehre/anwesenheitsliste.php @@ -30,6 +30,7 @@ require_once('../../config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/studiengang.class.php'); + require_once('../../../include/lehrveranstaltung.class.php'); $error=0; //Connection Herstellen @@ -52,6 +53,11 @@ $lvid=$_GET['lvid']; else $error=2; + + if(isset($_GET['stsem'])) + $stsem = $_GET['stsem']; + else + die('Studiensemester ist ungueltig'); ?> kuerzel; - - //"normale" Gruppen auslesen - $qry = "SELECT verband, gruppe, count(*) FROM public.tbl_lehrverband JOIN public.tbl_student USING(studiengang_kz, semester, verband, gruppe) WHERE studiengang_kz='$stg_kz' AND semester='$sem' AND student_uid not like '%Dummy%' GROUP BY verband, gruppe;"; - if($result = pg_query($conn,$qry)) - { - if(pg_num_rows($result)>0) - { - $aw_content .= ".$kurzbzlang $sem$kurzbzlang Semester $sem"; - $nt_content .= ".$kurzbzlang $sem$kurzbzlang Semester $sem"; - } - - $lastverband = ''; - - while($row = pg_fetch_object($result)) - { - if($lastverband!=$row->verband) - { - $lastverband=$row->verband; - $aw_content .= "  $kurzbzlang $sem$row->verband$kurzbzlang Semester $sem Verband $row->verband"; - $nt_content .= "  $kurzbzlang $sem$row->verband$kurzbzlang Semester $sem Verband $row->verband"; - } - $aw_content.= "     $kurzbzlang $sem$row->verband$row->gruppe$kurzbzlang Semester $sem Verband $row->verband Gruppe $row->gruppe"; - $nt_content.= "     $kurzbzlang $sem$row->verband$row->gruppe$kurzbzlang Semester $sem Verband $row->verband Gruppe $row->gruppe"; - } - } - else - echo "Fehler beim Auslesen der Daten"; - - echo "
"; - //Spezialgruppen Auslesen - $qry = "SELECT distinct gruppe_kurzbz, bezeichnung FROM public.tbl_gruppe JOIN public.tbl_benutzergruppe USING(gruppe_kurzbz) WHERE studiengang_kz='$stg_kz' AND semester='$sem' AND lehre AND aktiv;"; - if($result = pg_query($conn,$qry)) - { - while($row = pg_fetch_object($result)) - { - $aw_content .= "  $row->gruppe_kurzbz$row->bezeichnung"; - $nt_content .= "  $row->gruppe_kurzbz$row->bezeichnung"; - } - } - else - echo "Fehler beim auslesen der Daten"; + $stg_arr = array(); + $stg_obj = new studiengang($conn); + $stg_obj->getAll(); + + foreach ($stg_obj->result as $row) + $stg_arr[$row->studiengang_kz]=$row->kuerzel; + + $lv = new lehrveranstaltung($conn, $lvid); + + $aw_content .= "Gesamtliste $lv->bezeichnung"; + $nt_content .= "Gesamtliste $lv->bezeichnung"; + echo ""; + $qry = "SELECT *, tbl_lehreinheitgruppe.studiengang_kz FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + WHERE lehrveranstaltung_id='$lvid' AND studiensemester_kurzbz='".addslashes($stsem)."'"; + + if($result = pg_query($conn, $qry)) + { + $lastlehreinheit=''; + $gruppen = ''; + while($row = pg_fetch_object($result)) + { + if($lastlehreinheit!=$row->lehreinheit_id) + { + if($lastlehreinheit!='') + { + $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid) + WHERE lehreinheit_id='$lastlehreinheit'"; + $lektoren = ''; + + if($result_lkt = pg_query($conn, $qry)) + { + while($row_lkt = pg_fetch_object($result_lkt)) + { + if($lektoren!='') + $lektoren.=', '; + $lektoren .= $row_lkt->kurzbz; + } + } + + $aw_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; + $nt_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; + + $lastlehreinheit = $row->lehreinheit_id; + $gruppen=''; + } + else + $lastlehreinheit = $row->lehreinheit_id; + } + + if($gruppen!='') + $gruppen.= ', '; + + if($row->gruppe_kurzbz!='') + $gruppen .= $row->gruppe_kurzbz; + else + $gruppen .= trim($stg_arr[$row->studiengang_kz].'-'.$row->semester.$row->verband.$row->gruppe); + + $lehrform = $row->lehrform_kurzbz; + $kurzbz = $row->kurzbz; + } + $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid) + WHERE lehreinheit_id='$lastlehreinheit'"; + $lektoren = ''; + if($result_lkt = pg_query($conn, $qry)) + { + while($row_lkt = pg_fetch_object($result_lkt)) + { + if($lektoren!='') + $lektoren.=', '; + $lektoren .= $row_lkt->kurzbz; + } + } + + $aw_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; + $nt_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; + } if($nt_content=='' && $aw_content=='') { @@ -136,21 +175,18 @@ else { if($aw_content!='') - $aw_content = "".$aw_content."
GruppeBezeichnung
"; + $aw_content = "".$aw_content."
Anwesenheitslisten
"; else $aw_content = "Derzeit sind in diesem Studiengang / Semester keine Studenten vorhanden"; if($nt_content!='') - $nt_content = "".$nt_content."
GruppeBezeichnung
"; + $nt_content = "".$nt_content."
Notenlisten
"; else $nt_content = "Derzeit sind in diesem Studiengang / Semester keine Studenten vorhanden"; echo "Zum Erstellen der Liste klicken Sie bitte auf die gewünschte Gruppe!"; echo "

"; echo " - - - - + diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php index ffdd30e6f..ff030aeb7 100644 --- a/cis/private/lehre/lesson.php +++ b/cis/private/lehre/lesson.php @@ -81,7 +81,7 @@ $qry = "SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) WHERE lehrveranstaltung_id='$lvid' ORDER BY ende DESC LIMIT 1"; $stsem = new studiensemester($sql_conn); - $angezeigtes_stsem = $stsem->getaktorNext($term_id); + $angezeigtes_stsem = $stsem->getNearest($term_id); echo " ($angezeigtes_stsem)"; echo ' @@ -302,7 +302,7 @@ { //Anwesenheitsliste - echo "Anwesenheits- und Notenlisten
"; + echo "Anwesenheits- und Notenlisten
"; } //Leistungsuebersicht diff --git a/cis/private/lehre/notenliste.xls.php b/cis/private/lehre/notenliste.xls.php index 0024c3da5..6e48c2c00 100644 --- a/cis/private/lehre/notenliste.xls.php +++ b/cis/private/lehre/notenliste.xls.php @@ -1,29 +1,13 @@ write(1,0,"Studiengang: $stg_obj->bezeichnung $grpname"); + $gruppen=''; + if($result = pg_query($conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + if($gruppen!='') + $gruppen.=', '; + if($row->gruppe_kurzbz=='') + $gruppen.=trim($row->kuerzel.'-'.$row->semester.$row->verband.$row->gruppe); + else + $gruppen=$row->gruppe_kurzbz; + } + } + + $worksheet->write(1,0,"Studiengang: $stg_obj->bezeichnung $gruppen"); $lines=2; //Lektoren ermitteln - $stsem_obj = new studiensemester($conn); - $stsem = $stsem_obj->getaktorNext(); - - $qry = "SELECT distinct vorname, nachname FROM campus.vw_benutzer, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter WHERE uid=mitarbeiter_uid AND tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND lehrveranstaltung_id='".addslashes($lvid)."' AND studiensemester_kurzbz='$stsem' ORDER BY nachname, vorname;"; - + + $qry = "SELECT + distinct vorname, nachname + FROM + campus.vw_benutzer, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter + WHERE + uid=mitarbeiter_uid AND + tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND + lehrveranstaltung_id='".addslashes($lvid)."' AND + studiensemester_kurzbz='".addslashes($stsem)."'"; + + if($lehreinheit_id!='') + $qry.=" AND tbl_lehreinheit.lehreinheit_id='".addslashes($lehreinheit_id)."'"; + + $qry.=' ORDER BY nachname, vorname'; + if($result = pg_query($conn,$qry)) { while($row=pg_fetch_object($result)) @@ -123,19 +138,23 @@ if (!$conn = pg_pconnect(CONN_STRING)) $worksheet->write($lines,5,"Note"); - $qry = 'SELECT distinct vorname, nachname, uid, matrikelnr, verband, gruppe, semester FROM '; - if($gruppe_kurzbz!='') - $qry .= "campus.vw_student JOIN public.tbl_benutzergruppe USING(uid) WHERE studiensemester_kurzbz='$stsem' AND gruppe_kurzbz='".addslashes($gruppe_kurzbz)."'"; - else - { - $qry .= "campus.vw_student WHERE studiengang_kz='$stg' AND semester='$sem'"; - if($verband!='') - $qry.=" AND verband='$verband'"; - if($gruppe!='') - $qry.=" AND gruppe='$gruppe'"; - } - $qry.= " ORDER BY nachname, vorname"; - //echo $qry; + $qry = "SELECT + distinct vorname, nachname, matrikelnr, student_uid as uid, + tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe + FROM + campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) + JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid) + LEFT JOIN public.tbl_studentlehrverband USING(student_uid) + WHERE + lehrveranstaltung_id='".addslashes($lvid)."' AND + vw_student_lehrveranstaltung.studiensemester_kurzbz='".addslashes($stsem)."' AND + tbl_studentlehrverband.studiensemester_kurzbz='".addslashes($stsem)."'"; + + if($lehreinheit_id!='') + $qry.=" AND lehreinheit_id='".addslashes($lehreinheit_id)."'"; + + $qry.=' ORDER BY nachname, vorname'; + if($result = pg_query($conn, $qry)) { $i=1; diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index 93ef77b79..b21f4c913 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -229,7 +229,7 @@ class studiensemester */ function getaktorNext($semester='') { - if($stsem=$this->getakt()) + if($stsem=$this->getakt() && $semester=='') return $stsem; else { @@ -269,10 +269,21 @@ class studiensemester * Liefert das naechstgelegenste Studiensemester * @return Studiensemester oder false wenn es keines gibt */ - function getNearest() + function getNearest($semester='') { - $qry = "SELECT studiensemester_kurzbz FROM public.vw_studiensemester ORDER BY delta LIMIT 1"; - if(!$res=pg_exec($this->conn,$qry)) + $qry = "SELECT studiensemester_kurzbz FROM public.vw_studiensemester "; + if($semester!='') + { + if($semester%2==0) + $ss='SS'; + else + $ss='WS'; + + $qry.= " WHERE substring(studiensemester_kurzbz from 1 for 2)='$ss' "; + } + $qry.=' ORDER BY delta LIMIT 1'; + + if(!$res=pg_query($this->conn,$qry)) { $this->errormsg = pg_errormessage($this->conn); return false; diff --git a/rdf/zeugnis.rdf.php b/rdf/zeugnis.rdf.php index ac024512c..46e2efa3f 100644 --- a/rdf/zeugnis.rdf.php +++ b/rdf/zeugnis.rdf.php @@ -180,7 +180,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $note = $note_arr[$row->note]; else $note = ""; - + $note2=$note; if(array_key_exists($row->lehrveranstaltung_id, $projektarbeit)) { $bezeichnung = $row->lehrveranstaltung_bezeichnung.' '.$fussnotenzeichen[$anzahl_fussnoten]; @@ -223,7 +223,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= "\n "; $xml .= " "; - $xml .= " ".$note.""; + $xml .= " ".$note2.""; $xml .= " ".($row->semesterstunden==0?'':sprintf('%.1f',$row->semesterstunden/$wochen)).""; $xml .= " ".$row->ects.""; $xml .= " ";
AnwesenheitslistenNotenlisten
$aw_content $nt_content