Я не могу внести в списки ученики вручную с Рукописным шрифтом в Moodle

Я пробую вносить в списки ученики вручную в курсе 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;
}

Если кто-то знает, как делать это или у него есть какой-то пример или документация, которая могла бы помогать мне, это будет большая помощь для меня.

4
задан 20.08.2019, 09:44
1 ответ

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");
              }
         } 
     }                              
}
3
ответ дан 03.12.2019, 20:09
  • 1
    он мне кажется совершенным, что ты имел ответ: D Creo, который нуждается в 2 d и # 237; схвати, чтобы принимать твой собственный ответ, помни что делай это, чтобы сотрудничать со здоровьем сайта: D Привет, и что продолжили их и #233; xitos с moodle! –  fredyfx 30.09.2016, 20:58
  • 2
    Большое спасибо!! я жду что подайте ему мой ответ на м и # 225; s люди! –  Joacer 01.10.2016, 17:53