Câu trả lời:
Sử dụng trực tiếp API nhóm hữu cơ:
og_get_group_members_properties($yourGroupNode, array(), 'members', 'node');
cung cấp cho bạn một loạt các id người dùng.
Để chỉ nhận được người dùng đang hoạt động, đang chờ xử lý hoặc bị chặn, bạn có thể đặt 'thành viên__1', 'thành viên__2' hoặc 'thành viên__3' thay cho 'thành viên', như trong ví dụ này:
og_get_group_members_properties($yourGroupNode, array(), 'members__1', 'node');
của, nếu bạn thích, như thế này:
og_get_group_members_properties($yourGroupNode, array(), 'members__' . OG_STATE_ACTIVE, 'node');
Ví dụ về giá trị trả về:
Array
(
[0] => 48
[1] => 49
[2] => 51
)
Hoặc thông qua DBTNG:
$query = db_select("og_membership", "ogm");
$query->condition("ogm.gid", $yourGroupID, "=");
$query->condition("ogm.group_type", "node", "=");
$query->fields("ogm", array("entity_type", "etid"));
$result = $query->execute();
print_r($result->fetchAll());
... cho phép bạn tham gia các bảng khác, thay vì phải lọc tập kết quả trong mã PHP như bạn muốn nếu sử dụng EntityFieldQuery
.
$query = new EntityFieldQuery();
$query
->entityCondition("entity_type", "og_membership", "=")
->propertyCondition("gid", $yourGroupID, "=");
$result = $query->execute();
print_r($result["og_membership"]);
(Dựa trên http://api.drupal.org/api/drupal/includes--common.inc/feft/entity_load/7#comment-14544 )
giải pháp smokris hoạt động nhưng tôi tìm thấy một cách khác với EntityFieldQuery
:
$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
->fieldCondition('og_group_ref', 'target_id', $yourGroupID)
->execute();
Ví dụ về giá trị trả về:
{"node":
{"22":{"nid":"22","vid":"22","type":"panoramique"},
"32":{"nid":"32","vid":"32","type":"panoramique"},
"35":{"nid":"35","vid":"35","type":"panoramique"},
"36":{"nid":"36","vid":"36","type":"panoramique"}
}
}
Mở rộng câu trả lời từ @smokris .
Trạng thái hoạt động cho các thành viên là "1" ( ->condition('ogm.state', 1, '=')
).
function _get_users_in_group($gid) {
$query = db_select('users', 'u');
$query
->condition('u.uid', 0, '<>')
->condition('u.status', 1, '=')
->condition('ogm.state', 1, '=')
->fields('u', array('uid', 'name'))
->join('og_membership', 'ogm', "ogm.gid = :gid AND u.uid = ogm.etid AND ogm.entity_type = 'user'", array(':gid' => $gid));
return $query->execute();
}