View Single Post
  #1  
Old 04-01-2009, 08:21 PM
Antivirus's Avatar
Antivirus Antivirus is offline
 
Join Date: Sep 2004
Location: Black Lagoon
Posts: 1,090
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Stumped on query using bitfield

I want my query to return only users allowed to post new threads in a specific forum. Naturally, I want it to adhere not only to usergroup permission for the said forum, but also to override according to forumpermissions - because certain usergroups have custom forum permissions for this specific forum, therefore we can't go solely upon usergroupid or membergroupids.

Here's what I have so far:
PHP Code:
$bit1 = ($vbulletin->bf_ugp_forumpermissions['canpostnew']);
$userarray = array('' => '-');
$sqlu $vbulletin->db->query_read("
    SELECT userid, username  
    FROM user AS user  
    LEFT JOIN usergroup AS usergroup ON (user.usergroupid = usergroup.usergroupid) 
    LEFT JOIN forumpermission AS forumpermission ON (user.usergroupid = forumpermission.usergroupid) OR (find_in_set(forumpermission.usergroupid, user.membergroupids)) 
    " 
iif($bit1"WHERE (usergroup.forumpermissions & $bit1) OR (forumpermission.forumpermissions & $bit1)""WHERE userid = " $vbulletin->userinfo['userid']) . 
    AND forumpermission.forumid = " 
intval($foruminfo['forumid']) . "
    GROUP BY user.userid
    ORDER BY user.username    
"
); 
while (
$user $vbulletin->db->fetch_array($sqlu))
{
    
$userarray[$user['userid']] = $user['username'];

This is working nicely with regards to the standard usergroup permissions for the specific forum in question, however it's still not taking into account the custom forumpermission entries for this specific forum.

I am looking into how vbulletin figures ouf the userinfo->forumpermissions array and hopefully that can help me, but if anyone sees or already knows what is wrong with my query, i would certainly appreciate the help as opposed to looking for a solution on my own well into the night.

Thanhks
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01536 seconds
  • Memory Usage 1,780KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete