具有令牌模块的Drupal自动回复器

时间:2010-06-13 15:42:11

标签: php drupal token

我正在使用Drupal自动回复模块 - 我想使用令牌,因此我可以包含已在发送的电子邮件中订阅的用户名...

有人知道如何实现这一目标吗?

感谢您的帮助。

沙恩

2 个答案:

答案 0 :(得分:4)

谢谢你 - 你的回答非常接近......

自动回复模块UID与用户UID无关,因此您的代码引入了不同的用户名...所以我将其更改为从电子邮件地址中找到用户。

// 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);

是的确,我会将其作为补丁提交给我的其他请求,希望它可以帮助其他人。

非常感谢

沙恩

答案 1 :(得分:3)

OP单独回答后编辑:以下是基于$u->uid引用'标准'Drupal用户ID,这是不正确的假设! / strong>因此,如果可能的话,必须通过其他方式找到相应的Drupal用户 - 请参阅此the OPs answer for details ...


我还没有对它进行测试,但是查看自动回复源代码,您应该能够在准备纯文本正文之前插入以下代码,在autoresponder_mail()函数中添加(用户)令牌替换(在6.x-1.0-alpha1版本中的第392行之前:

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

或者,您可以在autoresponder_cron()之前的while ($message db_fetch_object($result_messages))循环中,在if (autoresponder_mail($u, $message))调用之前(第366行)使用一个函数调用, $ message而不是$ 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);

如果此方法有效,您可能希望将其作为补丁to the already existing feature request for this提交。 (我猜你是已经回答过的'keyzo'/'shane';)

如果它有效并且您要创建补丁,那么将可能的令牌替换提示添加到autoresponder_mail_edit_create_form()中的消息定义表单将是“标准”做法。