Go Back   vb.org Archive > Community Discussions > Modification Requests/Questions (Unpaid)
  #1  
Old 03-26-2004, 04:10 AM
Velocd's Avatar
Velocd Velocd is offline
 
Join Date: Mar 2002
Location: CA University
Posts: 1,696
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This hack is underway, and works in the following.

In the ACP, there is a new category called BB Code Functions in the left navbar, underneath Custom BB Codes.

The administrator can add functions to be used in bbcode that are user-defined or internal (built in PHP functions, like rand(), str_replace(), and hundreds of others).

Functions are added by specifying a title for the function, the handle of the function (which is how the function is called), a description, and optional file path to a PHP file containing a user defined function.

If no path is specified to a custom PHP file containing your function, the script will check to see if the handle name is an internal function. If it isn't, an error is outputted.

If the path specified points to an empty file, OR non PHP file, OR a correct PHP file but it doesn't contain the function by the handle name, OR the correct function is present but incorrect number of arguments (there must be AT LEAST 1 argument), then an error will be outputted.

Once a function is added, you can edit a bbcode in the bbcode manager, and there is a drop-down list for selection a function the bbcode applies to. There can be a max of 2 user-defined arguments passed in any function, and those are the normal bbcode arguments: {param} and {option}. The bbcode tag itself doesn't have to have the same name as the function handle.

An example of the whole script:

1. User creates a bbcode function that points to the internal function rand()
2. User create a bbcode that is applied to the function rand, one that takes 2 paramters: {param} and {option}.

3.

Usage: [random="100"]200[/random]
Masked: [random="{option}"]{param}[/random]
PHP: rand({option}, {param});

This whole tag when used inside a post would return a random number between 100-200, and uses the PHP function rand() to perform the operation.

4. If by chance you create a tag for the function rand, but with one argument, which would have to be {param}, then you may or may not be lucky about getting a PHP error.

By default the hack substitutes the value 0 for any empty parameter of a function not specified by the user.

In the case with rand(), one is lucky, because {option} which is the left out parameter is replaced with 0 and still functions.

There are some other loop holes with this hack I've yet to address, but will give more thought into solutions as I work on the hack tomorrow (hopefully finishing by saturday).
Reply With Quote
Reply

Thread Tools
Display Modes

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 06:13 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.04368 seconds
  • Memory Usage 2,195KB
  • Queries Executed 12 (?)
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)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)showthread_list
  • (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_threadedmode.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • 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_threaded
  • showthread_threaded_construct_link
  • 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
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete