From fbe96498407edd99906717c1d0eeb03b3be1be28 Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Fri, 27 Jul 2007 11:02:55 +0000 Subject: [PATCH] --- .../benotungstool/anwesenheitstabelle.php | 6 +- .../benotungstool/legesamtnoteverwalten.php | 391 ++++++++++++++++++ .../benotungstool/lvgesamtnoteverwalten.php | 367 ++++++++++++++++ cis/private/lehre/benotungstool/menue.inc.php | 16 +- cis/private/lehre/benotungstool/statistik.php | 4 +- .../studentenpunkteverwalten.php | 40 +- .../lehre/benotungstool/verwaltung.php | 8 +- .../lehre/benotungstool/verwaltung_listen.php | 21 +- include/legesamtnote.class.php | 228 ++++++++++ include/lvgesamtnote.class.php | 7 +- include/studentnote.class.php | 200 +++++++++ include/uebung.class.php | 59 ++- 12 files changed, 1296 insertions(+), 51 deletions(-) create mode 100644 cis/private/lehre/benotungstool/legesamtnoteverwalten.php create mode 100644 cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php create mode 100755 include/legesamtnote.class.php create mode 100755 include/studentnote.class.php diff --git a/cis/private/lehre/benotungstool/anwesenheitstabelle.php b/cis/private/lehre/benotungstool/anwesenheitstabelle.php index b03e72dfa..6c83c363f 100644 --- a/cis/private/lehre/benotungstool/anwesenheitstabelle.php +++ b/cis/private/lehre/benotungstool/anwesenheitstabelle.php @@ -211,7 +211,9 @@ echo "$lv_obj->bezeichnung
"; if($lehreinheit_id=='') die('Es wurde keine passende Lehreinheit in diesem Studiensemester gefunden'); -//Menue +//Menue +include("menue.inc.php"); +/* echo "\n\n"; echo "
 Verwaltung     @@ -220,7 +222,7 @@ echo "
 Statistik

\n"; - +*/ echo "

Anwesenheits- und Übersichtstabelle

"; diff --git a/cis/private/lehre/benotungstool/legesamtnoteverwalten.php b/cis/private/lehre/benotungstool/legesamtnoteverwalten.php new file mode 100644 index 000000000..74c8b310d --- /dev/null +++ b/cis/private/lehre/benotungstool/legesamtnoteverwalten.php @@ -0,0 +1,391 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +require_once('../../../config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/lehrveranstaltung.class.php'); +require_once('../../../../include/studiengang.class.php'); +require_once('../../../../include/studiensemester.class.php'); +require_once('../../../../include/lehreinheit.class.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/uebung.class.php'); +require_once('../../../../include/beispiel.class.php'); +require_once('../../../../include/studentnote.class.php'); +require_once('../../../../include/datum.class.php'); +require_once('../../../../include/legesamtnote.class.php'); + +?> + + + + + +Kreuzerltool + + + + +getBerechtigungen($user); + +if(isset($_GET['lvid']) && is_numeric($_GET['lvid'])) //Lehrveranstaltung_id + $lvid = $_GET['lvid']; +else + die('Fehlerhafte Parameteruebergabe'); + +if(isset($_GET['lehreinheit_id']) && is_numeric($_GET['lehreinheit_id'])) //Lehreinheit_id + $lehreinheit_id = $_GET['lehreinheit_id']; +else + $lehreinheit_id = ''; + +//Laden der Lehrveranstaltung +$lv_obj = new lehrveranstaltung($conn); +if(!$lv_obj->load($lvid)) + die($lv_obj->errormsg); + +//Studiengang laden +$stg_obj = new studiengang($conn,$lv_obj->studiengang_kz); + +if(isset($_GET['stsem'])) + $stsem = $_GET['stsem']; +else + $stsem = ''; + +//Vars +$datum_obj = new datum(); + +$uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:''); +$uid = (isset($_GET['uid'])?$_GET['uid']:''); + +//Kopfzeile +echo ''; +echo ' '; +echo ''; +echo '
  "Kreuzerl"-Tool'; +echo ''."\n"; + +//Studiensemester laden +$stsem_obj = new studiensemester($conn); +if($stsem=='') + $stsem = $stsem_obj->getaktorNext(); + +$stsem_obj->getAll(); + +//Studiensemester DropDown +$stsem_content = "Studiensemester: \n"; + +//Lehreinheiten laden +if($rechte->isBerechtigt('admin',0) || $rechte->isBerechtigt('admin',$lv_obj->studiengang_kz)) +{ + $qry = "SELECT distinct tbl_lehrfach.kurzbz as lfbez, tbl_lehreinheit.lehreinheit_id, tbl_lehreinheit.lehrform_kurzbz as lehrform_kurzbz FROM lehre.tbl_lehreinheit, lehre.tbl_lehrfach, lehre.tbl_lehreinheitmitarbeiter + WHERE tbl_lehreinheit.lehrveranstaltung_id='$lvid' AND + tbl_lehreinheit.lehrfach_id = tbl_lehrfach.lehrfach_id AND + tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitmitarbeiter.lehreinheit_id AND + tbl_lehreinheit.studiensemester_kurzbz = '$stsem'"; +} +else +{ + $qry = "SELECT distinct tbl_lehrfach.kurzbz as lfbez, tbl_lehreinheit.lehreinheit_id, tbl_lehreinheit.lehrform_kurzbz as lehrform_kurzbz FROM lehre.tbl_lehreinheit, lehre.tbl_lehrfach, lehre.tbl_lehreinheitmitarbeiter + WHERE tbl_lehreinheit.lehrveranstaltung_id='$lvid' AND + tbl_lehreinheit.lehrfach_id = tbl_lehrfach.lehrfach_id AND + tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitmitarbeiter.lehreinheit_id AND + tbl_lehreinheit.lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id) WHERE mitarbeiter_uid='$user') AND + tbl_lehreinheit.studiensemester_kurzbz = '$stsem'"; + +} + +if($result = pg_query($conn, $qry)) +{ + if(pg_num_rows($result)>1) + { + //Lehreinheiten DropDown + echo " Lehreinheit: '; + } + else + { + if($row = pg_fetch_object($result)) + $lehreinheit_id = $row->lehreinheit_id; + } +} +else +{ + echo 'Fehler beim Auslesen der Lehreinheiten'; +} +echo $stsem_content; +echo '
'; +echo ''; +echo ''; +echo " +
 \n"; +echo "$lv_obj->bezeichnung
"; + +if($lehreinheit_id=='') + die('Es wurde keine passende Lehreinheit in diesem Studiensemester gefunden'); + +//Menue +include("menue.inc.php"); +/* +echo "\n\n"; +echo "
 Verwaltung     + Anwesenheits- und Übersichtstabelle     + Studentenpunkte verwalten     + Statistik +

+\n"; +*/ + +// legesamtnote für studenten speichern +if (isset($_REQUEST["submit"]) && ($_POST["student_uid"] != '')){ + + $jetzt = date("Y-m-d H:i:s"); + $student_uid = $_POST["student_uid"]; + $legesamtnote = new legesamtnote($conn, $lehreinheit_id); + if (!$legesamtnote->load($student_uid,$lehreinheit_id)) + { + $legesamtnote->student_uid = $student_uid; + $legesamtnote->lehreinheit_id = $lehreinheit_id; + $legesamtnote->note = $_POST["note"]; + $legesamtnote->benotungsdatum = $jetzt; + $legesamtnote->updateamum = null; + $legesamtnote->updatevon = null; + $legesamtnote->insertamum = $jetzt; + $legesamtnote->insertvon = $user; + $legesamtnote->new = true; + } + else + { + $legesamtnote->note = $_POST["note"]; + $legesamtnote->benotungsdatum = $jetzt; + $legesamtnote->updateamum = $jetzt; + $legesamtnote->updatevon = $user; + } + if (!$legesamtnote->save()) + echo "".$legesamtnote->errormsg.""; +} + +echo "

LE Gesamtnote verwalten

"; + + +//Studentenliste +echo " + +"; + +$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id='$lehreinheit_id' ORDER BY semester, verband, gruppe, gruppe_kurzbz"; + +if($result_grp = pg_query($conn, $qry)) +{ + while($row_grp = pg_fetch_object($result_grp)) + { + echo " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "; + if($row_grp->gruppe_kurzbz!='') + { + echo " + + + "; + $qry_stud = "SELECT uid, vorname, nachname, matrikelnr FROM campus.vw_student JOIN public.tbl_benutzergruppe USING(uid) WHERE gruppe_kurzbz='".addslashes($row_grp->gruppe_kurzbz)."' ORDER BY nachname, vorname"; + } + else + { + echo " + + + "; + $qry_stud = "SELECT uid, vorname, nachname, matrikelnr FROM campus.vw_student + WHERE studiengang_kz='$row_grp->studiengang_kz' AND + semester='$row_grp->semester' ". + ($row_grp->verband!=''?" AND trim(verband)=trim('$row_grp->verband')":''). + ($row_grp->gruppe!=''?" AND trim(gruppe)=trim('$row_grp->gruppe')":''). + " ORDER BY nachname, vorname"; + } + + if($result_stud = pg_query($conn, $qry_stud)) + { + $i=1; + while($row_stud = pg_fetch_object($result_stud)) + { + + $studentnote = new studentnote($conn,$lehreinheit_id,$stsem,$row_stud->uid); + //echo $studentnote->debug; + $legesamtnote = new legesamtnote($conn, $lehreinheit_id); + + if (!$legesamtnote->load($row_stud->uid,$lehreinheit_id)) + { + $note = null; + } + else + { + $note = $legesamtnote->note; + } + + if ($studentnote->studentgesamtnote!=0) + $note_calc = round($studentnote->studentgesamtnote,2); + else + $note_calc = null; + echo " + + + + "; + echo ""; + echo ""; + echo ""; + if ($note) + $note_final = $note; + else + { + if ($studentnote->negativ) + $note_final = 5; + else + { + $note_final = round($studentnote->studentgesamtnote); + if ($note_final == 0) + $note_final = null; + } + } + echo ""; + + echo ""; + echo ""; + $i++; + } + } + } +} +echo "
        
UIDNachnameVornameGesamtnote LE-Gesamtnote
        
$row_grp->gruppe_kurzbz
Verband $row_grp->verband ".($row_grp->gruppe!=''?"Gruppe $row_grp->gruppe":'')."
$row_stud->uid$row_stud->nachname$row_stud->vorname$note_calc"; + if ($studentnote->negativ) + echo "neg"; + echo ""; + if ($studentnote->fehlt) + echo "X"; + else + echo "ok"; + echo "
$note
"; + +?> +
+ + diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php new file mode 100644 index 000000000..e5b642324 --- /dev/null +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -0,0 +1,367 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +require_once('../../../config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/lehrveranstaltung.class.php'); +require_once('../../../../include/studiengang.class.php'); +require_once('../../../../include/studiensemester.class.php'); +require_once('../../../../include/lehreinheit.class.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/uebung.class.php'); +require_once('../../../../include/beispiel.class.php'); +require_once('../../../../include/studentnote.class.php'); +require_once('../../../../include/datum.class.php'); +require_once('../../../../include/legesamtnote.class.php'); +require_once('../../../../include/lvgesamtnote.class.php'); + +?> + + + + + +Kreuzerltool + + + + +getBerechtigungen($user); + +if(isset($_GET['lvid']) && is_numeric($_GET['lvid'])) //Lehrveranstaltung_id + $lvid = $_GET['lvid']; +else + die('Fehlerhafte Parameteruebergabe'); + +if(isset($_GET['lehreinheit_id']) && is_numeric($_GET['lehreinheit_id'])) //Lehreinheit_id + $lehreinheit_id = $_GET['lehreinheit_id']; +else + $lehreinheit_id = ''; + +//Laden der Lehrveranstaltung +$lv_obj = new lehrveranstaltung($conn); +if(!$lv_obj->load($lvid)) + die($lv_obj->errormsg); + +//Studiengang laden +$stg_obj = new studiengang($conn,$lv_obj->studiengang_kz); + +if(isset($_GET['stsem'])) + $stsem = $_GET['stsem']; +else + $stsem = ''; + +//Vars +$datum_obj = new datum(); + +$uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:''); +$uid = (isset($_GET['uid'])?$_GET['uid']:''); + +//Kopfzeile +echo ''; +echo ' '; +echo ''; +echo '
  "Kreuzerl"-Tool'; +echo ''."\n"; + +//Studiensemester laden +$stsem_obj = new studiensemester($conn); +if($stsem=='') + $stsem = $stsem_obj->getaktorNext(); + +$stsem_obj->getAll(); + +//Studiensemester DropDown +$stsem_content = "Studiensemester: \n"; + +//Lehreinheiten laden +if($rechte->isBerechtigt('admin',0) || $rechte->isBerechtigt('admin',$lv_obj->studiengang_kz)) +{ + $qry = "SELECT distinct tbl_lehrfach.kurzbz as lfbez, tbl_lehreinheit.lehreinheit_id, tbl_lehreinheit.lehrform_kurzbz as lehrform_kurzbz FROM lehre.tbl_lehreinheit, lehre.tbl_lehrfach, lehre.tbl_lehreinheitmitarbeiter + WHERE tbl_lehreinheit.lehrveranstaltung_id='$lvid' AND + tbl_lehreinheit.lehrfach_id = tbl_lehrfach.lehrfach_id AND + tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitmitarbeiter.lehreinheit_id AND + tbl_lehreinheit.studiensemester_kurzbz = '$stsem'"; +} +else +{ + $qry = "SELECT distinct tbl_lehrfach.kurzbz as lfbez, tbl_lehreinheit.lehreinheit_id, tbl_lehreinheit.lehrform_kurzbz as lehrform_kurzbz FROM lehre.tbl_lehreinheit, lehre.tbl_lehrfach, lehre.tbl_lehreinheitmitarbeiter + WHERE tbl_lehreinheit.lehrveranstaltung_id='$lvid' AND + tbl_lehreinheit.lehrfach_id = tbl_lehrfach.lehrfach_id AND + tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitmitarbeiter.lehreinheit_id AND + tbl_lehreinheit.lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id) WHERE mitarbeiter_uid='$user') AND + tbl_lehreinheit.studiensemester_kurzbz = '$stsem'"; + +} + +if($result = pg_query($conn, $qry)) +{ + if(pg_num_rows($result)>1) + { + //Lehreinheiten DropDown + echo " Lehreinheit: '; + } + else + { + if($row = pg_fetch_object($result)) + $lehreinheit_id = $row->lehreinheit_id; + } +} +else +{ + echo 'Fehler beim Auslesen der Lehreinheiten'; +} +echo $stsem_content; +echo '
'; +echo ''; +echo ''; +echo " +
 \n"; +echo "$lv_obj->bezeichnung
"; + +if($lehreinheit_id=='') + die('Es wurde keine passende Lehreinheit in diesem Studiensemester gefunden'); + +//Menue +include("menue.inc.php"); + + +// lvgesamtnote für studenten speichern +if (isset($_REQUEST["submit"]) && ($_POST["student_uid"] != '')){ + + $jetzt = date("Y-m-d H:i:s"); + $student_uid = $_POST["student_uid"]; + $lvid = $_REQUEST["lvid"]; + $lvgesamtnote = new lvgesamtnote($conn); + if (!$lvgesamtnote->load($lvid, $student_uid, $stsem)) + { + $lvgesamtnote->student_uid = $student_uid; + $lvgesamtnote->lehrveranstaltung_id = $lvid; + $lvgesamtnote->studiensemester_kurzbz = $stsem; + $lvgesamtnote->note = $_POST["note"]; + $lvgesamtnote->mitarbeiter_uid = $user; + $lvgesamtnote->benotungsdatum = $jetzt; + $lvgesamtnote->freigabedatum = null; + $lvgesamtnote->bemerkung = null; + $lvgesamtnote->updateamum = null; + $lvgesamtnote->updatevon = null; + $lvgesamtnote->insertamum = $jetzt; + $lvgesamtnote->insertvon = $user; + $new = true; + } + else + { + $lvgesamtnote->note = $_POST["note"]; + $lvgesamtnote->benotungsdatum = $jetzt; + $lvgesamtnote->updateamum = $jetzt; + $lvgesamtnote->updatevon = $user; + $new = false; + } + if (!$lvgesamtnote->save($new)) + echo "".$lvgesamtnote->errormsg.""; +} + +echo "

LV Gesamtnote verwalten

"; + + +//Studentenliste +echo " + +"; + +$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id='$lehreinheit_id' ORDER BY semester, verband, gruppe, gruppe_kurzbz"; + +if($result_grp = pg_query($conn, $qry)) +{ + while($row_grp = pg_fetch_object($result_grp)) + { + echo " + + + + + + + + + + + + + + + + + + + + + + + "; + if($row_grp->gruppe_kurzbz!='') + { + echo " + + + "; + $qry_stud = "SELECT uid, vorname, nachname, matrikelnr FROM campus.vw_student JOIN public.tbl_benutzergruppe USING(uid) WHERE gruppe_kurzbz='".addslashes($row_grp->gruppe_kurzbz)."' ORDER BY nachname, vorname"; + } + else + { + echo " + + + "; + $qry_stud = "SELECT uid, vorname, nachname, matrikelnr FROM campus.vw_student + WHERE studiengang_kz='$row_grp->studiengang_kz' AND + semester='$row_grp->semester' ". + ($row_grp->verband!=''?" AND trim(verband)=trim('$row_grp->verband')":''). + ($row_grp->gruppe!=''?" AND trim(gruppe)=trim('$row_grp->gruppe')":''). + " ORDER BY nachname, vorname"; + } + + if($result_stud = pg_query($conn, $qry_stud)) + { + $i=1; + while($row_stud = pg_fetch_object($result_stud)) + { + + //$studentnote = new studentnote($conn,$lehreinheit_id,$stsem,$row_stud->uid); + + $legesamtnote = new legesamtnote($conn, $lehreinheit_id); + + if (!$legesamtnote->load($row_stud->uid,$lehreinheit_id)) + { + $note_le = null; + } + else + $note_le = $legesamtnote->note; + if ($lvgesamtnote = new lvgesamtnote($conn, $lvid,$row_stud->uid,$stsem)) + { + $note_lv = $lvgesamtnote->note; + } + else + $note_lv = null; + + if ($note_lv) + $note_vorschlag = $note_lv; + else + $note_vorschlag = $note_le; + + echo " + + + + + "; + + echo ""; + + echo ""; + echo ""; + $i++; + } + } + } +} +echo "
      
UIDNachnameVornameLE-GesamtnoteLV-Gesamtnote
      
$row_grp->gruppe_kurzbz
Verband $row_grp->verband ".($row_grp->gruppe!=''?"Gruppe $row_grp->gruppe":'')."
$row_stud->uid$row_stud->nachname$row_stud->vorname$note_le
$note_lv
"; + +?> +
+ + diff --git a/cis/private/lehre/benotungstool/menue.inc.php b/cis/private/lehre/benotungstool/menue.inc.php index b9e1164a5..f9708734a 100644 --- a/cis/private/lehre/benotungstool/menue.inc.php +++ b/cis/private/lehre/benotungstool/menue.inc.php @@ -1,11 +1,11 @@ \n"; echo "
\n"; -echo "\n"; +echo "
\n"; echo " \n"; echo " \n"; +echo " \n"; echo " \n"; -echo " \n"; echo " \n"; echo " \n"; echo " \n"; @@ -22,10 +22,18 @@ else if ($pfile == "verwaltung_listen.php") echo " ->Übung \n"; if (isset($_GET["liste_id"]) && isset($_GET["uebung_id"])) echo " ->Übung->Liste \n"; -} +} + +if ($pfile == "studentenpunkteverwalten.php") + echo "    übersicht ->LE-Noten verwalten ->LV-Noten verwalten"; +else if ($pfile == "legesamtnoteverwalten.php") + echo "    Übersicht -> LE-Noten verwalten ->LV-Noten verwalten"; +else if ($pfile == "lvgesamtnoteverwalten.php") + echo "    übersicht ->LE-Noten verwalten ->LV-Noten verwalten"; + echo "

\n"; echo " \n"; echo " \n"; echo "
 Übungen Benotung Anwesenheits- und Übersichtstabelle Studentenpunkte verwalten Statistik
\n"; -echo "\n\n"; +echo "
\n\n"; ?> diff --git a/cis/private/lehre/benotungstool/statistik.php b/cis/private/lehre/benotungstool/statistik.php index f9efa3b75..082c96cdf 100644 --- a/cis/private/lehre/benotungstool/statistik.php +++ b/cis/private/lehre/benotungstool/statistik.php @@ -213,6 +213,8 @@ if($lehreinheit_id=='') die('Es wurde keine passende Lehreinheit in diesem Studiensemester gefunden'); //Menue +include("menue.inc.php"); +/* echo "\n\n"; echo "
 Verwaltung     @@ -221,7 +223,7 @@ echo "
 Statistik

\n"; - +*/ echo "

Statistik

"; diff --git a/cis/private/lehre/benotungstool/studentenpunkteverwalten.php b/cis/private/lehre/benotungstool/studentenpunkteverwalten.php index 1b3574096..24486ca60 100644 --- a/cis/private/lehre/benotungstool/studentenpunkteverwalten.php +++ b/cis/private/lehre/benotungstool/studentenpunkteverwalten.php @@ -350,16 +350,17 @@ if(isset($_GET['uid']) && $_GET['uid']!='') { echo "
"; echo "
Wählen Sie bitte eine Aufgabe aus (Kreuzerllisten, Abgaben): - + - + - + "; if($row_grp->gruppe_kurzbz!='') { echo " - + "; $qry_stud = "SELECT uid, vorname, nachname, matrikelnr FROM campus.vw_student JOIN public.tbl_benutzergruppe USING(uid) WHERE gruppe_kurzbz='".addslashes($row_grp->gruppe_kurzbz)."' ORDER BY nachname, vorname"; } @@ -674,7 +675,7 @@ else { echo " - + "; $qry_stud = "SELECT uid, vorname, nachname, matrikelnr FROM campus.vw_student WHERE studiengang_kz='$row_grp->studiengang_kz' AND @@ -689,18 +690,6 @@ else $i=1; while($row_stud = pg_fetch_object($result_stud)) { - //$studentgesamtnote = 0; - //$ueb_obj = new uebung($conn); - //$ueb_obj->load_uebung($lehreinheit_id); - //foreach ($ueb_obj->uebungen as $ueb) - //{ - - $studentnote = new studentnote($conn,$lehreinheit_id,$stsem,$row_stud->uid); - // if ($studentnote->note) - // { - // $studentgesamtnote = $studentgesamtnote + $studentnote->note; - // } - //} @@ -709,7 +698,6 @@ else - "; $i++; } diff --git a/cis/private/lehre/benotungstool/verwaltung.php b/cis/private/lehre/benotungstool/verwaltung.php index 50328408b..90a413d19 100644 --- a/cis/private/lehre/benotungstool/verwaltung.php +++ b/cis/private/lehre/benotungstool/verwaltung.php @@ -334,8 +334,8 @@ if(isset($_POST['uebung_neu'])) { if($error_msg!='') echo "$error_msg"; - else - header("Location: verwaltung_listen.php?lvid=$lvid&stsem=$stsem&lehreinheit_id=$lehreinheit_id&liste_id=$uebung_obj->uebung_id"); + //else + // header("Location: verwaltung_listen.php?lvid=$lvid&stsem=$stsem&lehreinheit_id=$lehreinheit_id&liste_id=$uebung_obj->uebung_id"); } else echo "$uebung_obj->errormsg"; @@ -615,8 +615,8 @@ else // echo 'Ja'; //else // echo 'Nein'; - //echo ""; - echo ""; + echo ""; + //echo ""; //Wenn andere Lehreinheiten vorhanden sind dann wird die moeglichkeit zum kopieren von //Uebungen in diese Lehreinheiten angeboten. if(isset($result_alle_lehreinheiten) && pg_num_rows($result_alle_lehreinheiten)>1) diff --git a/cis/private/lehre/benotungstool/verwaltung_listen.php b/cis/private/lehre/benotungstool/verwaltung_listen.php index ae97e7625..39e316e34 100644 --- a/cis/private/lehre/benotungstool/verwaltung_listen.php +++ b/cis/private/lehre/benotungstool/verwaltung_listen.php @@ -811,7 +811,7 @@ if(isset($_GET["uebung_id"]) && $_GET["uebung_id"]!='') echo "
@@ -605,7 +606,7 @@ if(isset($_GET['uid']) && $_GET['uid']!='') { //Abgaben benoten $studentnote = new studentnote($conn,$lehreinheit_id,$stsem,$uid,$uebung_id); - echo "Note: ".$studentnote->note." (Gewicht: ".$studentnote->gewicht.")

"; + echo "Note: ".$studentnote->note." (Gewicht: ".$ueb_obj->gewicht.")

"; echo "
@@ -648,25 +649,25 @@ else
      
UID Nachname VornameGesamtnote
      
$row_grp->gruppe_kurzbz$row_grp->gruppe_kurzbz
Verband $row_grp->verband ".($row_grp->gruppe!=''?"Gruppe $row_grp->gruppe":'')."Verband $row_grp->verband ".($row_grp->gruppe!=''?"Gruppe $row_grp->gruppe":'')."
$row_stud->uid $row_stud->nachname $row_stud->vorname$studentnote->studentgesamtnote
"; //Bearbeiten der ausgewaehlten Uebung echo "\n"; - echo "\n"; + echo "
Ausgewählte Kreuzerlliste bearbeiten 
\n"; echo ""; $uebung_obj = new uebung($conn); @@ -972,7 +972,10 @@ else //Gesamtuebersicht ueber alle Listen innerhalb der Uebung echo "
Ausgewählte Aufgabe bearbeiten 
 
"; echo ""; - echo ""; + echo "
Vorhandene Aufgaben bearbeiten
"; + $studentuebung = new uebung($conn); + if (!$studentuebung->check_studentuebung($liste_id)) + echo ""; $uebung_obj = new uebung($conn); $uebung_obj->load_uebung($lehreinheit_id,$level=2,$uebung_id=$liste_id); @@ -1092,8 +1095,14 @@ else } else { - echo ""; - $anzeigen = 'beide'; + $studentuebung = new uebung($conn); + if (!$studentuebung->check_studentuebung($liste_id)) + { + echo ""; + $anzeigen = 'beide'; + } + else + $anzeigen = "nada"; } echo "
Vorhandene Aufgaben bearbeiten
Derzeit sind keine Aufgaben angelegt
Derzeit sind keine Aufgaben angelegt
@@ -1121,7 +1130,7 @@ else } echo "
"; - if ($anzeigen != 'abgabe') + if ($anzeigen != 'abgabe' && $anzeigen != 'nada') { echo " @@ -1146,7 +1155,7 @@ else if(!isset($_POST['uebung_neu'])) $thema = "Abgabe ".($anzahl<9?'0'.($anzahl+1):($anzahl+1)); - if ($anzeigen != 'beispiele') + if ($anzeigen != 'beispiele' && $anzeigen != 'nada') { echo " diff --git a/include/legesamtnote.class.php b/include/legesamtnote.class.php new file mode 100755 index 000000000..a0af5744f --- /dev/null +++ b/include/legesamtnote.class.php @@ -0,0 +1,228 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class legesamtnote +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $legesamtnoten = array(); // lehreinheit Objekt + + //Tabellenspalten + var $student_uid; // varchar(16) + var $lehreinheit_id; // int + var $note; // smallint + var $benotungsdatum; //date + var $updateamum; // timestamp + var $updatevon; // varchar(16) + var $insertamum; // timestamp + var $insertvon; // varchar(16) + + + + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional eine Uebung + // * @param $conn Datenbank-Connection + // * $uebung_id + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function legesamtnote($conn, $student_uid=null, $lehreinheit_id=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($this->conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($student_uid != null) + $this->load($student_uid, $lehreinheit_id); + } + + // ********************************************************* + // * Laedt die legesamtnote + // * @param student_uid, lehreinheit_id + // ********************************************************* + function load($student_uid, $lehreinheit_id) + { + if(!is_numeric($lehreinheit_id)) + { + $this->errormsg='lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + $qry = "SELECT * FROM campus.tbl_legesamtnote where student_uid = '".$student_uid."' and lehreinheit_id = '".$lehreinheit_id."'"; + + if($result=pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + $this->lehreinheit_id = $row->lehreinheit_id; + $this->student_uid = $row->student_uid; + $this->note = $row->note; + $this->benotungsdatum = $row->benotungsdatum; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + return true; + } + else + { + $this->errormsg = "Es ist keine legesamtnote mit der fuer diesen studenten vorhanden"; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim laden der Uebung'; + return false; + } + } + + + function load_legesamtnote($lehreinheit_id) + { + if(!is_numeric($lehreinheit_id)) + { + $this->errormsg = 'Lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM campus.tbl_legesamtnote WHERE lehreinheit_id='".$lehreinheit_id."' order by student_uid"; + + if($result=pg_query($this->conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + $legesamtnote_obj = new uebung($this->conn); + + $legesamtnote_obj->student_uid = $row->student_uid; + $legesamtnote_obj->note = $row->note; + $legesamtnote_obj->lehreinheit_id = $row->lehreinheit_id; + $legesamtnote_obj->benotungsdatum = $row->benotungsdatum; + $legesamtnote_obj->updateamum = $row->updateamum; + $legesamtnote_obj->updatevon = $row->updatevon; + $legesamtnote_obj->insertamum = $row->insertamum; + $legesamtnote_obj->insertvon = $row->insertvon; + + $this->legesamtnoten[] = $legesamtnote_obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim laden der legesamtnoten'; + return false; + } + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(!is_numeric($this->lehreinheit_id)) + { + $this->errormsg = 'Lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->note)) + { + $this->errormsg = 'Note muss eine gueltige Zahl sein'; + return false; + } + return true; + } + + // ************************************************ + // * wenn $var '' ist wird NULL zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * Zeichen mit Backslash versehen und das Ergbnis + // * unter Hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert Uebung in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save() + { + //if(is_null($new)) + // $new = $this->new; + + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + $qry = 'INSERT INTO campus.tbl_legesamtnote(student_uid, lehreinheit_id, note, benotungsdatum, updateamum, updatevon, insertamum, insertvon) VALUES('. + $this->addslashes($this->student_uid).','. + $this->addslashes($this->lehreinheit_id).','. + $this->addslashes($this->note).','. + $this->addslashes($this->benotungsdatum).','. + 'null,'. + 'null,'. + $this->addslashes($this->insertamum).','. + $this->addslashes($this->insertvon).');'; + } + else + { + $qry = 'UPDATE campus.tbl_legesamtnote SET'. + ' student_uid='.$this->addslashes($this->student_uid).','. + ' lehreinheit_id ='.$this->addslashes($this->lehreinheit_id).','. + ' note='.$this->addslashes($this->note).','. + ' benotungsdatum='.$this->addslashes($this->benotungsdatum).','. + ' updateamum='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon). + " WHERE lehreinheit_id=".$this->addslashes($this->lehreinheit_id)." and student_uid = '".$this->student_uid."';"; + } + + if(pg_query($this->conn,$qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der legesamtnote:'.$qry; + return false; + } + } + +} +?> \ No newline at end of file diff --git a/include/lvgesamtnote.class.php b/include/lvgesamtnote.class.php index bf4105f0b..e5edd3f78 100644 --- a/include/lvgesamtnote.class.php +++ b/include/lvgesamtnote.class.php @@ -195,8 +195,7 @@ class lvgesamtnote if($new) { //Neuen Datensatz einfuegen - $qry='INSERT INTO campus.tbl_lvgesamtnote (lehrveranstaltung_id, student_uid, studiensemester_kurzbz, mitarbeiter_uid, note, freigabedatum, benotungsdatum, bemerkung, - updateamum, updatevon, insertamum, insertvon) VALUES('. + $qry='INSERT INTO campus.tbl_lvgesamtnote (lehrveranstaltung_id, student_uid, studiensemester_kurzbz, mitarbeiter_uid, note, freigabedatum, benotungsdatum, bemerkung, updateamum, updatevon, insertamum, insertvon) VALUES('. $this->addslashes($this->lehrveranstaltung_id).', '. $this->addslashes($this->student_uid).', '. $this->addslashes($this->studiensemester_kurzbz).', '. @@ -220,8 +219,8 @@ class lvgesamtnote 'mitarbeiter_uid='.$this->addslashes($this->mitarbeiter_uid).', '. 'updateamum= '.$this->addslashes($this->updateamum).', '. 'updatevon='.$this->addslashes($this->updatevon).' '. - 'WHERE lehrveranstaltung_id='.$this->addslashes($this->lehrveranstaltung_id).', '. - 'AND student_uid='.$this->addslashes($this->student_uid).', '. + 'WHERE lehrveranstaltung_id='.$this->addslashes($this->lehrveranstaltung_id).' '. + 'AND student_uid='.$this->addslashes($this->student_uid).' '. 'AND studiensemester_kurzbz='.$this->addslashes($this->studiensemester_kurzbz).';'; } diff --git a/include/studentnote.class.php b/include/studentnote.class.php new file mode 100755 index 000000000..2d29fa5a4 --- /dev/null +++ b/include/studentnote.class.php @@ -0,0 +1,200 @@ +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * gerald Raab . + */ + +class studentnote +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $beispiele = array(); // lehreinheit Objekt + + //Vars + var $uebung_id; // serial + var $gewicht; // smalint + var $punkte; // Real + var $note; + var $note_gesamt; + var $negativ; + var $fehlt; + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional eine Uebung + // * @param $conn Datenbank-Connection + // * $uebung_id + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function studentnote($conn, $lehreinheit_id=null, $ss=null, $student_uid=null, $uebung_id=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($this->conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($uebung_id) + { + $this->calc_note($uebung_id, $student_uid); + } + else + { + $studentgesamtnote = 0; + $counter = 0; + $gewichte = 0; + $negativ = false; + $note_x_gewicht = 0; + $note_x_gewicht_l1 = 0; + $gewichte_l1 = 0; + $fehlt = false; + + $ueb1_obj = new uebung($conn); + $ueb1_obj->load_uebung($lehreinheit_id,1); + foreach($ueb1_obj->uebungen as $ueb1) + { + $ueb_obj = new uebung($conn); + //if ($ueb_obj->load_uebung($lehreinheit_id, 2, $ueb1->uebung_id)) + $ueb_obj->load_uebung($lehreinheit_id, 2, $ueb1->uebung_id); + if ($ueb_obj->uebungen) + { + $note_x_gewicht = 0; + $gewichte = 0; + foreach ($ueb_obj->uebungen as $ueb) + { + if ($this->calc_note($ueb->uebung_id,$student_uid)) + { + if (is_numeric($this->note)) + { + if ($ueb->positiv && $this->note == 5) + $negativ = true; + $note_x_gewicht += ($this->note * $this->gewicht); + $gewichte += $this->gewicht; + } + else + $fehlt = true; + } + } + if ($gewichte > 0) + { + $note_x_gewicht_l1 += ($note_x_gewicht / $gewichte); + $gewichte_l1 += $ueb1->gewicht; + } + } + // keine kreuzerllisten/abgaben + else + { + $s = new uebung($conn); + $s->load_studentuebung($student_uid, $ueb1->uebung_id); + if ($s->note && $ueb1->gewicht) + { + if ($s->note == 5 && $ueb1->positiv) + $negativ = true; + $note_x_gewicht_l1 += ($s->note * $ueb1->gewicht); + $gewichte_l1 += $ueb1->gewicht; + } + else + $fehlt = true; + } + } + if ($gewichte_l1 > 0) + { + $this->studentgesamtnote = ($note_x_gewicht_l1 / $gewichte_l1); + $this->negativ = $negativ; + $this->fehlt = $fehlt; + } + else + { + $this->studentgesamtnote = "n"; + $this->negativ = $negativ; + $this->fehlt = $fehlt; + } + } + } + + // ********************************************************* + // * berechnet die gesamtnote der übung + // * @param uebung_id, student_uid + // ********************************************************* + function calc_note($uebung_id, $student_uid) + { + if(!is_numeric($uebung_id)) + { + $this->errormsg='Uebung_id muss eine gueltige Zahl sein'; + return false; + } + else + { + $note = null; + $punkte_eingetragen = 0; + $punkte_gesamt = 0; + $mitarbeit = 0; + $ueb = new uebung($this->conn); + $ueb->load($uebung_id); + if ($ueb->beispiele) + { + //Eingetragen diese Kreuzerlliste + $qry = "SELECT sum(punkte) as punkteeingetragen FROM campus.tbl_beispiel JOIN campus.tbl_studentbeispiel USING(beispiel_id) WHERE uebung_id='$uebung_id' AND student_uid='$student_uid' AND vorbereitet=true"; + $punkte_eingetragen=0; + if($result=pg_query($this->conn, $qry)) + if($row = pg_fetch_object($result)) + $punkte_eingetragen = ($row->punkteeingetragen!=''?$row->punkteeingetragen:0); + if($ueb->load_studentuebung($student_uid, $uebung_id)) + { + $mitarbeit = $ueb->mitarbeitspunkte; + } + + $punkte_gesamt = $punkte_eingetragen + $mitarbeit; + + + $qry = "SELECT min(note) as note from campus.tbl_notenschluesseluebung where punkte <= '".$punkte_gesamt."' and uebung_id = '".$uebung_id."'"; + if($result=pg_query($this->conn, $qry)) + if($row = pg_fetch_object($result)) + $note = $row->note; + else + $note = 5; + $this->note = $note; + $this->gewicht = $ueb->gewicht; + return true; + } + else + { + if($ueb->load_studentuebung($student_uid, $uebung_id)) + { + $this->note = $ueb->note; + $this->gewicht = $ueb->gewicht; + return true; + } + } + + } + } + + +} +?> diff --git a/include/uebung.class.php b/include/uebung.class.php index 913bcfedd..ac2824b35 100644 --- a/include/uebung.class.php +++ b/include/uebung.class.php @@ -137,6 +137,7 @@ class uebung return false; } } + function load_studentuebung($student_uid, $uebung_id) { $qry = "SELECT * FROM campus.tbl_studentuebung WHERE student_uid='$student_uid' AND uebung_id='$uebung_id'"; @@ -172,7 +173,23 @@ class uebung return false; } } + + function check_studentuebung($uebung_id) + { + $qry = "SELECT * FROM campus.tbl_studentuebung WHERE uebung_id='$uebung_id'"; + if($result = pg_query($this->conn, $qry)) + { + if (pg_num_rows($result) >0) + return true; + else + return false; + } + else + return false; + + } + function load_uebung($lehreinheit_id, $level=null, $uebung_id=null) { if(!is_numeric($lehreinheit_id)) @@ -452,15 +469,46 @@ class uebung $this->errormsg = 'Uebung_id ist ungueltig'; return false; } + + // subübungen wegräumen + $qry = "SELECT * FROM campus.tbl_uebung WHERE liste_id = '".$uebung_id."'"; + if($result=pg_query($this->conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + + foreach (glob(BENOTUNGSTOOL_PATH."angabe/*".$row->uebung_id.".*") as $angabe) + { + if(file_exists($angabe)) + unlink($angabe); + } + $qry = "DELETE FROM campus.tbl_studentbeispiel WHERE beispiel_id IN(SELECT beispiel_id FROM campus.tbl_beispiel WHERE uebung_id='$row->uebung_id'); + DELETE FROM campus.tbl_abgabe WHERE abgabe_id IN(SELECT abgabe_id FROM campus.tbl_studentuebung WHERE uebung_id='$row->uebung_id'); + DELETE FROM campus.tbl_studentuebung WHERE uebung_id='$row->uebung_id'; + DELETE FROM campus.tbl_beispiel WHERE uebung_id='$row->uebung_id'; + DELETE FROM campus.tbl_uebung WHERE uebung_id='$row->uebung_id'; + DELETE FROM campus.tbl_studentuebung WHERE uebung_id = '$row->uebung_id'"; + + if(!pg_query($qry)) + { + $this->errormsg = 'Fehler beim Loeschen der Daten'; + return false; + } + } + } + + foreach (glob(BENOTUNGSTOOL_PATH."angabe/*".$uebung_id.".*") as $angabe) { if(file_exists($angabe)) unlink($angabe); } - $qry = "DELETE FROM campus.tbl_studentuebung WHERE uebung_id='$uebung_id'; - DELETE FROM campus.tbl_studentbeispiel WHERE beispiel_id IN(SELECT beispiel_id FROM campus.tbl_beispiel WHERE uebung_id='$uebung_id'); + $qry = "DELETE FROM campus.tbl_studentbeispiel WHERE beispiel_id IN(SELECT beispiel_id FROM campus.tbl_beispiel WHERE uebung_id='$uebung_id'); + DELETE FROM campus.tbl_abgabe WHERE abgabe_id IN(SELECT abgabe_id FROM campus.tbl_studentuebung WHERE uebung_id='$uebung_id'); + DELETE FROM campus.tbl_studentuebung WHERE uebung_id='$uebung_id'; DELETE FROM campus.tbl_beispiel WHERE uebung_id='$uebung_id'; - DELETE FROM campus.tbl_uebung WHERE uebung_id='$uebung_id'"; + DELETE FROM campus.tbl_uebung WHERE uebung_id='$uebung_id'; + DELETE FROM campus.tbl_studentuebung WHERE uebung_id = '$uebung_id'"; if(pg_query($qry)) return true; @@ -468,7 +516,10 @@ class uebung { $this->errormsg = 'Fehler beim Loeschen der Daten'; return false; - } + } + + + } } ?> \ No newline at end of file