vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Forum Display and Thread Viewing Permissions.. (https://vborg.vbsupport.ru/showthread.php?t=105172)

himerus 01-12-2006 09:10 PM

Forum Display and Thread Viewing Permissions..
 
I'm a little stuck here in implementing the appropriate viewing permissions for a custom forum...

in forumdisplay.php,

PHP Code:

$hook_query_fields $hook_query_joins $hook_query_where '';
    (
$hook vBulletinHook::fetch_hook('forumdisplay_query')) ? eval($hook) : false;

    
$threads $db->query_read("
        SELECT 
$votequery $previewfield
            thread.threadid, thread.title AS threadtitle, thread.forumid, pollid, open, replycount, postusername, postuserid, thread.iconid AS threadiconid,
            
$lastpost_info, thread.dateline, IF(views<=replycount, replycount+1, views) AS views, notes, thread.visible, sticky, votetotal, thread.attach,
            hiddencount
            " 
iif($vbulletin->options['threadsubscribed'] AND $vbulletin->userinfo['userid'], ", NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed") . "
            " 
iif($deljoin", deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason")
            . 
iif($vbulletin->options['threadmarking'] AND $vbulletin->userinfo['userid'], ', threadread.readtime AS threadread') . "
            
$hook_query_fields
        FROM " 
TABLE_PREFIX "thread AS thread
            
$deljoin
            " 
iif($vbulletin->options['threadsubscribed'] AND $vbulletin->userinfo['userid'], " LEFT JOIN " TABLE_PREFIX "subscribethread AS subscribethread ON(subscribethread.threadid = thread.threadid AND subscribethread.userid = " $vbulletin->userinfo['userid'] . ")") . "
            " 
iif($vbulletin->options['threadmarking'] AND $vbulletin->userinfo['userid'], " LEFT JOIN " TABLE_PREFIX "threadread AS threadread ON (threadread.threadid = thread.threadid AND threadread.userid = " $vbulletin->userinfo['userid'] . ")") . "
            
$previewjoin
            
$tachyjoin
            
$hook_query_joins
        WHERE thread.threadid IN (0
$ids$hook_query_where
        ORDER BY sticky DESC, 
$sqlsortfield $sqlsortorder
    "
);
    unset(
$limitothers$delthreadlimit$deljoin,$datecut$votequery$sqlsortfield$sqlsortorder$threadids); 

I need to be able to do the following.... with my plugin code...

PHP Code:

if ($thread['forumid'] == 31) {
$hook_query_fields .= "";
$hook_query_joins .= "";
$hook_query_where .= "";


I need to in this particular forum, be able to only list threads that a user has already posted in... This forum is mainly populated from external forms and automated processes. The forum admins, and certain usergroups will have full permissions, and the thread owners will have full permissions to posts, but the other users will only be able to see listed for this particular forum the threads they have already posted in....

I'm not sure how to quickly do this with the join and where statements, but I'm sure someone could start me in the right direction....

Thanks in advance!!!

Would this work???

I think it's kind of working proplery... I've added my custom admin and staff usergroups to this one... they can browse all posts for this forum, but users can only view ones they've posted in.... and the first post must be made through another source...

PHP Code:

if ($foruminfo[forumid] == 31 && $vbulletin->userinfo['usergroupid'] != "5" && $vbulletin->userinfo['usergroupid'] != "6" && $vbulletin->userinfo['usergroupid'] != "7" && $vbulletin->userinfo['usergroupid'] != "11"){
        
$hook_query_fields .= ", posted.parentid, posted.postid AS posted_verification";
        
$hook_query_joins .= " LEFT JOIN " TABLE_PREFIX "post AS posted ON(posted.threadid = thread.threadid AND posted.userid = " $vbulletin->userinfo['userid'] . ")";
        
/* ############*/
        
$hook_query_where .= " AND posted.postid != ''";


is this correct in saying that only to pull this thread for viewing if the user has posted in the thread?

himerus 01-13-2006 10:03 PM

I'm still having problems on this, but I'm close to a solution if I just had the right help. :)

PHP Code:

if ($foruminfo[forumid] == 31 && $vbulletin->userinfo['usergroupid'] != "5" && $vbulletin->userinfo['usergroupid'] != "6" && $vbulletin->userinfo['usergroupid'] != "7" && $vbulletin->userinfo['usergroupid'] != "11"){
    
$hook_query_fields .= ", posted.parentid AS parent_verify, posted.postid AS posted_verification";
    
$hook_query_joins .= " INNER JOIN " TABLE_PREFIX "post AS posted ON(posted.threadid = thread.threadid AND posted.userid = " $vbulletin->userinfo['userid'] . ")";
    
/* ############*/
    
$hook_query_where .= " AND posted.postid != ''";


This is pulling the right information, but I have LEFT JOIN ed the post table, and now, the user is getting the thread listed 3 times if they have had 3 posts in the thread.... I just need to verify that they have at least 1 post....

Can someone help me with this? I know it's a simple fix with what I'm trying to accomplish....


All times are GMT. The time now is 08:05 AM.

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.01241 seconds
  • Memory Usage 1,755KB
  • 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
  • (4)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (2)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