vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.0 Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=33)
-   -   Allow Group to Read Titles / Not Content (https://vborg.vbsupport.ru/showthread.php?t=60178)

Princeton 01-12-2004 10:00 PM

Allow Group to Read Titles / Not Content
 
Tested and working in 3.0.3 - 3.0.7

This hack will enable you to DISABLE SHOWTHREAD according to USERGROUP.This will allow all your members to view titles and topic counts found within a section. Think of it as "window shopping". Your members will be able to read all topics from the forumdisplay.php page but, will not be allowed to read it's content unless they have permission

The edits below will prevent anyone from viewing the contents of a post from within showthread, printthread, showpost, and archives.

This feature can be used on a per USERGROUP and /or per FORUM basis. You, as the admin, will have complete control.

You will need to modify:
  • includes/init.php
  • includes/adminfunctions_forums.php
  • admincp/resources.php
  • admincp/usergroup.php
  • showthread.php
  • archive/index.php
  • printthread.php
  • showpost.php
  • archive.css
Add 3 new phrases.
MOD VERSION 1.05
  • Fixed issues concerning the archives - eg. blank page was displayed ... now, thread links are viewable but not active (if not allowed).
MOD VERSION 1.01
  • now with personal NOT ALLOWED message
  • Easier to install
  • now add the ability to allow users to view their own posts/threads (view below code)
  • archive section changed to NOT display links to content that is not READABLE
  • added a message to archive section if user cannot read content
[hr=blue]4[/hr]
Allow User To View And Post Into Their Own Threads:
If you want to allow users to view and post their own threads and have access to them ... use this code in showthread, printhread, and showpost.php:
Code:

// ================================================= \\
// == [ ALLOW GROUP TO READ TITLE / NOT CONTENT - GTP BEGIN ]
                if (!($forumperms & GTPCANREADCONTENT)AND ($thread['postuserid'] != $bbuserinfo['userid']))
                {
                    eval(print_standard_error('gtp_cannot_read'));
                }
// == [ 00-00-2004 - GTP END ]
// ================================================= \\

NOTE: You may have to use "$threadinfo['postuserid]" on some of the pages.

[hr=blue]4[/hr]
Disable Thread Preview
To disable thread previews on forums that user cannot read content do the following edits:
FIND in functions/forumdisplay.php:
Code:

    // format thread preview if there is one
    if ($ignore["$thread[postuserid]"])
    {
        $thread['preview'] = '';
    }
    else if (isset($thread['preview']) AND $vboptions['threadpreview'] > 0)
    {
        $thread['preview'] = strip_quotes($thread['preview']);
        $thread['preview'] = htmlspecialchars_uni(fetch_trimmed_title(strip_bbcode($thread['preview'], false, true), $vboptions['threadpreview']));
    }

REPLACE IT WITH:
Code:

// ================================================= \\
// == [ ALLOW GROUP TO READ TITLE / NOT CONTENT - GTP BEGIN ]
    $forumperms = fetch_permissions($foruminfo['forumid']);
    // format thread preview if there is one
    if ($ignore["$thread[postuserid]"] OR !($forumperms & GTPCANREADCONTENT))
    {
        $thread['preview'] = '';
    }
    else if (isset($thread['preview']) AND $vboptions['threadpreview'] > 0)
    {
        $thread['preview'] = strip_quotes($thread['preview']);
        $thread['preview'] = htmlspecialchars_uni(fetch_trimmed_title(strip_bbcode($thread['preview'], false, true), $vboptions['threadpreview']));
    }
// == [ 00-00-2004 - GTP END ]
// ================================================= \\

[hr=blue]4[/hr]
Example Of How Hack Works:
I have a forum with (sub-forums) ... however, one of the sub-forums is private (for PREMIUM members only). Here's how the settings would look like.

In USERGROUP MANAGER (this is a global setting) set "Group can read content?:
UNREGISTERED - YES
REGISTERED - YES
PREMIUM - YES

The global setting will be transferred to all forums; but, we have a sub-forum that is only for PREMIUM MEMBERS so...

In FORUM PERMISSIONS MANAGER set private forum to:
UNREGISTERED - NO
REGISTERED - NO
PREMIUM - YES

NTLDR 01-13-2004 10:11 PM

Good to see proper use of bit fields :)

I'd just like to point out that quickly looking at this I can see three easy ways of getting around it: 1) Use print thread to view the entire thread without registering 2) use the archive to view the entire thread without registering 3) use threaded/hybrid mode if enabled. My apologies if any of the above 3 arn't true, but they all spring to mind after glancing at the code ;)

Princeton 01-14-2004 01:09 AM

Quote:

Originally Posted by NTLDR
Good to see proper use of bit fields :)

I'd just like to point out that quickly looking at this I can see three easy ways of getting around it: 1) Use print thread to view the entire thread without registering 2) use the archive to view the entire thread without registering 3) use threaded/hybrid mode if enabled. My apologies if any of the above 3 arn't true, but they all spring to mind after glancing at the code ;)

thank you ... I completely forgot about the printthread and archives.
I have updated the file and instructions. The new version is v.1.2.

I do not use nor do I have access to thread/hybrid. (I completely removed the templates from my site.) This will have to be tested by someone who uses these features.

If anyone uses this hack can you confirm that it works?

Boofo 01-14-2004 02:34 AM

What do we do if we have another hack installed already using that bit field? And can this be done on a per forum basis? There are a couple of forums I need left open for unregistered users to view the messages.

Princeton 01-14-2004 02:41 AM

multiply the last bitfield value by 2 ... another way to look at it is add up all the previous numbers.

this is an inclusion to the existing permission system ... yes, you can use on a per forum basis. (that's the whole idea)

follow the direction on the file (last section)

Boofo 01-14-2004 02:58 AM

Quote:

Originally Posted by princeton
multiply the last bitfield value by 2 ... another way to look at it is add up all the previous numbers.

this is an inclusion to the existing permission system ... yes, you can use on a per forum basis. (that's the whole idea)

follow the direction on the file (last section)

How high can the bit fields actually go then? Is there a limit?

NTLDR 01-14-2004 10:32 AM

To prevent thread/hybrid and linear all with one edit just place the showthread.php block of code above:

PHP Code:

      if ($threadedmode == 0

That should work I think :)

@Boofo: I'd assume the limit is restricted by the upper limit that PHP can use on your platform (around 2147483647 for integers, no idea if it will work with floats as I haven't tested).

Princeton 01-14-2004 12:27 PM

Quote:

Originally Posted by NTLDR
To prevent thread/hybrid and linear all with one edit just place the showthread.php block of code above:

PHP Code:

      if ($threadedmode == 0

That should work I think :)

@Boofo: I'd assume the limit is restricted by the upper limit that PHP can use on your platform (around 2147483647 for integers, no idea if it will work with floats as I haven't tested).

duh! thank you. I don't know what I was thinking.

I just added the threaded/hybrid mode back onto my site and everything is working. I like how the hybrid mode looks like ... maybe I'll leave it as an option for my members.

Boofo 01-14-2004 01:09 PM

Quote:

Originally Posted by NTLDR
@Boofo: I'd assume the limit is restricted by the upper limit that PHP can use on your platform (around 2147483647 for integers, no idea if it will work with floats as I haven't tested).

How would you use floats?

NTLDR 01-14-2004 01:13 PM

If a int is to big to be an int then it automatically becomes a float :)


All times are GMT. The time now is 12:17 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.02324 seconds
  • Memory Usage 1,763KB
  • 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
  • (3)bbcode_code_printable
  • (2)bbcode_php_printable
  • (4)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)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
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete