Visualización de cursos rol Gestor por Categorías

Visualización de cursos rol Gestor por Categorías

de Mariela Dichorchi -
Número de respuestas: 2

Buenos días, estoy armando Categorias y subcategorías. A cada Subcategoría le asigne Creadores de Cursos  y le asigné a cada "Profesor" este rol para administrar sus cursos.

El problema que tengo, es que tengo un Usuario que es "Gestor" de todos los cursos de esa categoría y cuando ingreso como ese usuario, no veo los "cursos" que tiene cada subcategoría.  Sí los ve si browsea por las subcategorías y va abriendo cada una.

Mi idea es que ingrese al sitio y vea todos los cursos que tienen sus "profesores"

La única forma que encontré fue asignarle al usuario, además del rol Gestor, el rol de Profesor.

Hay alguna otra forma de hacerlo, sin tener que asignarle el rol Profesor?

gracias!!

Promedio de valoraciones: -
En respuesta a Mariela Dichorchi

Re: Visualización de cursos rol Gestor por Categorías

de ivan Rivas -

Hola, no se si ya habrás resuelto el inconveniente pero yo estoy pasando por algo similar. La universidad tiene directores de escuela y estos desean tener acceso a todos los cursos de su escuela para supervisar el avance de sus docentes.

La solución seria matricularlos en todos los cursos de su escuela lo que seria una perdida de tiempo. Como segunda opción se le puede poner como gestor de la categoría principal de la escuela y con esto el usuario ya podra acceder a todos los cursos de esa categoria y las subcategorias que tenga. Sin embargo, como las encuentra ? tendria que ir buscando curso por curso como dijiste.

Lo que pude hacer es lo siguiente. Crear un curso formato de actividad única y dentro use un script que me lista todos los cursos de las categorías en las que el usuario es gestor.

Con este primer script obtengo las categorías donde el usuario es gestor, únicamente las categorías padre, es decir, puede que pase que por error se ponga a un usuario como gestor en una subcategoria habiéndolo ya puesto como gestor en la categoría padre de esta. 

//OBTENER CATEGORIAS DONDE SE ES GESTOR
$userid = $USER->id;
$array_gestor = array();
function get_categories_gestor($id = 0){
	global $DB, $userid, $array_gestor;
	$categories = $DB->get_records('course_categories', array('parent'=>$id));
	if($categories != null){
		foreach($categories as $item){
			$categorycontext = context_coursecat::instance($item->id);
			$gestor = $DB->get_record('role_assignments', array('contextid'=>$categorycontext->id, 'userid'=>$userid));
			if(!empty($gestor)){
				array_push($array_gestor, $item->id);
			}else{
				$childrens = $DB->get_records('course_categories', array('parent'=>$item->id));
				if(!empty($childrens)){
					get_categories_gestor($item->id);
				}
			}
		}
	}
}


Este otro script obtiene todos los cursos en base a las categorías padre de las cuales es gestor el usuario.

//OBTENER CURSOS
function category_course_list($id){
	global $DB, $array_courses;
	$cate = $DB->get_record_sql('SELECT * FROM moodle.mdl_course_categories WHERE id = ?', array($id));
	$childrens = $DB->get_records_sql('SELECT * FROM moodle.mdl_course_categories WHERE parent = ?', array($cate->id));
	$courses = $DB->get_records('course', array('category'=>$cate->id));
	foreach($courses as $course){
		array_push($array_courses, $course);
	}
	if(!empty($childrens)){
		foreach($childrens as $children){
			category_course_list($children->id);
		}
	}
}


Para ejecutarlo, únicamente.

$array_courses = array();
get_categories_gestor();
foreach($array_gestor as $categoria){
	category_course_list($categoria);
}
print_object($array_courses);


Ahora, ese código obtendrá el listado de cursos, si deseas obtener los docentes del curso o ordenarlos por categorías ya tendrías que hacer unas pequeñas variaciones.

Espero te sirva de algo.