Kursersteller plötzlich in allen Kursen!!

Kursersteller plötzlich in allen Kursen!!

von Wolfgang Erber -
Anzahl Antworten: 4
Liebe Mitmoodlist(inn)en,

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
Mittelwert:  -
Als Antwort auf Wolfgang Erber

Re: Kursersteller plötzlich in allen Kursen!!

von Maik Riecken -

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

Als Antwort auf Wolfgang Erber

Re: Kursersteller plötzlich in allen Kursen!!

von Wolfgang Huber -

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

Als Antwort auf Wolfgang Huber

Re: Kursersteller plötzlich in allen Kursen!!

von André Krüger -
Wie von Maik schon bemerkt hat man in der Version 1.7. keine Möglichkeit dies zu ändern. Dies ist erst wieder mit Version 1.8. möglich.
Als Antwort auf Wolfgang Erber

Re: Kursersteller plötzlich in allen Kursen!!

von Gerhard Schwed -
Das Problem hat mich bei Version 1.7 auch etwas genervt.

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.php
Die 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!