Wie liste ich Mitgliedsunternehmen einer Organic Group programmatisch auf?


17

Wie kann ich programmgesteuert eine Liste der Mitgliedsunternehmen einer Organic Group abrufen?

(Ich weiß, wie ich mithilfe von Ansichten eine Liste der Gruppenmitglieder erhalte. Ich würde dies lieber mit der API für organische Gruppen tun, konnte jedoch nicht die richtige Methode finden.)

Antworten:


14

Verwenden Sie direkt die Organic Groups API:

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

gibt Ihnen eine Reihe von Benutzer-IDs.

Um nur aktive, ausstehende oder blockierte Benutzer zu erhalten, können Sie 'members__1', 'members__2' oder 'members__3' anstelle von 'members' einfügen, wie im folgenden Beispiel dargestellt:

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

von, wenn Sie es vorziehen, wie dieses:

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

Beispiel für den zurückgegebenen Wert:

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

1
Dies sollte die richtige Antwort sein
Chris

11

Oder über 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());

... wodurch Sie andere Tabellen verknüpfen können, anstatt die Ergebnismenge im PHP-Code wie bei Verwendung filtern zu müssen EntityFieldQuery.



2

smokris solution hat funktioniert, aber ich habe einen anderen Weg gefunden mit EntityFieldQuery:

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

Beispiel für den zurückgegebenen Wert:

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

Antwort von @smokris wird erweitert .

Der aktive Status für die Mitgliedschaften ist "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();
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.