2010-06-13 13 views
5

Estoy utilizando el módulo de respuesta automática de Drupal - y quiero utilizar fichas para que pueda incluir el nombre de usuario que ha suscrito dentro de los correos electrónicos que se envían ...Drupal respuesta automática con el módulo de emergencia

¿Alguien sabe cómo esto puede ser logrado?

Gracias por cualquier ayuda.

Shane

Respuesta

4

Gracias por su respuesta - que estaba al lado ....

El UID módulo de respuesta automática no está relacionado con el UID del usuario por lo que su código fue trayendo en un nombre de usuario diferente ... Así que lo cambió a encontrar el usuario de la dirección de correo electrónico en su lugar.

// load the full user object 
$user = user_load(array('mail' => $u->mail)); 
// Replace user tokens in mail body 
$mail->body = token_replace($mail->body, 'user', $user); 

Sí, por supuesto, voy a presentar como un parche a mi otra solicitud, y es de esperar que puede ayudar a alguien más.

Muchas Gracias

Shane

+1

1 para el seguimiento - Yo no miro el esquema y acaba de asumir el uso UID 'estándar':/ –

+0

En la pregunta/observación, sin embargo: Se permiten a los usuarios anónimos para suscribirse también? Esta sería una buena razón para la mesa separada '' autoresponder_users, y eso significaría que habría que añadir un cheque a su 'búsqueda de usuario por correo' en caso de que ningún usuario Drupal correspondientes se pueden encontrar. ('User_load()' devolvería FALSO en ese caso.) –

+0

Hola Henrik, Sí apreciar acerca del esquema - me apunta en la dirección correcta, aunque :-) y valoro su punto acerca de los usuarios anónimos - pero Previamente pensé que sí, por lo que solo es para usuarios que tienen una cuenta, ¡aunque pensándolo bien! Gracias por su ayuda. Shane – Shane

3

Edición después de respuestas separada por OP: A continuación se basaba en la suposición de que el $u->uid se refiere a la identificación del usuario de Drupal 'estándar', cual no es correcto! Así que uno tiene que encontrar el usuario Drupal correspondiente por otros medios, si es posible - ver the OPs answer for details en este ...


Yo no lo he probado, pero mirando el código fuente de respuesta automática, debe ser capaz de añadir (usuario) la sustitución de tokens en la función autoresponder_mail() insertando el código siguiente antes de la preparación del cuerpo de texto sin formato (antes de la línea 392 en la versión 6.x-1,0-alfa1):

// load the full user object 
$user = user_load($u->uid); 
// Replace user tokens in mail body 
$mail->body = token_replace($mail->body, 'user', $user); 

Alternativamente, puedes hacerlo una llamada de función antes en autoresponder_cron(), dentro del bucle while ($message db_fetch_object($result_messages)), antes de que la llamada if (autoresponder_mail($u, $message)) (línea 366), utilizando el mensaje en lugar de $ $ e:

// load the full user object 
$user = user_load($u->uid); 
// Replace user tokens in mail body 
$message->body = token_replace($message->body, 'user', $user); 

En caso de que esto funciona, es posible que desee para enviarlo como un parche to the already existing feature request for this. (Supongo que usted es el 'keyzo'/'shane' que ya respondió allí;)

Si funciona y va a crear un parche, sería una práctica 'estándar' agregar la pista sobre el posible reemplazo de token a la forma (s) mensaje definición en autoresponder_mail_edit_create_form().

Cuestiones relacionadas