Hola Gustavo
la relacion no es directa pero pasa por un par de relaciones entre tablas :
al principio estan los cursos en la tabla prefix_course como supongo que viste.
los usuarios estan tambien como evidente en la tabla prefix_user. A un usuario se le ve attribuido un papel (role) para un contexto especifico. Esta relacion esta puesta en la tabla prefix_role_assignements, asociando un usuario (userId), un papel (roleId) y un contexto. El contexto puede ser a diversos niveles : un contexto de nivel 10 significa una aplicacion en toda la plataforma, un contexto de nivel 50 significa un espacio de curso.
La tabla prefix_context va a hacer la relacion entre el contexto y el representante (instanceId) del nivel adecuado : el type de objet es implicita, pro eso no se nota que el dato instanceId apunta directamente à un id de curso cuando el nivel de contexte es 50.
Para resumir :
[prefix_user] -> userId -> [prefix_role_assignements] -> contextId -> [prefix_context] -> instanceId (cuando level is 50) -> [course]
Es el papel atado a la secunda relacion que determina las capacidades del usuario en el espacio en que esta actualmente.
Todo esto se utiliza en el codigo a traves la interfaz de programacion que esta en varias librerias de interogacion del modelo de datos de Moodle como get_course_users(), get_course_teachers(), etc. las cuales se encuentran (facilmente, casi...) en phpdocs.moodle.org (la extraccion de la documentacion automatizada por la herramienta phpdocs).
Nota : perdona pero no tengo acentos (teclado frances).
Una pregunta más (aunque quizás este pidiendo mucho), me gustaría saber como puedo obtener la cantidad de tiempo que un usuario a estado en un curso determinado. O al menos una idea orientativa.
Saludos y gracias nuevamente!
mira al bloque (estatisticas usuario) user_stats (en la base de datos de plug-ins) que desarrolle hace un par de semanas. Aqui puede uno saber cuanto tiempo paso en cada curso, y (tengo los datos peros no son visibles) cada actividad.
El bloque se dedico al principio a dar a cada uno su propio tiempo, y no hace mas que eso por razones deontologicas. Pero si se necesita puedes partir de esta base para enlargar la vista de este tiempo a un usuario otro, viniendo como administrador o profe.
Dame informe si conviene...
Saludos.
No encuentro el bloque que dices, tienes la url?
Gracias
Hola buenas, tengo un problema relacionado con este foro, necesito hacer una query en la que diciendo un id de usuario me responda con los cursos al que este esta matriculado. Cualquier ayuda es de agradecer puesto que no entiendo bien la estructura de la base de datos y en que punto se relaciona id alumno y curso. Muchas gracias.
Mejor aun necesitaria realizar una consulta con username no con id puesto que estoy extrayendo el username de otros servidores moodle, y en cada uno de ellos el id de los usuarios cambia.
select c.shortname from mdl_course c join mdl_context ctx on (ctx.instanceid = c.id and ctx.contextlevel=50) join mdl_role_assignments ra on (ra.contextid = ctx.id) join mdl_user u on (ra.userid = u.id) where u.username='YY' and u.mnethostid=XX;
donde YY es el username del usuario a consultar y XX es el valor de $CFG->mnet_localhost_id. La consulta te devuelte el nombre corto de los cursos en los que tiene algún rol asignado. Si necesitas que tenga un rol en concreto, deberás cruzar la tabla mdl_role_assignments con la tabla mdl_role usando la columna roleid de la primera con la columna id de la segunda, e indicando el nombre corto del rol como condición para la coumna shortname de la segunda tabla.
Saludos. Iñaki.
Estimado Valery, te molesto para ver si me podes ayudar.
Quiero llevar un seguimiento de mis alumnos describiendo distintos niveles de producciones, características personales, etc. etc.
Mi idea es:
1) armar un curso,
2) matricular solo a los directivos y psicopegagogos de la escuela.
3) Utilizar la actividad --> Base de datos.
De esta forma solo los directivos podrían acceder a esta información, esta bien?
Mi pregunta principal es como hacer para que la base de datos pueda crearla para que pueda hacer consultas y búsqueda por alumno, es decir que pueda seleccionar de la base de usuarios los alumnos que necesite y sobre el mismo crear campos de texto para por ejemplo poner diferentes comentarios.
Por ejemplo:
Seleccionar alumno: …………
Campo características 1: ……..
Campo características 2: ……..
De esta forma ir registrando la información por cada alumno y que solo lo puedan ver los directivos matriculados. Esta información también es importante para el gabinete de psicopedagogía.
Desde ya muchas gracias y espero se pueda hacer a través de esta actividad o bien si tenes otra forma de sugerir como agregar comentarios a los alumnos sin que ellos puedan verlos, solo los autorizados.
Abrazo.
Jose