Làm thế nào để lập trình liệt kê các thực thể thành viên của Nhóm hữu cơ?


17

Làm cách nào tôi có thể lập trình danh sách các thực thể thành viên của Nhóm hữu cơ?

(Tôi biết cách lấy danh sách các thành viên nhóm bằng cách sử dụng Chế độ xem - Tôi muốn làm điều này bằng API nhóm hữu cơ, nhưng không thể tìm thấy phương pháp phù hợp.)

Câu trả lời:


14

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
)

1
Đây phải là câu trả lời đúng
Chris

11

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.



2

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"}
  }
}

0

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();
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.