2012-12-21 41 views
0

我運行一個完整的服務站點,管理多個客戶端的不同用戶帳戶。我更改了privatemsg,因此管理員用戶可以訪問任何消息。我有一個關於如何爲每個用戶顯示未讀消息的問題。我現在的代碼只顯示登錄用戶的未讀消息。代碼如下:更改Privatemsg未讀郵件

$count = privatemsg_unread_count(); 
if ($count) { 
print l('(' . (int)privatemsg_unread_count() .' new)' , "messages", array('title' => 'View Inbox')); 
} 

回答

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