vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Create new BB Code only viewable by Super Moderators and Administrators (https://vborg.vbsupport.ru/showthread.php?t=299817)

Revenga 07-05-2013 02:39 AM

Create new BB Code only viewable by Super Moderators and Administrators
 
Hi, I'm running a vBulletin 3.8.7 forum and basically what I'm looking for is how to go about creating a code such as:

[restricted]this text here should only be viewable by Super Moderators and Administrators.[/restricted]

I want to be able to use that in posts to make comments to only my admins and super mods. I also want only the admin and super mod usergroups to have permission to use that BB Code - No one else. How do I accomplish this?

- Revenga

nerbert 07-05-2013 03:49 AM

Conditionals just don't work inside bb codes; they don't execute at all. Maybe what you could do is have something like this

<div style="display:none" name="restricted">{param}</div>

Then up in the <head> have a script that changes the display to "block" for admins and supers for window.onload. The trouble is this will be visible in the source code to anyone who looks.

Actually I don't think there's any direct way to do it with the bbcode system, you would have to do it with php in a plugin in showthread.php and have regular expression matching chop the text out for registered members

--------------- Added [DATE]1373001216[/DATE] at [TIME]1373001216[/TIME] ---------------

I'm going to work on this. Check back in an hour or so.

--------------- Added [DATE]1373005186[/DATE] at [TIME]1373005186[/TIME] ---------------

Make a plugin for showhread_complete and an identical one for showpost-complete with this code:

Code:

$test = preg_match_all('#\[restricted\]([\s\S]*?)\[/restricted\]#i', $postbits, $matches);
$style = "
        background:#ffffcc;
        border:1px solid black;
        padding:6px;
        color:red;
";
$open_tag ='<div style="' . $style . '">';
$close_tag = '</div>';
if($test)
{
        for($i = 0; $i < count($matches[0]); $i++)
        {
                if(is_member_of($vbulletin->userinfo, array(6,7)))
                {
                        $postbits = preg_replace('#' . preg_quote($matches[0][$i], '#') . '#', $open_tag . $matches[1][$i] . $close_tag, $postbits);
                }
                else
                {
                        $postbits = preg_replace('#' . preg_quote($matches[0][$i], '#') . '#', '', $postbits);
                }
        }
}

You can play with the styling if mine is too obnoxious. I haven't tested this much so give it a good testing.

Revenga 07-05-2013 01:52 PM

Only problem is when someone quotes the post, they can see what's inside the restricted part.

- Revenga

nerbert 07-05-2013 02:04 PM

You mean they can see it in the reply editor or it shows up in the finished post? Or both?

I'll try to figure this out. Will get back later

Revenga 07-05-2013 02:27 PM

They can see it in the reply editor. Also when you go to advanced reply and scroll toward the bottom where it has some of the previous posts, it shows up for them there too. That's all I noticed atm.

- Revenga

nerbert 07-05-2013 07:11 PM

I'm not finished yet, I still have to work on quick editing but for now I think I have this fixed for new replies .

make a new plugin for newreply_form_complete with this code;

Code:

$test = preg_match_all('#\[restricted\]([\s\S]*?)\[/restricted\]#i', $threadreviewbits, $matches);
$style = "
        background:#ffffcc;
        border:1px solid black;
        padding:6px;
        color:red;
";
$open_tag ='<div style="' . $style . '">';
$close_tag = '</div>';
if($test)
{
        for($i = 0; $i < count($matches[0]); $i++)
        {
                if(is_member_of($vbulletin->userinfo, array(6,7)))
                {
                        $threadreviewbits = preg_replace('#' . preg_quote($matches[0][$i]) . '#', $open_tag . $matches[1][$i] . $close_tag, $threadreviewbits);
                }
                else
                {
                        $threadreviewbits = preg_replace('#' . preg_quote($matches[0][$i]) . '#', '', $threadreviewbits);
                }
        }
}


$test = preg_match_all('#\[restricted\]([\s\S]*?)\[/restricted\]#i', $postpreview, $matches);//was $postpreview
$style = "
        background:#ffffcc;
        border:1px solid black;
        padding:6px;
        color:red;
";
$open_tag ='<div style="' . $style . '">';
$close_tag = '</div>';
if($test)
{
        for($i = 0; $i < count($matches[0]); $i++)
        {
                if(is_member_of($vbulletin->userinfo, array(6,7)))
                {
                        $postpreview = preg_replace('#' . preg_quote($matches[0][$i]) . '#', $open_tag . $matches[1][$i] . $close_tag, $postpreview);
                }
                else
                {
                        $postpreview = preg_replace('#' . preg_quote($matches[0][$i]) . '#', '', $postpreview);
                }
        }
}

if(!is_member_of($vbulletin->userinfo, array(6,7)))
{

        $messagearea = preg_replace('#\[restricted\][\s\S]*?\[/restricted\]#i', '', $messagearea);
}

See if the restricted text is completely cut out for regular members. I'll get back later with more for quick editing.

Revenga 07-05-2013 07:44 PM

Nope, still the same problem: the [restricted] tags are still showing up for regular members in the reply editor and where it shows the previous posts on the newreply.php page.

- Revenga

nerbert 07-05-2013 07:53 PM

I'll transfer this project over to my dev site and see what I can do. I'm working in vB 4.2.0, I doubt there would be any major differences in any vB 3 version.

--------------- Added [DATE]1373061935[/DATE] at [TIME]1373061935[/TIME] ---------------

When I moved the plugins over to my dev site I mistakenly put the last plugin in newthread_form_complete instead of newreply_form _complete. Is it possible you did the same?

And another correction: Move the plugin for showthread to showthread_complete.

Revenga 07-05-2013 10:47 PM

Nope, everything looks correct. Same issues exist.

- Revenga

nerbert 07-06-2013 12:56 AM

OK, I found one error in the last plugin. The preview and reviewed posts were working right but the editor text wasn't. Here's the corrected code:

Code:

//ini_set('display_errors', '1');

$test = preg_match_all('#\[restricted\]([\s\S]*?)\[/restricted\]#i', $threadreviewbits, $matches);
$style = "
        background:#ffffcc;
        border:1px solid black;
        padding:6px;
        color:red;
";
$open_tag ='<div style="' . $style . '">';
$close_tag = '</div>';
if($test)
{
        for($i = 0; $i < count($matches[0]); $i++)
        {
                if(is_member_of($vbulletin->userinfo, array(6,7)))
                {
                        $threadreviewbits = preg_replace('#' . preg_quote($matches[0][$i]) . '#', $open_tag . $matches[1][$i] . $close_tag, $threadreviewbits);
                }
                else
                {
                        $threadreviewbits = preg_replace('#' . preg_quote($matches[0][$i]) . '#', '', $threadreviewbits);
                }
        }
}


$test = preg_match_all('#\[restricted\]([\s\S]*?)\[/restricted\]#i', $postpreview, $matches);//was $postpreview
$style = "
        background:#ffffcc;
        border:1px solid black;
        padding:6px;
        color:red;
";
$open_tag ='<div style="' . $style . '">';
$close_tag = '</div>';
if($test)
{
        for($i = 0; $i < count($matches[0]); $i++)
        {
                if(is_member_of($vbulletin->userinfo, array(6,7)))
                {
                        $postpreview = preg_replace('#' . preg_quote($matches[0][$i]) . '#', $open_tag . $matches[1][$i] . $close_tag, $postpreview);
                }
                else
                {
                        $postpreview = preg_replace('#' . preg_quote($matches[0][$i]) . '#', '', $postpreview);
                }
        }
}

if(!is_member_of($vbulletin->userinfo, array(6,7)))
{

        $messagearea = preg_replace('#\[restricted\]([\s\S]*?)\[/restricted\]#i', '', $messagearea);
}



All times are GMT. The time now is 04:25 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.01246 seconds
  • Memory Usage 1,750KB
  • 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
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (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