tenemos la version 3.17.1 de siu
la situacion es la siguiente:
hay comisiones con cursos en 2 moodle distintos
cuando relacionamos un moodle en siu, se agrega con la responsable académica que corresponde
pero cuando vamos a relacionar el otro moodle, la responsable académica no al podemos usar por que ya esta relacionada en el primer moodle
esto se pude solucionar ??? o si se personaliza, genera inconveniente con algún otro componente
Por ahora solo se puede vincular una comisión de Guaraní a solo un curso de Moodle. Si se puede vincular un curso de Moodle con varias comisiones de Guaraní.
¿como hiciste para tener una comisión de Guaraní vinculada a dos cursos de Moodle?
las comisiones de una carrera tienen cursos en 2 moodles diferentes
si la responsable academica de esa carrera esta relacionada a un moodle,
entonces las comisiones que tienen cursos en el otro moodle no las puedo vincular
seria algo asi:
tengo la facultad de economicas como RA y relacionada al moodle1
todas las comisiones de la Facultad las puedo vincular a cursos del moodle 1
ahora tengo el moodle2, que tambien tiene cursos de la facultad de economica
en siu no puedo relacionar el moodle2 con la facultad de economicas ( por que ya esta con el moodle1) y
tampoco puedo vincular las comisiones a cursos del moodle2
consulto sobretodo por que viendo la estructura de la base de datos, da la impresion de que si se puede relacionar una responsable academica a mas de un moodle,
de hecho para testear lo hice y en esa parte el siu lo mostro bien, sin problemas
(no llegue a probar que pasa con las comisiones)
Estuve viendo un poco de código, y observo lo siguiente:
En el caso que una comisión pertenezca a una actividad que esta en dos responsables académicas, y la responsable académica 1 este vinculada a Moodle1 y responsable académica 2 a Moodle2, lo que esta haciendo ahora Guaraní es tomar el primer Moodle que encuentra. Se puede ver en esta query:
Función get_plataforma_by_comision de la clase php/nucleo/cursadas/comisiones/co_comisiones.php:
/**
* Retorna la plataforma virtual asociado a una comisión
*/
function get_plataforma_by_comision($comision)
{
$comision = toba::db()->quote($comision);
$sql = "SELECT int_pv_plataformas.plataforma,
int_pv_plataformas.nombre,
int_pv_plataformas.url,
int_pv_plataformas.host,
int_pv_plataformas.token,
int_pv_plataformas.rol_alumno,
int_pv_plataformas.rol_alumno_curso,
int_pv_plataformas.categoria_curso_default
FROM sga_comisiones
JOIN sga_elementos ON (sga_comisiones.elemento = sga_elementos.elemento)
JOIN sga_elementos_ra ON (sga_elementos.elemento = sga_elementos_ra.elemento)
JOIN int_pv_plataformas_ra ON (sga_elementos_ra.responsable_academica = int_pv_plataformas_ra.responsable_academica)
JOIN int_pv_plataformas ON (int_pv_plataformas_ra.plataforma = int_pv_plataformas.plataforma)
WHERE sga_comisiones.comision = $comision
AND int_pv_plataformas.activa = TRUE
LIMIT 1
";
return guarani_db::consultar_fila($sql);
}
Hace un LIMIT 1, vamos a ver para la siguiente versión que deje elegir con que Moodle se quiere vincular.
la bbdd da la impresion de que esta preparada para que las responsables academicas se asocien multiples moodle simultaneamente
tal vez hay que agregar funcionalidad en /usr/local/proyectos/guarani/php/operaciones/cursadas/comisiones/ ci_edi_educacion_virtual.php, de forma que la comision pueda interartuar con varios objetos moodle ( por ejemplo que el desplegable de cursos a elegir, se muestren de varios moodles y no de uno solo)
a nosotros en este momento nos surgio esta necesitad particular y estamos medio cortos de tiempo
si nuestra solucion sale por el lado de la personalizacion del codigo, luego lo aportamos
Una posible solución provisoria seria deshabilitar temporalmente “la otra” plataforma de Educación Virtual en la operación Administrar Configuración del Sistema de Gestión, y dejar habilitada la que se quiere vincular con esa comisión. Una vez vinculada la comisión volves a habilitar en Administrar Configuración del Sistema.
¿La vinculación de la comisión al curso de Moodle la están haciendo desde Gestión o en 3W?
Ademas de lo anterior, hay otro cambio de código que habría que hacer para que esto funcione bien:
En la función conf de la clase php/operaciones/cursadas/comisiones/ci_edi_educacion_virtual.php justo antes que se setee la variable $info_curso tenes que agregar lo siguiente:
} else {// Si la Comisión posee un curso asociado
// Agregar de acá
$this->s__datos_plataforma['plataforma'] = $this->s__datos_curso_virtual['plataforma'];
$this->s__datos_plataforma['nombre'] = $this->s__datos_curso_virtual['plataforma_nombre'];
$this->s__datos_plataforma['url'] = $this->s__datos_curso_virtual['plataforma_url'];
$this->s__datos_plataforma['host'] = $this->s__datos_curso_virtual['plataforma_host'];
$this->s__datos_plataforma['token'] = $this->s__datos_curso_virtual['plataforma_token'];
$this->s__datos_plataforma['rol_alumno'] = $this->s__datos_curso_virtual['plataforma_rol_alumno'];
$this->s__datos_plataforma['rol_alumno_curso'] = $this->s__datos_curso_virtual['plataforma_rol_alumno_curso'];
$this->s__datos_plataforma['categoria_curso_default'] = $this->s__datos_curso_virtual['plataforma_categoria_curso_default'];
$this->s__roles_docentes = toba::consulta_php('co_configuracion')->get_roles_docentes_by_plataforma($this->s__datos_plataforma['plataforma'], 'COMISION');
unset($this->moodle_obj);
// hasta acá
$info_curso = $this->get_info_curso_virtual();
Probalo bien en un entorno de prueba antes de pasar a producción.
Hacelo personalizando dicha función.
hola
estuve probando un poco ( use la desactivacion de la platarforma y codigo que pasate)
te cuento los resultados:
al estar la facultad relacionada a mas de una platarforma, para desactivarla lo tuve que hacer desde la bbdd y una vez desactivada en la comision podia seleccionar el curso y vincular sin problemas
una vez vinculado el curso, si la facultad seguia relacionada a mas de una plataforma, en la parte de docentes decia que no se correspondian al curso y que faltaba la sincronizacion,
pero si la facultad quedaba con relacionada a una sola plataforma si decia que estaban ok los docentes
si llego a probar algo con los alumnos te comento que paso
- al estar la facultad relacionada a mas de una platarforma, para desactivarla lo tuve que hacer desde la bbdd y una vez desactivada en la comision podia seleccionar el curso y vincular sin problemas
¿No te aparece el checkbox “Activa” como muestra en la captura?
- una vez vinculado el curso, si la facultad seguia relacionada a mas de una plataforma, en la parte de docentes decia que no se correspondian al curso y que faltaba la sincronizacion,
pero si la facultad quedaba con relacionada a una sola plataforma si decia que estaban ok los docentes
Si, esto no va a funcionar 100% bien, porque las queries se hacen buscando por las Responsables Académicas vinculadas a la plataforma (Moodle), y se busca por las RAS de la actividad. Para la versión 3.19.0 tenemos pensado cambiar eso.
Te sugiero lo siguiente:
En la función conf de php/operaciones/cursadas/comisiones/ci_edi_educacion_virtual.php deshace lo que te dije antes, y hace que quede asi:
function conf()
{
// Traigo y seteo datos de la comisión
$datos_comision = $this->cn()->entidad()->get_datos_generales();
// Si se trata de una comisión nueva salgo
if (!isset($datos_comision['comision'])) return false;
$this->s__comision = $datos_comision['comision'];
$this->s__datos_curso_virtual = toba::consulta_php('co_comisiones')->get_curso_virtual_by_comision($this->s__comision);
if (empty($this->s__datos_curso_virtual)) {
$this->s__datos_plataforma = toba::consulta_php('co_comisiones')->get_plataforma_by_comision($this->s__comision);
} else {
$this->s__datos_plataforma['plataforma'] = $this->s__datos_curso_virtual['plataforma'];
$this->s__datos_plataforma['nombre'] = $this->s__datos_curso_virtual['plataforma_nombre'];
$this->s__datos_plataforma['url'] = $this->s__datos_curso_virtual['plataforma_url'];
$this->s__datos_plataforma['host'] = $this->s__datos_curso_virtual['plataforma_host'];
$this->s__datos_plataforma['token'] = $this->s__datos_curso_virtual['plataforma_token'];
$this->s__datos_plataforma['rol_alumno'] = $this->s__datos_curso_virtual['plataforma_rol_alumno'];
$this->s__datos_plataforma['rol_alumno_curso'] = $this->s__datos_curso_virtual['plataforma_rol_alumno_curso'];
$this->s__datos_plataforma['categoria_curso_default'] = $this->s__datos_curso_virtual['plataforma_categoria_curso_default'];
}
..........................................
Luego en php/nucleo/cursadas/comisiones/co_comisiones.php habria que cambiar las queries para que haga distinto el JOIN:
En get_docentes_comision_moodle, en lugar de hacer:
JOIN sga_elementos ON (sga_comisiones.elemento = sga_elementos.elemento)
LEFT JOIN sga_elementos_ra ON (sga_elementos.elemento = sga_elementos_ra.elemento)
LEFT JOIN int_pv_plataformas_ra ON (sga_elementos_ra.responsable_academica = int_pv_plataformas_ra.responsable_academica)
LEFT JOIN int_pv_plataformas ON (int_pv_plataformas_ra.plataforma = int_pv_plataformas.plataforma)
habría que hacer:
LEFT JOIN int_pv_cursos_comisiones ON (sga_comisiones.comision = int_pv_cursos_comisiones.comision)
LEFT JOIN int_pv_cursos ON (int_pv_cursos_comisiones.curso = int_pv_cursos.curso)
LEFT JOIN int_pv_plataformas ON (int_pv_cursos.plataforma = int_pv_plataformas.plataforma)