Añadir una variable en la sesión de usuario

Añadir una variable en la sesión de usuario

de Pedro Palomera -
Número de respuestas: 2

Hola, un saludo a todos.

Soy bastante nuevo en esto de Moodle y PHP. Estoy trabajando en mi proyecto de fin de carrera con Moodle. La intención es modificarlo para que pueda albergar a varias organizaciones académicas y para ello debo retocar toda la seguridad de la aplicación.

Por el momento he creado una tabla mdl_institutions que almacena todas las universidades/institutos que usarán la aplicación, y he creado un campo institutionid en la tabla mdl_courses_categories que vincula una categoría x con la institución académica a la que pertence.

Bien, pues mi intención ahora es a través del sistema de login mostrar sólo las categorías de la universidad que se especifique. Para ello he creado un combo box en la página de login (login/index_forms.html):

<!-- modifico -->
<div class="form-label"><label for="institution">Institucion</label></div>
<div>
<select name="institution" id="institution">
<option> Seleccione Insitucion academica... </option>
<?php
if ($registros = $DB->get_records('institutions')) {
foreach ($registros as $registro) {
?>
<option value="<?php echo $registro->id;?>" > <?php echo $registro->name;?>    </option>
<?php }
}?>
</select>
</div>

 

Ahora lo que necesito es meter el id de la institución seleccionada en la sesión del usuario para usarla más adelante, y es lo que no se hacer. Estoy dando palos de ciego, y ando un poco perdido dentro de la página login/index.php

No sé si me habré explicado bien, ¿alguna sugerencia?

Muchas gracias, un saludo

Promedio de valoraciones: -
En respuesta a Pedro Palomera

Re: Añadir una variable en la sesión de usuario

de Xavier Paz -

Yo lo metería en la variable global $CFG o en $USER en caso de que ese parámetro dependa de cada usuario, es decir si has relacionado usuarios con instituciones.

Para añadir ese valor a cualquiera de esas dos variables globales, basta con ir al script php que procesa el formulario de login, y poner:

$CFG->institution = "valor";

esto automáticamente crea el atributo institution en el objeto que representa a la instancia de la variable global, y estará accesible desde cualquier lugar mientras que la sesión de usuario esté activa.

En respuesta a Xavier Paz

Re: Añadir una variable en la sesión de usuario

de Pedro Palomera -

Gracias por la contestación, pero ya lo he solucionado con una cookie, y un par de funciones para crearla y recuperarla.

 

Ya he conseguido filtrar las categorías y los cursos segun la institucion que se conecta, pero en el bloque de navegación sigue mostrándome todas las categorías y todos los cursos, y necesito también filtrarlos, pero viendo el código del bloque no sé como hacerlo. ¿Alguien sabe?