2013-06-11 34 views
2

我试着去检查,如果用户属于一组使用此 函数调用的柜员。我似乎无法得到它的权利JOOMLA 2.5检查用户是否属于一组

function isMember($userid,$group){ 


$privGroups = array('Administrator', 'Super Users'); // Always return true for these 

if(is_array($group))$mygroup = $group; 
else $mygroup[0]=$group; 
$j=0; 
$n=count($mygroup); 
for($i=count($mygroup); $i<($n+count($privGroups)); $i++) { 
    $mygroup[$i] = $privGroups[$j]; // Add "always" admins to argument admins 
    $j++; 
} 

// DB access credentials: $db, $dbhost, $login, and $pw need to be defined here 

$link = mysql_connect($this->DB_HOST, $this->DB_USER, $this->DB_PASS) 

    or die("Could not connect : " . mysql_error()); 
mysql_select_db($this->DB_NAME) or die("Could not select database"); 

// extract all groups user's a member of 
$query = "Select q.title FROM (#__user_usergroup_map as p) 
    LEFT JOIN (#__usergroups as q) 
    on p.group_id=q.id 
    WHERE p.user_id=$userid;"; 
// remove prefix etc. 
$SQL = $this->cleanSQL($query); 
$res=mysql_query($SQL) or die('<p>Groups select query failed<br />' . mysql_error() . "<br />$SQL</p>"); 
if (mysql_num_rows($res) == 0) { // No groups? Then user clearly isn't a mamber of "$group" 
    if($termlink) mysql_close($link); 
    return false; 
} 
while ($line = mysql_fetch_array($res, MYSQL_ASSOC)) { 
    extract($line); 
    $userGroups[]=$title; 
} 
mysql_close($link); // Close link 
for($i=0; $i<count($userGroups); $i++){ 
    for($j=0; $j<count($mygroup); $j++) { 
     if(strtolower($userGroups[$i])==strtolower($mygroup[$j])) return true; 
    } 
} 
return false; 

    } 

这是行不通的;它从某处失败。 如果某个成员是某个特定组的成员,是否有捷径?

+0

没关系,这个问题是由最后mysql的密切联系造成的,一旦我评论了这一点,模板和菜单开始显示 – ofumbi

回答

5

有这个快捷方式。

in_array($group_id, $user->getAuthorisedGroups()) 

所以你只需要知道你的组ID并拥有一个用户对象。

+0

这是否爬上组树检查父组继承? – Wobbles

+0

不,我不这么认为。 – mattosmat

+0

有没有这样的joomla函数? – Wobbles

相关问题