it-swarm.asia

كيف تدرج برمجياً الكيانات الأعضاء في المجموعة العضوية؟

كيف يمكنني الحصول على قائمة برمجية بالكيانات الأعضاء في مجموعة عضوية؟

(أعرف كيفية الحصول على قائمة بأعضاء المجموعة باستخدام طرق العرض - أفضل أن أفعل ذلك باستخدام واجهة برمجة تطبيقات المجموعات العضوية ، ولكن لم أتمكن من العثور على الطريقة الصحيحة.)

17
smokris

أو عبر 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.

11
smokris

باستخدام واجهة برمجة تطبيقات المجموعات العضوية مباشرةً:

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
)
14
Mitja
$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 )

8
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"}
  }
}
2
Thithi32

إجابة ممتدة من @ 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();
}
0
rubofvil