Я пробую вносить в списки ученики вручную в курсе Moodle
посредством одного Script
но я это не получаю. Я использую функцию role_assign
Moodle
но оно я не функционирует.
Код, который я использую, - следующий:
//obtiene el id del rol "member" que ha sido creado anteriormente
$rolMember = obtenerIdRol ("member");
$rolManager = obtenerIdRol ("manager" );
$contexto = context_course::instance($comunidad_moodle);
foreach ($usuariosUVDotlrn as $usu) {
$userid = null;
$usernameDotln = $usu["username"];
$rolDotln = $usu["rol"];
if($rolDotln == "dotlrn_admin_rel"){
$rolid = $rolManager;
}else if($rolDotln == "dotlrn_member_rel"){
$rolid = $rolMember;
}else{
$rolid = -1;
}
//obtenemos el id del usuario en Moodle
$sql = "SELECT id FROM mdl_user WHERE username = ?";
$resUsu = $DB->get_records_sql($sql, array($usernameDotln));
foreach ( $resUsu as $n ) {
$userid = $n->id;
}
//Comprobamos que el usuario existe en moodle.
if( is_null($userid)){
m("- El usuario: $usernameDotln no existe en la Base de Datos de Moodle");
}else{
//Comprobamos si el usuario pertenece al curso
$enrolled = is_enrolled($contexto, $userid, '', true);
if( !$enrolled){
if($rolid != -1){
$idroleassign = role_assign($rolid , $userid, $contexto);
m("- El usuario: $usernameDotln con id: $userid y rol: $rolid insertado en el curso: $comunidad_moodle");
}else{
m("- El usuario: $usernameDotln con id: $userid y rol: $rolid no esta en el curso: $comunidad_moodle. No se ha encontrado el rol.");
}
}else{
m("- El usuario: $usernameDotln con id: $userid ya pertenece al curso: $comunidad_moodle");
}
}
}
Заметь: функция м ("") берется за то, чтобы показывать текст в консоли
Nota2: функция obtenerIdRol
это следующая:
/**
* Devuelve el id del rol pasado.
*
* @param $rol nombre del rol.
*
* @return id del rol
*/
function obtenerIdRol ($rol ){
global $DB;
$id = null;
//obtenemos el id del rol en Moodle
$sqlrol = "SELECT id FROM mdl_role WHERE shortname = ?";
$roles = $DB->get_records_sql($sqlrol, array($rol));
foreach ( $roles as $r ) {
$id = $r->id;
}
if(is_null($id))
return -1;
else
return $id;
}
Если кто-то знает, как делать это или у него есть какой-то пример или документация, которая могла бы помогать мне, это будет большая помощь для меня.
DespuГ©s искания и тестирования каких-то вещей, я нашел одну soluciГіn, что функционирует, и состоит в instanciar plugin enrol с ручным типом для того, чтобы она asignaciГіn учеников он был сделан в travГ©s из plugin.
cГіdigo quedarГ - в следующей формы:
//obtiene el id del rol "member" que ha sido creado anteriormente
$rolMember = obtenerIdRol ("member");
$rolManager = obtenerIdRol ("manager" );
$contexto = context_course::instance($comunidad_moodle);
// Recuperamos el plugin de enrol manual.
$enrol = enrol_get_plugin('manual');
// Comprobar si la instancia del plugin de enrolment manual está habilitada/existe.
$instance = null;
$enrolinstances = enrol_get_instances($comunidad_moodle, true);
foreach ($enrolinstances as $courseenrolinstance) {
if ($courseenrolinstance->enrol == "manual") {
$instance = $courseenrolinstance;
break;
}
}
if (!empty($instance)) {
foreach ($usuariosUVDotlrn as $usu) {
$userid = null;
$usernameDotln = $usu["username"];
$rolDotln = $usu["rol"];
if($rolDotln == "dotlrn_admin_rel"){
$rolid = $rolManager;
}else if($rolDotln == "dotlrn_member_rel"){
$rolid = $rolMember;
}else{
$rolid = -1;
}
//obtenemos el id del usuario en Moodle
$sql = "SELECT id FROM mdl_user WHERE username = ?";
$resUsu = $DB->get_records_sql($sql, array($usernameDotln));
foreach ( $resUsu as $n ) {
$userid = $n->id;
}
//Comprobamos que el usuario existe en moodle.
if( is_null($userid)){
m("- El usuario: $usernameDotln no existe en la Base de Datos de Moodle");
}else{
//Comprobamos si el usuario pertenece al curso
$enrolled = is_enrolled($contexto, $userid, '', true);
if( !$enrolled){
if($rolid != -1){
$enrol->enrol_user($instance, $userid, $rolid, time(), 0, ENROL_USER_ACTIVE);
m("- El usuario: $usernameDotln con id: $userid y rol: $rolid insertado en el curso: $comunidad_moodle");
}else{
m("- El usuario: $usernameDotln con id: $userid y rol: $rolid no esta en el curso: $comunidad_moodle. No se ha encontrado el rol.");
}
}else{
m("- El usuario: $usernameDotln con id: $userid ya pertenece al curso: $comunidad_moodle");
}
}
}
}