PHP-Abfrage zur Anzeige der eigenen Gruppe
Eingetragen von Tux90 (16)
am 21.10.2009 - 05:59 Uhr in
am 21.10.2009 - 05:59 Uhr in
Hallo,
ich habe meine Gruppen und Berechtigungen nach dieser Anleitung aufgebaut:
Ganz unten in der Anleitung gibt es ein PHP-Block der alle vorhandenen Gruppen anzeigt:
<?php
$vid = 1; //The vid is the vocabulary id of the Groups we wish to list the terms from
$items = array();
$terms = taxonomy_get_tree($vid);
foreach ( $terms as $term ) {
$items[] = l($term->name, 'taxonomy/term/' . $term->tid);
}
if (count($items) ) {print theme('item_list', $items);}
?>;
Nun, gibt es eine Möglichkeit diesen Block so umzubauen, dass nur noch die Gruppe (Gruppen) angezeigt werden, zu der man gehört??
Danke schonmal im Voraus
Gruß Tux90
- Anmelden oder Registrieren um Kommentare zu schreiben
Brauchst du da zwingend PHP?
am 21.10.2009 - 07:43 Uhr
Brauchst du da zwingend PHP? Sonst gibt es schon von Haus aus einen Block "Meine Gruppen" unter
admin/build/block
-----------
Luca Curella
Kooperative Netze - Berlin
PHP
am 21.10.2009 - 11:12 Uhr
Diesen Block gibt es bei mir nicht. Nur den, den ich selbst erstellt habe und mit dem PHP-Code hinterlegt ist.
Tux90 schrieb ich habe
am 21.10.2009 - 12:15 Uhr
ich habe meine Gruppen und Berechtigungen nach dieser Anleitung aufgebaut:
Für alle die es nicht mitbekommen haben, aber dennoch Interesse an der Anleitung haben: Anleitung
--
Tux90 schrieb Nun, gibt es
am 21.10.2009 - 13:00 Uhr
Sonst gibt es schon von Haus aus einen Block "Meine Gruppen" unter admin/build/block
Tux90 verwendet keine Organic Groups.
Nun, gibt es eine Möglichkeit diesen Block so umzubauen, dass nur noch die Gruppe (Gruppen) angezeigt werden, zu der man gehört??
Nicht mit einfachen Mitteln. Es wird nirgends gespeichert, zu welchen Gruppen ein Benutzer gehört. Es wird lediglich gespeichert, zu welchen Rollen der Benutzer gehört und daraus werden Zugriffsrechte abgeleitet.
--
=)
am 21.10.2009 - 13:17 Uhr
mir war klar, dass es nicht mit einfachen Mitteln geht.
Vielleicht über mehrere Tabellen zu Ziel??
So jetzt hab ich auch mal
am 22.10.2009 - 10:29 Uhr
So jetzt hab ich auch mal die Anleitung gelesen :-)
Die Rollennamen des Users entsprechen doch den Termnamen wenn ich es richtig verstanden habe...
So müsste es eigentlich klappen:
<?php
global $user;
$rolenames = array_values($user->roles);
$vid = 1; //The vid is the vocabulary id of the Groups we wish to list the terms from
$items = array();
$terms = taxonomy_get_tree($vid);
foreach ( $terms as $term ) {
if ( in_array($term->name, $rolenames)) {
$items[] = l($term->name, 'taxonomy/term/' . $term->tid);
}
}
if (count($items) ) {print theme('item_list', $items);}
?>
-----------
Luca Curella
Kooperative Netze - Berlin
luzer schrieb Die
am 22.10.2009 - 11:28 Uhr
Die Rollennamen des Users entsprechen doch den Termnamen wenn ich es richtig verstanden habe...
Wenn das bei dir so ist, dann ist gut. Technisch gesehen ist das aber nicht notwendig. Wenn sich Rollennamen und Termnamen unterscheiden (oder allgemein um deinen Code etwas robuster zu machen), müsstest du anhand der Datenbanktabellen der Module user, taxonomy und taxonomy_access herausfinden ob der Benutzer z.B. private Beiträge einer Gruppe lesen darf.
--
Danke
am 23.10.2009 - 07:29 Uhr
Hey Luzer,
danke. Der Code hat funktioniert. Jeder Benutzer bekommt jetzt nur noch die Gruppe angezeigt, zu der er gehört.
Jetzt habe aber ich das Problem, dass ich mit meinem Benutzernamen keiner speziellen Gruppe angehöre, sonder alle angezeigt haben möchte ("root" Verwalter).
Kann man das noch irgendwie mit einbauen, dass die Rolle "root" die ich angelegt habe, alle Gruppen sieht?
Danke und Gruß
Müsste so
am 26.10.2009 - 19:33 Uhr
Müsste so funktionieren:
<?php
global $user;
// Die Rollen des Users
$rolenames = array_values($user->roles);
// Ausnahmen
$special = array('root');
// Rollen fuer die nur die eigenen Gruppen angezeigt werden
$check_this = array_diff($rolenames, $special);
$vid = 1; //The vid is the vocabulary id of the Groups we wish to list the terms from
$items = array();
$terms = taxonomy_get_tree($vid);
foreach ( $terms as $term ) {
if (
in_array($term->name, $check_this)) {
$items[] = l($term->name, 'taxonomy/term/' . $term->tid);
}
}
if (count($items) ) {print theme('item_list', $items);}
?>
-----------
Luca Curella
Kooperative Netze - Berlin
traxer schrieb Wenn das bei
am 26.10.2009 - 19:42 Uhr
Wenn das bei dir so ist, dann ist gut. Technisch gesehen ist das aber nicht notwendig.
Stimmt wohl aber die Anleitung sagt:
"Groups As Roles": there must be a one-to-one relationship between the terms in our Groups vocabulary and corresponding roles. We need a role for each of our groups.
Und man muss doch nicht päpstlicher sein als der Papst...
-----------
Luca Curella
Kooperative Netze - Berlin
luzer schrieb man muss doch
am 26.10.2009 - 19:56 Uhr
man muss doch nicht päpstlicher sein als der Papst...
Nein, aber man sollte sich der Konsequenzen bewusst sein.
--