seit dem jüngsten Moodle-update finden sich in allen Kursen auf einmal sämtliche in unserer Installation tätigen Kursersteller - obwohl sie sich gar nicht selbst in den jeweiligen Kurs eingeschrieben haben. Zwar kann man in einem Auswahlfenster wählen, ob "alle", "Kursteilnehmer" etc. angezeigt werden sollten. Dieses Phänomen als Grundeinstellung ist aber wirklich ganz außergewöhnlich unsinnig. Gibt es eine Möglichkeit, dies abzustellen?
Mit vielen verzweifelten Grüßen
Wolfgang Erber
Hallo Wolfgang,
Das ist kein Bug sondern ein streitbares Feature. Eine Wiederherstellung der alten Kurserstellerrolle (so wie früher) habe ich noch nicht hinbekommen. Spiele am besten dein Backup ein, welches du vor dem Update angefertigt hast oder warte auf Moodle 1.8 - da soll das besser gelöst sein.
Du kannst Kursersteller auf einzelne Kategorien beschränken, indem du sie im Adminmenu als Kursersteller austrägst und im jeweiligen Kursbereich über den Link oben rechts ("Rollen zuweisen") wieder einträgst. Trotzdem erlangen sie nicht di alten Rechte zurück.
Gruß,
Maik
Ich habe das Auswahlfenster mit dem alle Kursteilnehmer angezeigt oder nicht verzweifelt gesucht zu finden, leider ohne Erfolg. Auch ich habe das Problem, dass alle Kursersteller bei den Kursen angezeigt werden. Wo ist das Auswahlfenster zu finden?
Wolfgang Huber
Ich habe mir daher einmal die Php-Skripts und die Datenbank genauer angesehen und eine Lösung gefunden.
Die Auflistung der Rollen und der TeilnehmerInnen geschieht durch das Skript /user/index.phpDie Zeilen 258 - 273 sind relevant:
if ($roles = get_roles_used_in_context($context)) {
// We should exclude "admin" users (those with "doanything" at site level) because
// Otherwise they appear in every participant list
$sitecontext = get_context_instance(CONTEXT_SYSTEM);
$doanythingroles = get_roles_with_capability('moodle/site:doanything', CAP_ALLOW, $sitecontext);
foreach ($roles as $role) {
if (isset($doanythingroles[$role->id])) { // Avoid this role (ie admin)
unset($roles[$role->id]);
continue;
}
$rolenames[$role->id] = strip_tags(format_string($role->name)); // Used in menus etc later on
}
}
Aus dem Kommentar geht hervor, dass Admins ausgeschlossen werden.
Die Abfrage geschieht durch die Funktion "get_roles_with_capability".
Wenn man diese Zeile ergänzt durch die Abfrage nach Kurserstellern, so werden auch letztere ausgeschlossen.
Es reicht also, die Zeile 264 (beginnend mit $doanythingroles ...) zu erweitern:
$doanythingroles = get_roles_with_capability('moodle/site:doanything', CAP_ALLOW, $sitecontext)
+ get_roles_with_capability('moodle/legacy:coursecreator', CAP_ALLOW, $sitecontext);
Fertig!