【发布时间】:2010-10-29 10:51:04
【问题描述】:
在用户个人资料表单中添加了一个复选框,订阅每日通讯。我想获取已订阅的用户列表(选中复选框)并向他们发送每日通讯。我如何在 drupal-6 中做到这一点。 (1) 获取所有订阅用户的列表 (2) 向他们发送电子邮件。
如果您能在代码级别进行解释,我将不胜感激。
【问题讨论】:
标签: drupal
在用户个人资料表单中添加了一个复选框,订阅每日通讯。我想获取已订阅的用户列表(选中复选框)并向他们发送每日通讯。我如何在 drupal-6 中做到这一点。 (1) 获取所有订阅用户的列表 (2) 向他们发送电子邮件。
如果您能在代码级别进行解释,我将不胜感激。
【问题讨论】:
标签: drupal
如果您的个人资料字段是 profile_newsletter,您的:
<?php
function mymodule_get_subscribers() {
$query = 'select * from {profile_fields} where `name`="%s";';
$result = db_query($query,'profile_newsletter');
$field = db_fetch_object($result);
$user_query = 'select * from {profile_values} where `fid`=%d and `value`=1;';
$result = db_query($user_query,$field->fid);
$subscribers = array();
while($subscriber = db_fetch_object($result)) {
$subscribers[] = $subscriber->uid;
}
return $subscribers; // Your array of subscriber user IDs
}
?>
这段代码很快,未经测试,可能应该包含一些健全性检查。但它应该可以工作。
对于发送时事通讯等,我建议使用预卷模块。我没有尝试过 Drupal,但 Simplenews 似乎可以解决问题。 http://drupal.org/project/simplenews
如果没有别的,它可能包含一个很好的发送功能。否则只需使用 PHP mail()-function。
【讨论】:
function your_custom_function ($user_id, "Field you want to get") {
$result = db_query("SELECT t2.value FROM profile_fields t1, profile_values t2 where
t1.title='Field you want to get' and t2.uid=".$user_id." and t1.fid=t2.fid");
$field = db_fetch_object($result);
$profile_type =$field->value;
return $profile_type;
}
【讨论】: