2010-06-13 13 views
5

sto usando il modulo di risposta automatica Drupal - e voglio usare i token in modo da poter includere il nome utente che ha sottoscritto nei messaggi di posta elettronica in corso la trasmissione ...Drupal Autoresponder con modulo Token

Qualcuno sa come questo può essere raggiunto?

Grazie per qualsiasi aiuto.

Shane

risposta

4

Grazie per questo - la risposta era molto vicino ....

L'UID modulo di risposta automatica non è correlato alla UID utente in modo che il codice è stato portando in un nome utente diverso ... Così ho cambiato per trovare l'utente dall'indirizzo email invece.

// 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ì, te lo sottopone come una patch per la mia altra richiesta, e spero che possa aiutare qualcun altro.

Molte grazie

Shane

+1

+1 per il follow up - non ho guardato lo schema e appena assunto la 'standard' utilizzo uid:/ –

+0

On domanda/osservazione, però: sono gli utenti anonimi permesso iscriversi pure? Questa sarebbe una buona ragione per la tabella separata "autoresponder_users" e significherebbe che dovresti aggiungere un controllo alla tua "ricerca utente per posta" nel caso in cui non sia possibile trovare utenti Drupal corrispondenti. ('user_load()' restituirebbe FALSE in quel caso.) –

+0

Ciao Henrik, Sì, apprezzo lo schema - mi hai indicato nella direzione giusta però :-) E apprezzo il tuo punto riguardo agli utenti anonimi - ma io ci ho pensato, quindi è solo per gli utenti che hanno un account, comunque ci sono buone riflessioni! Grazie per il vostro aiuto. Shane – Shane

3

EDIT dopo risposta separata by OP: Quanto segue è stato basato sul presupposto che la $u->uid riferisce alla Drupal ID utente 'standard', che non è corretto! Quindi si deve trovare l'utente Drupal corrispondente con altri mezzi, se possibile - vedi the OPs answer for details su questo ...


non ho ancora testato, ma guardando il codice sorgente di autoresponder, si dovrebbe essere in grado di aggiungere (utente) sostituzione token nel funzione autoresponder_mail() inserendo il seguente codice prima della preparazione del corpo di testo (prima linea 392 nel rilascio 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); 

alternativa, si potrebbe fare una chiamata di funzione in precedenza in autoresponder_cron(), all'interno del ciclo while ($message db_fetch_object($result_messages)), prima della chiamata if (autoresponder_mail($u, $message)) (linea 366), utilizzando $ messaggio invece di $ mail:

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

Nel caso in cui questo funziona, si potrebbe desiderare di presentarla come una patch to the already existing feature request for this. (Immagino tu sia il 'keyzo'/'shane' che ha già risposto lì)

Se funziona e stai per creare una patch, sarebbe pratica "standard" aggiungere il suggerimento sulla possibile sostituzione di token ai moduli di definizione dei messaggi in autoresponder_mail_edit_create_form().

Problemi correlati