abfrage: ist ein user mitglied einer gruppe bestimmten typs?
Eingetragen von xirios-user (24)
am 21.08.2013 - 17:47 Uhr in
am 21.08.2013 - 17:47 Uhr in
guten abend liebe forenmitglieder,
bei der arbeit an einem kleinen modul bin ich auf der suche nach einer funktion, die abfragen kann, ob ein bestimmter user mitglied (irgendeiner) gruppe eines bestimmten typs ist, also z.b.:
bei gegenem $user sollte die funktion rückmelden, ob dieser mitglied einer gruppe des inhaltstyps gruppe-beispiel ist...
kann mir jemand helfen?
danke schön
johannes
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich nehme einfach mal an,
am 23.08.2013 - 08:08 Uhr
Ich nehme einfach mal an, dass du die Gruppenfunktionalität über das Modul [do:og] (Organic Groups) zur Verfügung stellst.
Hier gibt es die Funktion og_is_member: http://api.drupalize.me/api/drupal/function/og_is_member/7
Vorher müsstest du noch auslesen, welchen Content-Typ die Gruppe hat, in der sich der Nutzer gerade befindet. Da dies aber ein "normaler Node" ist könntest du das über das Node Objekt auslesen und in der Abfrage verwenden.
Für die Abfrage eines Nutzers würde das Ganze wie folgt ausschauen:
<?php
$group_id = 12;
if (og_is_member($gid)) {
drupal_set_message('Eingeloggter Nutzer ist Mitglied der Gruppe mit der ID 12');
}
?>
oder
<?php
$group_id = 12;
$account = user_load(3);
if (og_is_member($gid, 'user', $account)) {
drupal_set_message('Benutzer mit User-Id 3 ist Mitglied der Gruppe mit der ID 12');
}
?>
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.
vielen dank steffen für deine
am 23.08.2013 - 17:44 Uhr
vielen dank steffen für deine unterstützung,
ja, ich steele die gruppenfunktionalität über organimc groups bereit, das hatte ich vergessen zu erwähnen. mein problem ist allerdings, dass ich keine vorgegebene group_id nutzen kann. die frage, die beantwortet werden müsste ist die, ob es überhaupt irgendeine gruppe (bestimmten typs) gibt, in der der user mitglied ist. ich kann es mir nur so vorstellen, dass alle vorhandenen gruppen (eben des bestimmten typs) nach der mitgliedschaft des users überprüft werden.
aber ist das sinnvoll (performance-problem bei sehr vielen vorhandenen gruppen?)?
danke und schönen abend
johannes
@xirios-user,ein wenig
am 23.08.2013 - 19:44 Uhr
@xirios-user,
ein wenig PHP-Kenntnisse bei Dir vorrausgesetzt. Ein Tipp:
Installiere das Devel Modul. Gib einem User, dessen OG-Befindlichkeiten Du ermitteln willst das Recht, mit Devel PHP Code auszufuehren (Execute PHP Code). Logge Dich als dieser User ein und verwende Devel's Execute PHP Code.
Infos kannst Du mit Devel durch dsm() anzeigen. Wenn Du diesem Weg folgst verwende testhalber mal folgenden Code, um Dir den User "anzusehen".
global $user;
dsm($user);
Du kannst das auch als jeder beliebige User handhaben, musst im Falle der "OG-Spionage" aber das Userobject fuer einen gewuenschten User laden - so wie von Steffen im 2. Snipped gezeigt.
Vorteil bei dieser Vorgehensweise: Man kann schnell und unkompliziert mittels PHP im System "herumspazieren", Infos erhalten sowie auch Aktionen ausfuehren.
Siehe mal hier:
https://drupal.org/node/1884112#comment-7335592
Da geht noch was.