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 '
| UID | Nachname | Vorname | -LE-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 ""; + 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 |