From d8241c5e68049ceb702df4b56df8f85bd2e2bd14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 21 Oct 2008 15:31:01 +0000 Subject: [PATCH] Gesamtnote kann jetzt Noten aus Moodle importieren --- .../benotungstool/lvgesamtnoteverwalten.php | 107 +++++++++++++----- include/moodle_course.class.php | 36 +++--- 2 files changed, 103 insertions(+), 40 deletions(-) diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index 0d1395843..a31358a91 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -38,6 +38,7 @@ require_once('../../../../include/pruefung.class.php'); require_once('../../../../include/person.class.php'); require_once('../../../../include/benutzer.class.php'); require_once('../../../../include/mitarbeiter.class.php'); +require_once('../../../../include/moodle_course.class.php'); ?> @@ -316,6 +317,9 @@ function getTopOffset(){ if(!$conn = pg_pconnect(CONN_STRING)) die('Fehler beim oeffnen der Datenbankverbindung'); +if(!$conn_moodle = pg_pconnect(CONN_STRING_MOODLE)) + die('Fehler beim oeffnen der Datenbankverbindung'); + $user = get_uid(); if(!check_lektor($user, $conn)) @@ -353,6 +357,25 @@ $datum_obj = new datum(); $uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:''); $uid = (isset($_GET['uid'])?$_GET['uid']:''); +$qry = "SELECT + * + FROM + lehre.tbl_lehrveranstaltung + JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) + JOIN campus.tbl_uebung USING(lehreinheit_id) + WHERE + studiensemester_kurzbz='".addslashes($stsem)."' AND + lehrveranstaltung_id='".addslashes($lvid)."'"; +if($result = pg_query($conn, $qry)) +{ + if(pg_num_rows($result)>0) + $grade_from_moodle=false; + else + $grade_from_moodle=true; +} +else + die('Fehler'); + //Kopfzeile echo ''; echo ' '; @@ -630,9 +653,6 @@ if ($pr_all->getPruefungenLV($lvid,"Termin2",$stsem)) } - - - //Studentenliste echo "
@@ -652,7 +672,7 @@ echo " - + "; + echo ""; if ($note_lv == 5) $negmarkier = " style='color:red; font-weight:bold;'"; diff --git a/include/moodle_course.class.php b/include/moodle_course.class.php index dc3bceca7..07cded8bb 100644 --- a/include/moodle_course.class.php +++ b/include/moodle_course.class.php @@ -1014,23 +1014,17 @@ class moodle_course // und der lehrveranstaltung_id aus FAS ( bsp 23802 ) // -------------------------------------------------------------------- $qry = " - select lehreinheit_id, mdl_course_id,studiensemester_kurzbz,lehrveranstaltung_id - from ( SELECT tbl_lehreinheit.lehreinheit_id, mdl_course_id,studiensemester_kurzbz,tbl_moodle.lehrveranstaltung_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz) WHERE tbl_moodle.lehrveranstaltung_id like E'".addslashes($lehrveranstaltung_id)."' AND tbl_moodle.studiensemester_kurzbz like E'".addslashes($studiensemester_kurzbz)."' - UNION SELECT tbl_lehreinheit.lehreinheit_id, mdl_course_id,tbl_lehreinheit.studiensemester_kurzbz,tbl_moodle.lehrveranstaltung_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) WHERE tbl_lehreinheit.lehrveranstaltung_id like E'".addslashes($lehrveranstaltung_id)."' AND tbl_lehreinheit.studiensemester_kurzbz like E'".addslashes($studiensemester_kurzbz)."' - ) as foo - WHERE lehrveranstaltung_id like E'".addslashes($lehrveranstaltung_id)."' - AND studiensemester_kurzbz like E'".addslashes($studiensemester_kurzbz)."' ;"; if(!$result = @pg_query($this->conn, $qry)) @@ -1041,16 +1035,20 @@ class moodle_course // init $lehreinheit_kpl = array(); // Gesamte Information der Lehreinheit und Moodle IDs $lehreinheit=array(); // Lehreinheiten zum lesen Studenten im Campus (Student und LE im FAS) - while($row = @pg_fetch_object($result)) + //echo $qry; + while($row = pg_fetch_object($result)) { $row->lehreinheit_id=trim($row->lehreinheit_id); $lehreinheit[$row->lehreinheit_id]=$row->lehreinheit_id; // Fuer Select Campus $lehreinheit_kpl[$row->lehreinheit_id]=$row; // Fuer GesamtDaten wird Ergaenzt von Campus, } - @pg_free_result($result); + @pg_free_result($result); if (count($lehreinheit)<1) // Es gibt keine Lehreinheiten + { + $this->errormsg='Es wurde kein passender Moodle-Kurs gefunden'; return false; - + } + // Fuer die naechste Verarbeitung die Array Sortieren asort($lehreinheit); reset($lehreinheit); @@ -1103,7 +1101,7 @@ class moodle_course // -------------------------------------------------------------------- // Moodle Noten - Uebersetztungstabellen einlesen (min. ein Record ) // -------------------------------------------------------------------- - $qry = "select * from mdl_grade_letters order by contextid; "; + $qry = "select * from mdl_grade_letters order by contextid, lowerboundary desc; "; if(!$result = @pg_query($this->conn_moodle, $qry)) { $this->errormsg = 'Fehler beim Lesen der Noten '; @@ -1195,9 +1193,12 @@ class moodle_course $mdl_grade_letters_first=1; // Es muss einen Default geben (Administrator Noten) if (isset($mdl_grade_letters[$mdl_grade_letters_first])) $arrTmpDefaultNoten=$mdl_grade_letters[$mdl_grade_letters_first]; - elseif (isset($mdl_grade_letters[$mdl_course_id])) + + if($this->getContext(50, $mdl_course_id)) + $mdl_grade_letters_first = $this->mdl_context_id; + + if (isset($mdl_grade_letters[$mdl_grade_letters_first])) { - $mdl_grade_letters_first=$mdl_course_id; $arrTmpDefaultNoten=$mdl_grade_letters[$mdl_grade_letters_first]; } if (!is_array($arrTmpDefaultNoten) || count($arrTmpDefaultNoten)<1) @@ -1214,10 +1215,19 @@ class moodle_course // Vergleichsoperatoren fuer Noten $iTmpVergl=$arrTmpDefaultNoten[$iTmpIndex]->lowerboundary; $iTmpFaktor=(!empty($row->rawgrademax)?(int)(100/$row->rawgrademax):1); + //echo "
::$iTmpIndex $mdl_finalgrade>=( $iTmpVergl / $iTmpFaktor)::
"; if ($mdl_finalgrade>=( $iTmpVergl / $iTmpFaktor) ) { if (is_numeric($arrTmpDefaultNoten[$iTmpIndex]->letter)) + { $row->note=($iTmpIndex + 1); + if($row->note>5 || $row->note<1) + { + echo "FOOOO"; + $this->errormsg = 'Unbekannter Notenschluessel'; + return false; + } + } else { if ( substr($arrTmpDefaultNoten[$iTmpIndex]->letter,0,1)=="A") @@ -1281,7 +1291,7 @@ class moodle_course if (!is_array($mdl_course) || count($mdl_course)<1) { $this->errormsg = ' keine Informationen gefunden'. count($mdl_course) ; - return false; + return true; } if($bDetailinfo) // Alle Informationen Retour
UID Nachname VornameLE-Noten (LE-ID)".($grade_from_moodle?'Moodle-Note':'LE-Noten (LE-ID)')." LV-Note @@ -698,6 +718,7 @@ echo " if($result_stud = pg_query($conn, $qry_stud)) { $i=1; + $errorshown=false; while($row_stud = pg_fetch_object($result_stud)) { @@ -741,28 +762,60 @@ echo " $note_les_str = ''; $le_anz = 0; $note_le = 0; - $le = new lehreinheit($conn); - $le->load_lehreinheiten($lvid, $stsem); - foreach($le->lehreinheiten as $l) - { - $legesamtnote = new legesamtnote($conn, $l->lehreinheit_id); - - if (!$legesamtnote->load($row_stud->uid,$l->lehreinheit_id)) - { - //$note_les_str .= "- (".$l->lehreinheit_id.")"; - } - else - { - $note_le += $legesamtnote->note; - $le_anz += 1; - if ($legesamtnote->note == 5) - $leneg = " style='color:red; font-weight:bold'"; - else - $leneg = ""; - $note_les_str .= "".$legesamtnote->note." (".$l->lehreinheit_id.") "; - } - } - + if($grade_from_moodle) + { + //Noten aus Moodle + $moodle_course = new moodle_course($conn, $conn_moodle); + $mdldata = $moodle_course->loadNoten($lvid, $stsem, $row_stud->uid, true); + + if(is_array($mdldata)) + { + foreach ($mdldata as $elem) + { + $note_le += $elem[0]->note; + $le_anz += 1; + if ($elem[0]->note == 5) + $leneg = " style='color:red; font-weight:bold'"; + else + $leneg = " style='font-weight:bold'"; + $note_les_str .= "".$elem[0]->note." (".$elem[0]->shortname.") "; + } + } + elseif(!$mdldata) + { + //den Error nur einmal anzeigen und nicht für jeden Studenten + if(!$errorshown) + { + echo '
'.$moodle_course->errormsg.'
'; + $errorshown=true; + } + } + } + else + { + //Noten aus Uebungstool + $le = new lehreinheit($conn); + $le->load_lehreinheiten($lvid, $stsem); + foreach($le->lehreinheiten as $l) + { + $legesamtnote = new legesamtnote($conn, $l->lehreinheit_id); + + if (!$legesamtnote->load($row_stud->uid,$l->lehreinheit_id)) + { + //$note_les_str .= "- (".$l->lehreinheit_id.")"; + } + else + { + $note_le += $legesamtnote->note; + $le_anz += 1; + if ($legesamtnote->note == 5) + $leneg = " style='color:red; font-weight:bold'"; + else + $leneg = ""; + $note_les_str .= "".$legesamtnote->note." (".$l->lehreinheit_id.") "; + } + } + } if ($lvgesamtnote = new lvgesamtnote($conn, $lvid,$row_stud->uid,$stsem)) { $note_lv = $lvgesamtnote->note; @@ -787,7 +840,7 @@ echo " $hide = "style='visibility:hidden;'"; else $hide = "style='visibility:visible;'"; - echo "