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?