email aviso administrador crear cuenta alumno previa a matriculación

email aviso administrador crear cuenta alumno previa a matriculación

de Fran Jimenez -
Número de respuestas: 10

Hola,

tengo una duda sobre si se puede configurar moodle 2.1 para que el administrador reciba un email de aviso cuando un alumno se haya creado una cuenta de registro previa a la matriculación de un curso.

Gracias

Un saludo

Promedio de valoraciones: -
En respuesta a Fran Jimenez

Re: email aviso administrador crear cuenta alumno previa a matriculación

de Ernesto Landera -

Hola Fran,

Que yo sepa la tarea es para un programador, si puedes hacerlo, tienes que modificar un poco el núcleo del Moodle, más precisamente moodlelib.php que está en /lib

Primero, en la función es "send_confirmation_email($user)" agregar al final un llamado a una nueva función que tienes que crear, algo como:

send_mail_to_admin_students($user)

Luego crear la función, algo como:

function send_mail_to_admin_students($user) {
    global $CFG;
    global $USER;
    $site = get_site();
    $supportuser = generate_email_supportuser();
    $countries = get_list_of_countries();
    $data = new object();
    $data->firstname = $user->firstname;
    $data->lastname  = $user->lastname;
    $data->sitename  = format_string($site->fullname);
    $data->userid = format_string($user->id);
    $data->correo = $user->email;
    $message = get_string('emailinfonewreg', '', $data);
    $subject = get_string('emailinfonewregsubject', '', format_string($site->fullname));
    return email_to_user($supportuser, $supportuser, $subject, $message);
}

Finalmente agregas las nuevas variables de texto (emailinfonewregsubject) en el archivo de idioma.

Saludos

En respuesta a Ernesto Landera

Re: email aviso administrador crear cuenta alumno previa a matriculación

de Fran Jimenez -

Hola Enerto, seguí us pasos para que mandara un email al administrador cuando se automatricula un alumno y ahora ni me manda el email al administrador ni al alumno para activar s cuenta. me dice que no se ha podido mandar un email al alumno.toqué los archivos moodlelib.php y moodle.php pero al ver que una vez que no fui capaz de que funcionara el envío de emails a administradores cuando se automatriculara un alumno, estituí los archivos tocados por los originales, y ahora no me envía emails ni a mí, ni a los alumnos automatriculados. He incluso vuelto a migrar la plataforma (ya que antes de todo esto había realizado una migración de un hosting a otro, y funcionaba).¿Alguna sugerencia?

Gracias de antemano

En respuesta a Fran Jimenez

Re: email aviso administrador crear cuenta alumno previa a matriculación

de Ernesto Landera -

Hola Fran, realmente me sorprende lo que me dices. Hago frecuentes cambios en los scripts. Antes de modificarlos le cambio el nombre al original y lo dejo en su lugar para hacer un roll-back más seguro por ej. moodlelib_orig.php y siempre me funciona. ¿Me dices que volviste a instalar la plataforma y no funciona? creo que eso ya escapa a nuestro script. ¿pusiste el depurador de mails?

 

En respuesta a Fran Jimenez

Re: email aviso administrador crear cuenta alumno previa a matriculación

de Pablo Pedernera -

En nuestro caso hicimos así

function send_user_request($user) {

global $CFG;

$site = get_site();
$supportuser = generate_email_supportuser();

$data = new object();
$data->firstname = fullname($user);
$data->sitename = format_string($site->fullname);
$subject = "$data->sitename: Nueva solicitud de cuenta para $data->firstname";
$message = "Estos son los detalles de la solicitud de cuenta:\n\n";
$message = $message."Username: $user->username\nPassword: $user->password\n";
$message = $message."Email: $user->email\nFirst Name: $user->firstname\nLast Name: $user->lastname\n";
$message = $message."Ciudad: $user->city\nCountry: $user->country\n\n";
$message = $message."Por favor, notifique al usuario por email cuando confirme su cuenta.\n";
$messagehtml = text_to_html($message, false, false, true);

$user->mailformat = 1; // Always send HTML version as well

// The first user is the To: address, and the second is the From: address
return email_to_user($supportuser, $supportuser, $subject, $message, $messagehtml);
}

guay

En respuesta a Pablo Pedernera

Re: email aviso administrador crear cuenta alumno previa a matriculación

de Fran Jimenez -

Muchas gracias a ambos por su prolijidad. Ahora tengo una duda que proviene de mi desconocimiento de php.

En el caso de la respuesta de Ernesto no sabría añadir las nuevas variables de texto (emailinfonewregsubject) en el archivo de idioma al código previo que me das. Entiendo que al final de send_confirmation_email($user) tengo que pegar el codigo que me pasas, pero no sé añadir las nuevas variables de texto (emailinfonewregsubject), al código que me das.

Pablo en tu caso, quiero corroborar que tendría que copiar el código que me das en el lugar que me dice Ernesto ¿no? Es decir al final de send_confirmation_email($user)

Muchas gracias a ambos

En respuesta a Pablo Pedernera

Re: email aviso administrador crear cuenta alumno previa a matriculación

de Fran Jimenez -

Hola puse el código que me dijiste tanto dentro de la function send_confirmation_email($user) , como fuera y no envió ningún correo al administrador avisando del registro del studiante. ¿Es que el código que me diste va en otro lugar? Como no especificaste donde iba , di por supuesto que era donde decía la respuesta anterior.

Agradecería que me especificase para poder resolver este problema.

Saludos

En respuesta a Fran Jimenez

Re: email aviso administrador crear cuenta alumno previa a matriculación

de Ernesto Landera -

Hola Fran,

Creo que no me expliqué bien, al final de la función send_confirmation_email($user), antes de la llamada al envío de mail, pones send_mail_to_admin_students($user), y aparte, creas la nueva función send_mail_to_admin_students($user). El mail lo enviará al administrador de la plataforma que figura en Administración del sitio>Servidor>Email>Email de apoyo.

El texto en español lo pones en el script moodle.php de la carpeta lang>es_utf8/moodle.php de la siguiente manera:

$string['emailinfonewregsubject'] = 'Nuevo usuario registrado';

$string['emailinfonewreg'] = '

Se ha Registrado el usuario: $a->firstname $a->lastname

email: $a->correo

----------------------------------------------------------------';

Una vez que agregues todo, ve al menú Administración del Sitio>Depurando y selecciona "DESARROLLADOR: mensajes extra de depuración" y tilda Mostrar mensajes de depuración y Depurar envíos de email, para que te podamos ayudar con los errores que te indique.
Luego de las pruebas destlda todo!! por que asustarás a los usuarios!

Espero que lo logres,

Saludos

En respuesta a Ernesto Landera

Re: email aviso administrador crear cuenta alumno previa a matriculación

de Fran Jimenez -

lo primero , muchísimas gracias por tu implicación. He seguido tus pasos y al crear un usuario me dice que "Se ha intentado enviarle un email sin éxito", y arriba me aparece un texto : 

get_list_of_countries() is deprecated, please use get_string_manager()->get_list_of_countries() instead.
  • line 260 of /lib/deprecatedlib.php: call to debugging()
  • line 5023 of /lib/moodlelib.php: call to get_list_of_countries()
  • line 5012 of /lib/moodlelib.php: call to send_mail_to_admin_students()
  • line 90 of /auth/email/auth.php: call to send_confirmation_email()
  • line 60 of /login/signup.php: call to auth_plugin_email->user_signup()

Could not instantiate mail function. Could not instantiate mail function.

El tramo del moodle.php, siguiendo tus indicaciones, me quedó así

function send_confirmation_email($user) {
global $CFG;

$site = get_site();
$supportuser = generate_email_supportuser();

$data = new stdClass();
$data->firstname = fullname($user);
$data->sitename = format_string($site->fullname);
$data->admin = generate_email_signoff();

$subject = get_string('emailconfirmationsubject', '', format_string($site->fullname));

$username = urlencode($user->username);
$username = str_replace('.', '%2E', $username); // prevent problems with trailing dots
$data->link = $CFG->wwwroot .'/login/confirm.php?data='. $user->secret .'/'. $username;
$message = get_string('emailconfirmation', '', $data);
$messagehtml = text_to_html(get_string('emailconfirmation', '', $data), false, false, true);

$user->mailformat = 1; // Always send HTML version as well
send_mail_to_admin_students($user);
//directly email rather than using the messaging system to ensure its not routed to a popup or jabber
return email_to_user($user, $supportuser, $subject, $message, $messagehtml);

}

function send_mail_to_admin_students($user) {
global $CFG;
global $USER;
$site = get_site();
$supportuser = generate_email_supportuser();
$countries = get_list_of_countries();
$data = new object();
$data->firstname = $user->firstname;
$data->lastname = $user->lastname;
$data->sitename = format_string($site->fullname);
$data->userid = format_string($user->id);
$data->correo = $user->email;
$message = get_string('emailinfonewreg', '', $data);
$subject = get_string('emailinfonewregsubject', '', format_string($site->fullname));
return email_to_user($supportuser, $supportuser, $subject, $message);

}

Creo que añadí lo que me comentaste, donde me dijiste
También modifiqué lo que me dijiste en Depurando, pero como te comento me da el error arriba señalado.
El enlace de la plataforma por si quieres comprobar el erro al intentar registrarte  es  http://www.franjimenezdealba.com/formacion/moodle

Gracias de nuevo por todo
Saludos

 

En respuesta a Fran Jimenez

Re: email aviso administrador crear cuenta alumno previa a matriculación

de Javier Hernández Sánchez -

Si no me equivoco eso mismo lo hace este plugin 

General plugins (Local): Message provider

https://moodle.org/plugins/browse.php?list=category&id=18&p=1

Un saludo.