So I've noticed this hiccup while developing a few products and thought I'd get some clarification on it here. Basically, if I write a plugin for my atdisg product with this code at global_bootstrap_complete, it won't pick up the option's value so nothing will be echoed:
PHP Code:
//fails
if (!empty($vbulletin->options['atdisg_featured_display_count'])) {
echo "<!--".$vbulletin->options['atdisg_featured_display_count']."-->";
}
Certainly annoying, but perhaps the options are declared after the hook is fired. Fair enough, except that does not seem to be the case. What perplexes me is if I write a php file in the includes directory called atdisg_includes.php, with a function that will return the $vbulletin->options... :
PHP Code:
//some plugin hooks would appear to fire before $vbulletin->options is available
//yet if they are called on this script and then this script is included, they seem to work?!
function atdisg_get_settings()
{
//define globals
global $db, $vbulletin;
$options['atdisg_featured_display_count'] = $vbulletin->options['atdisg_featured_display_count'];
return $options;
}
...and then include this file, and call the function at the same (global_bootstrap_complete) location I am able to use the values?!
PHP Code:
//succeeds
require_once(DIR . '/includes/atdisg_functions.php');
$atdisg_options = atdisg_get_settings();
if (!empty($atdisg_options['atdisg_featured_display_count'])) {
echo "<!--".$atdisg_options['atdisg_featured_display_count']."-->";
}
The reason I ask is that I'd like to redefine this option outside of the product (special case for one board) but because I cannot access it before it it utilized, I can't redefine it... I *could* make a setter function and include that I suppose but I'd like to have a better picture of why this is occuring before I do. It just really perplexes me that the options are in scope for the include file but not for the plugin hook that utilizes the include? Thanks.