Ben belli bir rolü atanmış tüm kullanıcıların bir listesini almak istiyorum. Ben kendi SQL yazabilirim ama API mümkün olduğunca kullanmak istiyorum.
(Belirli bir ölçüte uyan kişileri yukarı çekerek) görev bu tür için hiçbir Drupal API fonksiyonları genellikle vardır. Bu API tek varlık CRUD fonksiyonları üzerine odaklanma eğilimindedir; her şey bir geliştiricinin kendi SQL becerilerini kalmıştır.
İzlenme modülü vb rolü, izin, tarafından filtre kullanıcıların listeleri oluşturmanıza olanak verir - ama kolayca overkill olabilir.
Kullanıcıların dizisini almak için entity_load kullanabilirsiniz. İşte (bildirim göndermek için kullanılır) yönetici kullanıcıların tüm e-postaların listesi yaratacak örnek
<?php
$users = entity_load('user');
$emails = '';
foreach($users as $user) {
if (array_key_exists(3, $user->roles)) {
if (strlen($emails) > 0) {
$emails .= ' ' . $user->mail;
} else {
$emails = $user->mail;
}
}
}
?>
Benim için çalıştı SQL:
$users = ""; $result = db_query('SELECT users.name AS users_name FROM users users INNER JOIN users_roles users_roles ON users.uid = users_roles.uid WHERE users_roles.rid = 4'); while ($existing_user = db_fetch_object($result)) { if ($users != "") $users .= ", "; $users .= $existing_user->users_name; // or do whatever } echo $users;
Akılda bu Drupal 6 için tutmak ve ben büyük bir kullanıcı üsleri için bu performansı hakkında emin değilim. Drupal 7 hakkında emin değil.
Bir kolay seçenek sizin için (önizleme butonuna bastığınızda görünümü kendi öz altında görünen) SQL oluşturmak için Görüntüleme kullanın ve daha sonra erişmek için gerekiyorsa gereken sonuçları elde etmek için Drupal SQL abstraction layer kullanmak için ham verilere ziyade bir görünüm sergilemektedir.
Bu gibi biraz bakmak istiyorum:
$result = db_query('SELECT users.uid AS uid,
users.mail AS users_mail,
users.name AS users_name
FROM users users');
while ($existing_user = db_fetch_object($result)) {
print_r($existing_user); // or do whatever
}
Sadece tam sorgu almak için görünümüne daha fazla alan eklemek.
I don't know about any API can help to collect users by role. Here you are some link you can get something: http://drupal.org/node/82002. Although SO is an awesome service I suggest using drupal.org or #drupal channel on irc.freenode.org for Drupal related questions.
Ps:. Bazen SQL o kötü değil :)