2016-10-13 1 views
0

Derzeit in meinem System haben wir 4 Rollen: Kurs-Admin, Trainer, Student, Corporate User.Eine Rolle basierend auf nur der Benutzer-ID in Moodle 3.0

Nach der Anmeldung müssen wir zum benutzerdefinierten Dashboard umleiten, wo wir benutzerdefinierte Funktionen anzeigen.

Also frage ich mich, wie wir das implementieren können, wenn wir nur Benutzer-ID haben.

bekam ich Option basiert auf Kurs

$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); 

if (!has_capability('moodle/course:viewhiddensections', $coursecontext)) { 

echo "is Student<br/>"; 
} 

Aber in meinem Fall haben wir Benutzer-ID nur. Wie können wir das umsetzen? Ich hoffe, dass Moodle nicht so kompliziert ist, solch einen kleinen Scheck zu machen.

Antwort

0

Sie können die Benutzerfunktionen überprüfen, indem Sie ein drittes Argument an has_capability übergeben.

if (!has_capability('moodle/course:viewhiddensections', $coursecontext, $userid)) { 
    ... 
} 

Beachten Sie, dass mit Moodle 3.0 sollten Sie den Kontext bekommen mit:

$context = context_course::instance($courseid); 

Wenn Sie nicht im Rahmen eines Kurses sind, müssen die Rollen dann im Systemkontext zugeordnet werden. Um den Systemkontext zu erhalten, können Sie context_system::instance() verwenden.

Schließlich, wenn Sie Ihre Rollen einzeln in jedem Kurs und nicht im System zuweisen (was ich vermute, dass Sie tun), gibt es keine einfache Möglichkeit zu bestimmen, welcher Typ von Benutzer angemeldet ist. In diesem Fall werden alle Benutzer sei gleich, bis sie in einen Kurs kommen. Um die Rollen des Benutzers zu messen, müssten Sie jeden Kurskontext einzeln überprüfen.

Wenn ein Benutzer in Ihrem Szenario nicht student in Kurs A und trainer in Kurs B sein kann, dann könnten Sie alle Ihre Schüler in einer Kohorte hinzufügen Student und für jede andere Rolle das gleiche tun. Bei der Anmeldung können Sie dann überprüfen, in welcher Kohorte sie sich befinden. Möglicherweise können Sie sogar das Kohorten-Synchronisierungs-Plugin verwenden, sodass Sie die Anmeldungen nicht mehr verwalten müssen.

Verwandte Themen