Hola a tod@s, estoy desarrollando un nuevo módulo y la verdad es que estoy un poco perdida , porque es la primera vez que trabajo con moodle. Esta semana tengo que dar una respuesta de cómo lo haría y aún tengo muchas dudas.
Os comento lo que tengo que hacer: sería un módulo que recogiera las respuestas de los cuestionarios (provenientes del módulo questionnaire) y estos datos se los debería pasar a un applet de java, que a su vez le enviará los datos a un programa estadístico para que éste generase unos gráficos y estos se pudieran visualizar desde moodle.
El primer problema que me encuentro, es que no se si puedo acceder desde mi módulo a las respuestas almacenadas en el módulo questionnaire y como puedo hacerlo. Una vez ahí, sería pasar estos datos a traves de un applet de java a la aplicación estadística R (también de código libre).
No se si me estoy explicando bien, espero que sí. Os agradecería mucho alguna idea que me pudierais aportar o si alguien hubiera hecho algo similar, porque estoy desesperada.
Muchas gracias.
Duda al desarrollar nuevo módulo
Número de respuestas: 12Re: Duda al desarrollar nuevo módulo
Todos los datos están en la base de datos, por tanto si usas las librerías adecuadas, puedes sacar toda la información que necesites.
¿quieres sacar toda la información de todos los cursos que han hecho uso del módulo?
¿quieres sacar toda la información de todos los cursos que han hecho uso del módulo?
Re: Duda al desarrollar nuevo módulo
Antes de nada, muchisimas gracias por responder.
Lo que querría hacer, es lo siguiente: un profesor podría seleccionar un cuestionario de su curso a partir de este nuevo módulo, e internamente se almacenarían los resultados de dicho cuestionario en la base de datos del nuevo módulo, ya que luego estos a través de un script, los pasaría a una aplicación donde me generarían los gráficos. Esto es lo que debo de hacer.
No se si es la mejor idea de resolverlo, porque aún no tengo una idea clara de cómo acceder a estos datos, porque me he dado cuenta de que el módulo questionnaire además tiene las respuestas almacenadas en varias tablas (o eso creo).
Otra opción sería que no me hiciera falta almacenar los resultados en mis tablas del módulo, sino que simplemente accediendo a ellos, me sirviera.
En realidad, no quiero sacar toda la información de todos los cursos que han hecho uso del módulo; sino solo de las respuestas de los cuestionarios que haya realizado el profesor en cada curso.
Como ves estoy bastante perdida, así que cualquier idea o comentario me servirá de gran ayuda. Muchas gracias!!
Lo que querría hacer, es lo siguiente: un profesor podría seleccionar un cuestionario de su curso a partir de este nuevo módulo, e internamente se almacenarían los resultados de dicho cuestionario en la base de datos del nuevo módulo, ya que luego estos a través de un script, los pasaría a una aplicación donde me generarían los gráficos. Esto es lo que debo de hacer.
No se si es la mejor idea de resolverlo, porque aún no tengo una idea clara de cómo acceder a estos datos, porque me he dado cuenta de que el módulo questionnaire además tiene las respuestas almacenadas en varias tablas (o eso creo).
Otra opción sería que no me hiciera falta almacenar los resultados en mis tablas del módulo, sino que simplemente accediendo a ellos, me sirviera.
En realidad, no quiero sacar toda la información de todos los cursos que han hecho uso del módulo; sino solo de las respuestas de los cuestionarios que haya realizado el profesor en cada curso.
Como ves estoy bastante perdida, así que cualquier idea o comentario me servirá de gran ayuda. Muchas gracias!!
Re: Duda al desarrollar nuevo módulo
Hola otra vez, solo quería rectificar algo que he comentado en mi mensaje anterior. He estado mirando las tablas del módulo questionnaire, y éste almacena sus respuestas en una única tabla "questionnaire_quest_choice". La próxima vez trataré de informarme más antes de escribir :S
Un saludo.
Un saludo.
Re: Duda al desarrollar nuevo módulo
En caso de que haya que almacenar los resultados, sin duda la opción de módulo es la más sensata. Por otro lado, si ya tienes los datos almacenados en otra parte de la base de datos, no veo por qué tendrías que volver a almacenarlos en otro sitio de la misma base de datos. Si no los vas a almacenar en un formato determinado, entendible por la aplicación, lo que estarías haciendo es duplicar la información. Además, con ese enfoque, cada vez que fueras a generar nuevos gráficos, tendrías que actualizar el contenido de dichas tablas mientras que si lo tomas directamente de las tablas del módulo questionnaire, siempre estarán actualizados y solo tendrías que preocuparte de convertirlos al formato adecuado en tiempo de ejecución.
El principal escollo para acceder y procesar las respuestas del módulo questionnaire es que aunque se almacenan en una sola tabla, hay muchos tipos de preguntas (verdadero o falso, escala, texto, opción múltiple) y si no recuerdo mal, la tabla que mencionas solo almacena el id de la respuesta, no el valor. Es decir, que si el id es 5, el campo de dicha tabla hace referencia a respuesta con id 5 en función del tipo de pregunta, y podría ser desde un valor numérico hasta una cadena de texto.
El reunir todos los datos por tu cuenta es realmente complicado, y la única forma que encontré yo fue hacer uso de la función de exportar a csv del módulo. Eso te puede dar una idea de como obtener todos los datos de forma fácil y sencilla, porque repito, como intentes deducir la lógico de almacenamiento de los datos, probablemente te volverás loca.
Dicho esto, yo no enfocaría el desarrollo a partir de un módulo, ya que la información que deseas procesar ya está almacenada, realmente no tienes que guardarla en ningún sitio. Por tanto, yo optaría por un bloque o un informe de administrador.
La ventaja del bloque es que lo puedes quitar y poner en cada curso, con lo cual tienes acceso directo a los datos de curso. Los bloques pueden tener configuración propia, por tanto puede añadir parámetros de forma sencilla. La principal pega es que tus profesores tendrían que ir curso por curso, sacando el bloque y procesando los datos.
Si optar por el informe de administración (admin report) la ventaja que tienes es que siempre estará accesible desde cualquier lado, y bastará con crear un desplegable con los cursos seleccionables para obtener los datos.
Ambas opciones son sencillas y rápidas de desarrollar.
El principal escollo para acceder y procesar las respuestas del módulo questionnaire es que aunque se almacenan en una sola tabla, hay muchos tipos de preguntas (verdadero o falso, escala, texto, opción múltiple) y si no recuerdo mal, la tabla que mencionas solo almacena el id de la respuesta, no el valor. Es decir, que si el id es 5, el campo de dicha tabla hace referencia a respuesta con id 5 en función del tipo de pregunta, y podría ser desde un valor numérico hasta una cadena de texto.
El reunir todos los datos por tu cuenta es realmente complicado, y la única forma que encontré yo fue hacer uso de la función de exportar a csv del módulo. Eso te puede dar una idea de como obtener todos los datos de forma fácil y sencilla, porque repito, como intentes deducir la lógico de almacenamiento de los datos, probablemente te volverás loca.
Dicho esto, yo no enfocaría el desarrollo a partir de un módulo, ya que la información que deseas procesar ya está almacenada, realmente no tienes que guardarla en ningún sitio. Por tanto, yo optaría por un bloque o un informe de administrador.
La ventaja del bloque es que lo puedes quitar y poner en cada curso, con lo cual tienes acceso directo a los datos de curso. Los bloques pueden tener configuración propia, por tanto puede añadir parámetros de forma sencilla. La principal pega es que tus profesores tendrían que ir curso por curso, sacando el bloque y procesando los datos.
Si optar por el informe de administración (admin report) la ventaja que tienes es que siempre estará accesible desde cualquier lado, y bastará con crear un desplegable con los cursos seleccionables para obtener los datos.
Ambas opciones son sencillas y rápidas de desarrollar.
Re: Duda al desarrollar nuevo módulo
Muchas muchas gracias !! Vale ya he entendido la diferencia y está claro que me interesa más hacer un bloque o un informe de administración; la información almacenada ya en la base de datos de questionnaire me sirve, porque los datos realmente no me interesan que estén en un formato especial (con luego pasarlas a mi script tal cual estén almacenadas en la base de datos me sirven, porque por ejemplo: yo con saber si respondieron a la pregunta 1-A, 2-B, 3-A, es suficiente).
Respecto a la manera de cómo procesar las respuestas del módulo questionnaire, no me queda claro a que te refieres con lo de "la función de exportar a csv del módulo"; yo había mirado las funciones que tiene questionnaire implementadas en lib.php, y tiene la siguiente función:
function questionnaire_get_user_responses($surveyid, $userid) {
global $CFG;
return get_records_sql ("SELECT *
FROM {$CFG->prefix}questionnaire_response
WHERE survey_id = '$surveyid'
AND username = '$userid'
ORDER BY submitted ASC ");
}
Podría darme esto las respuestas que estoy buscando ?? Gracias.
Respecto a la manera de cómo procesar las respuestas del módulo questionnaire, no me queda claro a que te refieres con lo de "la función de exportar a csv del módulo"; yo había mirado las funciones que tiene questionnaire implementadas en lib.php, y tiene la siguiente función:
function questionnaire_get_user_responses($surveyid, $userid) {
global $CFG;
return get_records_sql ("SELECT *
FROM {$CFG->prefix}questionnaire_response
WHERE survey_id = '$surveyid'
AND username = '$userid'
ORDER BY submitted ASC ");
}
Podría darme esto las respuestas que estoy buscando ?? Gracias.
Re: Duda al desarrollar nuevo módulo
Con lo de exportar a cvs, te referías al archivo report.php de questionnaire, que creo que es donde se desarrolla la funcionalidad de poder ver las respuestas de los cuestionarios e importarlas a txt :
/// Codigo de report.php donde se "cogen" las respuestas:
/// get all responses for further use in viewbyresp and deleteall etc.
// all participants
$sql = "SELECT R.id, R.survey_id, R.submitted, R.username
FROM ".$CFG->prefix."questionnaire_response R
WHERE R.survey_id=".$sid." AND
R.complete='y'
ORDER BY R.id";
if (!($respsallparticipants = get_records_sql($sql))) {
$respsallparticipants = array();
/// Codigo de report.php donde se "cogen" las respuestas:
/// get all responses for further use in viewbyresp and deleteall etc.
// all participants
$sql = "SELECT R.id, R.survey_id, R.submitted, R.username
FROM ".$CFG->prefix."questionnaire_response R
WHERE R.survey_id=".$sid." AND
R.complete='y'
ORDER BY R.id";
if (!($respsallparticipants = get_records_sql($sql))) {
$respsallparticipants = array();
Re: Duda al desarrollar nuevo módulo
Efectivamente me refería a eso, pero revisa también el archivo locallib.php, especialmente las funciones tipo generate_ como generate_csv.
Re: Duda al desarrollar nuevo módulo
Muchisimas gracias por toda tu ayuda !! Entonces empezaré a trabajar por ahí. Ya te comentaré, un saludo 
Rebeca.
Rebeca.
Re: Duda al desarrollar nuevo módulo
Me alegro que mis consejos te hayan servido. Espero que nos cuentes tus progresos, sobre todo en el tema del applet y el lenguaje R, ya que la potencia de representación de datos de dicha herramienta sería de gran ayuda para unos gráficos de Moodle que tengo en mente.
Re: Duda al desarrollar nuevo módulo
Si, claro que os contaré mis progresos y espero finalmente poder dejarlo aquí para que todo el mundo pueda utilizarlo. Solo tengo una última duda (por ahora ;) ) respecto a lo que tiene que ver con moodle. Sabes si hay algo hecho en moodle donde se trabaje con un applet de java ??? o bueno con algún script ??
La primera idea que tuve fue hacer un script simplemente que me ejecutara R, pero claro así no se podría interactuar con él ; pero si hago un applet podría ser más interesante, aunque he leido por alguna docu de moodle que "moodle no utiliza applets", pero no significa que no se puedan incluir no ??
Gracias por tu interés, me ha sido muy útil de verdad, porque estoy bastante perdida con moodle, aunque ahora gracias a tu ayuda me he enterado de muchas cosas.
Un saludo.
La primera idea que tuve fue hacer un script simplemente que me ejecutara R, pero claro así no se podría interactuar con él ; pero si hago un applet podría ser más interesante, aunque he leido por alguna docu de moodle que "moodle no utiliza applets", pero no significa que no se puedan incluir no ??
Gracias por tu interés, me ha sido muy útil de verdad, porque estoy bastante perdida con moodle, aunque ahora gracias a tu ayuda me he enterado de muchas cosas.
Un saludo.
Re: Duda al desarrollar nuevo módulo
No es habitual usar applets, pero pueden ser útiles para determinadas situaciones como gráficos interactivos o demostraciones. Hay gente que lo prefiere, en vez usar Flash.
Como bien dices, un script solo podría pasarle parámetros, por tanto desde mi punto de vista el applet es la solución menos mala. Sirve como puente entre la aplicación y la plataforma.
Si quieres un ejemplo, entra aquí y verás ejemplos de applets integrados como recursos.
Como bien dices, un script solo podría pasarle parámetros, por tanto desde mi punto de vista el applet es la solución menos mala. Sirve como puente entre la aplicación y la plataforma.
Si quieres un ejemplo, entra aquí y verás ejemplos de applets integrados como recursos.
Re: Duda al desarrollar nuevo módulo
Muchas gracias , entonces me pondré ya por fin con ello ;)