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