diff --git a/cis/private/lehre/lector_choice.php b/cis/private/lehre/lector_choice.php
index e3ce95b3a..823e02863 100644
--- a/cis/private/lehre/lector_choice.php
+++ b/cis/private/lehre/lector_choice.php
@@ -125,6 +125,7 @@
if(!$is_berechtigt)
die('Sie haben keine Berechtigung fuer diesen Bereich');
+ echo 'ACHTUNG: Der Studentenupload steht nur noch bis zum Ende des Wintersemesters 2008 zur Verfügung
';
echo "
';
}
echo '';
@@ -296,15 +359,27 @@ echo '';
echo 'Vorhandene Moodle Kurse für diese LV';
if(!$mdl_course->getAll($lvid, $stsem))
echo $mdl_course->errormsg;
-echo ' ';
+echo '';
echo ' | ';
-
-
+echo '
';
+echo 'Testkurse
';
+$mdlcourse = new moodle_course($conn, $conn_moodle);
+if($mdlcourse->loadTestkurs($lvid, $stsem))
+{
+ echo ''.$mdlcourse->mdl_fullname.'';
+}
+else
+{
+ echo "klicken Sie hier um einen Testkurs zu erstellen";
+}
echo '
diff --git a/cis/public/bibliothek_elektronischeressourcen.html b/cis/public/bibliothek_elektronischeressourcen.html
index 78445d25d..cffea699c 100644
--- a/cis/public/bibliothek_elektronischeressourcen.html
+++ b/cis/public/bibliothek_elektronischeressourcen.html
@@ -52,6 +52,8 @@
Datenbanken und Zeitschriften mit medizinischem Schwerpunkt
+ Wikibooks
+
diff --git a/include/moodle_course.class.php b/include/moodle_course.class.php
index 79ff330c0..7dc1d77ba 100644
--- a/include/moodle_course.class.php
+++ b/include/moodle_course.class.php
@@ -37,6 +37,7 @@ class moodle_course
var $studiensemester_kurzbz;
var $insertamum;
var $insertvon;
+ var $gruppen;
//Moodle Attribute
var $mdl_fullname;
@@ -124,6 +125,7 @@ class moodle_course
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
+ $obj->gruppen = ($row->gruppen=='t'?true:false);
$qry_mdl = "SELECT * FROM public.mdl_course WHERE id='".addslashes($row->mdl_course_id)."'";
if($result_mdl = pg_query($this->conn_moodle, $qry_mdl))
@@ -244,14 +246,15 @@ class moodle_course
}
$qry = 'BEGIN; INSERT INTO lehre.tbl_moodle(mdl_course_id, lehreinheit_id, lehrveranstaltung_id,
- studiensemester_kurzbz, insertamum, insertvon)
+ studiensemester_kurzbz, insertamum, insertvon, gruppen)
VALUES('.
$this->addslashes($this->mdl_course_id).','.
$this->addslashes($this->lehreinheit_id).','.
$this->addslashes($this->lehrveranstaltung_id).','.
$this->addslashes($this->studiensemester_kurzbz).','.
$this->addslashes($this->insertamum).','.
- $this->addslashes($this->insertvon).');';
+ $this->addslashes($this->insertvon).','.
+ ($this->gruppen?'true':'false').');';
if(pg_query($this->conn, $qry))
{
@@ -725,4 +728,252 @@ class moodle_course
}
return $courses;
}
+
+ // ***************************************************
+ // * 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
+ // ***************************************************
+ 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=".($gruppen?'true':'false')." WHERE moodle_id='".addslashes($moodle_id)."'";
+
+ if(pg_query($this->conn, $qry))
+ {
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Update';
+ return false;
+ }
+ }
+
+ // ********************************
+ // * Legt einen Testkurs an
+ // ********************************
+ function createTestkurs($lehrveranstaltung_id, $studiensemester_kurzbz)
+ {
+ pg_query($this->conn_moodle, 'BEGIN;');
+
+ //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='$lehrveranstaltung_id'";
+
+ if($result = pg_query($this->conn, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $semester = $row->semester;
+ $stg = $row->stg;
+ }
+ else
+ {
+ pg_query($this->conn_moodle, 'ROLLBACK');
+ $this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
+ return false;
+ }
+ }
+ else
+ {
+ pg_query($this->conn_moodle, 'ROLLBACK');
+ $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'))
+ echo "
Fehler beim Anlegen der Testkurskategorie";
+ }
+ //StSem Categorie holen
+ if(!$id_stsem = $this->getCategorie($studiensemester_kurzbz, $id_testkurs))
+ {
+ if(!$id_stsem = $this->createCategorie($studiensemester_kurzbz, $id_testkurs))
+ echo "
$this->errormsg";
+ }
+
+ //CourseCategorie Context holen
+ $this->getContext(40, $id_stsem);
+
+ //Eintrag in tbl_mdl_course
+ $qry = "INSERT INTO public.mdl_course(category, sortorder, fullname, shortname, format, showgrades, newsitems, enrollable)
+ VALUES (".$this->addslashes($id_stsem).", (SELECT max(sortorder)+1 FROM public.mdl_course), ".$this->addslashes($this->mdl_fullname).", ".
+ $this->addslashes($this->mdl_shortname).",'topics', 1, 5, 0);";
+
+ if($result = pg_query($this->conn_moodle, $qry))
+ {
+ $qry = "SELECT currval('mdl_course_id_seq') as id";
+ if($result = pg_query($this->conn_moodle, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $this->mdl_course_id = $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
+ {
+ pg_query($this->conn_moodle, 'ROLLBACK');
+ $this->errormsg = 'Fehler beim INSERT';
+ return false;
+ }
+
+ //zum vorherigen Pfad die aktuelle id hinzufuegen
+ $path = "(SELECT '$this->mdl_context_path' || '/' || currval('mdl_context_id_seq'))";
+ //vorherige tiefe um 1 erhoehen
+ $depth = $this->mdl_context_depth+1;
+
+ //Context eintragen
+ $qry = "INSERT INTO public.mdl_context(contextlevel, instanceid, path, depth) VALUES('50', ".
+ $this->addslashes($this->mdl_course_id).",".$path.",".$this->addslashes($depth).");";
+
+ if(pg_query($this->conn_moodle, $qry))
+ {
+ $qry = "SELECT currval('mdl_context_id_seq') as id";
+ if($result = pg_query($this->conn_moodle, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $this->mdl_context_id = $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
+ {
+ pg_query($this->conn_moodle, 'ROLLBACK');
+ $this->errormsg = 'Fehler beim INSERT';
+ return false;
+ }
+
+ //Bloecke hinzufuegen
+ $qry =
+ "INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(20, $this->mdl_course_id, 'course-view', 'l', 0, 1);". //Teilnehmer
+ "INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(1, $this->mdl_course_id, 'course-view', 'l', 1, 1);". //Aktivitäten
+ "INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(25, $this->mdl_course_id, 'course-view', 'l', 2, 1);". //Forumssuche
+ "INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(2, $this->mdl_course_id, 'course-view', 'l', 3, 1);". //Admin
+ "INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(9, $this->mdl_course_id, 'course-view', 'l', 4, 1);". //Kursliste
+ "INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(18, $this->mdl_course_id, 'course-view', 'r', 0, 1);". //Neueste Nachrichten
+ "INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(8, $this->mdl_course_id, 'course-view', 'r', 1, 1);". //Kalender / Bald aktuell...
+ "INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(22, $this->mdl_course_id, 'course-view', 'r', 2, 1);"; //Neueste Aktivitäten
+
+ if(!pg_query($this->conn_moodle, $qry))
+ {
+ pg_query($this->conn_moodle, 'ROLLBACK');
+ $this->errormsg = 'Fehler beim INSERT der Bloecke';
+ return false;
+ }
+ else
+ {
+ pg_query($this->conn_moodle, 'COMMIT');
+ return true;
+ }
+ }
+
+ // ******************************************************
+ // * Laedt den Testkurs zu dieser Lehrveranstaltung
+ // * @param lehrveranstaltung_id
+ // * studiensemester_kurzbz
+ // * @return ID wenn gefunden, false wenn nicht vorhanden
+ // ******************************************************
+ 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='".addslashes($lehrveranstaltung_id)."'";
+
+ if($result = pg_query($this->conn, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $shortname = strtoupper($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;
+ }
+
+ $qry = "SELECT id, fullname, shortname FROM public.mdl_course WHERE shortname='".addslashes($shortname)."' AND category='$id_stsem' LIMIT 1";
+
+ if($result = pg_query($this->conn_moodle, $qry))
+ {
+ if($row = pg_fetch_object($result))
+ {
+ $this->mdl_fullname = $row->fullname;
+ $this->mdl_shortname = $row->shortname;
+ $this->mdl_course_id = $row->id;
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Es wurde kein Testkurs gefunden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Abfragen der Kurse';
+ return false;
+ }
+ }
}
\ No newline at end of file
diff --git a/include/moodle_user.class.php b/include/moodle_user.class.php
index 8394632b3..83bde9ba6 100644
--- a/include/moodle_user.class.php
+++ b/include/moodle_user.class.php
@@ -112,30 +112,45 @@ class moodle_user
return $mitarbeiter;
}
}
+
// ************************************************
// * 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
// ************************************************
- function sync_lektoren($mdl_course_id)
+ function sync_lektoren($mdl_course_id, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
- $qry = "SELECT
- mitarbeiter_uid
- FROM
- lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id)
- WHERE
- 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
- tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
- AND mdl_course_id='".addslashes($mdl_course_id)."'";
+ 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
+ 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
+ tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
+ AND mdl_course_id='".addslashes($mdl_course_id)."'";
+ }
$mitarbeiter='';
if($result_ma = pg_query($this->conn, $qry))
{
@@ -234,14 +249,14 @@ class moodle_user
{
//Studentengruppen laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
- studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz
+ 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
mdl_course_id='".addslashes($mdl_course_id)."'
UNION
SELECT
- studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz
+ 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)
@@ -261,6 +276,9 @@ class moodle_user
while($row_std = pg_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
@@ -348,27 +366,29 @@ class moodle_user
}
//Gruppenzuteilung
- //Schauen ob die Gruppe vorhanden ist
- if(!$groupid = $this->getGroup($mdl_course_id, $gruppenbezeichnung))
+ if($gruppensync)
{
- //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";
- }
-
+ //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";
+ }
+ }
}
}
}
@@ -668,4 +688,57 @@ class moodle_user
}
}
+ // *******************************************************
+ // * Teilt die TestStudenten zu einem Testkurs zu
+ // * @param mdl_course_id ID des Moodle Kurses
+ // *******************************************************
+ function createTestStudentenZuordnung($mdl_course_id)
+ {
+ //Context des Kurses holen
+ $mdlcourse = new moodle_course($this->conn, $this->conn_moodle);
+ 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;
+ }
}
\ No newline at end of file
diff --git a/include/tw/cis_menu_lv.inc.php b/include/tw/cis_menu_lv.inc.php
index f4156f312..2b656b688 100644
--- a/include/tw/cis_menu_lv.inc.php
+++ b/include/tw/cis_menu_lv.inc.php
@@ -480,8 +480,8 @@
';