我运行一个完整的服务站点,管理多个客户端的不同用户帐户。我更改了privatemsg,因此管理员用户可以访问任何消息。我有一个关于如何为每个用户显示未读消息的问题。我现在的代码只显示登录用户的未读消息。代码如下:
$count = privatemsg_unread_count();
if ($count) {
print l( '(' . (int)privatemsg_unread_count() .' new)' , "messages", array('title' => 'View Inbox'));
}
答案 0 :(得分:1)
如果您未向privatemsg_unread_count()传递任何参数,它将返回当前登录用户的未读消息数。该函数接受一个参数,这是一个用户对象。
如果您有用户ID列表,则可以使用以下代码获取每个用户的未读邮件数。
foreach ($uids as $uid) {
$account = user_load($uid);
$count = privatemsg_unread_count($account);
// ...
}
如果您没有用户ID列表,并且您有兴趣获取每个用户的未读邮件数,则可以使用以下代码。
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'user')
->entityCondition('entity_id', 0, '>')
->propertyCondition('status', 1)
->addTag('DANGEROUS_ACCESS_CHECK_OPT_OUT');
$result = $query->execute();
if (isset($result['user'])) {
$accounts = user_load_multiple(array_keys($result['user']));
foreach ($accounts as $account) {
$count = privatemsg_unread_count($account);
// ...
}
}