en "Administración/Usuarios/Matriculaciones" tienes distintas formas con las que puedes controlar la matriculación de los alumnos en los cursos.
Desde la utilización de un fichero externo hasta la conexión con otras bases de datos para controlar la matriculación.
Supongo que alguna de ellas podría servirte...
Ciao
Quizás para la versión 1.5...
Gracias.
- La autenticación: Podríamos llamarlo el "alta" del alumno en un servidor Moodle. Consiste en que, de diversas formas, un usuario consigue el acceso al servidor Moodle mediante un login y una contraseña. Puede ser que el servidor permita que los alumnos se den de alta ellos mismos, o que se haga mediante un fichero cargado (parece ser tu caso) o por LDAP, o por bases de datos externas... En cualquier caso, con esto, el alumno simplemente está "registrado" en Moodle, pero ello no le dá acceso a ningún curso!
- La matriculación: Que es el proceso por el cual se controla qué usuarios registrados pueden entrar en cuáles cursos. Se le puede llamar también "inscripcción" o como queramos, pero este proceso ya implica el establecimiento que cursos por alumno. Esta relación (qué usuarios registrados en el punto anterior entran a cada uno de los cursos disponibles en el servidor Moodle) es la que se puede TAMBIEN definir de diferentes formas. Mediante contraseña del curso (que es la que no te gusta) o utilizando otro dichero externo u otra base de datos externa en la que tendrás todas las "parejas" (alumno-curso) permitidas. Este proceso es el que se define desde la pantalla que te comentaba en el mensaje anterior y NO tiene nada que ver con el proceso de autentificación, que es independiente del curso.
¿Ha aclarado esto algo los dos procesos diferentes que existen?
Ciao
Gracias.
Hola, a ver si les entiendo un poco y depronto consigo algo de ayuda con un problema similar que tengo.
Magda quiere evitar que sus alumnos se autoiscriban en los cursos, yo tengo muy claro que eso se logra ocultándolos. Sin embargo tengo un problema bien curioso y es que cuando creé 14 de mis cursos olvidé crearlos ocultos y los oculté como dos o tres días despúes de haberlos creado, para ese entonces algunas personas ya se habían inscrito, al ocultar un curso el sistema le dice a esa persona que ya no pertene al curso, resulta que yo quiero que esa persona acceda al curso pero que otros no!!! y entonces tengo que hacerlo de nuevo visible? no lo he podido solucionar y no he encontrado ninguna tabla ni campo en la base de datos que me diga quienes se autoinscribieron y quienes no!!, estoy siendo claro en mi pregunta? espero que me puedan ayudar.
Creo que con los siguientes pasos aclaro un poco más mi pregunta:
1. Dos usuarios se autoinscriben en un curso
2. Uno de ellos (llamémoslo A) debe verlo y el otro no (Llamémoslo B).
3. Desmatriculo a B
4. Oculto el curso para evitar que B pueda volver a matricularse
5. A ya no puede acceder al curso... el sistema le dice que no pertenece al grupo...
¿Como puedo solucionar esto?
¿En que tabla y campo de la base de datos se registra cuando alguien se autoinscribe?
muchas gracias a quien pueda ayudarme.
El tema de que no se puedan automatricular es importante ya que parece que el sitio de formación (y el moodle mismo) es poco serio..., pero quizá se pueda solucionar facilmente.
Los botones de automatriculación se muestran en la pagina:
enrol.php
que está en: moodle/course/enrol.php
Lo unico que habría que hacer es sustituir la página enrol.php por otra con el mismo nombre donde no se muestren esos botones y que simplemente salga un texto que diga que no se puede matricular directamente en ese curso.
Alguien sabe modifcar la página enrol.php ?
Saludos.
Angel
El codigo con botones de autoinscripción es:
<?php // $Id: enrol.php,v 1.32.2.1 2005/10/31 20:31:57 patrickslee Exp $
// Depending on the current enrolment method, this page
// presents the user with whatever they need to know when
// they try to enrol in a course.
require_once("../config.php");
require_once("lib.php");
require_once("$CFG->dirroot/enrol/$CFG->enrol/enrol.php");
require_variable($id);
require_login();
if (! $course = get_record("course", "id", $id) ) {
error("That's an invalid course id");
}
if (! $site = get_site()) {
error("Could not find a site!");
}
/// Check if the course is a meta course
if ($course->metacourse) {
print_header_simple();
notice(get_string('coursenotaccessible'), $CFG->wwwroot);
}
check_for_restricted_user($USER->username);
$enrol = new enrolment_plugin();
/// Refreshing enrolment data in the USER session
$enrol->get_student_courses($USER);
$enrol->get_teacher_courses($USER);
/// Double check just in case they are actually enrolled already
/// This might occur if they were enrolled during this session
if ( !empty($USER->student[$course->id]) or !empty($USER->teacher[$course->id]) ) {
if ($SESSION->wantsurl) {
$destination = $SESSION->wantsurl;
unset($SESSION->wantsurl);
} else {
$destination = "$CFG->wwwroot/course/view.php?id=$course->id";
}
redirect($destination);
}
/// Users can't enroll to site course
if (!$course->category) {
print_header_simple();
notice(get_string('enrollfirst'), $CFG->wwwroot);
}
/// Double check just in case they are enrolled to start in the future
if ($student = get_record('user_students', 'userid', $USER->id, 'course', $course->id)) {
if ($course->enrolperiod and $student->timestart and ($student->timestart >= time())) {
$message = get_string('enrolmentnotyet', '', userdate($student->timestart));
print_header();
notice($message, $CFG->wwwroot);
}
}
/// Check the submitted enrollment key if there is one
if ($form = data_submitted()) {
//User is not enrolled in the course, wants to access course content
//as a guest, and course setting allow unlimited guest access
//Code cribbed from course/loginas.php
if (isset($loginasguest) && ($course->guest==1)) {
$realuser = $USER->id;
$realname = fullname($USER, true);
$USER = guest_user();
$USER->loggedin = true;
$USER->site = $CFG->wwwroot;
$USER->realuser = $realuser;
$USER->sessionIP = md5(getremoteaddr()); // Store the current IP in the session
if (isset($SESSION->currentgroup)) { // Remember current cache setting for later
$SESSION->oldcurrentgroup = $SESSION->currentgroup;
unset($SESSION->currentgroup);
}
$guest_name = fullname($USER, true);
add_to_log($course->id, "course", "loginas", "../user/view.php?id=$course->id&$USER->id$", "$realname -> $guest_name");
if ($SESSION->wantsurl) {
$destination = $SESSION->wantsurl;
unset($SESSION->wantsurl);
} else {
$destination = "$CFG->wwwroot/course/view.php?id=$course->id";
}
redirect($destination);
}
$enrol->check_entry($form, $course);
}
$enrol->print_entry($course);
/// Easy!
?>
Al menos mi versión 1.5.4 de Moodle funciona así.
Saludos. Iñaki.
Muchas Gracias.
Una pregunta: ¿Se pueden hacer despues las matriculaciones de forma manual o es necesario subir los alumnos por medio de la base de datos? (no se como controlar las bases de datos y mi proyecto es pequeño)
De todas formas muchas gracias por tu respuesta.
Así que el efecto neto es que, aunque Moodle no te impide como profesor o administrador matricular a alguien de forma manual, esa matriculación sólo dura hasta que el alumno inicie la sesión, con lo cual no sirve para nada.
Saludos. Iñaki.
Veamos, a mi me intersa algo parecido que paso a detallar:
Para que un alumno se apunte como usuario me parece bien que lo haga automáticamente gracias a la opción de "Matriculación por email", pero lo que yo quiero es que le llegue un email diciendo "Se ha rebido su solicitud de matriculación. Se ha avisado al administrador y éste activará su cuenta de usuario próximamente".
Es decir, que quiero que el usuario mande sus datos, reciba un email confirmandole que todo fué bien pero que la DECISIÓN FINAL de si se apunta o no como alumno sea del administrador.
El Administrador recibirá un email por cada persona que se quiera unir al portal y dicho Administrador tendría que ir a Administración-> Usuarios-> Edición de Usuarios para confirmar MANUALMENTE su inscripción.
De esta forma te evitas inscripciones de gente no deseada.
La forma "fácil/cutre" de hacer esto sería buscando por el código del Moodle donde está la parte que redacta el emai, cambiar el texto del email y quitar de allí el enlace que lleva a la confirmación. Lo que pasa es que me parece MUY raro que esto no esté ya implementado y que se pueda hacer con alguna opción que no he alcanzado a encontrar.
Repito que esto NO es para darse de alta en cursos, me refiero a que los usuarios se apunten globalmente al portal de Moodle.
Muchas gracias por leer esto y espero que te animes a responder ;)
- No quiero que un alumno 'cualquiera', se inscriba en el curso que quiera, y
que además no tenga la posibilidad de hacerlo.
Lo he conseguido de la siguiente forma
1 He creado un curso llamado Curso de Matriculaciones.
2 He matriculado a los alumnos que yo quiero a este curso de Matriculaciones, por ejemplo, importandolos de un txt.
3 He dejado el 'Curso de matriculaciones' como 'este curso no está disponible a los alumnos' en la configuracion de este curso.
4 He creado un curso 'Curso de contenidos' donde he puesto los contenidos que me interesan que vean.
5 he configurado el 'Curso de contenidos' como metacurso.
6 En el 'Curso de contenidos', en la opción de 'Estudiantes' de la administración del curso, me da la opcion de matricular los estudiantes de cualquier curso que no sea metacurso, selecciono y matriculo al curso de 'Curso de Matriculaciones'.
Voilá.
Espero sea de ayuda.
En la tabla prefix_course agregar un campo que se llame por ejemplo free u open algo de eso que que sea del tipo tinyint y tenga por defecto 1.
y en el /course/edit.html agregar una pregunta que diga algo como este curso es libre?, claro tendría que incializarce $form->free = 1, en otras palabras poner por defecto que es libre. Y dentro de enrol.php hacer una verificación de si el curso está abierto o no, verificando el valor en la db, si el valor es cero pues impedírselo redireccionando a una página de advertencia o algo por el estilo.
Co se habrán dado cuenta, aún no he implementado etsa idea, espero hacerlo dentro de dos semanas, o mejor aún espero que alguien haga esto y lo comparta.
Saludos
Dariem
Una solución que encontré con un compañero de trabajo, Jairo,
fue modificar el archivo enrol.php, ubicado en la dirección moodle\enrol\manual.
Básicamente es modificar las lineas de la 73 a 78, donde se comenta la instrucción :
notice_yesno(get_string('enrolmentconfirmation'), "enrol.php?id=$course->id&confirmation=1",
"enrol.php?id=$course->id&cancel=1");
Que es el que permite la automatriculación, y agregando el código:
error("No se puede matricular en este curso");
Para que muestre un mensaje, esta leyenda se puede personalizar.
Hola Luis Diego:
Puedes mostrar con detalle como quedarían las lineas del 73 al 78 para evitar la automatriculación.
Gracias.
Hola
Este hilo es del año ¡¡¡2004!!! El que un curso permita o no la autoinscripción es ya (y desde hace mucho tiempo) una opción que se puede configurar en el curso. No hay que hacer ningún tipo de modificación.
Salu2
Hola W:
Por ahí seguí alguna de tus recomendaciones la configuar en los ajustes de portada el que se muestren solamente los cursos en que los alumnos enten inscritos, sin embargo, lo que quisiera que de manera definitiva no aparezca la opción de autoinscripción.
La alternativa de Luis Diego se me hizo muy interesante y como soy nuevo en esto, quisiera que de manera más precisa me ayudaran en mencionar la configuración del archivo del archivo enrol.php.
Me podrías tu ayudar?
Hola
En Moodle 1.9.x
Administración > Usuarios > Atentificación > Gestionar la autentificación
Registrarse a sí mismo -> Deshabilitar
En Moodle 2.0.x (y en las últimas versiones de la serie 1.9.x) ese ajuste viene deshabilitado por defecto, se activa/desactiva en:
Administración > Extensiones > Identificación > Gestionar la Identificación
Registrarse a sí mismo -> Deshabilitar
Salu2
Esta modificación la hice porque si el profesor que crea el curso lo deja abierto, el estudiante siempre puede matricularse, entonces como administrador esa fue la única opción que me sirvió. Este es el código donde hice la modificación
if ($course->password == '') { // no password, so enrol
if (has_capability('moodle/legacy:guest', $context, $USER->id, false)) {
add_to_log($course->id, 'course', 'guest', 'view.php?id='.$course->id, getremoteaddr());
} else if (empty($_GET['confirm']) && empty($_GET['cancel'])) {
print_header($strloginto, $course->fullname, $navigation);
echo '<br />';
error("Lo sentimos, usted no está matriculado en este curso");
//notice_yesno(get_string('enrolmentconfirmation'), "enrol.php?id=$course->id&cancel=1",
// "enrol.php?id=$course->id&cancel=1");
print_footer();
exit;
Hola Luis Diego:
Te agradezco y te comento en cuando realice la modificación.
Saludos.
hola Diego
funciona perfectamente.
Gracias.