Donde Guarda Los Cursos Moodle?
César Cáceres
- 0
- 166
Como te respondieron se guarda en el moodledata, solo debes conocer el ID del curso en cuestión y eso lo ves en la barra de navegación al ingresar al curso. Con es dato vas al moodledata y ubicas la carpeta que corresponde a dicho ID.
¿Cómo recuperar un curso en Moodle?
Usos creativos – Los procesos de respaldo y restauración pueden ofrecerle al profesor y a los administradores muchas soluciones creativas:
- Duplicar cursos o actividades específicas de un curso hacia otro curso (similar a Importar datos de curso )
- Actualizar un curso de un sitio Moodle en producción, con material desde un curso de un sitio local (localhost)
- Transferir un curso a un nuevo sitio Moodle.
- en versiones anteriores de Moodle, una forma para relanzar un curso sin las actividades de estudiantes anteriores
- Crear una actividad vacía, guardar solamente esa actividad y entonces restaurarla al curso o hacia otro curso una vez o varias.
¿Dónde se almacena la contraseña de Moodle?
Donde se almacenan los usuarios matriculados en un curso (V. 8) – Este hilo de discusión ha sido cerrado por lo que no admite respuestas. Hola a todo el mundo, eso lo primero. Y ahora la pregunta. Despues de dar mil vueltas, revisar los foros hasta en sanscrito y dejarme los ojos ante la pantalla, no he conseguido averiguar en que tabla almacena los usuarios matriculados en un curso.
Uso Moodle 1. 1+ y ya he revisado hasta el esquema de la base de datos que hay en http://docs. moodle. org/en/Development: Database _Schema (lo malo es que este es de la 1. 7). Si alguien me puede orientar le estaria muy agradecida ^__^ No lo he mirado mucho, pero supongo que sera una mezcla de varias tablas: – la de usuarios – la de cursos – la de roles Saludos Israel Muchas gracias, estaba ahora mismo echandoles un ojo.
Mi problema ahora es conseguir otra cosilla. Me han pedido una pequeña aplicacion web que pueda conectarse a cualquiera de las bases de datos de nuestros Moodles (tenemos 4 y mas en camino), que nos permita meter como datos el nombre, apellido, email y telefono movil del usuario.
Luego ha de generar el username y la pass automaticamente. Deberiamos poder asignar ya en este programa los cursos en los que estara matriculado y al terminar, grabar los datos en la BBDD del Moodle correspondiente y permitirnos enviar un email y un SMS al usuario en cuestion con su usuario y clave autogenerados.
De momento todo va mas o menos bien, excepto el tema de meter los usuarios en el moodle con todos sus datos, por los cursos. A ver si con estas tablas que me has indicado puedo averiguar como he de insertar los registros en las mismas 😛 Muchas gracias por las indicaciones.
Hola Noemi. De todas formas, podrias mirar como lo hace moodle, es decir echale un vistazo al script que da de alta un usuario dentro de moodle y al script que le asigna un rol dentro de un curso. Otra cosa, creo que la contraseña se almacena en md5.
Saludos y suerte Israel Hola: Suene muy interesante lo del SMS, ¿cómo piensas realizarlo? Yo ando en busca de una opción como esa para contactar a mis usuarios. Saludos. Victor En mi empresa (ya que todo esto es para el curro :P) tenemos contratada una RedBox de Vodafone, que usamos para enviar mensajes a los alumnos presenciales que tenemos.
- Dado que la estamos pagando, creimos que seria buena idea darle uso conjuntamente con Moodle, ya que tenemos casi tantos alumnos online como presenciales;
- Mañana voy a rpobar con un par de ideas que se me ocurrieron para lo que estoy haciendo, os mantendre informados ^__^ ¿Has encontrado donde se almacenan? Hola Los datos de las personas matriculadas se almacenan en una tabla llamada course_display, puedes exportarla y cruzar la los datos de la tabla Users con el idusers;
Saludos Felipe Me temo que eso no es correcto. Ahora mismo ignoro lo que se almacena en la tabla course_display, pero los datos de matriculación están en las tablas de roles (principalmente en mdl_role_assignments, aunque intervienen varias más), que ligan los cursos y los usuarios. Saludos Felipe No tengo inconveniente en que me contradigas, pero el código te contradice a tí (y me da la razón a mí ) Saludos. Iñaki. jaj soy medio jalisco, por un lado tienes razón. pero por el otro yo, ahí aparece todos los integrantes de un curso tutores y participantes, esta tabla determina que cursos mostrar al participante o no. El codigo no me da la razón , pero la base de datos es mi aliada.
- Saludos;
- Iñaki;
- Hola Iñaki, disculpa que te contradiga pero esa tablka tiene los siguientes campos: id course userid display Si ocupas courso y userid tienes la lista de matriculados por curso;
Saludos Felipe Hola Felipe. He estado mirando el código (por encima) y no acabo de entender muy bien para qué se usa esta tabla. Es como si fuera para almacenar qué cursos están visibles al usuario, y/o qué secciones/semanas del curso puede ver. No sé si tiene mucho sentido, pero parece que hace algo así.
El caso es que quizas, pudiera dar la casualidad, que a través de aquí se pudiera ver quienes están matriculados en el curso que sea. Pero, ¿cómo sabrías quién es alumno y quién profesor? La solución pasa por el proceso que he explicado antes.
Un saludo. Hola Felipe, creo q en esa table (course_display) se almacenan solo por primera vez, cuando un usuario (alumno,profesor etc) se logeoo y entro efectivamente a un equis curso. Para comprobarlo solo tendrias que hacer una prueba: crear un curso, agregar varios alumno, y luego hacer un select de esa tabla y veras que no estan los id de curso nuevo ni de users(alumn,prof.
- )en esa tabla;
- Saludos;
- Hola Noemi;
- Quizas sea un poco tarde, pero allá va la explicación de cómo está organizada la base de datos en este tema (a ver cómo consigo explicarme, porque es algo lioso): – mdl_role: aquí está la relación de los roles existentes;
De aquí nececesitaremos el id de cada rol para ver qué usuarios hay matriculados para cada curso con cada rol. Si sólo queremos los estudiantes, habría que quedarse sólo con el identificador del rol Estudiante. – mdl_course: en esta tabla se almacenan los cursos.
Basta con buscar aquí por el fullname (o el shortname) el curso que deseamos ver sus matriculados, y a través de ahí podemos sacar el identificador del curso. – mdl_context: aquí están relacionados las diferentes instancias de los contextos que hay.
Cada contexto tiene un código numérico (llamado nivel ó contextlevel) que lo identifica. En concreto, para los cursos, el nivel es el 50 (no me preguntas porqué es ese ni donde aparece, pero es así), por lo que, sabiendo cual es el identificador del curso, basta con buscar la entrada con el instanceid=idcurso y contextlevel=50, y el identificador que aparezca para esos datos será el identificador del contexto.
-mdl_role_assignments: por último esta es la tabla donde están las matriculaciones. Basta con hacer una búsqueda por el contextid deseado (es decir, el identificador del contexto del curso que hemos sacado de mdl_context), y por el identificador del rol que queramos (estudiante, por ejemplo), y nos dará los identificadores de todos los usuarios matriculados.
No sé si me he explicado bien, pero es que una relación un poco liosa. Un saludo. En concreto, para los cursos, el nivel es el 50 (no me preguntas porqué es ese ni donde aparece, pero es así), Si echas una ojeada al fichero. /lib/accesslib. php verás las definiciones de varias constantes usandas en el sistema de roles y capacidades.
- Ahí está definida la constante CONTEXT_COURSE con el valor 50;
- Saludos;
- Iñaki;
- Gracias! Hacia tiempo que me picaba la curiosidad por saber de donde venía pero nunca habia tenido tiempo en investigarlo Gracias a todos, muy clarificador;
Acabo de hacer una consulta para obtener el modo de suscripción a los foros. Necesitábamos cambiar a todas las personas el modo de suscripción por “digest”. Por si a alguien en algún momento le viene bien: SELECT user. username, user. maildigest FROM user inner join role_assignments on user.
id=role_assignments. userid where roleid=”5″ and contextid=”2140″ Donde contextid ha sido obtenido según las explicaciones de Moisés De nuevo, gracias Hola, Me gustaría saber cómo puedo obtener los profesores de un curso, a partir del courseid o identificador de curso.
¿Puedo usar la tabla mdl_course_display ?, o ¿debo mejor usar las tablas mdl_role , mdl_course, mdl_context, mdl_role_assignments ?. Muchas gracias. Hay que usar las tablas mdl_role, mdl_course y mdl_role_assignment si usamos Moodle 1. 7, 1. 8 ó 1. 9 En 2. 0 la cosa es algo diferente, ya que se diferencia entre estar matriculado en el curso (lo que incluye principalmente poder hacer las actividades y recibir calificaciones) y tener un rol asignado en el mismo (se puede entrar, se pueden ver cosas, se pueden gestionar cosas, etc.
- pero no se pueden hacer las actividades ni recibir calificaciones);
- En todo caso, en 2;
- 0 se siguen usando las mismas tablas que en 1;
- 7-1;
- 9, pero en el caso de las matriculaciones, hay que consultar alguna tabla extra para los detalles;
Saludos. Iñaki. Hola Iñaki, muchas gracias por tu respuesta. En los foros he podido ver al menos dos formas de consultar los profesores que están ” enrolled ” en un curso. Por API : $role = $DB->get_record(‘role’, array(‘shortname’ => ‘teacher’)); $context = get_context_instance(CONTEXT_COURSE, $courseid); $teachers = get_role_users($role->id, $context); 2.
Por SQL : SELECT u. username, u. firstname, u. lastname, u. email FROM mdl_role_assignments ra, mdl_user u, mdl_course c, mdl_context cxt, mdl_role r WHERE ra. userid=u. id AND ra. contextid=cxt. id AND cxt. contextlevel=50 AND cxt.
instanceid=c. id AND c. shortname =’NombreCortoCurso’ AND r. shortname = ‘teacher’; Estoy desarrollando un módulo para Moodle 2. 0 , ¿cuál de los dos métodos anteriores me recomendarías que usara?. Hola, Alejandro. Yo creo que la opción API. Cuando se produzcan actualizaciones de moodle puede ser que cambie la base de datos y las sqls, pero la API no debería cambiar.
Salu2 Fernando Hola Fernando, Tienes razón, estoy de acuerdo contigo, precisamente esa es la función de una API. Sin embargo cuando uso el siguiente código en mi módulo para Moodle 2. 0 , me da error: $role = $DB->get_record(‘role’, array(‘shortname’ => ‘teacher’)); $context = get_context_instance(CONTEXT_COURSE, $courseid); $teachers = get_role_users($role->id, $context); ¿Puede que exista alguna función en desuso?, o ¿simplemente me da error porque estoy intentando obtener el contexto de curso a nivel de módulo?.
Muchas gracias. No consigo saber por qué me da error este código: $role = $DB->get_record(‘role’, array(‘shortname’ => ‘teacher’)); print_object($role); $context = get_context_instance(CONTEXT_COURSE, $courseid); print_object($context); $teachers = get_role_users($role->id, $context); print_object($teachers); Devuelve: stdClass Object ( [id] => 4 [name] => Non-editing teacher [shortname] => teacher [description] => Non-editing teachers can teach in courses and grade students, but may not alter activities. [sortorder] => 3 [archetype] => teacher ) stdClass Object ( [id] => 10 [contextlevel] => 50 [instanceid] => 2 [path] => /1/3/10 [depth] => 3 ) Array ( ) Stack trace:
- line 324 of /lib/setuplib. php: moodle_exception thrown
- line 416 of /course/modedit. php: call to print_error()
Falla en la función get_role_users, pero no sé por qué. Parece que la función falla cuando un usuario tiene varios roles, yo creo que se debe al siguiente Bug: MDL-22309. Creo que tienes toda la razón Saludos. Iñaki. Gracias Iñaki, lo tendré en cuenta y sólo mantendré un único roll para los profesores, hasta que se solucione el bug. He probado el siguiente código: $role = $DB->get_record(‘role’, array(‘shortname’ => ‘teacher’)); $context = get_context_instance(CONTEXT_COURSE, $courseid); $teachers = get_role_users($role->id, $context); print_object($teachers); Y no muestra nada por pantalla, por lo que algo falla o estoy haciendo mal, porque la función get_role_users() no devuelve ningún objeto.
- No parece ser el bug que antes he comentado, porque tengo un único profesor matriculado (enrolled) con el rol de profesor, y viendo el código de la función (linea 5032 de lib/accesslib;
- php) todo parece correcto;
Estoy desarrollando bajo la versión de Moodle 2. 0 Preview 4+ (Build: 20100803). Sigo sin saber qué es lo que está pasando, ¿alguna idea?. Ayer a la noche probé tu código (con la RC1, en ves de con la PR4, pero no creo que hayay diferencias) y creo que ya he descubierto lo que pasa. Para verificar si estoy en lo cierto, puedes probar las dos cosas siguientes (una cada vez):
- Asignar uno o varios usuarios como profesor sin edición y ejecutar tu código tal cual.
- Asignar uno o varios usuarios como profesor normal y cambiar el nombre del rol de ‘teacher’ a ‘editingteacher’.
Saludos. Iñaki. Hola Iñaki, He hecho las pruebas que dices, y efectivamente, se confirma tu descubrimiento. Tengo 2 profesores en un curso, cada uno con un rol, Non-editing teacher (shortname=teacher) y Teacher (shortname=editingteacher). Probando el código con “teacher”, me muestra el que tiene el rol de Non-editing teacher y probando el código con “editingteacher”, me muestra el que tiene el rol de Teacher.
- El nombre corto del rol ‘Teacher’ (profesor) es ‘editingteacher’, y no ‘teacher’;
- En cuanto cambié ese detalle en tu código recuperaba todos los profesores asignados en el curso (había puesto 3 para probar si sólo me devolvía uno o todos ellos);
Resulta un poco confuso, pero ahora ya lo tengo claro, muchas gracias. Por cierto, a ver si me puedes ayudar con esto: He conseguido mostrar los profesores en un menú de selección, en el archivo view. php de la siguiente forma: if (isset($teachers)) echo html_writer::select($options, ‘selectmenu’, ‘1’); echo $OUTPUT->continue_button(‘view.
php?id=’. $id); Y quiero que cuando el usuario seleccione una opción y pulse el botón se recarge la página, mostrando información del profesor. Pero no sé cómo capturar la elección del usuario, y sí sé pasarle el parámetro a la página, para saber qué profesor consultar.
Un saludo. He cambiado de opinión, prefiero que no exista botón, que cuando el usuario eliga su opción de la lista se recarge la misma página con la opción seleccionada, y con este código lo consigo a medias: echo html_writer::start_tag(‘form’, array(‘id’ => ‘selectform’, ‘method’ => ‘get’, ‘action’ => ”)); echo html_writer::select($options, ‘selectmenu’, ‘0’, false, array(‘onchange’ => ‘this.
- form;
- submit()’)); echo html_writer::end_tag(‘form’); Porque pierdo el parámetro de la url “?id=$id”, ¿cómo puedo hacer para no perder este parámetro?;
- Usando el método “post” en el formulario, no se pierden parámetros de url;
echo html_writer::start_tag(‘form’, array(‘id’ => ‘selectform’, ‘method’ => ‘post’, ‘action’ => ”)); echo html_writer::select($options, ‘selectmenu’, ‘0’, false, array(‘onchange’ => ‘this. form. submit()’)); echo html_writer::end_tag(‘form’); Agradezco su información, actualmente tengo una plataforma con bastantes cursos.
Estuve viendo mdl_course pero Quisiera saber como puedo visualizar la tabla de cursos y ver la tabla de la cantidad de usuarios matriculados en cada curso. Quedo atento muchas gracias por tan valiosa ayuda.
moodle_nombredelcurso. mdlws_user.
¿Cómo actualizar un curso en Moodle?
Usos creativos – Los procesos de respaldo y restauración pueden ofrecerle al profesor y a los administradores muchas soluciones creativas:
- Duplicar cursos o actividades específicas de un curso hacia otro curso (similar a Importar datos de curso )
- Actualizar un curso de un sitio Moodle en producción, con material desde un curso de un sitio local (localhost)
- Transferir un curso a un nuevo sitio Moodle.
- en versiones anteriores de Moodle, una forma para relanzar un curso sin las actividades de estudiantes anteriores
- Crear una actividad vacía, guardar solamente esa actividad y entonces restaurarla al curso o hacia otro curso una vez o varias.
¿Qué es Moodle y para qué sirve?
Hola Felipe, Las respuestas que te dieron previamente aplican a Moodle 1. 9+ y versiones anteriores. Pero parece que estás usando Moodle 2. 0 En este caso la lógica de almacenamiento de archivos cambió y, como indicas, ahora se usa una carpeta común a todos los cursos (y en general creo que para toda la plataforma).
- Según lo que entiendo, la razón del cambio se debe a que en la nueva versión de Moodle se trabaja con la filosofía de repositorios compartibles (osea que puedes usar archivos de varias fuentes, como tu repositorio personal y el repositorio del curso);
Entonces lo que hace Moodle es almacenar todos los archivos en una sola carpeta con un nombre específico (distinto al que lee una persona) y los vincula según el contexto en el que se les quiera usar (esto, vía la base de datos). Cuando un archivo deja de ser útil para las personas y éste es borrado vía la interfase gráfica, el archivo permanece en la carpeta referida.
Ello, porque puede seguir siendo útil en otro contexto (desconocido por quien lo borró). El borrado definitivo lo hace la plataforma tiempo después, pues un script se encarga de verificar que no esté siendo usado en ningún lugar de la plataforma.
Si esta condición se cumple, entonces el archivo desaparece de la carpeta de forma definitiva. En conclusión, aunque sepas en dónde se guardan los archivos e incluso sepas cuál es el de tu interés, no lo muevas ni lo borres. Si quieres cambiarlo o hacer algo con él, hazlo vía la interfase.