ฉันจะรับรายการของเอนทิตีสมาชิกของกลุ่มอินทรีย์โดยทางโปรแกรมได้อย่างไร
(ฉันรู้วิธีรับรายชื่อสมาชิกกลุ่มโดยใช้ Views - ฉันต้องการทำสิ่งนี้โดยใช้ Organic Groups API แต่ไม่สามารถหาวิธีที่เหมาะสมได้)
ฉันจะรับรายการของเอนทิตีสมาชิกของกลุ่มอินทรีย์โดยทางโปรแกรมได้อย่างไร
(ฉันรู้วิธีรับรายชื่อสมาชิกกลุ่มโดยใช้ Views - ฉันต้องการทำสิ่งนี้โดยใช้ Organic Groups API แต่ไม่สามารถหาวิธีที่เหมาะสมได้)
คำตอบ:
ใช้โดยตรง Organic Groups API:
og_get_group_members_properties($yourGroupNode, array(), 'members', 'node');
ช่วยให้คุณมีรหัสผู้ใช้มากมาย
หากต้องการได้รับเฉพาะผู้ใช้ที่อยู่ระหว่างดำเนินการหรือถูกปิดกั้นคุณสามารถใส่ '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
)
หรือผ่าน 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
ตามที่คุณต้องการถ้าใช้
$query = new EntityFieldQuery();
$query
->entityCondition("entity_type", "og_membership", "=")
->propertyCondition("gid", $yourGroupID, "=");
$result = $query->execute();
print_r($result["og_membership"]);
(อ้างอิงจากhttp://api.drupal.org/api/drupal/includes--common.inc/function/entity_load/7#comment-14544 )
โซลูชัน 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"}
}
}
สถานะการใช้งานสำหรับสมาชิกคือ "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();
}