Comienzo a configurar el plugin con una base externa

Comienzo a configurar el plugin con una base externa

de Sam Anza -
Número de respuestas: 5

Hola a todos/as: quisiera comentarles que estoy empezando a configurar mi moodle 1.94 con una base postgres con cenexión a una base externa en Informix.

Creo haber puesto todos los campos correctamente según como figuran en la base externa pero no veioo que nadie se matricule y, además, no me doy cuenta donde debería darme el error de que no se conecta.

En la información que figura sobre este plugin menciona lo siguiente: "Los siguientes orígenes de datos estan soportados, pero tenga en cuenta que deberá compilar PHP con las opciones apropiadas o con ODBC. "

¿Debo hacer correr un odbc orientado a la base informix? ¿Debo tocar algún php?

Saludos y gracias anticipadas a quien me de una mano,

SAM.

Promedio de valoraciones: -
En respuesta a Sam Anza

Re: Comienzo a configurar el plugin con una base externa

de Raul Garcia Canet -
Hola Javier,
No encuentro el mensaje que indicas. Pero bueno, da igual...

No he trabajado con Informix, pero supongo que el funcionamiento será similar al SQL Server.

Moodle sólo puede acceder a una unica tabla (bien para matrícula o para autenticación)
El escenario a montar debe ser:
- UNA tabla en informix dónde están los datos de Autenticación (para el pluguin de Autenticación)
- UNA tabla en informix dónde están los datos de Matriculación (para el pluguin de Matriculación)

Así pues, y si tiene lo mismo que en mi universidad los datos de alumnos y matrículas los tendrás "desperdigados" en varias tablas.

La solución:

- UNA VISTA (que al fin y al cabo es una tabla) que tenga los datos de Autenticación que Moodle necesita en el formulario del Plugin de Autenticación.
- UNA VISTA (que al fin y al cabo es una tabla) que tenga los datos de Matriculación que Moodle necesita en el formulario del Plugin de Matriculación.

En las vistas, los campos debe de tener un nomebre y ese mismo nombre es el que debes de poner en los formularios de configuración de los plugins.
Ejemplo (creo que es así):

Supongamos que tenemos lo siguiente en Informix:

Base de Datos (en Informix): UNIVERSIDAD
Tablas con datos de usuario (en Informix):
USUARIOS: Contiene el id del usuario, Nombre, Apellidos, mail, etc..
PASSWORDS: Contiene el id del usuario (que es el que lo relaciona con la tabal de usuarios), el Login, el password, etc...

Nombre de la Vista que VAMOS a crear: vista_auth

CREATE VIEW UNIVERSIDAD:vista_auth AS select U.id,U.Nombre, U.Apellidos, U.email,P.Login,P.password FROM USUARIOS U INNER JOIN PASWORDS P ON U.id=P.id

Bueno, hasta este punto, ya tenemos los datos de autenticación en una tabla/vista de la BD.
Ahora rellenariamos el formulario de configuración del plugin de Autenticación mediante BD externa.

Para la Matriculación procedemos de igual forma, pero esta vez crearemos la vista usando sólo los datos de matrícula del alumno.
En este caso puede comlicarse mucho dependiendo de "cómo" de repartida tengas la infomación en las diferentes tabla de informix. Com esta vista no puedo ayudarte mucho ya que de`pende de lacomo tengas la información.
Por ejemplo: Si tienes una tabla de Matrículas podrás obtener de ahi, las asignaturas matriculadas de los alumnos a partir de su clave id cruzada con la tabla de personas.
Si además, tenes una tabla de profesores asignados a las asignatuars que imparten, podrás sacarlas cruzando esta tabla con el cruce anterior.

Base de Datos (en Informix): UNIVERSIDAD
Tabla Matriculas: Contiene el id del alumno, idasignatura, etc
Tabla Docencia: Contiene el id profesor, idasignatura, etc
Tabla Asignaturas: id_asignatura, Nombre_Asignatura

Nombre de la Vista que VAMOS a crear: vista_matr

CREATE VIEW UNIVERSIDAD:vista_auth AS
select M.idalum,M.idasign, A.id,A.Nombre, 'student AS Rol FROM MATRICULAS M
INNER JOIN USUARIOS U ON M.idalumn=U.id
INNER JOIN ASIGNATURAS ON A.id=M.idasign
UNION
select D.id_profe,D.idasign, A.id,A.Nombre, 'editingteacher' AS Rol FROM DOCENCIA D
INNER JOIN USUARIOS U ON D.id_profe=U.id
INNER JOIN ASIGNATURAS ON A.id=D.idasign

Fíjate en los campos marcados en Rojo. Le esoy diciendo,a mano, que cree un campo adicional llamdo Rol (que en el formulario de matricualción especificaré) y que a cada parte de los datos le de un valor (dependiendo de si los datos son de alumno o de profesor)

Ya tenemos los datos de autenticación en una tabla/vista de la BD.
Ahora rellenariamos el formulario de configuración del plugin de Matriculacion mediante BD externa.

Más o menos podría ser una vista así. Con ésto obtendrías los datos de los alumnos, profesores y cursos en UNA unica tabla llamada vista_matr que es la que le tienes que decir en el formulario de configuración del Plugin de Matriculación.

En cuanto la segunda cuestión:

En Moodle debes seleccionar Informix y ya está. Pero debes tener en cuenta que el PHP debe sabre trabajar con los ODBC drivers.

Como se dice en MoodleDocs:
"deberá compilar PHP con las opciones apropiadas o con ODBC"

Si el servidor es un Linux, sólo hay que instalar los UNIX ODBC drivers para php. Creo que están en cualquier repositorio de cualquier distribución de Linux.

Para Windows, comprueba que hay un fichero odbc.dll (creo que se llama así) en la carpeta extensions (o ext, en algunas instalaciones) y en el fichero php.ini, busca la línea ;extension=odbc.dll o ;extension=informix.dll y quítale el ";" para descomentarla.

Ya te digo que esto son ejemplo, puesto que depende mucho de cómo tengas estructurada la Base de Datos desde dónde vas a obtener los datos.
Bueno, no se si esto te habrá aclarado las cosas o te habrá liado más, pero espero que te ayude.

Hasta pronto,
Salu2
J. Raul (juagarc4) guay
En respuesta a Raul Garcia Canet

Re: Comienzo a configurar el plugin con una base externa

de Sam Anza -

Bueno, gracias a la detalladada guía de Juan Raúl logre conectar un moodle de prueba (con base Mysql) con la una base externa con la consulta pertinente (también en Mysql). En realidad, ya con esta prueba logro que todo funcione correctamente.

Ya en la práctica, veo que el plugin es pobre en algunas cuestiones:

- no restaura un curso plantilla. Entendiendo la recuperación de las actividades de una ula modelo.

- no pone un resumen del curso, nombre corto,nombre largo, etc.

Y supe de la mejora que le hizo Iñaki a este plugin entonces me puse a reemplazar los archivos. Sin embargo, no me funciona cuando el plugin oficial si. Cuando hago correr el script de enrol_database_sync.php me entrega el siguiente error:

[ENROL DB] Creating course CURSO

[ENROL DB] You have an error in your SQL syntax; check the manual that corresponds to your Mysql  version for the right syntax to use near 'FROM WHERE =´comision´´al line 1 STATEMENT: SELECT FROM WHERE = ´comision´  

Si Iñaki anda por aqui le pido SOS o a alguien que se le ocurra que sucede.

Desde ya muchas gracias, en particular a Juan.

En respuesta a Sam Anza

Re: Comienzo a configurar el plugin con una base externa

de Iñaki Arenaza -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodlers de gran ayuda

Con lo escueto del mensaje de error se me hace difícil emitir un diagnóstico más o menos certero, así que lo primero que me viene a la cabeza es pensar en que algunos de los valores de configuración del plugin no están especificados.

El plugin "mejorado" usa un juego de valores diferentes al del plugin estándar, por lo que lo primero que haría es asegurarme de que en la página de configuración del plugin tienes correctamente rellenos al menos los valores de enrol_db_coursetable y enrol_db_courseid.

Saludos, Iñaki.

En respuesta a Iñaki Arenaza

Re: Comienzo a configurar el plugin con una base externa

de Sam Anza -

Hola Iñaki, con la poca data que te pasé fue suficiente, dado que ese mensaje me lo daba al estar vacío dichos campos. En realidad, me sirvió de disparador para entender el problema.

Básicamente se debe a que estoy usando como tabla de matriculación y autenticación la misma tabla. Para los plugins oficiales no había problema sin embargo, en el que afortunadamente desarrollaste, requiere que las tablas sean distintas. Al menos lo supe porque el problema surgía porque el enrol_remotecoursefield y el enrol_db_courseid usaban el mismo campo "comision".

Si genero una tabla distinta un curso (y sus descripciones) por fila, no hay ningúnproblema y anda de maravilla.

La pregunta entonces es ¿No puedo usar para todo unasola tabla?

Saludos y mil gracias Iñaki,

SAM.

En respuesta a Sam Anza

Re: Comienzo a configurar el plugin con una base externa

de Sol Garcia -
Hola Iñaki,
Me descargué tu plugin de matriculación con una base de datos externa (informix), además estamos utilizando un plugin de autenticación con base de datos externa también en Informix.
La autenticación funciona correctamente pero con el plugin de matriculación después de instalar el plugin y configurado los parámetros de las tablas (creemos que correctamente), no conseguimos que el plugin se conecte con la base de datos, nos aparece el siguiente error en el log:

[19-May-2010 13:11:18] [ENROL_DB] Error connecting to enrolment DB backend with:
xxx.xxx.xxx.xxx,webuseri,xxxxxxx,teletramitacion

[19-May-2010 13:11:18] [ENROL_DB] Could not make a connection

¿Tienes idea de qué estamos haciendo mal??? No sabemos que puede ser...

Muchísimas gracias por todo, un saludo


Sol García