Anpassungen Moodle2.4

This commit is contained in:
Andreas Österreicher
2013-03-15 11:34:57 +00:00
parent c1bbd7e2f1
commit f21e21ae9b
22 changed files with 5177 additions and 188 deletions
@@ -38,7 +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');
require_once('../../../../include/moodle19_course.class.php');
require_once('../../../../include/mail.class.php');
require_once('../../../../include/phrasen.class.php');
@@ -839,7 +839,7 @@ echo '<table>';
{
//Noten aus Moodle
if (!isset($moodle_course))
$moodle_course = new moodle_course();
$moodle_course = new moodle19_course();
if (!$mdldaten = $moodle_course->loadNoten($lvid, $stsem, '', true,$debg))
$mdldaten='';
+1 -1
View File
@@ -26,7 +26,7 @@ require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/studiensemester.class.php');
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/moodle_course.class.php');
require_once('../../../include/moodle.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/lehre_tools.class.php');
+44 -26
View File
@@ -25,14 +25,15 @@ require_once('../../../config/cis.config.inc.php');
require_once('../../../include/basis_db.class.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/moodle2_4_course.class.php');
require_once('../../../include/moodle2_4_user.class.php');
require_once('../../../include/moodle24_course.class.php');
require_once('../../../include/moodle24_user.class.php');
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/lehreinheit.class.php');
require_once('../../../include/lehreinheitgruppe.class.php');
require_once('../../../include/lehreinheitmitarbeiter.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/moodle.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
@@ -94,10 +95,16 @@ function togglediv()
</head>
<body onload="togglediv()">
<h1>'.$db->convert_html_chars($lv->bezeichnung).'&nbsp;('.$db->convert_html_chars($stsem).')</h1>
<br />
<table>
<span style="color: red; font-weight: bold">
MOODLE 2.4 - TESTBETRIEB<br>
Alle Einstellungen auf dieser Seite betreffen Moodle 2.4<br>
Zur Verwaltung der aktuellen Moodlekurse verwenden Sie <a href="moodle_wartung.php?lvid='.$lvid.'&stsem='.$stsem.'">diese Seite</a>
</span>
<br><br>
<hr>
<table width="100%">
<tr>
<td>';
<td valign="top">';
if(isset($_POST['neu']))
{
@@ -121,7 +128,7 @@ if(isset($_POST['neu']))
//Gesamte LV zu einem Moodle Kurs zusammenlegen
if($art=='lv')
{
$mdl_course = new moodle_course();
$mdl_course = new moodle24_course();
$mdl_course->lehrveranstaltung_id = $lvid;
$mdl_course->studiensemester_kurzbz = $stsem;
@@ -137,12 +144,12 @@ if(isset($_POST['neu']))
//Eintrag in der Vilesci DB
$mdl_course->create_vilesci();
$mdl_user = new moodle_user();
$mdl_user = new moodle24_user();
//Lektoren Synchronisieren
if(!$mdl_user->sync_lektoren($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
$mdl_user = new moodle_user();
$mdl_user = new moodle24_user();
//Studenten Synchronisieren
if(!$mdl_user->sync_studenten($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
@@ -167,7 +174,7 @@ if(isset($_POST['neu']))
if(count($lehreinheiten)>0)
{
$mdl_course = new moodle_course();
$mdl_course = new moodle24_course();
$mdl_course->mdl_fullname = $_POST['bezeichnung'];
$mdl_course->mdl_shortname = $shortname;
@@ -188,12 +195,12 @@ if(isset($_POST['neu']))
echo '<br>'.$p->t('moodle/fehlerBeimAnlegenAufgetreten').':'.$mdl_course->errormsg;
}
$mdl_user = new moodle_user();
$mdl_user = new moodle24_user();
//Lektoren Synchronisieren
if(!$mdl_user->sync_lektoren($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
$mdl_user = new moodle_user();
$mdl_user = new moodle24_user();
//Studenten Synchronisieren
if(!$mdl_user->sync_studenten($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
@@ -213,7 +220,7 @@ if(isset($_POST['changegruppe']))
{
if(isset($_POST['moodle_id']) && is_numeric($_POST['moodle_id']))
{
$mcourse = new moodle_course();
$mcourse = new moodle24_course();
if($mcourse->updateGruppenSync($_POST['moodle_id'], isset($_POST['gruppen'])))
echo '<b>'.$p->t('moodle/datenWurdenAktualisiert').'</b><br>';
else
@@ -228,7 +235,7 @@ if(isset($_POST['changegruppe']))
//Anlegen eines Testkurses
if(isset($_GET['action']) && $_GET['action']=='createtestkurs')
{
$mdl_course = new moodle_course();
$mdl_course = new moodle24_course();
if(!$mdl_course->loadTestkurs($lvid, $stsem))
{
$lehrveranstaltung = new lehrveranstaltung();
@@ -252,7 +259,7 @@ if(isset($_GET['action']) && $_GET['action']=='createtestkurs')
$id=$mdl_course->mdl_course_id;
$errormsg='';
$mdl_user = new moodle_user();
$mdl_user = new moodle24_user();
//Lektoren zuweisen
if(!$mdl_user->sync_lektoren($id, $lvid, $stsem))
$errormsg.=$p->t('moodle/fehlerBeiDerLektorenZuordnung').':'.$mdl_user->errormsg.'<br>';
@@ -272,8 +279,8 @@ if(isset($_GET['action']) && $_GET['action']=='createtestkurs')
}
}
$mdl_course = new moodle_course();
if($mdl_course->course_exists_for_lv($lvid, $stsem) || $mdl_course->course_exists_for_allLE($lvid, $stsem))
$moodle = new moodle();
if($moodle->course_exists_for_lv($lvid, $stsem) || $moodle->course_exists_for_allLE($lvid, $stsem))
{
echo $p->t('moodle/esIstBereitsEinMoodleKursVorhanden');
}
@@ -330,7 +337,7 @@ else
$lektoren.= ' '.$ma->mitarbeiter_uid;
}
if($mdl_course->course_exists_for_le($row->lehreinheit_id))
if($moodle->course_exists_for_le($row->lehreinheit_id))
$disabled='disabled';
else
$disabled='';
@@ -354,24 +361,35 @@ echo '</td>';
echo '<td valign="top">';
echo '<b>'.$p->t('moodle/vorhandeneMoodleKurse').'</b>';
if(!$mdl_course->getAll($lvid, $stsem))
echo $mdl_course->errormsg;
if(!$moodle->getAll($lvid, $stsem))
echo $moodle->errormsg;
echo '<table>';
foreach ($mdl_course->result as $course)
foreach ($moodle->result as $course)
{
echo '<tr>';
echo '<td><a href="'.MOODLE_PATH24.'course/view.php?id='.$course->mdl_course_id.'" class="Item" target="_blank">'.$course->mdl_fullname.'</a></td>';
echo "<td nowrap><form action='".$_SERVER['PHP_SELF']."?lvid=$lvid&stsem=$stsem' method='POST' style='margin:0px'><input type='hidden' name='moodle_id' value='$course->moodle_id'><input type='checkbox' name='gruppen' ".($course->gruppen?'checked':'').">Gruppen übernehmen <input type='submit' value='".$p->t('global/ok')."' name='changegruppe'></form></td>";
switch($course->moodle_version)
{
case '2.4':
$mdlcourse = new moodle24_course();
$mdlcourse->load($course->mdl_course_id);
echo '<tr>';
echo '<td><a href="'.$moodle->getPfad($course->moodle_version).'course/view.php?id='.$course->mdl_course_id.'" class="Item" target="_blank">'.$mdlcourse->mdl_fullname.'</a></td>';
echo "<td nowrap><form action='".$_SERVER['PHP_SELF']."?lvid=$lvid&stsem=$stsem' method='POST' style='margin:0px'><input type='hidden' name='moodle_id' value='$course->moodle_id'><input type='checkbox' name='gruppen' ".($course->gruppen?'checked':'').">Gruppen übernehmen <input type='submit' value='".$p->t('global/ok')."' name='changegruppe'></form></td>";
break;
default:
echo '<tr><td>Moodle v'.$course->moodle_version.' - '.$course->mdl_course_id.'</td></tr>';
break;
}
}
echo '</table>';
echo '</td></tr></table>';
echo '<br><br><br>';
echo '<b>'.$p->t('moodle/testkurse').'</b><br><br>';
$mdlcourse = new moodle_course();
echo '<b>'.$p->t('moodle/testkurse24').'</b><br><br>';
$mdlcourse = new moodle24_course();
if($mdlcourse->loadTestkurs($lvid, $stsem))
{
echo '<a href="'.MOODLE_PATH24.'course/view.php?id='.$mdlcourse->mdl_course_id.'" class="Item" target="_blank">'.$db->convert_html_chars($mdlcourse->mdl_fullname).'</a>';
echo '<a href="'.$moodle->getPfad('2.4').'course/view.php?id='.$mdlcourse->mdl_course_id.'" class="Item" target="_blank">'.$db->convert_html_chars($mdlcourse->mdl_fullname).'</a>';
}
else
{
+38 -34
View File
@@ -21,19 +21,20 @@
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
require_once('../../../config/cis.config.inc.php');
// ------------------------------------------------------------------------------------------
// Datenbankanbindung
// ------------------------------------------------------------------------------------------
require_once('../../../include/basis_db.class.php');
if (!$db = new basis_db())
die('Fehler beim Herstellen der Datenbankverbindung');
require_once('../../../include/basis_db.class.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/moodle_course.class.php');
require_once('../../../include/moodle_user.class.php');
require_once('../../../include/moodle.class.php');
require_once('../../../include/moodle19_course.class.php');
require_once('../../../include/moodle24_course.class.php');
require_once('../../../include/phrasen.class.php');
if (!$db = new basis_db())
die('Fehler beim Herstellen der Datenbankverbindung');
$user = get_uid();
$p = new phrasen(getSprache());
if(isset($_GET['lvid']))
$lvid=$_GET['lvid'];
else
@@ -51,37 +52,40 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body>
<table class="tabcontent" height="100%" id="inhalt">
<tr>
<td class="tdwidth10">&nbsp;</td>
<td class="ContentHeader"><font class="ContentHeader">MOODLE Kurse</font></td>
</tr>
<tr>
<td class="tdvertical">&nbsp;</td>
<td></td>
</tr>
<tr>
<td class="tdvertical">&nbsp;</td>
<td class="tdvertical">
<table width="100%">
<tr>
<td>';
<h1>'.$p->t('moodle/kursUebersicht').'</h1>
$mdlcourse = new moodle_course();
$mdlcourse->getAll($lvid, $stsem);
<table width="100%">
<tr>
<td>';
foreach ($mdlcourse->result as $row)
$moodle = new moodle();
$moodle->getAll($lvid, $stsem);
foreach ($moodle->result as $row)
{
echo "<a href='".MOODLE_PATH."course/view.php?id=".$row->mdl_course_id."' class='Item'>$row->mdl_fullname</a><br>";
switch($row->moodle_version)
{
case '1.9':
$mdlcourse19=new moodle19_course();
$mdlcourse19->load($row->mdl_course_id);
echo "<a href='".$moodle->getPfad($row->moodle_version)."course/view.php?id=".$row->mdl_course_id."' class='Item'>$mdlcourse19->mdl_fullname</a><br>";
break;
case '2.4':
$mdlcourse24=new moodle24_course();
$mdlcourse24->load($row->mdl_course_id);
echo "<a href='".$moodle->getPfad($row->moodle_version)."course/view.php?id=".$row->mdl_course_id."' class='Item'>$mdlcourse24->mdl_fullname</a><br>";
break;
default:
echo $p->t('moodle/ungueltigeVersion',array($row->moodle_version)).'<br>';
break;
}
}
echo ' </td>
</tr>
</table>
</td>
echo ' </td>
</tr>
</table>
</body>
</html>';
?>
?>
+117 -47
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2008 Technikum-Wien
/* Copyright (C) 2013 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -21,21 +21,23 @@
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
/*
* Erstellt eine Liste mit den Noten des eingeloggten Studenten
* das betreffende Studiensemester kann ausgewaehlt werden
* Verwaltungsseite zum Anlegen von Moodle Kursen
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/basis_db.class.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/moodle_course.class.php');
require_once('../../../include/moodle_user.class.php');
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/lehreinheit.class.php');
require_once('../../../include/lehreinheitgruppe.class.php');
require_once('../../../include/lehreinheitmitarbeiter.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/moodle.class.php');
require_once('../../../include/moodle19_course.class.php');
require_once('../../../include/moodle19_user.class.php');
require_once('../../../include/moodle24_course.class.php');
require_once('../../../include/moodle24_user.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
@@ -102,22 +104,11 @@ function togglediv()
</script>
</head>
<body onload="togglediv()">
<table class="tabcontent" height="100%" id="inhalt">
<h1>'.$lv->bezeichnung.'&nbsp;('.$stsem.')</h1>
<table width="100%" >
<tr>
<td class="tdwidth10">&nbsp;</td>
<td class="ContentHeader"><font class="ContentHeader">'.$lv->bezeichnung.'&nbsp;('.$stsem.')</font></td>
</tr>
<tr>
<td class="tdvertical">&nbsp;</td>
<td></td>
</tr>
<tr>
<td class="tdvertical">&nbsp;</td>
<td class="tdvertical">
<table width="100%">
<tr>
<td>';
<td valign="top">';
if(isset($_POST['neu']))
{
if($_POST['bezeichnung']=='')
@@ -140,7 +131,7 @@ if(isset($_POST['neu']))
//Gesamte LV zu einem Moodle Kurs zusammenlegen
if($art=='lv')
{
$mdl_course = new moodle_course();
$mdl_course = new moodle19_course();
$mdl_course->lehrveranstaltung_id = $lvid;
$mdl_course->studiensemester_kurzbz = $stsem;
@@ -156,12 +147,12 @@ if(isset($_POST['neu']))
//Eintrag in der Vilesci DB
$mdl_course->create_vilesci();
$mdl_user = new moodle_user();
$mdl_user = new moodle19_user();
//Lektoren Synchronisieren
if(!$mdl_user->sync_lektoren($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
$mdl_user = new moodle_user();
$mdl_user = new moodle19_user();
//Studenten Synchronisieren
if(!$mdl_user->sync_studenten($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
@@ -186,7 +177,7 @@ if(isset($_POST['neu']))
if(count($lehreinheiten)>0)
{
$mdl_course = new moodle_course();
$mdl_course = new moodle19_course();
$mdl_course->mdl_fullname = $_POST['bezeichnung'];
$mdl_course->mdl_shortname = $shortname;
@@ -194,7 +185,8 @@ if(isset($_POST['neu']))
$mdl_course->insertamum = date('Y-m-d H:i:s');
$mdl_course->insertvon = $user;
$mdl_course->lehreinheit_id=$lehreinheiten[0];
$mdl_course->gruppen = isset($_POST['gruppen']);
//Kurs im Moodle anlegen
if($mdl_course->create_moodle())
{
@@ -206,12 +198,12 @@ if(isset($_POST['neu']))
echo '<br>'.$p->t('moodle/fehlerBeimAnlegenAufgetreten').':'.$mdl_course->errormsg;
}
$mdl_user = new moodle_user();
$mdl_user = new moodle19_user();
//Lektoren Synchronisieren
if(!$mdl_user->sync_lektoren($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
$mdl_user = new moodle_user();
$mdl_user = new moodle19_user();
//Studenten Synchronisieren
if(!$mdl_user->sync_studenten($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
@@ -231,7 +223,7 @@ if(isset($_POST['changegruppe']))
{
if(isset($_POST['moodle_id']) && is_numeric($_POST['moodle_id']))
{
$mcourse = new moodle_course();
$mcourse = new moodle19_course();
if($mcourse->updateGruppenSync($_POST['moodle_id'], isset($_POST['gruppen'])))
echo '<b>'.$p->t('moodle/datenWurdenAktualisiert').'</b><br>';
else
@@ -246,7 +238,7 @@ if(isset($_POST['changegruppe']))
//Anlegen eines Testkurses
if(isset($_GET['action']) && $_GET['action']=='createtestkurs')
{
$mdl_course = new moodle_course();
$mdl_course = new moodle19_course();
if(!$mdl_course->loadTestkurs($lvid, $stsem))
{
$lehrveranstaltung = new lehrveranstaltung();
@@ -270,7 +262,7 @@ if(isset($_GET['action']) && $_GET['action']=='createtestkurs')
$id=$mdl_course->mdl_course_id;
$errormsg='';
$mdl_user = new moodle_user();
$mdl_user = new moodle19_user();
//Lektoren zuweisen
if(!$mdl_user->sync_lektoren($id, $lvid, $stsem))
$errormsg.=$p->t('moodle/fehlerBeiDerLektorenZuordnung').':'.$mdl_user->errormsg.'<br>';
@@ -290,8 +282,57 @@ if(isset($_GET['action']) && $_GET['action']=='createtestkurs')
}
}
$mdl_course = new moodle_course();
if($mdl_course->course_exists_for_lv($lvid, $stsem) || $mdl_course->course_exists_for_allLE($lvid, $stsem))
//Anlegen eines Testkurses fuer Moodle 24
if(isset($_GET['action']) && $_GET['action']=='createtestkurs24')
{
$mdl_course24 = new moodle24_course();
if(!$mdl_course24->loadTestkurs($lvid, $stsem))
{
$lehrveranstaltung = new lehrveranstaltung();
$lehrveranstaltung->load($lvid);
$studiengang = new studiengang();
$studiengang->load($lehrveranstaltung->studiengang_kz);
//$orgform = ($lehrveranstaltung->orgform_kurzbz!=''?$lehrveranstaltung->orgform_kurzbz:$studiengang->orgform_kurzbz);
//Kurzbezeichnung generieren Format: STSEM-STG-SEM-LV/LEID/LEID/LEID...
$shortname = 'TK-'.$stsem.'-'.$studiengang->kuerzel.'-'.$lehrveranstaltung->semester.'-'.$lehrveranstaltung->kurzbz;
$mdl_course24->lehrveranstaltung_id = $lvid;
$mdl_course24->studiensemester_kurzbz = $stsem;
$mdl_course24->mdl_fullname = 'Testkurs - '.$lehrveranstaltung->bezeichnung;
$mdl_course24->mdl_shortname = $shortname;
//TestKurs erstellen
if($mdl_course24->createTestkurs($lvid, $stsem))
{
$id=$mdl_course24->mdl_course_id;
$errormsg='';
$mdl_user24 = new moodle24_user();
//Lektoren zuweisen
if(!$mdl_user24->sync_lektoren($id, $lvid, $stsem))
$errormsg.=$p->t('moodle/fehlerBeiDerLektorenZuordnung').':'.$mdl_user24->errormsg.'<br>';
//Teststudenten zuweisen
if(!$mdl_user24->createTestStudentenZuordnung($id))
$errormsg.=$p->t('moodle/fehlerBeiDerStudentenZuordnung').':'.$mdl_user24->errormsg.'<br>';
if($errormsg!='')
echo $errormsg;
else
echo '<b>'.$p->t('moodle/testkursWurdeErfolgreichAngelegt').'</b><br>';
}
}
else
{
echo '<span class="error">'.$p->t('moodle/esExistiertBereitsEinTestkurs').'</span><br>';
}
}
$moodle = new moodle();
// Pruefen ob bereits fuer alle Lehreinheiten oder fuer die gesamte LV ein Moodle Kurs angelegt ist
if($moodle->course_exists_for_lv($lvid, $stsem) || $moodle->course_exists_for_allLE($lvid, $stsem))
{
echo $p->t('moodle/esIstBereitsEinMoodleKursVorhanden');
}
@@ -301,8 +342,8 @@ else
//anlegen fuer die Lehrveranstaltung verhindern
$qry = "SELECT 1 FROM lehre.tbl_moodle
WHERE lehreinheit_id in(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id='".addslashes($lvid)."'
AND studiensemester_kurzbz='".addslashes($stsem)."')";
WHERE lehrveranstaltung_id=".$db->db_add_param($lvid)."
AND studiensemester_kurzbz=".$db->db_add_param($stsem).")";
$disable_lv='';
if($result = $db->db_query($qry))
if($db->db_num_rows($result)>0)
@@ -348,7 +389,7 @@ else
$lektoren.= ' '.$ma->mitarbeiter_uid;
}
if($mdl_course->course_exists_for_le($row->lehreinheit_id))
if($moodle->course_exists_for_le($row->lehreinheit_id))
$disabled='disabled';
else
$disabled='';
@@ -372,32 +413,61 @@ echo '</td>';
echo '<td valign="top">';
echo '<b>'.$p->t('moodle/vorhandeneMoodleKurse').'</b>';
if(!$mdl_course->getAll($lvid, $stsem))
echo $mdl_course->errormsg;
if(!$moodle->getAll($lvid, $stsem))
echo $moodle->errormsg;
echo '<table>';
foreach ($mdl_course->result as $course)
foreach ($moodle->result as $course)
{
echo '<tr>';
echo '<td><a href="'.MOODLE_PATH.'course/view.php?id='.$course->mdl_course_id.'" class="Item" target="_blank">'.$course->mdl_fullname.'</a></td>';
echo "<td nowrap><form action='".$_SERVER['PHP_SELF']."?lvid=$lvid&stsem=$stsem' method='POST' style='margin:0px'><input type='hidden' name='moodle_id' value='$course->moodle_id'><input type='checkbox' name='gruppen' ".($course->gruppen?'checked':'').">Gruppen übernehmen <input type='submit' value='".$p->t('global/ok')."' name='changegruppe'></td>";
switch($course->moodle_version)
{
case '1.9':
$moodlecourse = new moodle19_course();
$moodlecourse->load($course->mdl_course_id);
echo '<tr>';
echo '<td><a href="'.$moodle->getPfad($course->moodle_version).'course/view.php?id='.$course->mdl_course_id.'" class="Item" target="_blank">'.$moodlecourse->mdl_fullname.'</a></td>';
echo "<td nowrap><form action='".$_SERVER['PHP_SELF']."?lvid=$lvid&stsem=$stsem' method='POST' style='margin:0px'><input type='hidden' name='moodle_id' value='$course->moodle_id'><input type='checkbox' name='gruppen' ".($course->gruppen?'checked':'').">Gruppen übernehmen <input type='submit' value='".$p->t('global/ok')."' name='changegruppe'></form></td>";
echo '</tr>';
break;
case '2.4':
$moodlecourse = new moodle24_course();
$moodlecourse->load($course->mdl_course_id);
echo '<tr>';
echo '<td><a href="'.$moodle->getPfad($course->moodle_version).'course/view.php?id='.$course->mdl_course_id.'" class="Item" target="_blank">'.$moodlecourse->mdl_fullname.'</a></td>';
echo '</tr>';
break;
default:
// andere Moodle Version
echo '<tr><td>Unknown Moodle Version - ID '.$course->mdl_course_id.'</td></tr>';
}
}
echo '</table>';
echo '</td></tr></table>';
echo '<br><br><br>';
echo '<b>'.$p->t('moodle/testkurse').'</b><br><br>';
$mdlcourse = new moodle_course();
$mdlcourse = new moodle19_course();
if($mdlcourse->loadTestkurs($lvid, $stsem))
{
echo '<a href="'.MOODLE_PATH.'course/view.php?id='.$mdlcourse->mdl_course_id.'" class="Item" target="_blank">'.$mdlcourse->mdl_fullname.'</a>';
echo '<a href="'.$moodle->getPfad('1.9').'course/view.php?id='.$mdlcourse->mdl_course_id.'" class="Item" target="_blank">'.$mdlcourse->mdl_fullname.'</a>';
}
else
{
echo "<a href='".$_SERVER['PHP_SELF']."?lvid=$lvid&stsem=$stsem&action=createtestkurs' class='Item'>".$p->t('moodle/klickenSieHierUmTestkursErstellen')."</a>";
}
echo '</td>
</tr>
</table>
echo '<br><br><hr><b>'.$p->t('moodle/testkurse24').'</b><br><br>';
$mdlcourse24 = new moodle24_course();
if($mdlcourse24->loadTestkurs($lvid, $stsem))
{
echo '<a href="'.$moodle->getPfad('2.4').'course/view.php?id='.$mdlcourse24->mdl_course_id.'" class="Item" target="_blank">'.$mdlcourse24->mdl_fullname.'</a>';
}
else
{
echo "<a href='".$_SERVER['PHP_SELF']."?lvid=$lvid&stsem=$stsem&action=createtestkurs24' class='Item'>".$p->t('moodle/klickenSieHierUmTestkursErstellen24')."</a>";
}
echo '
</body>
</html>';
?>
?>
+278
View File
@@ -0,0 +1,278 @@
<?php
/* Copyright (C) 2013 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class moodle extends basis_db
{
public $result = array();
public $moodle_id;
public $mdl_course_id;
public $lehreinheit_id;
public $lehrveranstaltung_id;
public $studiensemester_kurzbz;
public $insertamum;
public $insertvon;
public $gruppen;
public $moodle_version;
public $version;
/**
* Konstruktor
*
*/
public function __construct()
{
$this->getVersionen();
return true;
}
/**
* Laedt alle Moodlekurse zu einer LV/Stsem
* plus die Moodlekurse die auf dessen LE haengen
*
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
*
* @return true wenn ok, false im Fehlerfall
*/
public function getAll($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
distinct on(mdl_course_id) *
FROM
lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_moodle
WHERE
tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
AND tbl_lehrveranstaltung.lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
AND ((tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_moodle.lehrveranstaltung_id
AND tbl_moodle.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz)
OR
(tbl_lehreinheit.lehreinheit_id=tbl_moodle.lehreinheit_id))";
if($result=$this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->moodle_id = $row->moodle_id;
$obj->mdl_course_id = $row->mdl_course_id;
$obj->lehreinheit_id = $row->lehreinheit_id;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->gruppen = $this->db_parse_bool($row->gruppen);
$obj->moodle_version = $row->moodle_version;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Schaut ob fuer diese LV/StSem schon ein
* Moodle Kurs existiert
*
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
* @return true wenn vorhanden, false wenn nicht
*/
public function course_exists_for_lv($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
1
FROM
lehre.tbl_moodle
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
}
/**
* Schaut ob fuer diese LE schon ein Moodle
* Kurs existiert
* @param lehreinheit_id
* @return true wenn vorhanden, false wenn nicht
*/
public function course_exists_for_le($lehreinheit_id)
{
$qry = "SELECT 1 FROM lehre.tbl_moodle WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler bei Datenbankabfrage';
return false;
}
}
/**
* Prueft ob fuer alle Lehreinheiten dieser LV bereits ein Moodlekurs existiert
*
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
* @return true wenn vorhanden, false wenn nicht
*/
public function course_exists_for_allLE($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT 1 FROM lehre.tbl_lehreinheit
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
AND lehreinheit_id NOT IN (
SELECT lehreinheit_id FROM lehre.tbl_moodle
WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)";
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return false;
else
return true;
}
else
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
}
/**
* Laedt die Moodle Versionsinformationen
*/
public function getVersionen()
{
$qry = "SELECT * FROM lehre.tbl_moodle_version";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$this->version[$row->moodle_version]['bezeichnung']=$row->bezeichnung;
$this->version[$row->moodle_version]['pfad']=$row->pfad;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Versionsdaten';
return false;
}
}
/**
* Liefert den Pfad zur Moodle Installation
* @param version Versionsnummer
* @return pfad (URL) zur Moodle Installation
*/
public function getPfad($version)
{
if(isset($this->version[$version]['pfad']))
return $this->version[$version]['pfad'];
}
/**
* Liefert alle Kurse dieser LV zu denen der Student
* zugeteilt ist
*
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
* @param student_uid
* @return array mit Moodle Kurs IDs
*/
public function getCourse($lehrveranstaltung_id, $studiensemester_kurzbz, $student_uid)
{
//alle betreffenden Kurse holen
$qry = "SELECT
tbl_lehreinheit.lehreinheit_id, mdl_course_id, tbl_moodle.moodle_version
FROM
lehre.tbl_moodle
JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz)
WHERE
tbl_moodle.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_moodle.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
UNION
SELECT
tbl_lehreinheit.lehreinheit_id, mdl_course_id, tbl_moodle.moodle_version
FROM
lehre.tbl_moodle
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE
tbl_lehreinheit.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$courses = array();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
//schauen in welchen Kursen der Student ist
$qry = "SELECT 1 FROM campus.vw_student_lehrveranstaltung
WHERE
uid=".$this->db_add_param($student_uid)."
AND lehreinheit_id=".$this->db_add_param($row->lehreinheit_id, FHC_INTEGER);
if($result_vw = $this->db_query($qry))
{
if($this->db_num_rows($result_vw)>0)
{
if(!array_key_exists($row->mdl_course_id, $courses))
{
$obj = new stdClass();
$obj->mdl_course_id = $row->mdl_course_id;
$obj->moodle_version = $row->moodle_version;
$this->result[] = $obj;
}
}
}
}
}
return true;
}
}
File diff suppressed because it is too large Load Diff
+788
View File
@@ -0,0 +1,788 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/*
* requires moodle_course.class.php
* studiengang.class.php
*
* Klasse zur Kommunikation mit Moodle 1.9
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class moodle19_user extends basis_db
{
private $conn_moodle;
public $log=''; //log message fuer Syncro
public $log_public=''; //log message fuer Syncro
public $sync_create=0; //anzahl der durchgefuehrten zuteilungen beim syncro
public $group_update=0; //anzahl der updates an gruppen
public $mdl_user_id;
public $mdl_user_username;
public $mdl_user_firstname;
public $mdl_user_lastname;
/**
* Konstruktor
*/
public function __construct()
{
if(!$this->conn_moodle=pg_pconnect(CONN_STRING_MOODLE))
{
$this->errormsg = 'Fehler beim Herstellen der Moodle Verbindung';
return false;
}
else
return true;
}
/**
* Laedt einen Moodle User
*
* @param $uid
* @return boolean
*/
public function loaduser($uid)
{
$qry = "SELECT * FROM public.mdl_user WHERE username='".addslashes($uid)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
$this->mdl_user_id = $row->id;
$this->mdl_user_username = $row->username;
$this->mdl_user_firstname = $row->firstname;
$this->mdl_user_lastname = $row->lastname;
return true;
}
else
{
$this->errormsg = 'User wurde nicht gefunden: '.$uid;
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
/**
* Liefert ein Array mit allen Lektoren die
* zu dem Moodle Kurs zugeteilt sind
*/
public function getMitarbeiter($mdl_course_id)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
moodle_version='1.9'
AND mdl_course_id='".addslashes($mdl_course_id)."'
UNION
SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
moodle_version='1.9'
AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id='".addslashes($mdl_course_id)."'";
$mitarbeiter=array();
if($this->db_query($qry))
{
while($row_ma = $this->db_fetch_object())
{
$mitarbeiter[] = $row_ma->mitarbeiter_uid;
}
return $mitarbeiter;
}
else
{
$this->errormsg='Fehler beim Laden der Mitarbeiter';
return false;
}
}
/**
* Synchronisiert die Lektoren der Lehreinheiten
* mit denen des Moodle Kurses
* @param $mdl_course_id ID des MoodleKurses
* lehrveranstaltung_id wird nur angegeben beim Syncro von Testkursen
* studiensemester_kurzbz wird nur angegeben beim Syncro von Testkursen
* @return true wenn ok, false wenn Fehler
*/
public function sync_lektoren($mdl_course_id, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
if(!is_null($lehrveranstaltung_id) && !is_null($studiensemester_kurzbz))
{
//Bei Testkursen werden alle Lektoren einer Lehrveranstaltung zugeteilt
//da hier kein Eintrag in der tbl_moodle vorhanden ist, werden die Lektoren direkt aus
//der tbl_lehreinheitmitarbeiter geholt.
$qry = "SELECT mitarbeiter_uid FROM lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE lehrveranstaltung_id='".addslashes($lehrveranstaltung_id)."'
AND studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'";
}
else
{
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
moodle_version='1.9'
AND mdl_course_id='".addslashes($mdl_course_id)."'
UNION
SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
moodle_version='1.9'
AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id='".addslashes($mdl_course_id)."'";
}
$mitarbeiter='';
if($result_ma = $this->db_query($qry))
{
//Context des Kurses holen
$mdlcourse = new moodle19_course();
if(!$mdlcourse->getContext(50, $mdl_course_id))
{
$this->errormsg = 'Fehler beim Laden des Contexts';
return false;
}
while($row_ma = $this->db_fetch_object($result_ma))
{
//MoodleID des Users holen bzw ggf neu anlegen
if(!$this->loaduser($row_ma->mitarbeiter_uid))
{
//User anlegen
if(!$this->createUser($row_ma->mitarbeiter_uid))
{
$this->errormsg = "Fehler beim Anlegen des Users $row_ma->mitarbeiter_uid: $this->errormsg";
return false;
}
else
$this->errormsg = '';
}
if($mitarbeiter!='')
$mitarbeiter.=',';
$mitarbeiter.=$this->mdl_user_id;
//Nachschauen ob dieser Lektor bereits zugeteilt ist
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($this->mdl_user_id)."' AND
contextid='".addslashes($mdlcourse->mdl_context_id)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//Mitarbeiter ist noch nicht zugeteilt.
if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 3))
{
$this->log.="\nder Lektor $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->log_public.="\nder Lektor $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
else
$this->log.="\nFehler beim Anlegen der Lektoren-Zuteilung: $this->errormsg";
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
}
//Lektoren loeschen die nicht mehr zugeordnet sind
/* Derzeit werden zugeteilte Personen nicht geloescht
$qry = "SELECT * FROM mdl_role_assignments
WHERE
contextid='".addslashes($mdlcourse->mdl_context_id)."' AND
userid NOT in ($mitarbeiter)";
if($result = pg_query($this->conn_moodle, $qry))
{
while($row = pg_fetch_object($result))
{
$this->deleteZuteilung($row->userid, $mdlcourse->mdl_context_id);
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Lektoren die nicht mehr zugeteilt sind';
return false;
}
*/
return true;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Lektoren';
return false;
}
}
/**
* Synchronisiert die Studenten der Lehreinheiten
* mit denen des Moodle Kurses
* @param $mdl_course_id ID des MoodleKurses
* @return true wenn ok, false wenn Fehler
*/
public function sync_studenten($mdl_course_id)
{
//Studentengruppen laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz, tbl_moodle.gruppen
FROM
lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
moodle_version='1.9'
AND mdl_course_id='".addslashes($mdl_course_id)."'
UNION
SELECT
studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz, tbl_moodle.gruppen
FROM
lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
moodle_version='1.9'
AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id='".addslashes($mdl_course_id)."'";
$studenten='';
if($result_std = $this->db_query($qry))
{
//Context des Kurses holen
$mdlcourse = new moodle19_course();
if(!$mdlcourse->getContext(50, $mdl_course_id))
{
$this->errormsg = 'Fehler beim Laden des Contexts';
return false;
}
while($row_std = $this->db_fetch_object($result_std))
{
//Schauen ob fuer diesen Kurs die Gruppen mitgesynct werden sollen
$gruppensync = $row_std->gruppen=='t'?true:false;
//Studenten dieser Gruppe holen
if($row_std->gruppe_kurzbz=='') //LVB Gruppe
{
$qry = "SELECT
distinct student_uid
FROM
public.tbl_studentlehrverband
WHERE
studiensemester_kurzbz='".addslashes($row_std->studiensemester_kurzbz)."' AND
studiengang_kz = '".addslashes($row_std->studiengang_kz)."' AND
semester = '".addslashes($row_std->semester)."'";
if(trim($row_std->verband)!='')
{
$qry.=" AND verband = '$row_std->verband'";
if(trim($row_std->gruppe)!='')
{
$qry.=" AND gruppe = '$row_std->gruppe'";
}
}
$studiengang_obj = new studiengang();
$studiengang_obj->load($row_std->studiengang_kz);
$gruppenbezeichnung = $studiengang_obj->kuerzel.'-'.trim($row_std->semester).trim($row_std->verband).trim($row_std->gruppe);
}
else //Spezialgruppe
{
$qry = "SELECT
distinct uid as student_uid
FROM
public.tbl_benutzergruppe
WHERE
gruppe_kurzbz='".addslashes($row_std->gruppe_kurzbz)."' AND
studiensemester_kurzbz='".addslashes($row_std->studiensemester_kurzbz)."'";
$gruppenbezeichnung = $row_std->gruppe_kurzbz;
}
if($result_user = $this->db_query($qry))
{
while($row_user = $this->db_fetch_object($result_user))
{
//MoodleID des Users holen bzw ggf neu anlegen
if(!$this->loaduser($row_user->student_uid))
{
//User anlegen
if(!$this->createUser($row_user->student_uid))
{
$this->errormsg = "Fehler beim Anlegen des Users $row_user->student_uid: $this->errormsg";
return false;
}
else
$this->errormsg = '';
}
if($studenten!='')
$studenten.=',';
$studenten.=$this->mdl_user_id;
//Nachschauen ob dieser Student bereits zugeteilt ist
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($this->mdl_user_id)."' AND
contextid='".addslashes($mdlcourse->mdl_context_id)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//Student ist noch nicht zugeteilt.
if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 5))
{
$this->log.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->log_public.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
else
$this->log.="\nFehler beim Anlegen der Studenten-Zuteilung: $this->errormsg";
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
//Gruppenzuteilung
if($gruppensync)
{
//Schauen ob die Gruppe vorhanden ist
if(!$groupid = $this->getGroup($mdl_course_id, $gruppenbezeichnung))
{
//wenn nicht dann anlegen
if(!$groupid = $this->createGroup($mdl_course_id, $gruppenbezeichnung))
continue;
$this->group_update++;
$this->log.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung";
$this->log_public.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung";
}
//Schauen ob eine Zuteilung zu dieser Gruppe vorhanden ist
if(!$this->getGroupMember($groupid, $this->mdl_user_id))
{
//wenn nicht dann zuteilen
$this->createGroupMember($groupid, $this->mdl_user_id);
$this->group_update++;
$this->log.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde der Gruppe $gruppenbezeichnung zugeordnet";
$this->log_public.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde der Gruppe $gruppenbezeichnung zugeordnet";
}
}
}
}
}
//Studenten loeschen die nicht mehr zugeordnet sind
/* Derzeit werden zugeteilte Personen nicht geloescht
$qry = "SELECT * FROM mdl_role_assignments
WHERE
contextid='".addslashes($mdlcourse->mdl_context_id)."' AND
userid NOT in ($studenten)";
if($result = pg_query($this->conn_moodle, $qry))
{
while($row = pg_fetch_object($result))
{
$this->deleteZuteilung($row->userid, $mdlcourse->mdl_context_id);
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Studenten die nicht mehr zugeteilt sind';
return false;
}
*/
return true;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Studenten';
return false;
}
}
/**
* Schaut ob eine Zuteilung von Person zu Gruppe
* existiert
* @param grouid ID der Gruppe
* userid ID des Users
* @return ID der Zuteilung
*/
public function getGroupMember($groupid, $userid)
{
$qry = "SELECT id FROM public.mdl_groups_members WHERE groupid='".addslashes($groupid)."' AND userid='".addslashes($userid)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
return $row->id;
}
else
{
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Gruppe';
return false;
}
}
/**
* Legt eine Zuteilung eines Users zu
* einer Gruppe an
* @param groupid ID der Gruppe
* userid ID des Users
* @return ID der Zuteilung oder false im Fehlerfall
*/
public function createGroupMember($groupid, $userid)
{
$qry = 'BEGIN; INSERT INTO public.mdl_groups_members(groupid, userid) VALUES('.
$this->addslashes($groupid).','.$this->addslashes($userid).');';
if(pg_query($this->conn_moodle, $qry))
{
$qry = "SELECT currval('mdl_groups_members_id_seq') as id";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
pg_query($this->conn_moodle, 'COMMIT;');
return $row->id;
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Anlegen der Zuteilung';
return false;
}
}
/**
* Holt die ID einer MoodleGruppe
* @param $mdl_course_id ID des Kurses
* $gruppenbezeichnung Name der Gruppe
* @return GruppenID wenn ok, false im Fehlerfall
*/
public function getGroup($mdl_course_id, $gruppenbezeichnung)
{
$qry = "SELECT id FROM public.mdl_groups WHERE courseid='".addslashes($mdl_course_id)."' AND name='".addslashes($gruppenbezeichnung)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
return $row->id;
}
else
{
$this->errormsg = "Gruppe wurde nicht gefunden $gruppenbezeichnung";
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden einer Gruppe';
return false;
}
}
/**
* Legt eine MoodleGruppe zu einem Kurs an
* @param mdl_course_id ID des MoodleKuses
* gruppenbezeichnung Bezeichnung der Gruppe
* @return ID der Gruppe wenn ok, false im Fehlerfall
*/
public function createGroup($mdl_course_id, $gruppenbezeichnung)
{
$qry = 'BEGIN;INSERT INTO public.mdl_groups(courseid, name, description) VALUES('.
$this->addslashes($mdl_course_id).','.
$this->addslashes($gruppenbezeichnung).','.
$this->addslashes($gruppenbezeichnung).');';
if(pg_query($this->conn_moodle, $qry))
{
$qry = "SELECT currval('mdl_groups_id_seq') as id";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
pg_query($this->conn_moodle, 'COMMIT;');
return $row->id;
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen der GruppenSequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen der GruppenSequence';
return false;
}
}
else
{
$this->errormsgr ='Fehler beim Anlegen der Gruppe';
return false;
}
}
/**
* Legt einen User im Moodle an
* @param $uid UID der Person die angelegt werden soll
* @return true wenn ok, false wenn Fehler
*/
public function createUser($uid)
{
$qry = "SELECT uid, vorname, nachname FROM campus.vw_benutzer WHERE uid='".addslashes($uid)."'";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$username = $row->uid;
$vorname = $row->vorname;
$nachname = $row->nachname;
$qry = "BEGIN; INSERT INTO public.mdl_user(auth, username, idnumber, firstname, lastname, email, mnethostid, confirmed, lang)
VALUES('ldap', ".
$this->addslashes($username).", ".
$this->addslashes($username).",".
$this->addslashes($vorname).",".
$this->addslashes($nachname).",".
$this->addslashes($username.'@'.DOMAIN).", 3, 1, 'de_utf8');";
if(pg_query($this->conn_moodle, $qry))
{
$qry ="SELECT currval('mdl_user_id_seq') as id;";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
pg_query($this->conn_moodle, 'COMMIT;');
$this->mdl_user_id = $row->id;
return true;
}
else
{
pg_query($this->conn_moodle,'ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle,'ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle,'ROLLBACK');
$this->errormsg = 'Fehler beim Anlegen des Users';
return false;
}
}
else
{
$this->errormsg = 'User wurde nicht gefunden: '.$uid;
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
/**
* Teilt den User mit der ID $mdl_user_id zum
* Kurs mit der ContextID $mdl_context_id zu.
* @param $mdl_user_id Moodle ID des Users
* $mdl_context_id ContextID des Kurses
* $role Rolle der Zuteilung (1=Admin/3=Lektor/5=Student)
* @return true wenn ok, false wenn Fehler
*/
public function createZuteilung($mdl_user_id, $mdl_context_id, $role)
{
$qry = "INSERT INTO public.mdl_role_assignments(roleid, contextid, userid)
VALUES(".
$this->addslashes($role).",".
$this->addslashes($mdl_context_id).",".
$this->addslashes($mdl_user_id).");";
if(pg_query($this->conn_moodle, $qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Zuteilung';
return false;
}
}
/**
* Fuegt dem User die globale Gastrolle hinzu
* @param $mdl_user_id Moodle ID des Users der
* die GastRolle bekommt
* @return true wenn ok, false wenn Fehler
*/
public function createGlobaleGastrolle($mdl_user_id)
{
//Nachschauen ob diese Person bereits eine globale Gastrolle hat
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($mdl_user_id)."' AND
contextid='1' AND
roleid='6'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//noch nicht zugeteilt
if($this->createZuteilung($mdl_user_id, 1, 6))
{
$this->log.="\n$this->mdl_user_firstname $this->mdl_user_lastname wurde die globale Gastrolle zugeteilt";
$this->log_public.="\n$this->mdl_user_firstname $this->mdl_user_lastname wurde die globale Gastrolle zugeteilt";
}
else
$this->log.="\nFehler beim Anlegen der Gast-Zuteilung: $this->errormsg";
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
}
/**
* Loescht die Zuteilung eines Users zu einem Kurs
* @param $mdl_user_id MoodleID des Users
* $mdl_context_id ContextID des Users
* @return true wenn ok, false wenn Fehler
*/
public function deleteZuteilung($mdl_user_id, $mdl_context_id)
{
$qry = "DELETE FROM public.mdl_role_assignments
WHERE userid='".addslashes($mdl_user_id)."' AND contextid='".addslashes($mdl_context_id)."'";
if(pg_query($this->conn_moodle, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Loeschen der Zuteilung';
return false;
}
}
/**
* Teilt die TestStudenten zu einem Testkurs zu
* @param mdl_course_id ID des Moodle Kurses
*/
public function createTestStudentenZuordnung($mdl_course_id)
{
//Context des Kurses holen
$mdlcourse = new moodle19_course();
if(!$mdlcourse->getContext(50, $mdl_course_id))
{
$this->errormsg = 'Fehler beim Laden des Contexts';
return false;
}
$users = array('student1', 'student2', 'student3');
foreach ($users as $row_user)
{
//MoodleID des Users holen
if(!$this->loaduser($row_user))
{
$this->errormsg = "Fehler beim Laden des Users $row_user: $this->errormsg";
return false;
}
//Nachschauen ob dieser Student bereits zugeteilt ist
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($this->mdl_user_id)."' AND
contextid='".addslashes($mdlcourse->mdl_context_id)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//Student ist noch nicht zugeteilt.
if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 5))
{
$this->log.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->log_public.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
else
$this->log.="\nFehler beim Anlegen der Studenten-Zuteilung: $this->errormsg";
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
}
return true;
}
}
+691
View File
@@ -0,0 +1,691 @@
<?php
/* Copyright (C) 2013 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
*/
/*
* Moodle 2.4 Connector Klasse
*
* FHComplete Moodle Plugin muss installiert sein fuer
* Webservice Funktion 'fhcomplete_courses_by_shortname'
* 'fhcomplete_get_course_grades'
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/moodle.class.php');
class moodle24_course extends basis_db
{
public $result = array();
public $serverurl;
//Vilesci Attribute
public $moodle_id;
public $mdl_course_id;
public $lehreinheit_id;
public $lehrveranstaltung_id;
public $studiensemester_kurzbz;
public $insertamum;
public $insertvon;
public $gruppen;
//Moodle Attribute
public $mdl_fullname;
public $mdl_shortname;
public $lehrveranstaltung_bezeichnung;
public $lehrveranstaltung_semester;
public $lehrveranstaltung_studiengang_kz;
// Kurs Resourcen - Anzahl
public $mdl_benotungen;
public $mdl_resource;
public $mdl_quiz;
public $mdl_chat;
public $mdl_forum;
public $mdl_choice;
public $note;
/**
* Konstruktor
*
*/
public function __construct()
{
$moodle = new moodle();
$pfad = $moodle->getPfad('2.4');
$this->serverurl=$pfad.'/webservice/soap/server.php?wsdl=1&wstoken='.MOODLE_TOKEN24.'&'.microtime(true);
return true;
}
/**
* Laedt einen MoodleKurs
* @param mdl_course_id ID des Moodle Kurses
* @return true wenn ok, false im Fehlerfall
*/
public function load($mdl_course_id)
{
$this->mdl_fullname = '';
$this->mdl_shortname = '';
$this->errormsg='';
$this->result=array();
if (!is_null($mdl_course_id))
$this->mdl_course_id=$mdl_course_id;
if (is_null($this->mdl_course_id)
|| empty($this->mdl_course_id)
|| !is_numeric($this->mdl_course_id))
{
$this->errormsg='Moodle Kurs ID fehlt';
return false;
}
$client = new SoapClient($this->serverurl);
$response = $client->core_course_get_courses(array('ids'=>array($this->mdl_course_id)));
if($response)
{
if(isset($response[0]))
{
$this->mdl_fullname = $response[0]['fullname'];
$this->mdl_shortname = $response[0]['shortname'];
$this->mdl_course_id = $response[0]['id'];
return true;
}
else
{
$this->errormsg = 'Kurs wurde nicht gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Kurses';
return false;
}
}
/**
* Legt einen Eintrag in der tbl_moodle an
* @return true wenn ok, false im Fehlerfall
*/
public function create_vilesci()
{
if($this->mdl_course_id=='')
{
$this->errormsg='mdl_course_id muss angegeben sein';
return false;
}
$qry = 'BEGIN; INSERT INTO lehre.tbl_moodle(mdl_course_id, lehreinheit_id, lehrveranstaltung_id,
studiensemester_kurzbz, insertamum, insertvon, gruppen, moodle_version)
VALUES('.
$this->db_add_param($this->mdl_course_id, FHC_INTEGER).','.
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','.
$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).','.
$this->db_add_param($this->studiensemester_kurzbz).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).','.
$this->db_add_param($this->gruppen, FHC_BOOLEAN).", '2.4');";
if($this->db_query($qry))
{
$qry = "SELECT currval('lehre.tbl_moodle_moodle_id_seq') as id;";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->moodle_id = $row->id;
$this->db_query('COMMIT;');
return true;
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Einfuegen des Datensatzes';
return false;
}
}
/**
* Legt einen Kurs im Moodle an
* @return true wenn ok, false im Fehlerfall
*/
public function create_moodle()
{
//CourseCategorie ermitteln
//lehrveranstalung ID holen falls die nur die lehreinheit_id angegeben wurde
if($this->lehrveranstaltung_id=='')
{
$qry = "SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit
WHERE lehreinheit_id=".$this->db_add_param($this->lehreinheit_id, FHC_INTEGER);
if($res=$this->db_query($qry))
{
if($row = $this->db_fetch_object($res))
{
$lvid = $row->lehrveranstaltung_id;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der LehrveranstaltungID';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der LehrveranstaltungID';
return false;
}
}
else
$lvid = $this->lehrveranstaltung_id;
//Studiengang und Semester holen
$qry = "SELECT tbl_lehrveranstaltung.semester, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg
FROM lehre.tbl_lehrveranstaltung JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER);
if($res=$this->db_query($qry))
{
if($row = $this->db_fetch_object($res))
{
$semester = $row->semester;
$stg = $row->stg;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
//Studiensemester Categorie holen
if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, '0'))
{
if(!$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, '0'))
echo "<br>Fehler beim Anlegen des Studiensemesters";
}
//Studiengang Categorie holen
if(!$id_stg = $this->getCategorie($stg, $id_stsem))
{
if(!$id_stg = $this->createCategorie($stg, $id_stsem))
echo "<br>$this->errormsg";
}
//Semester Categorie holen
if(!$id_sem = $this->getCategorie($semester, $id_stg))
{
if(!$id_sem = $this->createCategorie($semester, $id_stg))
echo "<br>$this->errormsg";
}
$client = new SoapClient($this->serverurl);
$data = new stdClass();
$data->fullname=$this->mdl_fullname;
$data->shortname=$this->mdl_shortname;
$data->categoryid=$id_sem;
$data->format='topics';
$response = $client->core_course_create_courses(array($data));
if(isset($response[0]))
{
$this->mdl_course_id=$response[0]['id'];
return true;
}
else
{
$this->errormsg = 'Fehler beim Anlegen des Kurses';
return false;
}
return true;
}
/**
* Laedt die ID einer Kurskategorie anhand der Bezeichnung und der ParentID
*
* @param bezeichnung Bezeichnung der Kategorie
* @param parent ID der uebergeordneten Kurskategorie
*
* @return id der Kategorie oder false im Fehlerfall
*/
public function getCategorie($bezeichnung, $parent)
{
if($bezeichnung=='')
{
$this->errormsg = 'Bezeichnung muss angegeben werden';
return false;
}
if($parent=='')
{
$this->errormsg = 'getCategorie: parent wurde nicht uebergeben';
return false;
}
$client = new SoapClient($this->serverurl);
$response = $client->core_course_get_categories(array(array('key'=>'name','value'=>$bezeichnung),array('key'=>'parent','value'=>$parent)));
if(isset($response[0]))
{
return $response[0]['id'];
}
else
{
$this->errormsg = 'Fehler beim Laden der Kurskategorie';
return false;
}
}
/**
* Erzeugt eine Kurskategorie anhand der Bezeichnung und der ParentID
* @param bezeichnung Bezeichnung der Kategorie
* @param parent ID der uebergeordneten Kategorie
*/
public function createCategorie($bezeichnung, $parent)
{
if($bezeichnung=='')
{
$this->errormsg = 'Bezeichnung muss angegeben werden';
return false;
}
if($parent=='')
{
$this->errormsg = 'createCategorie: parent wurde nicht uebergeben';
return false;
}
$client = new SoapClient($this->serverurl);
$response = $client->core_course_create_categories(array(array('name'=>$bezeichnung,'parent'=>$parent)));
if(isset($response[0]))
{
return $response[0]['id'];
}
else
{
$this->errormsg = 'Fehler beim Anlegen der Kategorie';
return false;
}
}
/**
* Aktualisiert die Spalte gruppen in der tbl_moodle
* @param moodle_id ID der MoodleZuteilung
* gruppen boolean true wenn syncronisiert
* werden soll, false wenn nicht
* @return true wenn ok, false im Fehlerfall
*
* TODO eventuell auslagern in moodle.class
*/
public function updateGruppenSync($moodle_id, $gruppen)
{
if(!is_numeric($moodle_id))
{
$this->errormsg = 'Moodle_id muss eine gueltige Zahl sein';
return false;
}
$qry = "UPDATE lehre.tbl_moodle SET gruppen=".$this->db_add_param($gruppen, FHC_BOOLEAN)."
WHERE moodle_id=".$this->db_add_param($moodle_id, FHC_INTEGER);
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Update';
return false;
}
}
/**
* Legt einen Testkurs an
*/
public function createTestkurs($lehrveranstaltung_id, $studiensemester_kurzbz)
{
//CourseCategorie ermitteln
//Studiengang und Semester holen
$qry = "SELECT
tbl_lehrveranstaltung.semester,
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg
FROM
lehre.tbl_lehrveranstaltung
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$semester = $row->semester;
$stg = $row->stg;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
//Testkurs Categorie holen
if(!$id_testkurs = $this->getCategorie('Testkurse', '0'))
{
if(!$id_testkurs = $this->createCategorie('Testkurse', '0'))
{
$this->errormsg= "Fehler beim Anlegen der Testkurskategorie";
return false;
}
}
//StSem Categorie holen
if(!$id_stsem = $this->getCategorie($studiensemester_kurzbz, $id_testkurs))
{
if(!$id_stsem = $this->createCategorie($studiensemester_kurzbz, $id_testkurs))
{
$this->errormsg = 'Fehler beim Anlegen der Studiensemester Kategorie';
return false;
}
}
$client = new SoapClient($this->serverurl);
$data = new stdClass();
$data->fullname=$this->mdl_fullname;
$data->shortname=$this->mdl_shortname;
$data->categoryid=$id_stsem;
$data->format='topics';
$response = $client->core_course_create_courses(array($data));
if(isset($response[0]))
{
$this->mdl_course_id=$response[0]['id'];
return true;
}
else
{
$this->errormsg = 'Fehler beim Anlegen des Testkurses';
return false;
}
}
/**
* Laedt den Testkurs zu dieser Lehrveranstaltung
* @param lehrveranstaltung_id
* studiensemester_kurzbz
* @return ID wenn gefunden, false wenn nicht vorhanden
*/
public function loadTestkurs($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel,
tbl_lehrveranstaltung.semester, tbl_lehrveranstaltung.kurzbz
FROM
lehre.tbl_lehrveranstaltung JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER, false);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$shortname = mb_strtoupper('TK-'.$studiensemester_kurzbz.'-'.$row->kuerzel.'-'.$row->semester.'-'.$row->kurzbz);
}
else
{
$this->errormsg = 'Fehler beim Laden des Testkurses';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Testkurses';
return false;
}
//Testkurs Categorie holen
if(!$id_testkurs = $this->getCategorie('Testkurse', '0'))
{
$this->errormsg = 'Categorie nicht gefunden';
return false;
}
//StSem Categorie holen
if(!$id_stsem = $this->getCategorie($studiensemester_kurzbz, $id_testkurs))
{
$this->errormsg = 'Categorie nicht gefunden';
return false;
}
$client = new SoapClient($this->serverurl);
$response = $client->fhcomplete_courses_by_shortname(array('shortnames'=>array($shortname)));
if(isset($response[0]))
{
$this->mdl_fullname = $response[0]['fullname'];
$this->mdl_shortname = $response[0]['shortname'];
$this->mdl_course_id = $response[0]['id'];
return true;
}
else
{
$this->errormsg='Es wurde kein Testkurs gefunden';
return false;
}
}
/**
* Laedt die Noten zu einem Moodle Course ID
* @param lehrveranstaltung_id
* @param $studiensemester_kurzbz
*
* @return objekt mit den Noten der Teilnehmer dieses Kurses
*
* TODO Anpassung an Moodle 2.4 fertigstellen
*/
public function loadNoten($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$this->errormsg='';
$this->result=null;
if($lehrveranstaltung_id=='' || $studiensemester_kurzbz=='')
{
$this->errormsg = 'LehrveranstaltungID und Studiensemester_kurzbz muss uebergeben werden';
return false;
}
// Ermitteln die Lehreinheiten und Moodle ID
$qry = "
SELECT tbl_lehreinheit.lehreinheit_id, mdl_course_id,tbl_lehreinheit.studiensemester_kurzbz,tbl_lehreinheit.lehrveranstaltung_id
FROM lehre.tbl_moodle
JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz)
WHERE tbl_moodle.lehrveranstaltung_id > 0 ";
if ($this->lehrveranstaltung_id)
$qry.= " and tbl_moodle.lehrveranstaltung_id ='".addslashes($this->lehrveranstaltung_id)."' ";
if ($this->studiensemester_kurzbz)
$qry.= " and tbl_moodle.studiensemester_kurzbz ='".addslashes($this->studiensemester_kurzbz)."' ";
$qry.= "
UNION
SELECT tbl_lehreinheit.lehreinheit_id, mdl_course_id,tbl_lehreinheit.studiensemester_kurzbz,tbl_lehreinheit.lehrveranstaltung_id
FROM lehre.tbl_moodle
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE tbl_lehreinheit.lehrveranstaltung_id > 0 ";
if ($this->lehrveranstaltung_id)
$qry.= " and tbl_lehreinheit.lehrveranstaltung_id ='".addslashes($this->lehrveranstaltung_id)."' ";
if ($this->studiensemester_kurzbz)
$qry.= " and tbl_moodle.studiensemester_kurzbz ='".addslashes($this->studiensemester_kurzbz)."' ";
if(!$result_moodle=$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Lesen der Moodle Kurse , '.$this->errormsg;
return false;
}
// init
$_lehreinheit=array(); // Lehreinheiten zum lesen Studenten im Campus (Student und LE im FAS)
$_lehrveranstaltung = array(); // Gesamte Information der Lehreinheit und Moodle IDs
$_studiensemester_kurzbz=array();
$_lehreinheit_kpl=array();
while($row = $this->db_fetch_object($result_moodle))
{
$row->lehreinheit_id=trim($row->lehreinheit_id);
$_lehreinheit_kpl[$row->lehreinheit_id]=$row;
$_lehreinheit[$row->lehreinheit_id]=$row->lehreinheit_id; // Fuer Select Campus
$row->lehrveranstaltung_id=trim($row->lehrveranstaltung_id);
$_lehrveranstaltung[$row->lehrveranstaltung_id]=$row->lehrveranstaltung_id; // Fuer Select Campus
$row->studiensemester_kurzbz=trim($row->studiensemester_kurzbz);
$_studiensemester_kurzbz[$row->studiensemester_kurzbz]=$row->studiensemester_kurzbz; // Fuer Select Campus
}
if (count($_lehreinheit)<1) // Es gibt keine Lehreinheiten
{
$this->errormsg='Es wurde kein passender Moodle-Kurs gefunden';
return false;
}
// Von der Lehreinheit kann der Moodle-Kurs ermittelt werden
$this->mdl_course_id=trim($_lehreinheit_kpl[$row->lehreinheit_id]->mdl_course_id);
if ($last_moodle_id==$this->mdl_course_id)
continue;
$last_moodle_id=$this->mdl_course_id;
$client = new SoapClient($serverurl);
$response = $client->fhcomplete_get_course_grades($this->mdl_course_id);
if (count($response)>0)
{
foreach($response as $row)
{
$userobj = new stdClass();
$userobj->vorname = $row->vorname;
$userobj->nachname = $row->nachname;
$userobj->idnummer = $row->idnummer;
$userobj->username = $row->username;
$userobj->note = $row->note;
$this->result[]=$obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Moodle Noten';
return false;
}
}
/**
* Loescht einen Moodle Course im Moodel und in der DB
* @param mdl_course_id
* @param bServerinfo Detail xmlrpc Debug informationen
*
* @return objekt mit den Noten der Teilnehmer dieses Kurses
*
* TODO anpassung moodle 2.4 eventuell Trennung in moodle.class
*/
public function deleteKurs($mdl_course_id=null,$moodle_id=null,$bServerinfo=false)
{
$this->errormsg='';
$this->result=array();
if (!is_null($mdl_course_id))
$this->mdl_course_id=$mdl_course_id;
if (!is_null($moodle_id))
$this->moodle_id=$moodle_id;
if (is_null($this->mdl_course_id) || empty($this->mdl_course_id) || !is_numeric($this->mdl_course_id))
{
$this->errormsg='Moodle Kurs ID fehlt';
return false;
}
// Variable Daten Initialisieren
$args=array();
$args['CourseID']=$this->mdl_course_id;
$method = "DeleteCourseByID";
if (!$result=$this->callMoodleXMLRPC($method,$args,$bServerinfo))
return false;
if (isset($result[1]))
$this->errormsg=$result[1];
if ($result[0]==1 || !$this->load($this->mdl_course_id)) // Methodenaufruf erfolgreich
{
$qry = "DELETE FROM lehre.tbl_moodle WHERE mdl_course_id='". addslashes($this->mdl_course_id) ."' ";
if (!is_null($this->moodle_id) && $this->moodle_id!='')
$qry.= " and moodle_id='".addslashes($this->moodle_id)."'";
if(!$this->db_query($qry))
{
$this->errormsg=$this->errormsg." Moodlekurs $mdl_course_id wurde NICHT gel&ouml;scht in Lehre. ";
return false;
}
}
else // Result = 0 ein Fehler im RFC wurde festgestellt
{
$this->errormsg=(isset($result[1])?$result[1]:" - Fehler beim Kurs ".$this->mdl_course_id." l&ouml;schen ");
return false;
}
if (empty($this->errormsg))
$this->errormsg.="Moodlekurs ".$this->mdl_course_id." wurde gel&ouml;scht.";
return true;
}
}
+568
View File
@@ -0,0 +1,568 @@
<?php
/* Copyright (C) 2013 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
*/
/*
* Connector fuer Moodle 2.4 User
*
* FHComplete Moodle Plugin muss installiert sein fuer
* Webservice Funktion 'fhcomplete_user_get_users'
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/moodle.class.php');
class moodle24_user extends basis_db
{
public $log=''; //log message fuer Syncro
public $log_public=''; //log message fuer Syncro
public $sync_create=0; //anzahl der durchgefuehrten zuteilungen beim syncro
public $group_update=0; //anzahl der updates an gruppen
private $serverurl;
public $mdl_user_id;
public $mdl_user_username;
public $mdl_user_firstname;
public $mdl_user_lastname;
/**
* Konstruktor
*/
public function __construct()
{
$moodle = new moodle();
$pfad = $moodle->getPfad('2.4');
$this->serverurl=$pfad.'/webservice/soap/server.php?wsdl=1&wstoken='.MOODLE_TOKEN24.'&'.microtime(true);
return true;
}
/**
* Laedt einen Moodle User
*
* @param $uid
* @return boolean
*/
public function loaduser($uid)
{
$client = new SoapClient($this->serverurl);
$response = $client->fhcomplete_user_get_users(array(array('key'=>'username', 'value'=>$uid)));
if(isset($response['users'][0]))
{
$this->mdl_user_id = $response['users'][0]['id'];
$this->mdl_user_username = $response['users'][0]['username'];
$this->mdl_user_firstname = $response['users'][0]['firstname'];
$this->mdl_user_lastname = $response['users'][0]['lastname'];
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
/**
* Liefert ein Array mit allen Lektoren die
* zu dem Moodle Kurs zugeteilt sind
*/
public function getMitarbeiter($mdl_course_id)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
moodle_version='2.4'
AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER)."
UNION
SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
moodle_version='2.4'
AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER);
$mitarbeiter=array();
if($this->db_query($qry))
{
while($row_ma = $this->db_fetch_object())
{
$mitarbeiter[] = $row_ma->mitarbeiter_uid;
}
return $mitarbeiter;
}
else
{
$this->errormsg='Fehler beim Laden der Mitarbeiter';
return false;
}
}
/**
* Synchronisiert die Lektoren der Lehreinheiten
* mit denen des Moodle Kurses
* @param $mdl_course_id ID des MoodleKurses
* lehrveranstaltung_id wird nur angegeben beim Syncro von Testkursen
* studiensemester_kurzbz wird nur angegeben beim Syncro von Testkursen
* @return true wenn ok, false wenn Fehler
*/
public function sync_lektoren($mdl_course_id, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
if(!is_null($lehrveranstaltung_id) && !is_null($studiensemester_kurzbz))
{
//Bei Testkursen werden alle Lektoren einer Lehrveranstaltung zugeteilt
//da hier kein Eintrag in der tbl_moodle vorhanden ist, werden die Lektoren direkt aus
//der tbl_lehreinheitmitarbeiter geholt.
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
}
else
{
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
moodle_version='2.4'
AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER)."
UNION
SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
moodle_version='2.4'
AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER);
}
$mitarbeiter='';
$client = new SoapClient($this->serverurl);
$enrolled_users = $client->core_enrol_get_enrolled_users($mdl_course_id,array());
if($result_ma = $this->db_query($qry))
{
while($row_ma = $this->db_fetch_object($result_ma))
{
//MoodleID des Users holen bzw ggf neu anlegen
if(!$this->loaduser($row_ma->mitarbeiter_uid))
{
//User anlegen
if(!$this->createUser($row_ma->mitarbeiter_uid))
{
$this->errormsg = "Fehler beim Anlegen des Users $row_ma->mitarbeiter_uid: $this->errormsg";
return false;
}
else
$this->errormsg = '';
}
if($mitarbeiter!='')
$mitarbeiter.=',';
$mitarbeiter.=$this->mdl_user_id;
$user_zugeteilt=false;
foreach($enrolled_users as $user)
{
if($user['id']==$this->mdl_user_id)
{
$user_zugeteilt=true;
break;
}
}
if(!$user_zugeteilt)
{
//Mitarbeiter ist noch nicht zugeteilt.
$data = new stdClass();
$data->roleid=3; // 3=Lektor
$data->userid=$this->mdl_user_id;
$data->courseid=$mdl_course_id;
$client->enrol_manual_enrol_users(array($data));
$this->log.="\nLektorIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->log_public.="\nLektorIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Lektoren';
return false;
}
}
/**
* Synchronisiert die Studenten der Lehreinheiten
* mit denen des Moodle Kurses
* @param $mdl_course_id ID des MoodleKurses
* @return true wenn ok, false wenn Fehler
*/
public function sync_studenten($mdl_course_id)
{
//Studentengruppen laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz, tbl_moodle.gruppen
FROM
lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
moodle_version='2.4'
AND mdl_course_id=".$this->db_add_param($mdl_course_id)."
UNION
SELECT
studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz, tbl_moodle.gruppen
FROM
lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
moodle_version='2.4'
AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id=".$this->db_add_param($mdl_course_id);
$studenten='';
$client = new SoapClient($this->serverurl);
$enrolled_users = $client->core_enrol_get_enrolled_users($mdl_course_id, array());
if($result_std = $this->db_query($qry))
{
while($row_std = $this->db_fetch_object($result_std))
{
//Schauen ob fuer diesen Kurs die Gruppen mitgesynct werden sollen
$gruppensync = $this->db_parse_bool($row_std->gruppen);
//Studenten dieser Gruppe holen
if($row_std->gruppe_kurzbz=='') //LVB Gruppe
{
$qry = "SELECT
distinct student_uid
FROM
public.tbl_studentlehrverband
WHERE
studiensemester_kurzbz=".$this->db_add_param($row_std->studiensemester_kurzbz)." AND
studiengang_kz = ".$this->db_add_param($row_std->studiengang_kz)." AND
semester = ".$this->db_add_param($row_std->semester);
if(trim($row_std->verband)!='')
{
$qry.=" AND verband = ".$this->db_add_param($row_std->verband);
if(trim($row_std->gruppe)!='')
{
$qry.=" AND gruppe = ".$this->db_add_param($row_std->gruppe);
}
}
$studiengang_obj = new studiengang();
$studiengang_obj->load($row_std->studiengang_kz);
$gruppenbezeichnung = $studiengang_obj->kuerzel.'-'.trim($row_std->semester).trim($row_std->verband).trim($row_std->gruppe);
}
else //Spezialgruppe
{
$qry = "SELECT
distinct uid as student_uid
FROM
public.tbl_benutzergruppe
WHERE
gruppe_kurzbz=".$this->db_add_param($row_std->gruppe_kurzbz)." AND
studiensemester_kurzbz=".$this->db_add_param($row_std->studiensemester_kurzbz);
$gruppenbezeichnung = $row_std->gruppe_kurzbz;
}
if($result_user = $this->db_query($qry))
{
while($row_user = $this->db_fetch_object($result_user))
{
//MoodleID des Users holen bzw ggf neu anlegen
if(!$this->loaduser($row_user->student_uid))
{
//User anlegen
if(!$this->createUser($row_user->student_uid))
{
$this->errormsg = "Fehler beim Anlegen des Users $row_user->student_uid: $this->errormsg";
return false;
}
else
$this->errormsg = '';
}
if($studenten!='')
$studenten.=',';
$studenten.=$this->mdl_user_id;
//Nachschauen ob dieser Student bereits zugeteilt ist
$user_zugeteilt=false;
foreach($enrolled_users as $user)
{
if($user['id']==$this->mdl_user_id)
{
$user_zugeteilt=true;
break;
}
}
if(!$user_zugeteilt)
{
//Student ist noch nicht zugeteilt.
$data = new stdClass();
$data->roleid=5; // 5=Teilnehmer/Student
$data->userid=$this->mdl_user_id;
$data->courseid=$mdl_course_id;
$client->enrol_manual_enrol_users(array($data));
$this->log.="\nStudentIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->log_public.="\nStudentIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
//Gruppenzuteilung
if($gruppensync)
{
//Schauen ob die Gruppe vorhanden ist
if(!$groupid = $this->getGroup($mdl_course_id, $gruppenbezeichnung))
{
//wenn nicht dann anlegen
if(!$groupid = $this->createGroup($mdl_course_id, $gruppenbezeichnung))
continue;
$this->group_update++;
$this->log.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung";
$this->log_public.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung";
}
//Schauen ob eine Zuteilung zu dieser Gruppe vorhanden ist
if(!$this->getGroupMember($groupid, $this->mdl_user_id))
{
//wenn nicht dann zuteilen
$this->createGroupMember($groupid, $this->mdl_user_id);
$this->group_update++;
$this->log.="\nStudentIn $this->mdl_user_firstname $this->mdl_user_lastname wurde der Gruppe $gruppenbezeichnung zugeordnet";
$this->log_public.="\nStudentIn $this->mdl_user_firstname $this->mdl_user_lastname wurde der Gruppe $gruppenbezeichnung zugeordnet";
}
}
}
}
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Studenten';
return false;
}
}
/**
* Schaut ob eine Zuteilung von Person zu Gruppe
* existiert
* @param grouid ID der Gruppe
* userid MoodleID des Users
* @return true wenn zugeteilt sonst false
*/
public function getGroupMember($groupid, $userid)
{
$client = new SoapClient($this->serverurl);
$response = $client->core_group_get_group_members(array($groupid));
if(isset($response[0]['userids']))
foreach($response[0]['userids'] as $id)
{
if($id==$userid)
return true;
}
return false;
}
/**
* Legt eine Zuteilung eines Users zu
* einer Gruppe an
* @param groupid ID der Gruppe
* userid ID des Users
* @return boolean
*/
public function createGroupMember($groupid, $userid)
{
$client = new SoapClient($this->serverurl);
$response = $client->core_group_add_group_members(array(array('groupid'=>$groupid, 'userid'=>$userid)));
if(isset($response[0]))
return true;
else
return false;
}
/**
* Holt die ID einer MoodleGruppe
* @param $mdl_course_id ID des Kurses
* $gruppenbezeichnung Name der Gruppe
* @return GruppenID wenn ok, false im Fehlerfall
*/
public function getGroup($mdl_course_id, $gruppenbezeichnung)
{
$client = new SoapClient($this->serverurl);
$response = $client->core_group_get_course_groups($mdl_course_id);
foreach($response as $row)
{
if($row['name']==$gruppenbezeichnung)
return $row['id'];
}
$this->errormsg = "Gruppe wurde nicht gefunden $gruppenbezeichnung";
return false;
}
/**
* Legt eine MoodleGruppe zu einem Kurs an
* @param mdl_course_id ID des MoodleKuses
* gruppenbezeichnung Bezeichnung der Gruppe
* @return ID der Gruppe wenn ok, false im Fehlerfall
*/
public function createGroup($mdl_course_id, $gruppenbezeichnung)
{
$client = new SoapClient($this->serverurl);
$data = new stdClass();
$data->courseid=$mdl_course_id;
$data->name = $gruppenbezeichnung;
$data->description = $gruppenbezeichnung;
$response = $client->core_group_create_groups(array($data));
if(isset($response[0]))
{
return $response[0]['id'];
}
else
{
$this->errormsg = 'Fehler beim Anlegen der Gruppe';
return false;
}
}
/**
* Legt einen User im Moodle an
* @param $uid UID der Person die angelegt werden soll
* @return true wenn ok, false wenn Fehler
*/
public function createUser($uid)
{
$qry = "SELECT uid, vorname, nachname FROM campus.vw_benutzer WHERE uid=".$this->db_add_param($uid);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$username = $row->uid;
$vorname = $row->vorname;
$nachname = $row->nachname;
$user = new stdClass();
$user->username = $username;
/*
Passwort muss gesetzt werden damit das Anlegen funktioniert.
Es wird ein random Passwort gesetzt
Dieses wird beim Login nicht verwendet da ueber ldap authentifiziert wird.
Prefix ist noetig damit es nicht zu Problemen kommt wenn
im Moodle die Passwort Policy aktiviert ist
*/
$user->password = "FHCv!A2".hash('sha512', rand());
$user->firstname = $vorname;
$user->lastname = $nachname;
$user->email = $username.'@'.DOMAIN;
$user->auth = 'ldap';
$user->idnumber = $username;
$user->lang = 'de';
$client = new SoapClient($this->serverurl);
$response = $client->core_user_create_users(array($user));
if(isset($response[0]))
{
$this->mdl_user_id = $response[0]['id'];
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
else
{
$this->errormsg='Fehler beim Laden des Users';
return false;
}
}
/**
* Teilt die TestStudenten zu einem Testkurs zu
* @param mdl_course_id ID des Moodle Kurses
*/
public function createTestStudentenZuordnung($mdl_course_id)
{
//Context des Kurses holen
$mdlcourse = new moodle24_course();
$users = array('student1', 'student2', 'student3');
foreach ($users as $row_user)
{
//MoodleID des Users holen
if(!$this->loaduser($row_user))
{
$this->errormsg = "Fehler beim Laden des Users $row_user: $this->errormsg";
return false;
}
$data = new stdClass();
$data->roleid=5;
$data->userid=$this->mdl_user_id;
$data->courseid=$mdl_course_id;
$client = new SoapClient($this->serverurl);
$client->enrol_manual_enrol_users(array($data));
// WS-Funktion enrol_manual_enrol_users liefert immer null zurück
// Fehler bei der Zuordnung koennen daher nicht abgefangen werden.
// Eventuell sollten hier nochmals die Teilnehmer des Kurses geladen werden
// um zu pruefen ob die Zuordnung erfolgreich war.
}
return true;
}
}
+14 -13
View File
@@ -422,16 +422,16 @@
//wenn bereits eine Kreuzerlliste existiert, dann den Moodle link nicht anzeigen
$qry = "SELECT * FROM campus.tbl_uebung WHERE
lehreinheit_id IN(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id='".addslashes($lvid)."'
AND studiensemester_kurzbz='".addslashes($angezeigtes_stsem)."')";
WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)."
AND studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem).")";
if($result = $db->db_query($qry))
if($db->db_num_rows($result)>0)
$showmoodle=false;
$mdlcourse = new moodle_course();
$mdlcourse->getAll($lvid, $angezeigtes_stsem);
if(count($mdlcourse->result)>0)
$moodle = new moodle();
$moodle->getAll($lvid, $angezeigtes_stsem);
if(count($moodle->result)>0)
$showmoodle=true;
}
else
@@ -439,21 +439,22 @@
if($showmoodle)
{
$link = "moodle_choice.php?lvid=$lvid&stsem=$angezeigtes_stsem";
if(count($mdlcourse->result)>0)
if(count($moodle->result)>0)
{
if(!$is_lector)
{
$course = $mdlcourse->getCourse($lvid, $angezeigtes_stsem, $user);
if(count($course)==1)
$link = MOODLE_PATH.'course/view.php?id='.$course[0];
$moodle->getCourse($lvid, $angezeigtes_stsem, $user);
if(count($moodle->result)==1)
$link = $moodle->getPfad($moodle->result[0]->moodle_version).'course/view.php?id='.$moodle->result[0]->mdl_course_id;
else
$link = "moodle_choice.php?lvid=$lvid&stsem=$angezeigtes_stsem";
}
else
{
//$mdlcourse->getAll($lvid, $angezeigtes_stsem);
if(count($mdlcourse->result)==1)
$link = MOODLE_PATH.'course/view.php?id='.$mdlcourse->result[0]->mdl_course_id;
if(count($moodle->result)==1)
{
$link = $moodle->getPfad($moodle->result[0]->moodle_version).'course/view.php?id='.$moodle->result[0]->mdl_course_id;
}
else
$link = "moodle_choice.php?lvid=$lvid&stsem=$angezeigtes_stsem";
}
@@ -658,4 +659,4 @@
}
?>
</tr>
</table>
</table>
+7 -2
View File
@@ -6,7 +6,7 @@ $this->phrasen['moodle/esMussMindestensEineLehreinheitMarkiertSein']='Es muss mi
$this->phrasen['moodle/esWurdeKeineGueltigeIdUebergeben']='Es wurde keine oder eine ungueltige ID übergeben';
$this->phrasen['moodle/testkursWurdeErfolgreichAngelegt']='Der Testkurs wurde erfolgreich angelegt';
$this->phrasen['moodle/esExistiertBereitsEinTestkurs']='Es existiert bereits ein Testkurs';
$this->phrasen['moodle/esIstBereitsEinMoodleKursVorhanden']='Es ist bereits ein Moodle Kurs für die Gesamt LV vorhanden';
$this->phrasen['moodle/esIstBereitsEinMoodleKursVorhanden']='Es ist bereits ein Moodle Kurs für die gesamte LV vorhanden';
$this->phrasen['moodle/moodleKursAnlegen']='Moodle Kurs anlegen';
$this->phrasen['moodle/kursbezeichnung']='Kursbezeichnung';
$this->phrasen['moodle/gruppenUebernehmen']='Gruppen übernehmen';
@@ -19,4 +19,9 @@ $this->phrasen['moodle/artIstUnbekannt']='art ist unbekannt';
$this->phrasen['moodle/datenWurdenAktualisiert']='Daten wurden aktualisiert';
$this->phrasen['moodle/fehlerBeiDerLektorenZuordnung']='Fehler bei der Lektorenzuordnung';
$this->phrasen['moodle/fehlerBeiDerStudentenZuordnung']='Fehler bei der Studentenzuordnung';
?>
$this->phrasen['moodle/testkurse24']='Testkurse für Moodle 2.4 - TESTBETRIEB';
$this->phrasen['moodle/klickenSieHierUmTestkursErstellen24']='klicken Sie hier um einen Testkurs für Moodle 2.4 zu erstellen';
$this->phrasen['moodle/kursUebersicht']='Moodle - Kursübersicht';
$this->phrasen['moodle/ungueltigeVersion']='Moodlekurs mit ungültiger Versionsnummer: %s';
?>
+51 -5
View File
@@ -3981,9 +3981,54 @@ if(!@$db->db_query("SELECT 1 FROM public.tbl_service LIMIT 1"))
";
if(!$db->db_query($qry))
echo '<strong>public.tl_service: '.$db->db_last_error().'</strong><br>';
echo '<strong>public.tbl_service: '.$db->db_last_error().'</strong><br>';
else
echo 'Tabelle public.service hinzugefuegt, campus.tbl_zeitaufzeichnung geaendert<br>';
echo 'Tabelle public.tbl_service hinzugefuegt, campus.tbl_zeitaufzeichnung geaendert<br>';
}
// Service zusaetzliche Verknuepfung zu einem Content
if(!@$db->db_query("SELECT content_id FROM public.tbl_service LIMIT 1"))
{
$qry ="ALTER TABLE public.tbl_service ADD COLUMN content_id integer;
ALTER TABLE public.tbl_service ADD CONSTRAINT fk_content_service FOREIGN KEY(content_id) REFERENCES campus.tbl_content(content_id) ON DELETE RESTRICT ON UPDATE CASCADE;
";
if(!$db->db_query($qry))
echo '<strong>public.tbl_service: '.$db->db_last_error().'</strong><br>';
else
echo 'Tabelle public.tbl_service Spalte content_id hinzugefuegt<br>';
}
// Erweiterung der Moodle Tabelle zur Verwaltung von mehreren Moodle Instanzen
if(!@$db->db_query("SELECT * FROM lehre.tbl_moodle_version LIMIT 1"))
{
$qry ="
CREATE TABLE lehre.tbl_moodle_version
(
moodle_version varchar(8) NOT NULL,
bezeichnung varchar(256),
pfad varchar(256)
);
ALTER TABLE lehre.tbl_moodle_version ADD CONSTRAINT pk_moodle_version PRIMARY KEY (moodle_version);
ALTER TABLE lehre.tbl_moodle ADD COLUMN moodle_version varchar(8);
ALTER TABLE lehre.tbl_moodle ADD CONSTRAINT fk_moodle_version_moodle FOREIGN KEY(moodle_version) REFERENCES lehre.tbl_moodle_version(moodle_version) ON DELETE RESTRICT ON UPDATE CASCADE;
INSERT INTO lehre.tbl_moodle_version(moodle_version, bezeichnung, pfad) VALUES('1.9','Moodle 1.9','http://localhost/moodle/');
INSERT INTO lehre.tbl_moodle_version(moodle_version, bezeichnung, pfad) VALUES('2.4','Moodle 2.4','http://localhost/moodle24/');
UPDATE lehre.tbl_moodle SET moodle_version='1.9' WHERE moodle_version is null;
ALTER TABLE lehre.tbl_moodle ALTER COLUMN moodle_version SET NOT NULL;
GRANT SELECT ON lehre.tbl_moodle_version TO vilesci;
GRANT SELECT ON lehre.tbl_moodle_version TO web;
";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_moodle_version: '.$db->db_last_error().'</strong><br>';
else
echo 'Tabelle lehre.tbl_moodle_version hinzugefuegt; Spalte moodle_version zu Tabelle tbl_moodle hinzugefuegt<br>';
}
echo '<br>';
@@ -4079,7 +4124,8 @@ $tabellen=array(
"lehre.tbl_lehrform" => array("lehrform_kurzbz","bezeichnung","verplanen"),
"lehre.tbl_lehrfunktion" => array("lehrfunktion_kurzbz","beschreibung","standardfaktor","sort"),
"lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming"),
"lehre.tbl_moodle" => array("lehrveranstaltung_id","lehreinheit_id","moodle_id","mdl_course_id","studiensemester_kurzbz","gruppen","insertamum","insertvon"),
"lehre.tbl_moodle" => array("lehrveranstaltung_id","lehreinheit_id","moodle_id","mdl_course_id","studiensemester_kurzbz","gruppen","insertamum","insertvon","moodle_version"),
"lehre.tbl_moodle_version" => array("moodle_version","bezeichnung","pfad"),
"lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe"),
"lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en", "sprache"),
"lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id"),
@@ -4149,7 +4195,7 @@ $tabellen=array(
"public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet"),
"public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id"),
"public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"),
"public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz"),
"public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz","content_id"),
"public.tbl_sprache" => array("sprache","locale","flagge","index","content","bezeichnung"),
"public.tbl_standort" => array("standort_id","adresse_id","kurzbz","bezeichnung","insertvon","insertamum","updatevon","updateamum","ext_id", "firma_id"),
"public.tbl_statistik" => array("statistik_kurzbz","bezeichnung","url","r","gruppe","sql","php","content_id","insertamum","insertvon","updateamum","updatevon","berechtigung_kurzbz"),
@@ -4252,4 +4298,4 @@ if (!$result=@$db->db_query($sql_query))
echo 'Attribut '.$fulltablename.'.<strong>'.$fieldnameDB.'</strong> existiert in der DB, aber nicht in diesem Skript!<BR>';
}
}
?>
?>
@@ -23,6 +23,15 @@
// We defined the web service functions to install.
$functions = array(
'fhcomplete_get_course_grades' => array(
'classname' => 'local_fhcompletews_external',
'methodname' => 'get_course_grades',
'classpath' => 'local/fhcompletews/externallib.php',
'description' => 'Get Grades of a course',
'type' => 'read',
'capabilities'=> 'moodle/course:update,moodle/course:viewhiddencourses',
),
'fhcomplete_courses_by_shortname' => array(
'classname' => 'local_fhcompletews_external',
'methodname' => 'get_courses_by_shortname',
+185 -38
View File
@@ -1,5 +1,4 @@
<?php
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
@@ -22,12 +21,147 @@
*/
require_once($CFG->libdir . "/externallib.php");
class local_fhcompletews_external extends external_api {
class local_fhcompletews_external extends external_api
{
/**************************************************
* Webservice get_course_grades
*
* Laedt die Noten eines Kurses
**************************************************/
public static function get_course_grades_parameters()
{
return new external_function_parameters(
array('courseid' => new external_value(PARAM_INT, 'CourseID')), 'ID of the Course'
);
}
/**
* Get course Grades
* @param int courseid
* @return array
*/
public static function get_course_grades($courseid)
{
global $CFG, $DB;
require_once($CFG->dirroot . "/course/lib.php");
require_once($CFG->dirroot.'/grade/export/lib.php');
public static function get_courses_by_shortname_parameters() {
//validate parameter
$params = self::validate_parameters(self::get_course_grades_parameters(),
array('courseid' => $courseid));
$notenart=3; // 2=Prozent; 3=Endnote nach Skala
$gui=array();
$final_id='';
$data = array();
// Kursdaten Laden
if (!$course = $DB->get_record('course', array('id'=>$courseid)))
{
throw new moodle_exception('Course not found', '', '', null, 'The course ' . $courseid . ' is not found');
return false;
}
$id=$course->id;
$kursname=$course->fullname;
$shortname=$course->shortname;
//ODS Notenexport starten
require_login($course);
$context = get_context_instance(CONTEXT_COURSE, $courseid);
require_once($CFG->dirroot.'/grade/export/ods/grade_export_ods.php');
if (!$export = new grade_export_ods($course, 0, 0, false, false, $notenart, 2))
{
throw new moodle_exception('Fehler', '', '', null, "Moodle-Kurs ".$id." ".$shortname." - keine Export Information gefunden");
return false;
}
$grad =$export->columns;
// Im Export sind die Noten fuer alle Abgaben, Quiz, etc enthalten
// Wir brauchen hier nur die Gesamtnote fuer die ganzen Kurs
foreach ($export->columns as $key=>$grade_item)
{
// Gesamtnote hat den itemtype "course"
if($grade_item->itemtype=='course')
{
$final_id=$key;
break;
}
}
if($final_id=='')
{
throw new moodle_exception('Fehler', '', '', null,"Moodle-Kurs ".$id." ".$shortname." - keine Endnote gefunden");
return false;
}
// Liste mit allen Studierenden des Kurses durchlaufen
$geub = new grade_export_update_buffer();
$gui = new graded_users_iterator($export->course, $export->columns, $export->groupid);
$gui->init();
$kursgrad =array();
while ($userdata = $gui->next_user())
{
$user_item=array();
$user = $userdata->user;
$user_item['vorname']=$user->firstname;
$user_item['nachname']=$user->lastname;
$user_item['idnummer']=$user->idnumber;
$user_item['username']=$user->username;
// Aus den vorhanden Noten wird die Endnote fuer den Kurs herausgesucht
if(isset($userdata->grades[$final_id]))
{
$gradestr = $export->format_grade($userdata->grades[$final_id]);
$user_item['note']=$gradestr;
}
$data[]=$user_item;
}
$gui->close();
$geub->close();
if (count($data)==0)
{
throw new moodle_exception('Fehler', '', '', null,"Moodle-Kurs ".$id." ".$shortname." - keine Kurs-Noten Informationen gefunden ");
return false;
}
return $data;
}
/**
* Returns description of method result value
* @return external_description
*/
public static function get_course_grades_returns()
{
return new external_multiple_structure(
new external_single_structure(
array(
'vorname' => new external_value(PARAM_TEXT, 'vorname'),
'nachname' => new external_value(PARAM_TEXT, 'nachname'),
'idnummer' => new external_value(PARAM_TEXT, 'idnummer'),
'username' => new external_value(PARAM_TEXT, 'username'),
'note' => new external_value(PARAM_TEXT, 'note'),
), 'course'
)
);
}
/**************************************************
* Webservice get_courses_by_shortname
*
* Laedt Kurse anhand der Kurzbezeichnung
**************************************************/
public static function get_courses_by_shortname_parameters()
{
return new external_function_parameters(
array('options' => new external_single_structure(
array('shortnames' => new external_multiple_structure(
@@ -45,7 +179,8 @@ class local_fhcompletews_external extends external_api {
* @param array $options
* @return array
*/
public static function get_courses_by_shortname($options) {
public static function get_courses_by_shortname($options)
{
global $CFG, $DB;
require_once($CFG->dirroot . "/course/lib.php");
@@ -63,13 +198,17 @@ class local_fhcompletews_external extends external_api {
//create return value
$coursesinfo = array();
foreach ($courses as $course) {
foreach ($courses as $course)
{
// now security checks
$context = get_context_instance(CONTEXT_COURSE, $course->id);
try {
try
{
self::validate_context($context);
} catch (Exception $e) {
}
catch (Exception $e)
{
$exceptionparam = new stdClass();
$exceptionparam->message = $e->getMessage();
$exceptionparam->shortname = $course->shortname;
@@ -91,7 +230,8 @@ class local_fhcompletews_external extends external_api {
//some field should be returned only if the user has update permission
$courseadmin = has_capability('moodle/course:update', $context);
if ($courseadmin) {
if ($courseadmin)
{
$courseinfo['categorysortorder'] = $course->sortorder;
$courseinfo['idnumber'] = $course->idnumber;
$courseinfo['showgrades'] = $course->showgrades;
@@ -113,7 +253,8 @@ class local_fhcompletews_external extends external_api {
}
if ($courseadmin or $course->visible
or has_capability('moodle/course:viewhiddencourses', $context)) {
or has_capability('moodle/course:viewhiddencourses', $context))
{
$coursesinfo[] = $courseinfo;
}
}
@@ -125,7 +266,8 @@ class local_fhcompletews_external extends external_api {
* Returns description of method result value
* @return external_description
*/
public static function get_courses_by_shortname_returns() {
public static function get_courses_by_shortname_returns()
{
return new external_multiple_structure(
new external_single_structure(
array(
@@ -186,12 +328,21 @@ class local_fhcompletews_external extends external_api {
)
);
}
/**
* Returns description of get_users() parameters.
*
* @return external_function_parameters
* @since Moodle 2.5
*/
/***********************************************************************
* get_users - Laedt User Anhand des Usernamens
* Backport von Moodle 2.5
* Ab Moodle 2.5 sollte dieses Webservice bereits integriert sein
***********************************************************************/
/**
* Returns description of get_users() parameters.
*
* @return external_function_parameters
* @since Moodle 2.5
*/
public static function get_users_parameters() {
return new external_function_parameters(
array(
@@ -221,12 +372,12 @@ It could very slow or timeout. The function is designed to search some specific
}
/**
* Retrieve matching user.
*
* @param array $criteria the allowed array keys are id/lastname/firstname/idnumber/username/email/auth.
* @return array An array of arrays containing user profiles.
* @since Moodle 2.5
*/
* Retrieve matching user.
*
* @param array $criteria the allowed array keys are id/lastname/firstname/idnumber/username/email/auth.
* @return array An array of arrays containing user profiles.
* @since Moodle 2.5
*/
public static function get_users($criteria = array()) {
global $CFG, $USER, $DB;
@@ -345,11 +496,11 @@ It could very slow or timeout. The function is designed to search some specific
}
/**
* Returns description of get_users result value.
*
* @return external_description
* @since Moodle 2.5
*/
* Returns description of get_users result value.
*
* @return external_description
* @since Moodle 2.5
*/
public static function get_users_returns() {
return new external_single_structure(
array('users' => new external_multiple_structure(
@@ -360,12 +511,12 @@ It could very slow or timeout. The function is designed to search some specific
);
}
/**
* Create user return value description.
*
* @param array $additionalfields some additional field
* @return single_structure_description
*/
/**
* Create user return value description.
*
* @param array $additionalfields some additional field
* @return single_structure_description
*/
public static function user_description($additionalfields = array()) {
$userfields = array(
'id' => new external_value(PARAM_INT, 'ID of the user'),
@@ -423,8 +574,6 @@ It could very slow or timeout. The function is designed to search some specific
}
return new external_single_structure($userfields);
}
}
/**
@@ -480,5 +629,3 @@ function can_view_user_details_cap($user, $course = null) {
}
return $result;
}
+2 -2
View File
@@ -12,7 +12,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
$plugin->version = 2013022105; // The (date) version of this module + 2 extra digital for daily versions
$plugin->version = 2013031302; // The (date) version of this module + 2 extra digital for daily versions
// This version number is displayed into /admin/forms.php
// TODO: if ever this plugin get branched, the old branch number
// will not be updated to the current date but just incremented. We will
@@ -20,5 +20,5 @@ $plugin->version = 2013022105; // The (date) version of this module + 2 extra
// display this version number with userdate (dev friendly)
$plugin->requires = 2010112400; // Requires this Moodle version - at least 2.0
$plugin->cron = 0;
$plugin->release = '1.0 (Build: 2013022105)';
$plugin->release = '1.0 (Build: 2013031302)';
$plugin->maturity = MATURITY_STABLE;
+157
View File
@@ -0,0 +1,157 @@
<?php
/* Copyright (C) 2013 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
*/
/*
* Synchronisiert die Lektoren und Studenten der aktuellen MoodleKurse
* wenn kein aktuelles Studiensemester vorhanden ist, wird NICHT Synchronisiert
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/moodle24_course.class.php');
require_once('../../include/moodle24_user.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/mail.class.php');
$db = new basis_db();
$sync_lektoren_gesamt=0;
$sync_studenten_gesamt=0;
$group_updates=0;
$fehler=0;
$message='';
$message_lkt='';
$lektoren=array();
//nur Synchronisieren wenn ein aktuelles Studiensemester existiert damit keine
//Probleme durch die Vorrueckung entstehen
$stsem = new studiensemester();
if($stsem_kurzbz=$stsem->getakt())
{
//nur die Eintraege des aktuellen Studiensemesters syncen
$qry = "SELECT distinct mdl_course_id FROM lehre.tbl_moodle
WHERE studiensemester_kurzbz=".$db->db_add_param($stsem_kurzbz)."
AND moodle_version='2.4'";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$course = new moodle24_course();
if($course->load($row->mdl_course_id))
{
$message_lkt='';
//Lektoren
$mdluser = new moodle24_user();
$mitarbeiter = $mdluser->getMitarbeiter($row->mdl_course_id);
if($mdluser->sync_lektoren($row->mdl_course_id))
{
$sync_lektoren_gesamt+=$mdluser->sync_create;
$group_updates+=$mdluser->group_update;
if($mdluser->sync_create>0 || $mdluser->group_update>0)
{
$message.="\nKurs: $course->mdl_fullname ($course->mdl_shortname):\n".$mdluser->log."\n";
$message_lkt.="\nKurs: $course->mdl_fullname ($course->mdl_shortname):\n".$mdluser->log_public."\n";
}
}
else
{
$message.="\nFehler: $mdluser->errormsg";
$fehler++;
}
//Studenten
$mdluser = new moodle24_user();
if($mdluser->sync_studenten($row->mdl_course_id))
{
$sync_studenten_gesamt+=$mdluser->sync_create;
$group_updates+=$mdluser->group_update;
if($mdluser->sync_create>0 || $mdluser->group_update>0)
{
$message.="\nKurs: $course->mdl_fullname ($course->mdl_shortname):\n".$mdluser->log."\n";
$message_lkt.="\nKurs: $course->mdl_fullname ($course->mdl_shortname):\n".$mdluser->log_public."\n";
}
}
else
{
$message.="\nFehler: $mdluser->errormsg";
$fehler++;
}
foreach ($mitarbeiter as $uid)
{
if(!isset($lektoren[$uid]))
$lektoren[$uid]='';
$lektoren[$uid].=$message_lkt;
}
}
else
{
$message.="\nFehler: in der Tabelle lehre.tbl_moodle wird auf den Kurs $row->mdl_course_id verwiesen, dieser existiert jedoch nicht im Moodle!";
$fehler++;
}
}
if($sync_lektoren_gesamt>0 || $sync_studenten_gesamt>0 || $fehler>0 || $group_updates>0)
{
//Mail an die Lektoren
foreach ($lektoren as $uid=>$message_lkt)
{
if($message_lkt!='')
{
$header = "Dies ist eine automatische Mail!\n";
$header.= "Es wurden folgende Aktualisierungen an Ihren Moodle-Kursen durchgeführt:\n\n";
$to = "$uid@".DOMAIN;
//$to = 'oesi@technikum-wien.at';
$mail = new mail($to, 'vilesci@'.DOMAIN,'Moodle - Aktualisierungen',$header.$message_lkt);
if($mail->send())
echo "Mail wurde an $to versandt<br>";
else
echo "Fehler beim Senden des Mails an $to<br>";
}
}
//Mail an Admin
$header = "Dies ist eine automatische Mail!\n";
$header.= "Folgende Syncros mit den MoodleKursen wurde durchgeführt:\n\n";
$header.= "Anzahl der aktualisierten Lektoren: $sync_lektoren_gesamt\n";
$header.= "Anzahl der aktualisierten Studenten: $sync_studenten_gesamt\n";
$header.= "Anzahl der Fehler: $fehler\n";
$to = MAIL_ADMIN;
//$to = 'oesi@technikum-wien.at';
$mail = new mail($to, 'vilesci@'.DOMAIN,'Moodle Syncro',$header.$message);
if($mail->send())
echo "Mail wurde an $to versandt:<br>".nl2br($header.$message);
else
echo "Fehler beim Senden des Mails an $to:<br>".nl2br($header.$message);
}
else
{
echo 'Alle Zuteilungen sind auf dem neuesten Stand';
}
}
else
{
echo 'Fehler bei Select:'.$qry;
}
}
else
echo "Kein aktuelles Studiensemester vorhanden->kein Syncro";
?>
+9 -7
View File
@@ -24,8 +24,8 @@
* wenn kein aktuelles Studiensemester vorhanden ist, wird NICHT Synchronisiert
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/moodle_course.class.php');
require_once('../../include/moodle_user.class.php');
require_once('../../include/moodle19_course.class.php');
require_once('../../include/moodle19_user.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/mail.class.php');
@@ -45,17 +45,19 @@ $stsem = new studiensemester();
if($stsem_kurzbz=$stsem->getakt())
{
//nur die Eintraege des aktuellen Studiensemesters syncen
$qry = "SELECT distinct mdl_course_id FROM lehre.tbl_moodle WHERE studiensemester_kurzbz='".addslashes($stsem_kurzbz)."'";
$qry = "SELECT distinct mdl_course_id FROM lehre.tbl_moodle
WHERE studiensemester_kurzbz=".$db->db_add_param($stsem_kurzbz)."
AND moodle_version='1.9';";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$course = new moodle_course();
$course = new moodle19_course();
if($course->load($row->mdl_course_id))
{
$message_lkt='';
//Lektoren
$mdluser = new moodle_user();
$mdluser = new moodle19_user();
$mitarbeiter = $mdluser->getMitarbeiter($row->mdl_course_id);
if($mdluser->sync_lektoren($row->mdl_course_id))
@@ -75,7 +77,7 @@ if($stsem_kurzbz=$stsem->getakt())
}
//Studenten
$mdluser = new moodle_user();
$mdluser = new moodle19_user();
if($mdluser->sync_studenten($row->mdl_course_id))
{
$sync_studenten_gesamt+=$mdluser->sync_create;
@@ -154,4 +156,4 @@ if($stsem_kurzbz=$stsem->getakt())
}
else
echo "Kein aktuelles Studiensemester vorhanden->kein Syncro";
?>
?>
+2 -2
View File
@@ -38,7 +38,7 @@
require_once('../../include/functions.inc.php');
require_once('../../include/globals.inc.php');
// ---------------- Moodle Daten Classe
require_once('../../include/moodle_user.class.php');
require_once('../../include/moodle19_user.class.php');
if (!$db = new basis_db())
die('<div style="text-align:center;"><br />MOODLE Datenbank zurzeit NICHT Online.<br />Bitte etwas Geduld.<br />Danke</div>');
@@ -62,7 +62,7 @@
// Datenbankverbindungen zu Moodle und Vilesci und Classen
// ***********************************************************************************************
// Classen Instanzen
$objMoodle = new moodle_user();
$objMoodle = new moodle19_user();
// ***********************************************************************************************
// Verarbeitung einer Moodle-Account Anlageaktion
// ***********************************************************************************************
+3 -3
View File
@@ -40,7 +40,7 @@
require_once('../../include/functions.inc.php');
require_once('../../include/globals.inc.php');
// ---------------- Moodle Daten Classe
include_once('../../include/moodle_course.class.php');
include_once('../../include/moodle19_course.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/studiengang.class.php');
@@ -53,7 +53,7 @@
$content='';
$errormsg=array();
$objMoodle = new moodle_course();
$objMoodle = new moodle19_course();
// ***********************************************************************************************
// POST oder GET Parameter einlesen
@@ -344,4 +344,4 @@
</body>
</html>';
exit($content);
?>
?>
+3 -3
View File
@@ -46,12 +46,12 @@
require_once('../../include/lehreinheit.class.php');
require_once('../../include/lehreinheitgruppe.class.php');
require_once('../../include/lehreinheitmitarbeiter.class.php');
include_once('../../include/moodle_course.class.php');
include_once('../../include/moodle19_course.class.php');
// ***********************************************************************************************
// Datenbankverbindungen zu Moodle und Vilesci und Classen
// ***********************************************************************************************
if (!$objMoodle = new moodle_course())
if (!$objMoodle = new moodle19_course())
die('Fehler beim Oeffnen der Moodleverbindung');
if (!$le_obj = new lehreinheit())
@@ -400,7 +400,7 @@
if (!is_array($arrMoodlekurs) || count($arrMoodlekurs)<1)
return $content;
if (!$objMoodle = new moodle_course())
if (!$objMoodle = new moodle19_course())
die('Fehler beim Oeffnen der Moodleverbindung');
if (!$le_obj = new lehreinheit())
+3 -3
View File
@@ -49,12 +49,12 @@
require_once('../../include/lehreinheit.class.php');
require_once('../../include/lehreinheitgruppe.class.php');
require_once('../../include/lehreinheitmitarbeiter.class.php');
include_once('../../include/moodle_course.class.php');
include_once('../../include/moodle19_course.class.php');
// ***********************************************************************************************
// Datenbankverbindungen zu Moodle und Vilesci und Classen
// ***********************************************************************************************
if (!$objMoodle = new moodle_course())
if (!$objMoodle = new moodle19_course())
die('Fehler beim Oeffnen der Moodleverbindung');
$entfernen=(isset($_REQUEST['entfernen'])?trim($_REQUEST['entfernen']):'');
@@ -625,7 +625,7 @@
return false;
}
if (!$objMoodle = new moodle_course())
if (!$objMoodle = new moodle19_course())
die('Fehler beim Oeffnen der Moodleverbindung');
if (!$le_obj = new lehreinheit())