Go Back   vb.org Archive > vBulletin Modifications > vBulletin 3.8 Modifications > vBulletin 3.8 Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Cel PHP in Custom BBCode Details »»
Cel PHP in Custom BBCode
Version: 3.001, by cellarius cellarius is offline
Developer Last Online: Apr 2022 Show Printable Version Email this Page

Category: BB Code Enhancements - Version: 3.8.x Rating:
Released: 06-07-2011 Last Update: Never Installs: 16
Uses Plugins
 
No support by the author.

This addon allows for PHP-Code to be used in Custom BBCodes

It offers a framework for the easy integration and sharing of custom BBCodes that are based on PHP processing of the data entered by the user. It could, for example, be used to develop BBCodes that work with multiple options or to poll database information. It does allow for the Admin to use PHP in the Backend - it does, of course, not allow this to forum visitors.

You need to know PHP to use this Addon to develop your own PHP based bbcodes, however it would be possible to share them as an extension to this addon.


Installation:
- install the product file - done.


Using PHP in Custom BBCodes:
Create your Custom BBCode as always, and just put your PHP into the Replacement box (where the HTML used to go).
Just remember two things:
  • Your code needs to start with <?php
  • You need to return the result of your code.
If you're unsure what that means, read the php manual on eval() and look at the evaltest example in the second post.


For coders: include instead of eval
If you'd rather store the PHP for your new BBCodes in the file system for ease of development, that's possible, too:
  • create a folder called "custombbcodes" in your forum root
  • in that folder, create a php file that copies your BBCode Tag Name (ie. if your tag name is "includetest", the file needs to be called "includetest.php"). That's where your PHP goes.
  • in the Replacement box in the Custom BBCode Dialog, just put the word "include", nothing else
  • Since there's no eval() here, no need to return the result. Instead, it needs to go into $parsed.There's also an includetest example in the second post.
No Support for your PHP-Code!

### See the example BBCodes in the second post (Click)! ###


### Don't forget to click install! ###
(No support if you don't)

Download Now

File Type: zip product-cel_php_bbcodes-3.001.zip (1.0 KB, 89 views)

Screenshots

File Type: png admincp_evaltest.PNG (53.5 KB, 0 views)
File Type: png admincp_includetest.PNG (42.4 KB, 0 views)
File Type: png editor_38.PNG (47.6 KB, 0 views)
File Type: png parsed_38.PNG (30.5 KB, 0 views)

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 06-08-2011, 02:06 PM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

PHP BBCode Examples:

To test them, go to AdminCP->Custom BB Codes->Add new BB Code and fill in the form:

--------------------------------------------------------------------
  • Title: evaltest
  • BBCode Tag Name: evaltest
  • Replacement:
PHP Code:
<?php
/* 
Please note: 
  
- available variables: 
    param => $value, option => $option
    remember: [bbcode=option]param[/bbcode] 

- pass your result via return (as needed for PHP eval)
    so end your code with return $my_result */

$my_result "Test per eval (here no option was used):  "
$my_result .= "Parameter: <strong>" $value "</strong>";

return 
$my_result?>
  • Example: [evaltest]Hello World![/evaltest]
  • Use {option}: No
--------------------------------------------------------------------
  • Title: includetest
  • BBCode Tag Name: includetest
  • Replacement:
[code]include[code]
  • Example: [includetest="World!"]Hello![/includetest]
  • Use {option}: Yes
Additionally, you need to create a directory called custombbcodes, and in it create a file called includetest.php with the following code:
PHP Code:
<?php
    
/* 
Please note:
   
- available variables: 
    param => $value, option => $option
    remember: [bbcode=option]param[/bbcode] 
- all output needs to go to $parsed
    no return statement needed (different from direct eval method)
    so don't use echo "Hello World", but $parsed = "Hello World"
*/

$parsed "Test per include (here option was used): ";
$parsed .= "Parameter = <strong>" $value "</strong>, ";
$parsed .= "Option = <strong>" $option "</strong>";
--------------------------------------------------------------------
Reply With Quote
  #3  
Old 06-09-2011, 11:37 AM
troyuncucom troyuncucom is offline
 
Join Date: Jul 2010
Location: Turkey
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i want to include, xx.txt.

Code:
    <?php include("{param}.txt"); ?>
it's not work. How can i do that?
Reply With Quote
  #4  
Old 06-09-2011, 11:55 AM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Please have a look at the examples in the second post, and mark the mod as installed.

What's {param} supposed to be? You want to use $value for what I think you meant to achieve:
PHP Code:
<?php include($value ".txt"); ?>
As explained in the examples: The variables {option} maps to $option, {param} maps to $value.
Reply With Quote
Благодарность от:
MoMan
  #5  
Old 06-09-2011, 12:52 PM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Been in further contact with troyuncucom. If you want to use include in your PHP code, make sure there is PHP Code in the file you include. Because of how vB works it is not possible to just throw text in there and have it printed to the screen. This will cause a cookie error/header already sent.

You need to make sure that you don't print to the screen directly; all output needs to go to a variable and needs to be correctly returned/passed. Please look at the examples in second post!
Reply With Quote
  #6  
Old 06-09-2011, 01:07 PM
troyuncucom troyuncucom is offline
 
Join Date: Jul 2010
Location: Turkey
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I did it all, firstly thanks very much.

But 2 errors for this plugin.

1) if i use bbcode, sending the message twice.

2) if i modify my txt file. the message does not change
Reply With Quote
  #7  
Old 06-09-2011, 01:14 PM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Those are not errors caused by this plugin, but by the code you're trying to run. What you can do and can't do is subject to the same limits as general vB plugin coding, since you're acting within the same framework.
Your first point I don't understand, and regarding your second point: Edit and save the message once again. Post output is cached.
Reply With Quote
  #8  
Old 06-09-2011, 05:44 PM
MoMan MoMan is offline
 
Join Date: Oct 2005
Location: USA
Posts: 301
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Isn't parsed BBcode in posts cached if you enable the vb post cache? If so, that would mean that writing custom code to hide things from guests wouldn't be of much help, right?
Reply With Quote
  #9  
Old 06-09-2011, 06:48 PM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Not bbcodes are cached, but the entire post (as I wrote in the post above). Hiding things would have to be done at runtime, like the existing hide hacks do. This is not something this framework provides, you would have to do that yourself.

Edit: Thinking about it - you could clear the post from postcache at runtime using something like this:
PHP Code:
delete from postparsed where postid=
One would have to test if this could be of use in the environment my addon creates, or whether a seperate plugin could be created that deletes a post from postcache when a certain custom bbcode is present, or a plugin that keeps a post from being entered into postcache in the firstplace if a certain custom bbcode is present.
Reply With Quote
  #10  
Old 01-28-2013, 05:41 AM
kpmedia's Avatar
kpmedia kpmedia is offline
 
Join Date: Jan 2008
Posts: 136
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This just does not work. It loads once, then disappears.
I've tried to alter it, my code, etc ...

..
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:50 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06186 seconds
  • Memory Usage 2,334KB
  • Queries Executed 24 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)bbcode_code
  • (4)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (10)post_thanks_box
  • (1)post_thanks_box_bit
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (10)post_thanks_postbit_info
  • (9)postbit
  • (5)postbit_attachment
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete