PDA

View Full Version : Permissions for specific user


TheAdminMarket
11-01-2014, 08:16 AM
Hello,

I've seen that with the code below I can check if the active user has permissions for a specific action:

if ($permissions["my_plugin"] & $vbulletin->bf_ugp["my_plugin"]["post"])
{
echo "He can post";
} else {
echo "No permissions to post";
}


But as I said before this works for the current active user. What if I want to check if the user with userid=77 has such permission?

Checking a relevant code I found how to get the online status of a specific user:

$userid = 77;
$userinfo = verify_id('user', $userid, 1, 1);
$online_status = fetch_online_status($userinfo, true);


So, is there any similar way to get as true/false if a specific user has a specific permission?

EDITED ----------------

Currently I'm using the follow way to do it:
1.- I'm setting a vBulltin option to hold the usegroupids that have this permission: eg 1,4,5
2.- With the help of a function I'm getting the result

function getPostPermission($userid)
{
global $db, $vbulletin, $vboptions, $permission;

if (!$userid || $userid <= 0)
{
$permission = 0;
} else {
$sql_user = $vbulletin->db->query_first("SELECT * FROM ".TABLE_PREFIX."user WHERE userid=$userid LIMIT 1");
$all_ids = array();
$all_ids = explode(',', $sql_user["membergroupids"]);
array_push($all_ids, $sql_user["usergroupid"]);
$allowed = array();
$allowed = explode(',', $vbulletin->options["post_usergroups"]);
$has_common = array_intersect($all_ids, $allowed);
if (count($has_common) == 0)
{
$permission = 0;
} else {
$permission = 1;
}
}
return $permission;
}


Thank you

kh99
11-01-2014, 09:15 AM
I think you could call fetch_userinfo() then fetch_permissions() (both in includes/functions.php). Maybe something like:
$check_user = fetch_userinfo($userid);
$check_permissions = fetch_permissions(0, $userid, $check_user, false);

then use $check_permissions like you do for the current user. I haven't tried it though, I just looked up these functions.

For fetch_permissions(), the first parameter is a forumid, in case you want to check permissions for a specific forum. And the last parameter tells it whether or not you need the calendar permissions for the user.

TheAdminMarket
11-01-2014, 09:20 AM
Thank you. I'll give a try when I'll be back to my desk, but from what I can see, it looks to be correct. Does it needs to include any file? eg for online user I was calling a file bigtree (or something similar, don't remember the name right now).

kh99
11-01-2014, 09:22 AM
I'm not sure. Those functions are in includes/functions.php, but that may be included already depending where you're calling it. I'm not sure if requires any other includes, but I'd guess that it doesn't.