vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   Permissions for specific user (https://vborg.vbsupport.ru/showthread.php?t=315170)

TheAdminMarket 11-01-2014 08:16 AM

Permissions for specific user
 
Hello,

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

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:
Code:

$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
PHP Code:

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:
PHP Code:

$check_user fetch_userinfo($userid);
$check_permissions fetch_permissions(0$userid$check_userfalse); 

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.


All times are GMT. The time now is 03:23 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02207 seconds
  • Memory Usage 1,729KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (2)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (4)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete