유기적 그룹의 구성원을 프로그래밍 방식으로 나열하는 방법은 무엇입니까?


17

유기적 그룹의 멤버 엔티티 목록을 프로그래밍 방식으로 얻으려면 어떻게해야합니까?

(뷰를 사용하여 그룹 회원 목록을 얻는 방법을 알고 있습니다. Organic Groups API를 사용하여이 방법을 선호하지만 올바른 방법을 찾지 못했습니다.)

답변:


14

유기 그룹 API를 직접 사용하여 :

og_get_group_members_properties($yourGroupNode, array(), 'members', 'node');

사용자 ID 배열을 제공합니다.

활성, 보류 중 또는 차단 된 사용자 만 확보하려면 다음 예와 같이 'members__1', 'members__2'또는 'members__3'을 'members'대신 두십시오.

og_get_group_members_properties($yourGroupNode, array(), 'members__1', 'node');

원하는 경우 다음과 같이 :

og_get_group_members_properties($yourGroupNode, array(), 'members__' . OG_STATE_ACTIVE, 'node');

반환 값의 예 :

Array
(
    [0] => 48
    [1] => 49
    [2] => 51
)

1
정답이어야합니다
Chris

11

또는 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());

...을 사용하면 PHP 코드에서 결과 세트를 필터링하지 않고 다른 테이블을 조인 할 수 있습니다 EntityFieldQuery.



2

smokris 솔루션은 효과가 있었지만 다른 방법으로 찾았습니다 EntityFieldQuery.

$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
  ->fieldCondition('og_group_ref', 'target_id', $yourGroupID)
  ->execute();

반환 값의 예 :

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

@smokris의 답변 확장 .

멤버십의 활성 상태는 "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();
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.