2012-05-14 3 views
8

Làm cách nào để có được ngữ cảnh/vai trò của người dùng đã đăng nhập trong moodle? Tôi đang cố triển khai một khối nhận thức ngữ cảnh. Khối sẽ đề xuất các câu đố phù hợp với người dùng dựa trên tâm trạng của họ.Moodle cách tìm hiểu vai trò của người dùng đã đăng nhập

Vai trò có thể là giáo viên, sinh viên, trợ lý giáo viên hoặc quản trị viên. Tôi đã tìm thấy các hàm get_context_instance() & has_compatibility(), nhưng tôi không biết cách sử dụng chúng cho mục đích này.

+0

Vai trò và bối cảnh là một trong những khái niệm phức tạp nhất trong Moodle, nhưng phiên bản ngắn gọn là một bối cảnh chung áp dụng cho một khóa học duy nhất, một danh mục duy nhất hoặc toàn bộ trang web. Vai trò được cấp trong bối cảnh đó và gán khả năng cho người dùng trong ngữ cảnh đó. –

Trả lời

3

Trong moodle, vai trò dựa trên ngữ cảnh. Tôi nghĩ đoạn mã này sẽ hữu ích cho bạn.

toàn cầu $ COURSE, $ USER;

$context = get_context_instance(CONTEXT_COURSE,$COURSE->id); 

if (has_capability('moodle/legacy:student', $context, $USER->id, false)) { 
echo "Student"; 
} 

if (has_capability('moodle/legacy:editingteacher', $context, $USER->id, false)) { 
echo "is Teacher<br/>"; 
} 
if (has_capability('moodle/legacy:admin', $context, $USER->id, false)) { 
echo "is ADMIN<br/>"; 
} 

Gấu nhớ rằng nó là hoàn toàn có thể (nhưng không chắc) để có một trang web Moodle mà không có sự Sinh viên mặc định và vai trò của giáo viên

+0

Mã này là tốt, nhưng có một vấn đề. Vì tôi không ở chế độ xem/khóa học nên tôi đang ở trang chủ và tôi muốn tìm hiểu vai trò là gì. điều này sẽ không hoạt động – Ehsan

9
$context = get_context_instance (CONTEXT_SYSTEM); 
$roles = get_user_roles($context, $USER->id, false); 
$role = key($roles); 
$roleid = $roles[$role]->roleid; 

nó hoạt động với tôi

6

Trong Moodle 2. x bạn có thể sử dụng hàm get_user_roles và điều này sẽ trả về danh sách các vai trò được gán cho một người dùng cụ thể trong ngữ cảnh của khóa học hoặc trang web hoặc mô-đun.

$context = get_context_instance(CONTEXT_COURSE, $courseid, true); 
$roles = get_user_roles($context, $USER->id, true); 

Bạn cũng có thể nhận vai trò trong ngữ cảnh của mô-đun.

$context = get_context_instance(CONTEXT_MODULE, $cm->id, true); 
$roles = get_user_roles($context, $USER->id, true); 
1

Bạn có thể kiểm tra mà vai trò một người dùng có trong các cách sau đây:

if (user_has_role_assignment($user1->id, $roleid)) 
    echo "User is a teacher in some course"; 

Vai trò id của một giáo viên thường là 3, và vai trò của id của một học sinh thường là 5, nhưng bạn có thể kiểm tra điều này xem bảng trong Quản trị trang web-> Người dùng -> Quyền -> Xác định vai trò

Xin lưu ý rằng một người dùng có thể có nhiều vai trò khác nhau. Hàm user_has_role_assignment có vẻ như kiểm tra những vai trò nào mà anh ta có hệ thống.

8

kiểm tra user là admin hay không

$admins = get_admins(); 
$isadmin = false; 
foreach($admins as $admin) { 
    if ($USER->id == $admin->id) { 
     $isadmin = true; 
     break; 
    } 
} 

sử dụng kết quả cho các chức năng

if ($isadmin) { 
    echo "you are an admin";  
} else { 
    echo "you are not an amidn"; 
}