Benutzerrolle des Autors des Nodes -> $author->roles ?
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 30.07.2008 - 17:23 Uhr in
Ich habe folgende Seite bei drupal gefunden:
Display content according to User Role AND Author Role
<?php
global $user;
$author = user_load(array('uid' => $node->uid));
if ((in_array('X', $user->roles)) && (in_array('A', $author->roles)))
{
print "TRUE";
}
elseif ((in_array('Y', $user->roles)) && (in_array('B', $author->roles)))
{
print "FALSE";
}
?>
Ich habe den Code auf meine Bedürfnisse angepasst, und die "&&" weggelassen, weil ich einfach nur die Rolle des Autoren, der das Review geschrieben hat, überprüfen will.
Also sieht der Code dann so aus:
<?php
global $user;
$author = user_load(array('uid' => $node->uid));
if ((in_array('X', $author->roles)))
{
print "X";
}
elseif ((in_array('Y', $author->roles)))
{
print "Y";
}
else
{
print "Z";
}
?>
Ich habe hier die Funktion so erweitert, dass Z ausgegeben wird, wenn keine der beiden Rollen darüber zutreffen.
Die Funktion funktioniert wunderbar mit $user->roles, dann gibt er den entsprechenden Wert wieder. Bei $author->roles schreibt die Funktion immmer nur z, obwohl der Autor des Nodes die Rolle y hat.
Hat jemand ne Ahnung, warum die funktion nicht wie erwartet funktioniert?
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich habe die Lösung des
am 31.07.2008 - 14:05 Uhr
Ich habe die Lösung des Problems gefunden:
Die Funktion muss so aussehen, dass stand leider nicht dabei:
<strong>function your_function($node) {</strong>
global $user;
$author = user_load(array('uid' => $node->uid));
if ((in_array('bla', $author->roles)))
{
print "bla";
}
elseif ((in_array('blah', $author->roles)))
{
print "blah";
}
else
{
print "blah";
}
}
Der wichtige Teil ist ($node) in den Klammern nach dem Namen der Funktion.
Ist dies mir Views auch möglich?
am 18.08.2008 - 08:38 Uhr
Hallo zusammen,
kann man so eine Abfrage auch mit views realisieren?
Gruß Apfel007
[fixed]Lang wurde hier nichts
am 24.06.2010 - 11:34 Uhr
Lang wurde hier nichts geschrieben, jedoch habe ich versucht es für meine Zwecke zu nutzen um damit eine Abfrage in den Panels zu realisieren
der Code:
global $user;
$author = user_load(array('uid' => $node->uid));
if(in_array('B', $author->roles)){
return 'TRUE';
}
else{
return 'FALSE';
}
Das ist der Code den ich bei 'Selection rules' eingefügt habe, um nur bestimmte Nodes mit dem gewählten Panel zu versehen. doch nun gibt es bei allen anderen Nodes deren Author nicht der Benutzergruppe B angehören, sondern der Gruppe A der Fehler
-->> warning: preg_match_all() expects parameter 2 to be string, array given in C:\xampp\htdocs\drupal_final\sites\all\modules\ctools\includes\context.inc on line 604.
damit kann ich nur leider nicht viel anfangen.
Ist evtl der Fehler, das ich keine Alternative Darstellung habe? (Habe lediglich die eine Variante mit der Regel)
/e es musste nur gepatched werden, schon ist alles gut