diff --git a/cis/private/lehre/benotungstool/anwesenheitsliste.php b/cis/private/lehre/benotungstool/anwesenheitsliste.php index 3652e2e8d..e96137b0e 100644 --- a/cis/private/lehre/benotungstool/anwesenheitsliste.php +++ b/cis/private/lehre/benotungstool/anwesenheitsliste.php @@ -526,35 +526,69 @@ function addUser(student_uid) { if($uid!='') { - foreach($beispiel_obj->beispiele as $bsp) - { - if(isset($_POST['update_'.$uid.'_'.$bsp->beispiel_id])) - $vorbereitet=true; - else - $vorbereitet=false; - - $bsp_obj = new beispiel($conn); - - if(!$bsp_obj->studentbeispiel_exists($uid,$bsp->beispiel_id)) + if ($uebung_obj->beispiele) + { + foreach($beispiel_obj->beispiele as $bsp) { - $new=true; - $bsp_obj->insertamum = date('Y-m-d H:i:s'); - $bsp_obj->insertvon = $user; - } - else - { - $bsp_obj->load_studentbeispiel($uid, $bsp->beispiel_id); - $new=false; - } + if(isset($_POST['update_'.$uid.'_'.$bsp->beispiel_id])) + $vorbereitet=true; + else + $vorbereitet=false; + + $bsp_obj = new beispiel($conn); - $bsp_obj->student_uid = $uid; - $bsp_obj->beispiel_id = $bsp->beispiel_id; - $bsp_obj->vorbereitet = $vorbereitet; - $bsp_obj->updateamum = date('Y-m-d H:i:s'); - $bsp_obj->updatevon = $user; - - if(!$bsp_obj->studentbeispiel_save($new)) - $error=true; + if(!$bsp_obj->studentbeispiel_exists($uid,$bsp->beispiel_id)) + { + $new=true; + $bsp_obj->insertamum = date('Y-m-d H:i:s'); + $bsp_obj->insertvon = $user; + } + else + { + $bsp_obj->load_studentbeispiel($uid, $bsp->beispiel_id); + $new=false; + } + + $bsp_obj->student_uid = $uid; + $bsp_obj->beispiel_id = $bsp->beispiel_id; + $bsp_obj->vorbereitet = $vorbereitet; + $bsp_obj->updateamum = date('Y-m-d H:i:s'); + $bsp_obj->updatevon = $user; + + if(!$bsp_obj->studentbeispiel_save($new)) + $error=true; + } + } + else + { + if (!$uebung_obj->load_studentuebung($uid,$uebung_id)) + { + $uebung_obj->student_uid = $uid; + $uebung_obj->mitarbeiter_uid = $user; + $uebung_obj->abgabe_id = null; + $uebung_obj->note = $_POST['update_'.$uid.'_note']; + $uebung_obj->mitarbeitspunkte = null; + $uebung_obj->punkte = null; + $uebung_obj->anmerkung = null; + $uebung_obj->benotungsdatum = date("Y-m-d H:i:s"); + $uebung_obj->updateamum = null; + $uebung_obj->updatevon = null; + $uebung_obj->insertamum = date("Y-m-d H:i:s"); + $uebung_obj->insertvon = $user; + $new = true; + } + else + { + $uebung_obj->load_studentuebung($uid,$uebung_id); + $uebung_obj->mitarbeiter_uid = $user; + $uebung_obj->note = $_POST['update_'.$uid.'_note']; + $uebung_obj->benotungsdatum = date("Y-m-d H:i:s"); + $uebung_obj->updateamum = date("Y-m-d H:i:s"); + $uebung_obj->updatevon = $user; + $new = false; + } + $uebung_obj->studentuebung_save($new); + } } } @@ -573,7 +607,10 @@ function addUser(student_uid) $stg_obj = new studiengang($conn, $lehrveranstaltung_obj->studiengang_kz); $beispiel_obj->load_beispiel($uebung_id); - $anzahl = count($beispiel_obj->beispiele); + if ($uebung_obj->beispiele) + $anzahl = count($beispiel_obj->beispiele); + else + $anzahl = 1; if(isset($_GET['gruppe']) && $_GET['gruppe']!='') { $gruppe = $_GET['gruppe']; @@ -656,10 +693,15 @@ function addUser(student_uid) "; - echo "Name"; - foreach($beispiel_obj->beispiele as $row) + echo "Name"; + if (!$uebung_obj->beispiele) + echo "Note"; + else { - echo "$row->bezeichnung"; + foreach($beispiel_obj->beispiele as $row) + { + echo "$row->bezeichnung"; + } } echo "Unterschrift\n"; @@ -669,11 +711,21 @@ function addUser(student_uid) { echo "  $row_stud->nachname $row_stud->vorname $row_stud->uid"; - foreach($beispiel_obj->beispiele as $row_bsp) - { - $studentbeispiel_obj = new beispiel($conn); - $studentbeispiel_obj->load_studentbeispiel($row_stud->uid, $row_bsp->beispiel_id); - echo "uid');\" ".($studentbeispiel_obj->vorbereitet?'checked':'').">".($studentbeispiel_obj->probleme?'P':'')."\n"; + if (!$uebung_obj->beispiele) + { + $studentuebung_obj = new uebung($conn); + $studentuebung_obj->load_studentuebung($row_stud->uid,$uebung_id); + echo "uid');\" value='".$studentuebung_obj->note."' size='3'>\n"; + + } + else + { + foreach($beispiel_obj->beispiele as $row_bsp) + { + $studentbeispiel_obj = new beispiel($conn); + $studentbeispiel_obj->load_studentbeispiel($row_stud->uid, $row_bsp->beispiel_id); + echo "uid');\" ".($studentbeispiel_obj->vorbereitet?'checked':'').">".($studentbeispiel_obj->probleme?'P':'')."\n"; + } } echo " \n\n"; } diff --git a/cis/private/lehre/benotungstool/functions.inc.php b/cis/private/lehre/benotungstool/functions.inc.php new file mode 100755 index 000000000..7c99b9cb5 --- /dev/null +++ b/cis/private/lehre/benotungstool/functions.inc.php @@ -0,0 +1,31 @@ +kurzbzlang."_".$row->semester."_".$row->kurzbz."_".$ss; + + if ($which == "angabe") + { + $name .= "_".$uebung_id; + } + else if ($which == "abgabe") + { + $query = "SELECT nachname, vorname from tbl_person, tbl_benutzer where tbl_benutzer.person_id = tbl_person.person_id and tbl_benutzer.uid = '".$uid."'"; + $result = pg_query($conn, $query); + $row = pg_fetch_object($result); + $name .= "_".$uebung_id."_".$row->nachname."_".$row->vorname."_".$uid."_".$date; + } + else if ($which == "zip") + { + + $name .= "_".$uebung_id."_".$date; + } + + return $name; +} +?> \ No newline at end of file diff --git a/cis/private/lehre/benotungstool/legesamtnoteverwalten.php b/cis/private/lehre/benotungstool/legesamtnoteverwalten.php index 74c8b310d..83cf6b575 100644 --- a/cis/private/lehre/benotungstool/legesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/legesamtnoteverwalten.php @@ -327,7 +327,8 @@ if($result_grp = pg_query($conn, $qry)) while($row_stud = pg_fetch_object($result_stud)) { - $studentnote = new studentnote($conn,$lehreinheit_id,$stsem,$row_stud->uid); + $studentnote = new studentnote($conn); + $studentnote->calc_gesamtnote($lehreinheit_id,$stsem,$row_stud->uid); //echo $studentnote->debug; $legesamtnote = new legesamtnote($conn, $lehreinheit_id); @@ -375,7 +376,7 @@ if($result_grp = pg_query($conn, $qry)) } echo "
"; - echo "$note"; + echo "$note"; echo ""; $i++; } diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index 606df0b07..83a162e5c 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -33,6 +33,7 @@ require_once('../../../../include/studentnote.class.php'); require_once('../../../../include/datum.class.php'); require_once('../../../../include/legesamtnote.class.php'); require_once('../../../../include/lvgesamtnote.class.php'); +require_once('../../../../include/zeugnisnote.class.php'); ?> @@ -252,6 +253,56 @@ if (isset($_REQUEST["submit"]) && ($_POST["student_uid"] != '')){ } if (!$lvgesamtnote->save($new)) echo "".$lvgesamtnote->errormsg.""; +} + +// eingetragene lv-gesamtnoten freigeben +if (isset($_GET["freigabe"]) and ($_GET["freigabe"] == 1)) +{ + $jetzt = date("Y-m-d H:i:s"); + + $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)) + { + + if($row_grp->gruppe_kurzbz!='') + { + $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 + { + $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)) + { + $lvgesamtnote = new lvgesamtnote($conn); + if ($lvgesamtnote->load($lvid,$row_stud->uid,$stsem)) + { + if ($lvgesamtnote->benotungsdatum > $lvgesamtnote->freigabedatum) + { + $lvgesamtnote->freigabedatum = $jetzt; + $lvgesamtnote->save($new=null); + } + } + } + } + } + } + + + + } echo "

LV Gesamtnote verwalten

"; @@ -269,28 +320,21 @@ if($result_grp = pg_query($conn, $qry)) while($row_grp = pg_fetch_object($result_grp)) { echo " -   -   -   -   -   -   +   UID Nachname Vorname LE-Noten (LE-ID) - - LV-Gesamtnote + + LV-Note + + Zeugnisnote -   -   -   -   -   -   +   + "; if($row_grp->gruppe_kurzbz!='') { @@ -387,13 +431,32 @@ if($result_grp = pg_query($conn, $qry)) $note_vorschlag = round($note_le/$le_anz); else $note_vorschlag = null; - + if ($zeugnisnote = new zeugnisnote($conn, $lvid, $row_stud->uid, $stsem)) + $znote = $zeugnisnote->note; + else + $znote = null; echo "$note_les_str"; echo "
"; - echo "$note_lv"; + echo "$note_lv"; + + //status + echo ""; + if (!$lvgesamtnote->freigabedatum) + echo ""; + else if ($lvgesamtnote->benotungsdatum > $lvgesamtnote->freigabedatum) + echo ""; + else + echo ""; + + echo ""; + if (($znote) and ($note_lv != $znote)) + $stylestr = " style='color:red; border-color:red; border-style:solid; border-width:1px;'"; + else + $stylestr =""; + echo "".$znote.""; echo ""; $i++; } diff --git a/cis/private/lehre/benotungstool/studentenansicht.php b/cis/private/lehre/benotungstool/studentenansicht.php index d4aaed8d4..515c0ae78 100644 --- a/cis/private/lehre/benotungstool/studentenansicht.php +++ b/cis/private/lehre/benotungstool/studentenansicht.php @@ -32,36 +32,18 @@ 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/datum.class.php'); +require_once('../../../../include/datum.class.php'); +require_once('../../../../include/studentnote.class.php'); +require_once('../../../../include/legesamtnote.class.php'); +require_once('../../../../include/lvgesamtnote.class.php'); +include('functions.inc.php'); -?> - - - - - -Kreuzerltool - - - - -getBerechtigungen($user); @@ -93,12 +75,142 @@ else $datum_obj = new datum(); $uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:''); + +//Abgabedatei ausliefern +if (isset($_GET["download_abgabe"])){ + $file=$_GET["download_abgabe"]; + $uebung_id = $_GET["uebung_id"]; + $ueb = new uebung($conn); + $ueb->load_studentuebung($user, $uebung_id); + $ueb->load_abgabe($ueb->abgabe_id); + $filename = BENOTUNGSTOOL_PATH."abgabe/".$ueb->abgabedatei; + header('Content-Type: application/octet-stream'); + header('Content-disposition: attachment; filename="'.$file.'"'); + readfile($filename); + exit; +} + +//Angabedatei ausliefern +if (isset($_GET["download"])){ + $file=$_GET["download"]; + $uebung_id = $_GET["uebung_id"]; + $ueb = new uebung($conn); + $ueb->load($uebung_id); + $filename = "/documents/benotungstool/angabe/".$ueb->angabedatei; + header('Content-Type: application/octet-stream'); + header('Content-disposition: attachment; filename="'.$file.'"'); + readfile($filename); + exit; +} + +?> + + + + + + +Kreuzerltool + + + + + + +load_studentuebung($user, $uebung_id); + if (!$ueb->delete_abgabe($ueb->abgabe_id)) + echo $ueb->errormsg; + +} +if (isset($_FILES["abgabedatei"])) +{ + $abgabedatei_up = $_FILES["abgabedatei"]["tmp_name"]; + + if ($abgabedatei_up) + { + + + $datum = date('Y-m-d H:i:s'); + $datumstr = ereg_replace(" ","_",$datum); + $name_up = pathinfo($_FILES["abgabedatei"]["name"]); + $name_neu = makeUploadName($conn, $which='abgabe', $lehreinheit_id=$lehreinheit_id, $uebung_id=$uebung_id, $ss=$stsem,$uid=$user, $date=$datumstr); + $abgabedatei = $name_neu.".".$name_up["extension"]; + $abgabepfad = BENOTUNGSTOOL_PATH."abgabe/".$abgabedatei; + + $uebung_obj = new uebung($conn); + $uebung_obj->load_studentuebung($user, $uebung_id); + + + if ($uebung_obj->errormsg != "") + { + $uebung_obj->student_uid = $user; + $uebung_obj->mitarbeiter_uid = null; + $uebung_obj->abgabe_id = null; + $uebung_obj->uebung_id = $uebung_id; + $uebung_obj->note = null; + $uebung_obj->mitarbeitspunkte = null; + $uebung_obj->punkte = null; + $uebung_obj->anmerkung = null; + $uebung_obj->benotungsdatum = null; + $uebung_obj->updateamum = null; + $uebung_obj->updatevon = null; + $uebung_obj->insertamum = $datum; + $uebung_obj->insertvon = $user; + $uebung_obj->new = true; + $uebung_obj->studentuebung_save($new=true); + //echo $uebung_obj->errormsg; + + } + if ($uebung_obj->abgabe_id != null) + { + $uebung_obj->load_abgabe($uebung_obj->abgabe_id); + unlink(BENOTUNGSTOOL_PATH."abgabe/".$uebung_obj->abgabedatei); + $uebung_obj->abgabedatei = $abgabedatei; + $uebung_obj->abgabezeit = $datum; + $uebung_obj->abgabe_anmerkung = ""; + $uebung_obj->abgabe_save(false); + } + else + { + $uebung_obj->abgabedatei = $abgabedatei; + $uebung_obj->abgabezeit = $datum; + $uebung_obj->abgabe_anmerkung = ""; + $uebung_obj->abgabe_save(true); + } + $uebung_obj->studentuebung_save(false); + //Abgabedatei ablegen + move_uploaded_file($_FILES['abgabedatei']['tmp_name'], $abgabepfad); + + } +} +else + $abgabedatei_up = null; + + + //Kopfzeile echo ''; echo ' '; echo ''; -echo ' + +
  "Kreuzerl"-Tool'; +echo ' Benotungstool'; echo ''."\n"; //Studiensemester laden @@ -227,347 +339,657 @@ if($result = pg_query($conn, $qry)) if($row = pg_fetch_object($result)) $name = $row->vorname.' '.$row->nachname; -echo "
Leistungsuebersicht für $name

"; -$uebung_obj = new uebung($conn); -$uebung_obj->load_uebung($lehreinheit_id); -if(count($uebung_obj->uebungen)>0) -{ - echo " - + + + + + "; + + } - } - else - echo "$beispiel_obj->errormsg"; + + //Speichern button nur Anzeigen wenn die Uebung Freigegeben ist + if($datum_obj->mktime_fromtimestamp($uebung_obj->freigabevon)mktime_fromtimestamp($uebung_obj->freigabebis)>time()) + echo ""; + + echo "
"; - echo "Wählen Sie bitte eine Kreuzerlliste aus: '; - echo " + echo "'; + + echo "
"; + echo "
Wählen Sie bitte eine Aufgabe aus (Kreuzerllisten, Abgaben): '; + echo '
- + - +
+...Kreuzerlliste ist freigeschalten.freigeschaltet.
-...Kreuzerlliste ist nicht freigeschalten.nicht freigeschaltet.
"; - -} -else - die("Derzeit gibt es keine Uebungen"); - -//******SPEICHERN DER DATEN************* -if(isset($_POST['submit'])) -{ - $error=false; - - $ueb_hlp_obj = new uebung($conn); - $ueb_hlp_obj->load($uebung_id); - //Wenn Kreuzerlliste Freigegeben ist - if($datum_obj->mktime_fromtimestamp($ueb_hlp_obj->freigabevon)mktime_fromtimestamp($ueb_hlp_obj->freigabebis)>time()) + } + else + die("Derzeit gibt es keine Uebungen"); + + + + + //******SPEICHERN DER DATEN************* + if(isset($_POST['submit'])) { - $bsp_obj = new beispiel($conn); - - if($bsp_obj->load_beispiel($uebung_id)) + $error=false; + + $ueb_hlp_obj = new uebung($conn); + $ueb_hlp_obj->load($uebung_id); + //Wenn Kreuzerlliste Freigegeben ist + if($datum_obj->mktime_fromtimestamp($ueb_hlp_obj->freigabevon)mktime_fromtimestamp($ueb_hlp_obj->freigabebis)>time()) { - foreach ($bsp_obj->beispiele as $row) + $bsp_obj = new beispiel($conn); + + if($bsp_obj->load_beispiel($uebung_id)) { - $stud_bsp_obj = new beispiel($conn); - - if($stud_bsp_obj->load_studentbeispiel($user, $row->beispiel_id)) - { - $stud_bsp_obj->new=false; - } - else - { - $stud_bsp_obj->new=true; - $stud_bsp_obj->insertamum = date('Y-m-d H:i:s'); - $stud_bsp_obj->insertvon = $user; - } - $stud_bsp_obj->vorbereitet = ($_POST['solved_'.$row->beispiel_id]==1?true:false); - $stud_bsp_obj->probleme = (isset($_POST['problem_'.$row->beispiel_id])?true:false); - $stud_bsp_obj->updateamum = date('Y-m-d H:i:s'); - $stud_bsp_obj->updatevon = $user; - $stud_bsp_obj->student_uid = $user; - $stud_bsp_obj->beispiel_id = $row->beispiel_id; - - if(!$stud_bsp_obj->studentbeispiel_save()) - { - echo $stud_bsp_obj->errormsg; - $error=true; + $anzahl_solved = 0; + foreach ($bsp_obj->beispiele as $row) + { + if (isset($_POST['solved_'.$row->beispiel_id]) && ($_POST['solved_'.$row->beispiel_id]==1)) + $anzahl_solved++; + } + if (($anzahl_solved <= $ueb_hlp_obj->maxbsp) || ($ueb_hlp_obj->maxbsp == 0)) + { + foreach ($bsp_obj->beispiele as $row) + { + $stud_bsp_obj = new beispiel($conn); + + if($stud_bsp_obj->load_studentbeispiel($user, $row->beispiel_id)) + { + $stud_bsp_obj->new=false; + } + else + { + $stud_bsp_obj->new=true; + $stud_bsp_obj->insertamum = date('Y-m-d H:i:s'); + $stud_bsp_obj->insertvon = $user; + $stud_bsp_obj->vorbereitet = false; + } + if (isset($_POST['solved_'.$row->beispiel_id])) + $stud_bsp_obj->vorbereitet = ($_POST['solved_'.$row->beispiel_id]==1?true:false); + + $stud_bsp_obj->probleme = (isset($_POST['problem_'.$row->beispiel_id])?true:false); + $stud_bsp_obj->updateamum = date('Y-m-d H:i:s'); + $stud_bsp_obj->updatevon = $user; + $stud_bsp_obj->student_uid = $user; + $stud_bsp_obj->beispiel_id = $row->beispiel_id; + + $row->check_anzahl_studentbeispiel($row->beispiel_id); + if (($row->anzahl_studentbeispiel >= $ueb_hlp_obj->maxstd) && isset($_POST['problem_'.$row->beispiel_id])) + { + echo "Beispiel kann nicht mehr angekreuzt werden
"; + $error = true; + } + else + { + if(!$stud_bsp_obj->studentbeispiel_save()) + { + echo $stud_bsp_obj->errormsg; + $error=true; + } + } + } + } + else + { + $error=true; + echo "Zu viele Beispiele angekreuzt!
"; } } + + if($error) + echo "Es konnten nicht alle Daten gespeichert werden
"; + else + echo "Die Daten wurden erfolgreich gespeichert
"; } - - if($error) - echo "Es konnten nicht alle Daten gespeichert werden"; else - echo "Die Daten wurden erfolgreich gespeichert
"; + echo "Die Änderungen können nicht gespeichert werden, da diese Kreuzerlliste nicht freigegeben ist!"; + } + + //********ANZEIGE DER EINGETRAGENEN KREUZERL*********** + $uebung_obj = new uebung($conn); + $uebung_obj->load($uebung_id); + $downloadname = str_replace($uebung_id,ereg_replace(' ','_',$uebung_obj->bezeichnung), $uebung_obj->angabedatei); + echo "Freigegeben von ".date('d.m.Y H:i',$datum_obj->mktime_fromtimestamp($uebung_obj->freigabevon))." bis ".date('d.m.Y H:i',$datum_obj->mktime_fromtimestamp($uebung_obj->freigabebis)); + echo "

$uebung_obj->bezeichnung

"; + if ($uebung_obj->angabedatei) + echo "Angabe: ".$downloadname."

"; + + + $ueb_obj = new uebung($conn); + if($ueb_obj->load_studentuebung($user, $uebung_id)) + { + $anmerkung = $ueb_obj->anmerkung; + $mitarbeit = $ueb_obj->mitarbeitspunkte; + $note = $ueb_obj->note; } else - echo "Die Änderungen können nicht gespeichert werden, da diese Kreuzerlliste nicht freigegeben ist!"; -} - -//********ANZEIGE DER EINGETRAGENEN KREUZERL*********** -$uebung_obj = new uebung($conn); -$uebung_obj->load($uebung_id); -echo "Freigegeben von ".date('d.m.Y H:i',$datum_obj->mktime_fromtimestamp($uebung_obj->freigabevon))." bis ".date('d.m.Y H:i',$datum_obj->mktime_fromtimestamp($uebung_obj->freigabebis)); -echo "

$uebung_obj->bezeichnung

"; -echo "Angabe: ".$uebung_obj->angabedatei."

"; -$ueb_obj = new uebung($conn); -if($ueb_obj->load_studentuebung($user, $uebung_id)) -{ - $anmerkung = $ueb_obj->anmerkung; - $mitarbeit = $ueb_obj->mitarbeitspunkte; -} -else -{ - $anmerkung = ''; - $mitarbeit = 0; -} - -echo " -
- - - - -
- ".($anmerkung!=''?'Anmerkungen: '.htmlentities($anmerkung).'

':'')." -
- + { + $anmerkung = ''; + $mitarbeit = 0; + $note = null; + } + $anmerkung = ereg_replace("\n","
",htmlentities($anmerkung)); + + if ($uebung_obj->beispiele) + { + + $qry_cnt = "SELECT count(*) as anzahl FROM campus.tbl_studentbeispiel WHERE beispiel_id IN (SELECT beispiel_id from campus.tbl_beispiel where uebung_id = $uebung_id) AND vorbereitet=true and student_uid = '$user'"; + if($result_cnt = pg_query($conn,$qry_cnt)) + if($row_cnt = pg_fetch_object($result_cnt)) + $anzahl = $row_cnt->anzahl; + + echo ""; + + echo "
"; + if ($uebung_obj->maxbsp > 0) + echo ""; + if ($uebung_obj->maxstd > 0) + echo ""; + echo "
Maximale Anzahl der Beispiele/Student:".$uebung_obj->maxbsp."
Maximale Anzahl Student/Übung erreicht 
"; + echo " + + - - - - - - "; - -$bsp_obj = new beispiel($conn); -$bsp_obj->load_beispiel($uebung_id); - -foreach ($bsp_obj->beispiele as $row) -{ - $stud_bsp_obj = new beispiel($conn); - if($stud_bsp_obj->load_studentbeispiel($user, $row->beispiel_id)) - { - $vorbereitet = $stud_bsp_obj->vorbereitet; - $probleme = $stud_bsp_obj->probleme; - } - else - { - $vorbereitet = false; - $probleme = false; - } - echo " - - - - - - "; -} - -//Speichern button nur Anzeigen wenn die Uebung Freigegeben ist -if($datum_obj->mktime_fromtimestamp($uebung_obj->freigabevon)mktime_fromtimestamp($uebung_obj->freigabebis)>time()) - echo ""; - -echo "
BeispielVorbereitetNicht vorbereitetProblemePunkte
$row->bezeichnung$row->punkte
"; -echo " -
"; - -//Gesamtpunkte diese Kreuzerlliste -$qry = "SELECT sum(punkte) as punktegesamt FROM campus.tbl_beispiel WHERE uebung_id='$uebung_id'"; -$punkte_gesamt=0; -if($result=pg_query($conn, $qry)) - if($row = pg_fetch_object($result)) - $punkte_gesamt = $row->punktegesamt; - -//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='$user' AND vorbereitet=true"; -$punkte_eingetragen=0; -if($result=pg_query($conn, $qry)) - if($row = pg_fetch_object($result)) - $punkte_eingetragen = ($row->punkteeingetragen!=''?$row->punkteeingetragen:0); - -//Gesamtpunkte alle Kreuzerllisten -$qry = "SELECT sum(tbl_beispiel.punkte) as punktegesamt_alle FROM campus.tbl_beispiel, campus.tbl_uebung - WHERE tbl_uebung.uebung_id=tbl_beispiel.uebung_id AND - tbl_uebung.lehreinheit_id='$lehreinheit_id'"; -$punkte_gesamt_alle=0; -if($result=pg_query($conn, $qry)) - if($row = pg_fetch_object($result)) - $punkte_gesamt_alle = $row->punktegesamt_alle; - -//Eingetragen alle Kreuzerllisten -$qry = "SELECT sum(tbl_beispiel.punkte) as punkteeingetragen_alle FROM campus.tbl_beispiel, campus.tbl_studentbeispiel, campus.tbl_uebung - WHERE tbl_beispiel.beispiel_id = tbl_studentbeispiel.beispiel_id AND - tbl_uebung.uebung_id=tbl_beispiel.uebung_id AND - tbl_uebung.lehreinheit_id='$lehreinheit_id' AND - tbl_studentbeispiel.student_uid='$user' AND vorbereitet=true"; -$punkte_eingetragen_alle=0; -if($result=pg_query($conn, $qry)) - if($row = pg_fetch_object($result)) - $punkte_eingetragen_alle = ($row->punkteeingetragen_alle!=''?$row->punkteeingetragen_alle:0); - -//Mitarbeitspunkte -$qry = "SELECT sum(mitarbeitspunkte) as mitarbeitspunkte FROM campus.tbl_studentuebung JOIN campus.tbl_uebung USING(uebung_id) - WHERE lehreinheit_id='$lehreinheit_id' AND student_uid='$user'"; -$mitarbeit_alle=0; -if($result=pg_query($conn, $qry)) - if($row = pg_fetch_object($result)) - $mitarbeit_alle = ($row->mitarbeitspunkte!=''?$row->mitarbeitspunkte:0); - -//Mitarbeitspunkte -$qry = "SELECT mitarbeitspunkte FROM campus.tbl_studentuebung - WHERE uebung_id='$uebung_id' AND student_uid='$user'"; -$mitarbeit=0; -if($result=pg_query($conn, $qry)) - if($row = pg_fetch_object($result)) - $mitarbeit = $row->mitarbeitspunkte; -echo " - - - - - - - - - - - - - -
Diese Kreuzerlliste:
Punkte insgesamt möglich:$punkte_gesamt
Punkte eingetragen:$punkte_eingetragen
-

- - - - - - - - - - - - -
Alle Kreuzerllisten bisher:
Punkte insgesamt möglich:$punkte_gesamt_alle
Punkte eingetragen:$punkte_eingetragen_alle
-

- - - - - - - - - - - - -
Mitarbeitspunkte:
Bisher insgesamt:$mitarbeit_alle
Diese Kreuzerlliste:$mitarbeit
- "; - - -echo " -
- -
-"; - -//**********STATISTIK*************** -if($uebung_obj->statistik) -{ - echo "

Statistik

"; - $beispiel_obj = new beispiel($conn); - if($beispiel_obj->load_beispiel($uebung_id)) - { - if(count($beispiel_obj->beispiele)>0) +
+ ".($anmerkung!=''?'Anmerkungen:
'.$anmerkung.'

':'')." +
+ + + + + + + + "; + + $bsp_obj = new beispiel($conn); + $bsp_obj->load_beispiel($uebung_id); + + foreach ($bsp_obj->beispiele as $row) { - echo '
BeispielVorbereitetNicht vorbereitetProblemePunkte
- - - - '; - $i=0; - $qry_cnt = "SELECT distinct student_uid FROM campus.tbl_studentbeispiel JOIN campus.tbl_beispiel USING(beispiel_id) WHERE uebung_id='$uebung_id' GROUP BY student_uid"; - if($result_cnt = pg_query($conn,$qry_cnt)) - $gesamt=pg_num_rows($result_cnt); - - foreach ($beispiel_obj->beispiele as $row) - { - $i++; - $solved = 0; - $psolved = 0; - $qry_cnt = "SELECT count(*) as anzahl FROM campus.tbl_studentbeispiel WHERE beispiel_id=$row->beispiel_id AND vorbereitet=true"; - if($result_cnt = pg_query($conn,$qry_cnt)) - if($row_cnt = pg_fetch_object($result_cnt)) - $solved = $row_cnt->anzahl; - - - - if($solved>0) - $psolved = $solved/$gesamt*100; - - echo ' - - - '; + $bsp_voll = false; + $stud_bsp_obj = new beispiel($conn); + + if ($uebung_obj->maxstd > 0) + { + $stud_bsp_obj->check_anzahl_studentbeispiel($row->beispiel_id); + if ($stud_bsp_obj->anzahl_studentbeispiel >= $uebung_obj->maxstd) + $bsp_voll = true; } - echo "
  - - - - -
 
-
- '.$row->bezeichnung.' - - - - - -
- - - - -
- -  '.$solved.' ['.number_format($psolved,1,'.','').'%] -
-
-
"; - echo "

Es haben insgesamt $gesamt Studenten eingetragen."; + if($stud_bsp_obj->load_studentbeispiel($user, $row->beispiel_id)) + { + $vorbereitet = $stud_bsp_obj->vorbereitet; + $probleme = $stud_bsp_obj->probleme; + } + else + { + $vorbereitet = false; + $probleme = false; + } + if ($bsp_voll) + { + $ro = " disabled"; + $markiert = " style='background-color:#dddddd;'"; + } + else + { + $ro = ""; + $markiert = ""; + } + echo " +
$row->bezeichnung$row->punkte
"; + echo " +
"; + + //Gesamtpunkte diese Kreuzerlliste + $qry = "SELECT sum(punkte) as punktegesamt FROM campus.tbl_beispiel WHERE uebung_id='$uebung_id'"; + $punkte_gesamt=0; + if($result=pg_query($conn, $qry)) + if($row = pg_fetch_object($result)) + $punkte_gesamt = $row->punktegesamt; + + //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='$user' AND vorbereitet=true"; + $punkte_eingetragen=0; + if($result=pg_query($conn, $qry)) + if($row = pg_fetch_object($result)) + $punkte_eingetragen = ($row->punkteeingetragen!=''?$row->punkteeingetragen:0); + + //Gesamtpunkte alle Kreuzerllisten + $qry = "SELECT sum(tbl_beispiel.punkte) as punktegesamt_alle FROM campus.tbl_beispiel, campus.tbl_uebung + WHERE tbl_uebung.uebung_id=tbl_beispiel.uebung_id AND + tbl_uebung.lehreinheit_id='$lehreinheit_id'"; + $punkte_gesamt_alle=0; + if($result=pg_query($conn, $qry)) + if($row = pg_fetch_object($result)) + $punkte_gesamt_alle = $row->punktegesamt_alle; + + //Eingetragen alle Kreuzerllisten + $qry = "SELECT sum(tbl_beispiel.punkte) as punkteeingetragen_alle FROM campus.tbl_beispiel, campus.tbl_studentbeispiel, campus.tbl_uebung + WHERE tbl_beispiel.beispiel_id = tbl_studentbeispiel.beispiel_id AND + tbl_uebung.uebung_id=tbl_beispiel.uebung_id AND + tbl_uebung.lehreinheit_id='$lehreinheit_id' AND + tbl_studentbeispiel.student_uid='$user' AND vorbereitet=true"; + $punkte_eingetragen_alle=0; + if($result=pg_query($conn, $qry)) + if($row = pg_fetch_object($result)) + $punkte_eingetragen_alle = ($row->punkteeingetragen_alle!=''?$row->punkteeingetragen_alle:0); + + //Mitarbeitspunkte + $qry = "SELECT sum(mitarbeitspunkte) as mitarbeitspunkte FROM campus.tbl_studentuebung JOIN campus.tbl_uebung USING(uebung_id) + WHERE lehreinheit_id='$lehreinheit_id' AND student_uid='$user'"; + $mitarbeit_alle=0; + if($result=pg_query($conn, $qry)) + if($row = pg_fetch_object($result)) + $mitarbeit_alle = ($row->mitarbeitspunkte!=''?$row->mitarbeitspunkte:0); + + //Mitarbeitspunkte + $qry = "SELECT mitarbeitspunkte FROM campus.tbl_studentuebung + WHERE uebung_id='$uebung_id' AND student_uid='$user'"; + $mitarbeit=0; + if($result=pg_query($conn, $qry)) + if($row = pg_fetch_object($result)) + $mitarbeit = $row->mitarbeitspunkte; + echo " + + + + + + + + + + + + + +
Diese Kreuzerlliste:
Punkte insgesamt möglich:$punkte_gesamt
Punkte eingetragen:$punkte_eingetragen
+

+ + + + + + + + + + + + +
Alle Kreuzerllisten bisher:
Punkte insgesamt möglich:$punkte_gesamt_alle
Punkte eingetragen:$punkte_eingetragen_alle
+

+ + + + + + + + + + + + +
Mitarbeitspunkte:
Bisher insgesamt:$mitarbeit_alle
Diese Kreuzerlliste:$mitarbeit
+ "; + + + echo " +
+ + + "; + + //**********STATISTIK*************** + if($uebung_obj->statistik) + { + echo "

Statistik

"; + $beispiel_obj = new beispiel($conn); + if($beispiel_obj->load_beispiel($uebung_id)) + { + if(count($beispiel_obj->beispiele)>0) + { + echo ' + + + + '; + $i=0; + $qry_cnt = "SELECT distinct student_uid FROM campus.tbl_studentbeispiel JOIN campus.tbl_beispiel USING(beispiel_id) WHERE uebung_id='$uebung_id' GROUP BY student_uid"; + if($result_cnt = pg_query($conn,$qry_cnt)) + $gesamt=pg_num_rows($result_cnt); + + foreach ($beispiel_obj->beispiele as $row) + { + $i++; + $solved = 0; + $psolved = 0; + $qry_cnt = "SELECT count(*) as anzahl FROM campus.tbl_studentbeispiel WHERE beispiel_id=$row->beispiel_id AND vorbereitet=true"; + if($result_cnt = pg_query($conn,$qry_cnt)) + if($row_cnt = pg_fetch_object($result_cnt)) + $solved = $row_cnt->anzahl; + + + + if($solved>0) + $psolved = $solved/$gesamt*100; + + echo ' + + + '; + } + echo "
  + + + + +
 
+
+ '.$row->bezeichnung.' + + + + + +
+ + + + +
+ +  '.$solved.' ['.number_format($psolved,1,'.','').'%] +
+
+
"; + echo "

Es haben insgesamt $gesamt Studenten eingetragen."; + } + } + else + echo "$beispiel_obj->errormsg"; + echo ""; + echo ""; + } + } + else if ($uebung_obj->abgabe) + { + + echo "\n"; + echo "\n"; + echo" + + "; + echo "\n"; + + echo "\n"; + $uebung_obj->load_studentuebung($user, $uebung_id); + if ($uebung_obj->abgabe_id) + { + $uebung_obj->load_abgabe($uebung_obj->abgabe_id); + echo " "; + echo" "; + echo ""; + } + if($datum_obj->mktime_fromtimestamp($uebung_obj->freigabevon)mktime_fromtimestamp($uebung_obj->freigabebis)>time()) + { + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + } + echo "
".($note!=''?'Note: '.$note.'

':'')."
+ ".($anmerkung!=''?'Anmerkungen:
'.$anmerkung.'

':'')." +

Abgabedatei: ".$uebung_obj->abgabedatei.""; + if($datum_obj->mktime_fromtimestamp($uebung_obj->freigabevon)mktime_fromtimestamp($uebung_obj->freigabebis)>time()) + echo " [del]
\n"; + echo " "; + echo "
\n"; + + } + + +} +//notenübersicht +else +{ + + echo "
Leistungsuebersicht / Notenübersicht für $name

"; + echo "
"; + + $uebung_obj = new uebung($conn); + $uebung_obj->load_uebung($lehreinheit_id,1); + if(count($uebung_obj->uebungen)>0) + { + + echo ""; + echo " \n"; + echo " \n"; + echo " \n"; + echo " "; + echo " \n"; + echo " "; + echo " \n"; + foreach ($uebung_obj->uebungen as $row) + { + + $subuebung_obj = new uebung($conn); + $subuebung_obj->load_uebung($lehreinheit_id,2,$row->uebung_id); + $l1note = new studentnote($conn); + if(count($subuebung_obj->uebungen) >= 0) + { + + + $l1note->calc_l1_note($row->uebung_id, $user, $lehreinheit_id); + if ($l1note->negativ) + $l1_note = 5; + else + $l1_note = $l1note->l1_note; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo ""; + echo "\n"; + echo " \n"; + + } + + if(count($subuebung_obj->uebungen) > 0) + { + + foreach ($subuebung_obj->uebungen as $subrow) + { + + echo " \n"; + echo " "; + echo " \n"; + echo " \n"; + if ($subrow->beispiele) + { + $l1note->calc_punkte($subrow->uebung_id, $user); + echo " "; + echo " \n"; + echo " \n"; + } + else if ($subrow->abgabe) + { + $l1note->calc_note($subrow->uebung_id, $user); + echo " \n"; + echo " "; + echo " \n"; + } + echo " \n"; /* + if($datum_obj->mktime_fromtimestamp($subrow->freigabevon)mktime_fromtimestamp($subrow->freigabebis)>time()) + echo ' + '; + else + echo ' - '; + */ + + } + + } + } + $l1note->calc_gesamtnote($lehreinheit_id, $stsem, $user); + if ($l1note->negativ) + $gesamtnote = 5; + else + $gesamtnote = $l1note->studentgesamtnote; + echo ""; + + + echo "
AufgabeGewichtPunkteTeilnoteNote
"; + echo $row->bezeichnung; + if ($row->positiv) + echo "*"; + echo " ".$row->gewicht.""; + if ($l1note->punkte_gesamt_l1 >0) + echo $l1note->punkte_gesamt_l1; + echo "".$l1_note."
- \n"; + echo $subrow->bezeichnung; + if ($subrow->positiv) + echo "*"; + echo " \n"; + if ($subrow->abgabe) + echo $subrow->gewicht; + echo " ".$l1note->punkte_gesamt."".$l1note->note."
Errechnete Gesamtnote: ".$gesamtnote."
"; + echo "* muss positiv sein"; + } + + echo "
"; + + $legesamtnote = new legesamtnote($conn, $lehreinheit_id); + + if (!$legesamtnote->load($user, $lehreinheit_id)) + { + $lenote = null; + } + else + { + $lenote = $legesamtnote->note; + } + if ($lvgesamtnote = new lvgesamtnote($conn, $lvid,$user,$stsem)) + { + $lvnote = $lvgesamtnote->note; + } + else + $lvnote = null; + + echo "\n"; + echo " "; + echo "\n"; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo ""; + echo "\n"; + echo "
Eingetragene Noten
Lehreinheit".$lenote."
Lehrveranstaltung".$lvnote."
"; + + echo "
"; } ?> - - \ No newline at end of file diff --git a/cis/private/lehre/benotungstool/studentenpunkteverwalten.php b/cis/private/lehre/benotungstool/studentenpunkteverwalten.php index 24486ca60..597e45b1d 100644 --- a/cis/private/lehre/benotungstool/studentenpunkteverwalten.php +++ b/cis/private/lehre/benotungstool/studentenpunkteverwalten.php @@ -30,36 +30,9 @@ 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'); - -?> - - - - - -Kreuzerltool - - - - -load_studentuebung($uid, $uebung_id); + $ueb->load_abgabe($ueb->abgabe_id); + $filename = BENOTUNGSTOOL_PATH."abgabe/".$ueb->abgabedatei; + header('Content-Type: application/octet-stream'); + header('Content-disposition: attachment; filename="'.$file.'"'); + readfile($filename); + exit; +} + +?> + + + + + +Kreuzerltool + + + + +'; @@ -445,8 +462,8 @@ if(isset($_GET['uid']) && $_GET['uid']!='') if ($ueb_obj->beispiele && is_numeric($_GET['uebung_id'])) { - $studentnote = new studentnote($conn,$lehreinheit_id,$stsem,$uid,$uebung_id); - echo "Note: ".$studentnote->note." (Gewicht: ".$ueb_obj->gewicht.")

"; + //$studentnote = new studentnote($conn,$lehreinheit_id,$stsem,$uid,$uebung_id); + //echo "Note: ".$studentnote->note." (Gewicht: ".$ueb_obj->gewicht.")

"; echo "
"; echo "
@@ -604,10 +621,20 @@ if(isset($_GET['uid']) && $_GET['uid']!='') } else if (is_numeric($_GET['uebung_id'])) { + $ueb_obj->load_studentuebung($uid, $uebung_id); + if ($ueb_obj->abgabe_id) + { + $ueb_obj->load_abgabe($ueb_obj->abgabe_id); + $filename = $ueb_obj->abgabedatei; + } + else + $filename=''; //Abgaben benoten - $studentnote = new studentnote($conn,$lehreinheit_id,$stsem,$uid,$uebung_id); + $studentnote = new studentnote($conn,$lehreinheit_id,$stsem,$uid,$uebung_id); + $studentnote->calc_note($uebung_id, $uid); echo "Note: ".$studentnote->note." (Gewicht: ".$ueb_obj->gewicht.")

"; - + if ($filename != '') + echo "Abgabedatei: ".$filename."

"; echo " "; - echo ""; - echo""; - echo""; + //echo ""; + echo ""; + //echo""; + if ($uebung_obj->beispiele) + echo""; echo ""; echo ""; if ($uebung_obj->angabedatei != '') @@ -861,7 +863,8 @@ if(isset($_GET["uebung_id"]) && $_GET["uebung_id"]!='') echo "
@@ -633,6 +660,89 @@ if(isset($_GET['uid']) && $_GET['uid']!='') } else { + + //Übungen benoten + $uebung_obj = new uebung($conn); + $uebung_obj->load_uebung($lehreinheit_id,1); + if(count($uebung_obj->uebungen)>0) + { + echo "
"; + echo "
Aufgabe (Kreuzerllisten, Abgaben): '; + echo " [benoten]"; + $abgabe_obj = new uebung($conn, $uebung_id); + if ($abgabe_obj->abgabe && glob(BENOTUNGSTOOL_PATH."abgabe/*_[WS]S[0-9][0-9][0-9][0-9]_".$uebung_id."_*")) + { + $date = date('Y-m-d_H:i:s'); + $downloadname = makeUploadName($conn, $which="zip", $lehreinheit_id, $uebung_id, $stsem, $uid=null, $date); + $downloadname = str_replace($uebung_id, ereg_replace(" ","_",$abgabe_obj->bezeichnung), $downloadname); + echo " [Abgaben downloaden]"; + } + + echo '
'; + } + + + + + echo "


"; //Studentenliste echo "Bitte wählen Sie den Studenten aus.

"; echo " diff --git a/cis/private/lehre/benotungstool/verwaltung_listen.php b/cis/private/lehre/benotungstool/verwaltung_listen.php index 39e316e34..efabd35e9 100644 --- a/cis/private/lehre/benotungstool/verwaltung_listen.php +++ b/cis/private/lehre/benotungstool/verwaltung_listen.php @@ -29,7 +29,8 @@ 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/datum.class.php'); +require_once('../../../../include/datum.class.php'); +require_once('functions.inc.php'); function microtime_float() { list($usec, $sec) = explode(" ", microtime()); @@ -144,6 +145,7 @@ else $beispiel_id = (isset($_GET['beispiel_id'])?$_GET['beispiel_id']:''); $uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:''); +/* //Filenamen für up-/downloads bauen // which kann sein angabe, abgabe oder zip function makeUploadName($conn, $which, $lehreinheit_id=null, $uebung_id=null, $ss=null) @@ -160,7 +162,7 @@ if ($which == "angabe") return $name; } - +*/ //Angabedatei löschen @@ -186,12 +188,12 @@ if (isset($_POST["schluessel"]) && $_POST["schluessel"]=='Speichern') { if (is_numeric($punkte_arr[$i])) { - $qry = "select * from campus.tbl_notenschluesseluebung where uebung_id = '".$uebung_id."' and note = '".$i."'"; + $qry = "select * from campus.tbl_notenschluesseluebung where uebung_id = '".$liste_id."' and note = '".$i."'"; $result = pg_query($conn, $qry); if(pg_num_rows($result)>0) - $str = "update campus.tbl_notenschluesseluebung set punkte = '".$punkte_arr[$i]."' where uebung_id = '".$uebung_id."' and note = '".$i."'"; + $str = "update campus.tbl_notenschluesseluebung set punkte = '".$punkte_arr[$i]."' where uebung_id = '".$liste_id."' and note = '".$i."'"; else - $str = "insert into campus.tbl_notenschluesseluebung (uebung_id, note, punkte) values ('".$uebung_id."','".$i."','".$punkte_arr[$i]."')"; + $str = "insert into campus.tbl_notenschluesseluebung (uebung_id, note, punkte) values ('".$liste_id."','".$i."','".$punkte_arr[$i]."')"; if (!pg_query($conn, $str)) echo "Daten konnten nicht gespeichert werden"; } @@ -342,8 +344,6 @@ if(isset($_POST['uebung_neu']) || isset($_POST['abgabe_neu'])) { //pruefen ob alle Daten eingegeben wurden $error=false; - $maxbsp = null; - $maxstd = null; if($thema=='') { $error_thema.= "Thema muss eingegeben werden"; @@ -826,9 +826,11 @@ if(isset($_GET["uebung_id"]) && $_GET["uebung_id"]!='') if ($uebung_obj->beispiele) echo "
Max. Studenten/Beispiel$error_maxstd
Max. Beispiele/Student$error_maxbsp
Gewicht$error_gewicht
Positiv positiv?'checked':'').">
Statistik für Studenten anzeigen statistik?'checked':'').">
Gewicht$error_gewicht
Positiv positiv?'checked':'').">
Statistik für Studenten anzeigen statistik?'checked':'').">
Angabedatei
"; - + + /* // notenschlüssel $qry = "select * from campus.tbl_notenschluesseluebung where uebung_id = '$uebung_id' order by note"; if($result = pg_query($conn, $qry)) @@ -894,7 +897,8 @@ echo "
- "; + "; + */ } echo ""; @@ -1143,14 +1147,49 @@ else Max. Beispiele/Student$error_maxbsp Freigabevon $error_freigabevon (Format: 31.12.2007 14:30)bis $error_freigabebis - Gewicht$error_gewicht - Positiv + + Statistik für Studenten anzeigen Angabedatei - "; + "; + // notenschlüssel + $qry = "select * from campus.tbl_notenschluesseluebung where uebung_id = '$liste_id' order by note"; + if($result = pg_query($conn, $qry)) + { + $notenschluessel = array(); + $notenschluessel[1] = ''; + $notenschluessel[2] = ''; + $notenschluessel[3] = ''; + $notenschluessel[4] = ''; + $notenschluessel[5] = ''; + if(pg_num_rows($result)>=1) + { + while($schluesselrow = pg_fetch_object($result)) + { + $notenschluessel[$schluesselrow->note] = $schluesselrow->punkte; + } + } + } + + echo "
\n"; + echo "\n"; + echo "\n\n"; + + echo ""; + echo ""; +echo ""; +echo ""; +echo ""; +echo ""; + echo ""; + + echo "
Notenschlüssel definieren
 
NoteMindestpunkte
+
"; + + } if(!isset($_POST['uebung_neu'])) $thema = "Abgabe ".($anzahl<9?'0'.($anzahl+1):($anzahl+1)); @@ -1166,7 +1205,7 @@ else (Format: 31.12.2007 14:30)bis $error_freigabebis Gewicht$error_gewicht Positiv - Statistik für Studenten anzeigen + Angabedatei diff --git a/cis/private/lehre/benotungstool/zipdownload_benotungstool.php b/cis/private/lehre/benotungstool/zipdownload_benotungstool.php new file mode 100755 index 000000000..c72d22f65 --- /dev/null +++ b/cis/private/lehre/benotungstool/zipdownload_benotungstool.php @@ -0,0 +1,85 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Erstellt ein Zip Archiv des Download-Bereichs und leitet dann zum Download weiter + * @create 20-03-2006 + * Aufruf: zipdownload.php?stg=255&sem=1$short=eng + */ + + require_once('../../../config.inc.php'); + require_once('../../../../include/functions.inc.php'); + + //Connection zur DB herstellen + if(!$conn = pg_pconnect(CONN_STRING)) + { + die('Fehler beim herstellen der DB Verbindung'); + } + + $user = get_uid(); + + //Gueltigkeit der Parameter pruefen + if(!isset($_GET['uebung_id']) || !is_numeric($_GET['uebung_id'])) + { + die('Fehler bei der Parameteruebergabe'); + } + if(!isset($_GET['lehreinheit_id']) || !is_numeric($_GET['lehreinheit_id'])) + { + die('Fehler bei der Parameteruebergabe'); + } + if(!isset($_GET['stsem'])) + { + die('Fehler bei der Parameteruebergabe'); + } + if(!isset($_GET['downloadname'])) + { + die('Fehler bei der Parameteruebergabe'); + } + + $uebung_id = $_GET['uebung_id']; + $lehreinheit_id = $_GET['lehreinheit_id']; + $stsem = $_GET['stsem']; + $downloadname = $_GET['downloadname']; + + + //Pfade bauen + $pfad = BENOTUNGSTOOL_PATH.'abgabe/'; + $filename = 'download_'.$user.'_'.$downloadname.'.zip'; + + + //Pfad wechseln + chdir($pfad); + + + //File loeschen falls es existiert + //if(file_exists("download_".$user."*")) + exec("rm download_".$user."*"); + + //Zip File erstellen + exec("zip -r ".$filename." *_[WS]S[0-9][0-9][0-9][0-9]_".$uebung_id."_*"); + + //Auf Zip File Verweisen + //header("Location: $pfad$filename"); + header('Content-Type: application/octet-stream'); + header('Content-disposition: attachment; filename="'.$filename.'"'); + readfile($filename); + unlink($filename); +?> \ No newline at end of file diff --git a/include/beispiel.class.php b/include/beispiel.class.php index fc11caacf..f37693a78 100644 --- a/include/beispiel.class.php +++ b/include/beispiel.class.php @@ -362,7 +362,35 @@ class beispiel return false; } } + + function check_anzahl_studentbeispiel($beispiel_id) + { + if(!is_numeric($beispiel_id)) + { + $this->errormsg = 'Beispiel_id muss eine gueltige Zahl sein'; + return false; + } + $qry = "SELECT count(*) as anzahl FROM campus.tbl_studentbeispiel WHERE vorbereitet = true and beispiel_id='$beispiel_id'"; + if($result = pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + $this->anzahl_studentbeispiel = $row->anzahl; + return true; + } + else + { + $this->errormsg = 'Fehler beim laden der Anzahl der Einträge in Student_Beispiel'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim laden der Anzahl der Einträge in Student_Beispiel'; + return false; + } + } // ** // * Prueft die studentbeispiel Daten auf gueltigkeit // * diff --git a/include/lvgesamtnote.class.php b/include/lvgesamtnote.class.php index 627f4afe9..4da239158 100644 --- a/include/lvgesamtnote.class.php +++ b/include/lvgesamtnote.class.php @@ -200,7 +200,8 @@ class lvgesamtnote $this->addslashes($this->student_uid).', '. $this->addslashes($this->studiensemester_kurzbz).', '. $this->addslashes($this->mitarbeiter_uid).', '. - $this->addslashes($this->note).', now(), '. + $this->addslashes($this->note).', '. + $this->addslashes($this->freigabedatum).', '. $this->addslashes($this->benotungsdatum).', '. $this->addslashes($this->bemerkung).', '. $this->addslashes($this->updateamum).', '. @@ -212,7 +213,7 @@ class lvgesamtnote { $qry='UPDATE campus.tbl_lvgesamtnote SET '. 'note='.$this->addslashes($this->note).', '. - 'freigabedatum=now(), '. + 'freigabedatum='.$this->addslashes($this->freigabedatum).', '. 'benotungsdatum='.$this->addslashes($this->benotungsdatum).', '. 'bemerkung='.$this->addslashes($this->bemerkung).', '. 'mitarbeiter_uid='.$this->addslashes($this->mitarbeiter_uid).', '. diff --git a/include/studentnote.class.php b/include/studentnote.class.php index 04d25db4f..d878d3169 100755 --- a/include/studentnote.class.php +++ b/include/studentnote.class.php @@ -44,7 +44,7 @@ class studentnote // * $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) + function studentnote($conn, $unicode=false) { $this->conn = $conn; @@ -59,12 +59,54 @@ class studentnote return false; } - if($uebung_id) + } + + function calc_gesamtnote($lehreinheit_id, $ss, $student_uid) + { { - $this->calc_note($uebung_id, $student_uid); + $conn = $this->conn; + $studentgesamtnote = 0; + $counter = 0; + $gewichte = 0; + $negativ_all = false; + $note_x_gewicht = 0; + $note_x_gewicht_l1 = 0; + $gewichte_l1 = 0; + $fehlt_all = false; + $beispiele = false; + + $ueb1_obj = new uebung($conn); + $ueb1_obj->load_uebung($lehreinheit_id,1); + foreach($ueb1_obj->uebungen as $ueb1) + { + $this->calc_l1_note($ueb1->uebung_id, $student_uid, $lehreinheit_id); + $note_x_gewicht_l1 += ($this->l1_note * $this->l1_gewicht); + $gewichte_l1 += $this->l1_gewicht; + if ($this->negativ) + $negativ_all = $this->negativ; + if ($this->fehlt) + $fehlt_all = $this->fehlt; + + } + if ($gewichte_l1 > 0) + { + $this->studentgesamtnote = ($note_x_gewicht_l1 / $gewichte_l1); + $this->negativ = $negativ_all; + $this->fehlt = $fehlt_all; + } + else + { + $this->studentgesamtnote = "n"; + $this->negativ = $negativ_all; + $this->fehlt = $fehlt_all; + } } - else + } + + function calc_l1_note($uebung_id, $student_uid, $lehreinheit_id) + { { + $conn = $this->conn; $studentgesamtnote = 0; $counter = 0; $gewichte = 0; @@ -72,74 +114,129 @@ class studentnote $note_x_gewicht = 0; $note_x_gewicht_l1 = 0; $gewichte_l1 = 0; - $fehlt = false; + $fehlt = false; + $beispiele = false; + $punkte_gesamt = 0; + $punkte_mitarbeit = 0; + $punkte_eingetragen = 0; + $l1_gewicht = 0; + $ueb1 = new uebung($conn, $uebung_id); - $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) + $ueb_obj = new uebung($conn); + $ueb_obj->load_uebung($lehreinheit_id, 2, $uebung_id); + if ($ueb_obj->uebungen) + { + $note_x_gewicht = 0; + $gewichte = 0; + $punkte_gesamt = 0; + + foreach ($ueb_obj->uebungen as $ueb) { - $note_x_gewicht = 0; - $gewichte = 0; - foreach ($ueb_obj->uebungen as $ueb) - { - if ($this->calc_note($ueb->uebung_id,$student_uid)) + if ($ueb->abgabe) + { + if ($this->calc_note($ueb->uebung_id, $student_uid)) { if (is_numeric($this->note)) { if ($ueb->positiv && $this->note == 5) - $negativ = true; + $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; + { + $fehlt = true; + if ($ueb->positiv) + $negativ = true; + } + } } else - $fehlt = true; + { + $this->calc_punkte($ueb->uebung_id, $student_uid); + $punkte_gesamt += $this->punkte_gesamt; + $punkte_mitarbeit += $this->punkte_mitarbeit; + $punkte_eingetragen += $this->punkte_eingetragen; + $beispiele = true; + } + } + + if ($gewichte > 0) + { + $l1_note = ($note_x_gewicht / $gewichte); + $l1_gewicht = $ueb1->gewicht; + } + //if ($punkte_gesamt > 0) + if ($beispiele) + { + $qry = "SELECT min(note) as note from campus.tbl_notenschluesseluebung where punkte <= '".$punkte_gesamt."' and uebung_id = '".$ueb1->uebung_id."'"; + if($result=pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + $note = $row->note; + else + $note = 5; + } + if ($ueb1->positiv && ($note == 5)) + $negativ = true; + $l1_note = ($note * $ueb1->gewicht); + $l1_gewicht = $ueb1->gewicht; + } + if ($ueb1->positiv && $beispiele && ($punkte_gesamt == 0)) + $negativ = true; + //else if ($beispiele && ($punkte_gesamt == 0)) + // $felt = true; + } + // 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; + $l1_note= $s->note; + $l1_gewicht = $ueb1->gewicht; + } + else + { + $fehlt = true; + if ($ueb1->positiv) + $negativ = true; } } - if ($gewichte_l1 > 0) - { - $this->studentgesamtnote = ($note_x_gewicht_l1 / $gewichte_l1); + + if ($l1_gewicht > 0) + { + $this->l1_note = $l1_note; + $this->l1_gewicht = $l1_gewicht; $this->negativ = $negativ; $this->fehlt = $fehlt; + $this->punkte_gesamt_l1 = $punkte_gesamt; + $this->punkte_eingetragen_l1 = $punkte_eingetragen; + $this->punkte_mitarbeit_l1 = $punkte_mitarbeit; + } else { - $this->studentgesamtnote = "n"; + $this->l1_note = null; + $this->l1_gewicht = 0; $this->negativ = $negativ; $this->fehlt = $fehlt; + $this->punkte_gesamt_l1 = null; + $this->punkte_eingetragen_l1 = null; + $this->punkte_mitarbeit_l1 = null; } } - } + } + + // ********************************************************* - // * berechnet die gesamtnote der übung - // * @param uebung_id, student_uid + // * berechnet die note der übung + // * @param uebung_id, student_uid + // * setzt this->note, this->gewicht // ********************************************************* function calc_note($uebung_id, $student_uid) { @@ -156,8 +253,42 @@ class studentnote $mitarbeit = 0; $ueb = new uebung($this->conn); $ueb->load($uebung_id); - if ($ueb->beispiele) - { + + if($ueb->load_studentuebung($student_uid, $uebung_id)) + { + $this->note = $ueb->note; + $this->gewicht = $ueb->gewicht; + return true; + } + else + { + $this->note = null; + $this->gewicht = 0; + return true; + } + } + } + + + // ********************************************************* + // * berechnet die punkte der übung (kreuzerlliste) + // * @param uebung_id, student_uid + // * setzt this->punkte_gesamt + // ********************************************************* + function calc_punkte($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); //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; @@ -171,35 +302,12 @@ class studentnote $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; + $this->punkte_gesamt = $punkte_gesamt; + $this->punkte_eingetragen = $punkte_eingetragen; + $this->punkte_mitarbeit = $mitarbeit; return true; - } - else - { - if($ueb->load_studentuebung($student_uid, $uebung_id)) - { - $this->note = $ueb->note; - $this->gewicht = $ueb->gewicht; - return true; - } - else - { - $this->note = null; - return true; - } - } - - } + } } - - + } ?> diff --git a/include/uebung.class.php b/include/uebung.class.php index ac2824b35..b2041d3ae 100644 --- a/include/uebung.class.php +++ b/include/uebung.class.php @@ -57,7 +57,13 @@ class uebung var $note; // smalint var $mitarbeitspunkte; // smalint var $anmerkung; // text - var $benotungsdatum; // timestamp + var $benotungsdatum; // timestamp + + //Abgabe + var $abgabe_abgabe_id; // integer + var $abgabedatei; // varchar(64) + var $abgabezeit; // timestamp + var $abgabe_anmerkung; // text // ************************************************************************* // * Konstruktor - Uebergibt die Connection und laedt optional eine Uebung @@ -173,6 +179,33 @@ class uebung return false; } } + + function load_abgabe($abgabe_id) + { + $qry = "SELECT * FROM campus.tbl_abgabe WHERE abgabe_id = '$abgabe_id'"; + + if($result = pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + $this->abgabe_id = $row->abgabe_id; + $this->abgabedatei = $row->abgabedatei; + $this->abgabezeit = $row->abgabezeit; + $this->anmerkung = $row->anmerkung; + return true; + } + else + { + $this->errormsg = 'Es gibt keinen passenden Eintrag'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden des Eintrages'; + return false; + } + } function check_studentuebung($uebung_id) { @@ -186,9 +219,9 @@ class uebung return false; } else - return false; - + return false; } + function load_uebung($lehreinheit_id, $level=null, $uebung_id=null) { @@ -457,6 +490,67 @@ class uebung return false; } } + +function abgabe_save($new=null) + { + if(is_null($new)) + $new = $this->new; + + + if($new) + { + $qry = 'INSERT INTO campus.tbl_abgabe(abgabedatei, abgabezeit, anmerkung) VALUES('. + $this->addslashes($this->abgabedatei).','. + $this->addslashes($this->abgabezeit).','. + $this->addslashes($this->abgabe_anmerkung).');'; + } + else + { + $qry = 'UPDATE campus.tbl_abgabe SET'. + ' abgabe_id='.$this->addslashes($this->abgabe_id).','. + ' abgabedatei='.$this->addslashes($this->abgabedatei).','. + ' abgabezeit='.$this->addslashes($this->abgabezeit).','. + ' anmerkung='.$this->addslashes($this->abgabe_anmerkung). + " WHERE abgabe_id=".$this->addslashes($this->abgabe_id).";"; + } + + if(pg_query($this->conn,$qry)) + { + if($new) + { + $qry = "SELECT currval('campus.tbl_abgabe_abgabe_id_seq') as id;"; + if($result = pg_query($this->conn, $qry)) + { + if($row=pg_fetch_object($result)) + { + $this->abgabe_id = $row->id; + pg_query($this->conn, 'COMMIT'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + pg_query($this->conn,'ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + pg_query($this->conn,'ROLLBACK'); + return false; + } + } + else + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der StudentUebung'; + return false; + } + } + // ************************************************************ // * Loescht eine Uebung plus die abhaengigen eintraege in den @@ -521,5 +615,43 @@ class uebung } + + // ************************************************************ + // * Loescht eine Uebung plus die abhaengigen eintraege in den + // * Tabellen studentuebung, studentbeispiel, und beispiel + // ************************************************************ + function delete_abgabe($abgabe_id) + { + if(!is_numeric($abgabe_id)) + { + $this->errormsg = 'abgabe_id ist ungueltig'; + return false; + } + + // subübungen wegräumen + $qry = "SELECT * FROM campus.tbl_abgabe WHERE abgabe_id = '".$abgabe_id."'"; + if($result=pg_query($this->conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + + + if(file_exists(BENOTUNGSTOOL_PATH."abgabe/".$row->abgabedatei)) + unlink(BENOTUNGSTOOL_PATH."abgabe/".$row->abgabedatei); + $qry = "UPDATE campus.tbl_studentuebung set abgabe_id = null where abgabe_id = '$abgabe_id'; + DELETE FROM campus.tbl_abgabe WHERE abgabe_id = '$abgabe_id'"; + + if(!pg_query($qry)) + { + $this->errormsg = 'Fehler beim Loeschen der Daten'; + return false; + } + else + return true; + } + } + + } + } ?> \ No newline at end of file