General developer forum

 
 
Picture of Gustavo Burgi
relacion alumno - curso en la base de datos
 
Hola, quisiera saber donde, o como, se guarda la realción entre un usuario y un curso.

Es decir por ejemplo el usuario con id=5 , en que cursos mantiene una relacion, supongamos alumno, profesor....

la version de moodle es Moodle 1.7+

Gracias
 
Average of ratings: -
Picture of Valery Fremaux
Re: relacion alumno - curso en la base de datos
Group DevelopersGroup Translators

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).    

 
Average of ratings:Useful (1)
Picture of Gustavo Burgi
Re: relacion alumno - curso en la base de datos
 
Muchas Gracias Valery, excelente respuesta.

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!
 
Average of ratings: -
Picture of Valery Fremaux
Re: relacion alumno - curso en la base de datos
Group DevelopersGroup Translators

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.

 
Average of ratings: -
Picture of Gustavo Burgi
Re: relacion alumno - curso en la base de datos
 
Valery, gracias nuevamente.

No encuentro el bloque que dices, tienes la url?

Gracias
 
Average of ratings: -
Picture of Valery Fremaux
Re: relacion alumno - curso en la base de datos
 
Average of ratings: -
Picture of Miguel Rodríguez
Re: relacion alumno - curso en la base de datos
 

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.

 
Average of ratings: -
Picture of Miguel Rodríguez
Re: relacion alumno - curso en la base de datos
 

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.

 

 
Average of ratings: -
Picture of Iñaki Arenaza
Re: relacion alumno - curso en la base de datos
Group DevelopersGroup Documentation writersGroup Particularly helpful Moodlers

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.

 
Average of ratings: -
Picture of Jose Luis Machado
Re: relacion alumno - curso en la base de datos
 

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

 
Average of ratings: -