QUERY PARA INSERTAR Y ENROLAR A CURSOS USUARIOS

QUERY PARA INSERTAR Y ENROLAR A CURSOS USUARIOS

de Marlon Orozco -
Número de respuestas: 10

Estimados, estoy tratando de hacer un query que me permita hacer un insert (por medio d eun formulario) de usuarios a la BD, y a la ves enrolarlo en un curso (por medio del id del curso o contexto)


tengo esto:

INSERT INTO mdl_user (tipo, lang, firstname, mnethostid,  confirmed, lastname, fnacimiento, fecha, sexo, dui, profesion, country, depto, municipio, address, email, username, password) VALUES (%s,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",


y el query para enrolar al curso

INSERT INTO mdl_role_assignments(roleid, contextid, userid) VALUES (%s, %s, %s)",
                      GetSQLValueString($_POST['testudiantes'] = $testudiante, "int"),
                    GetSQLValueString($_GET['cursoId']=$cU, "int"),
                    GetSQLValueString($row_Af['id'], "int"));


Pero no se enrola el usuario, en teoría reviso la BD y hace el insert de enrolamiento en la tabla mdl_role_assignments, pero no se activa  el usuario en el curso...


trabajo con la version 2.6

NOTA: en la version 1.9 si me funciona perfectamente


GRACIAS compañeros.

Promedio de valoraciones: -
En respuesta a Marlon Orozco

Re: QUERY PARA INSERTAR Y ENROLAR A CURSOS USUARIOS

de Miguel Rubio -
Imagen de Personas Certificadas en Creación de Cursos Moodle

Hola:

De la versión 1.9 a la 2.x las tablas han cambiado bastante. Simplemente creo que son como 100 tablas más en Moodle 2.x así que dudo que la mitad de queries de Moodle 1.9 tengan alguna utilidad en Moodle 2.x

No te puedo apoyar con tu duda acerca de tu query que necesitas pero no entiendo por qué no lo haces con archivos CSV ya que (para mí) es mucho más sencillo y en un solo paso das de alta tus usuarios, los matriculas hasta a 3 cursos y los puedes agregar hasta a 3 cohortes.

Aquí está toda la información -> https://docs.moodle.org/all/es/Subir_usuarios

Saludos.

En respuesta a Marlon Orozco

Re: QUERY PARA INSERTAR Y ENROLAR A CURSOS USUARIOS

de Tulix Velásquez -

realmente no recomiendo realizar esa accion


prefiero trabajar con el API


$user = $DB->get_record('user', array('username' => $userid), '*', MUST_EXIST);

//echo $user->username;

$userid = $user->id; // obtengo el id del usuario

//$roleid el id del rol, si no me equivoco en los alumnos es 5

check_enrol($shortname,$userid, $roleid, $enrolmethod = 'manual'); //invocas el proceso para enrolar 


-------------------------------------------------------------------------------------------------------

function check_enrol($shortname, $userid, $roleid, $enrolmethod = 'manual'){

    global $DB;

    $user = $DB->get_record('user', array('id' => $userid, 'deleted' => 0), '*', MUST_EXIST);

    $course = $DB->get_record('course', array('shortname' => $shortname), '*', MUST_EXIST);

    $context = context_course::instance($course->id);

    if (!is_enrolled($context, $user)) {

        $enrol = enrol_get_plugin($enrolmethod);

        if ($enrol === null) {

            return false;

        }

        $instances = enrol_get_instances($course->id, true);

        $manualinstance = null;

        foreach ($instances as $instance) {

            if ($instance->name == $enrolmethod) {

                $manualinstance = $instance;

                break;

            }

        }

        if ($manualinstance !== null) {

            $instanceid = $enrol->add_default_instance($course);

            if ($instanceid === null) {

                $instanceid = $enrol->add_instance($course);

            }

            $instance = $DB->get_record('enrol', array('id' => $instanceid));

        }

        $enrol->enrol_user($instance, $userid, $roleid);

    }

    return true;

}


En respuesta a Tulix Velásquez

Re: QUERY PARA INSERTAR Y ENROLAR A CURSOS USUARIOS

de Marlon Orozco -

Gracias Tulix, estoy tratando d ecomprender como se trabaja con las API, y poder aplicar tu código para hacer un insert de usuarios usando mi formularios externos


Tienes alguna documentación como iniciar API en moodle?


Un saludo y gracias por sus aportes

En respuesta a Marlon Orozco

Re: QUERY PARA INSERTAR Y ENROLAR A CURSOS USUARIOS

de Roberto Martínez -

Hola, 

La api de moodle es muy fácil de usar, y tiene métodos para crear, modificar, eliminar, enrolar etc. usuarios este es el que mas he usado, solo es necesario activar los servicios web y crear un token para los mismos; lo demás es encontrar la estructura de la petición del servicio web. si gustan les puedo proporcionar una estructura básica para creación de usuarios sonrisa

En respuesta a Roberto Martínez

Re: QUERY PARA INSERTAR Y ENROLAR A CURSOS USUARIOS

de Marlon Orozco -

Roberto gracias y oportuna tu ayuda,


revisaré el adjunto y les consulto.


Muchas gracias

En respuesta a Marlon Orozco

Re: QUERY PARA INSERTAR Y ENROLAR A CURSOS USUARIOS

de Marlon Orozco -

Estimados ,

quisiera hacer un pequeño ejericio utilizando la API de Moodle, ruego puedan orientarme como hacer un insert de usuarios (QUERY):

por ejemplo: ¿cuales archivos instanciar?, como instancio o invoco la API de moodle a mis ficheros .php?

Ya que yo estoy haciendo directamente con un query, tal como lo escribì en mi post de inicio.



Mil gracias


En respuesta a Roberto Martínez

Re: QUERY PARA INSERTAR Y ENROLAR A CURSOS USUARIOS

de Carlos Vera -
Yo tengo el problema que debo crear un token para cada usuario manualmente; no hay una forma de que todos los "alumnos" tengan los permisos?

Gracias.