API de Moodle

API de Moodle

de aoiTo Cádiz -
Número de respuestas: 5
Ante todo un saludo y daros las gracias y la enhorabuena por la gran labor de ayuda que haceis sonrisa.

Vereis, estoy cotilleando y mirando el codigo de moodle (apoyandome en http://xref.moodle.org/) y me ha picado el gusanillo y bueno, ¿porque no? La idea es comprobar en una pagina externa a moodle si el usuario esta registrado en la plataforma y pertenece a un curso en concreto. He estado mirando la documentacion para desarrolladores, y he encontrado (que esta algo desactualizada) una funcion en lib/moodlelib.php la funcion 'authenticate_user_login' (Linea: 3164).

La cuestion es que no se muy bien como empezar, es decir, si, vale, ya tengo la funcion que quiero para comprobar el usuario ¿ahora que? Si llamo a esa funcion me da fallo en otra, ya que no utilizo el array global $CFG.

La cosa es, ¿podria alguien decirme donde puedo conseguir/ver/leer/estudiar/... algo interesante que hable sobre la API de Google (aparte de la web que cite con anterioridad) y algun ejemplillo?

Muchiiiiiiiiiiiiiiisimas gracias de antemano !
Promedio de valoraciones: -
En respuesta a aoiTo Cádiz

Re: API de Moodle

de Xavier Paz -
Sin usar la variable global $CFG, que además es una variable de sesión, es complicado obtener la información que necesitas desde fuera de Moodle.

La forma habitual de obtener información de Moodle desde fuera es atacando directamente a la BD de Moodle o mediante servicios web. En cuanto a la segunda opción, actualmente la funcionalidad de los servicios web de Moodle no está completamente desarrollada, por tanto puedes esperar hasta la versión 2.0 o crear los tuyos propios.

Aquí tienes algunos enlaces sobre el tema:
- http://orangoodling.blogspot.com/2009/01/los-webservices-de-moodle-cada-vez-mas.html
- http://docs.moodle.org/en/Development:Web_services
- http://docs.moodle.org/en/Web_Services

En la página de Modules & Plugins hay un par de ellos (Ok Tech y otro más, creo) por si quieres curiosear.

PD: supongo que donde pone Google, en realidad querías decir Moodle ¿no? guiño
En respuesta a Xavier Paz

Re: API de Moodle

de aoiTo Cádiz -
Sep queria decir Moodle xD

Muchisimas gracias por la info Xavier. La cuestión es que me gustaría implementarlo para la ultima versión estable. En el caso de Moodle 2.0 bueno, pues todo se andará. Con respecto a la última versión estable, si bueno, atacas a la BD para obtener los datos, y ahora viene la pregunta, ¿donde puedo ver el modelo relacional o algo parecido en el que se basa la BD? Porque mirar tabla por tabla, campo por campo es trabajo del animalito que tienes por avatar :P

Saludos y gracias !
En respuesta a aoiTo Cádiz

Re: API de Moodle

de Xavier Paz -
Me temo que dicho modelo relacional no existe en formato de documentación, hay que generarlo mediante herramientas como DBdesigner, aunque tengo que decirte que el diseño de la base de datos de Moodle es un poco peculiar.

Estas referencias pueden ayudarte a conocer la BD de Moodle y saber, más o menos, para que sirve cada tabla:
- http://docs.moodle.org/en/Development:Database_Schema
- http://docs.moodle.org/en/Development:Database_schema_introduction
En respuesta a aoiTo Cádiz

Re: API de Moodle

de Eder dos Santos -
Hola, Jose Manuel
Saludos, Xavier y todos

Si usas Windows y MySQL, DBDesigner fue reemplazado por el MySQL Workbench. Para obtener el DER, puedes hacer un dump solo de estructura de la base y abrirlo desde esta herramienta, que te genera el DER.

Lo que sí, veo un tema medio raro en esto, por lo menos en mis copias (creo que es lo normal de moodle)... es probable haya sido hecho a propósito (confieso que me falta algo de lectura puntual), pero la BD para MySQL está hecha en MyISAM, esto implica en que no hay integridad referencial. Es decir, no podrás ver las relaciones cuando hagas la "ingeniería reversa". Tendrás que leer un ratito, y empezar a identificar las tablas de acuerdo a su propósito.

Sin embargo, la nomenclatura de las tablas ayuda mucho en este sentido, pues normalmente deduce su objetivo claramente (tabla mdl_user para usuarios, mdl_course para cursos y por ahi va). Después, algunos módulos tienen muy buena documentacón (hasta encontré algunos diagramas UML dando vuelta), lo que también ayuda.

Saludos y suerte,

Eder